Thank you very much for that kind introduction. Hello, everybody, and welcome to the presentation today. You know, this is a interesting topic for me because I think this is something that has been very near and dear to me for actually a couple of years, you know, just being kind of involved in the Kubernetes space from, oh gosh, way back, I was at a company called CoreOS, we were doing lots of stuff, you know, and when I first saw what happened, you know, like watching a database go on top of this thing, I just thought it wasn't even possible. And then extending this today to like my understanding of how you can actually use Kubernetes in a way to not just service up like resilient, you know, systems, but to think through kind of what auto scale looks like. And, you know, what does it mean to have charge back and consumption models that are very different?  And tease them out so that they could possibly become serverless. I'll talk, of course, about CockroachDB along the way. It is the app that I work on here at Cockroach Labs. So this is really kind of a combination of kind of database Kubernetes and serverless here over the course of the next, oh, I would say about 30, 35 minutes. And as the moderator noted, if y'all have questions, please, gosh, by all means, throw them into the chat, I'll be monitoring them along the way. And I'm happy to take questions along the way. I just really, I love questions. So I'm Jim, I am a principal product evangelist here at Cockroach Labs. On Twitter, I'm just James, I'm GitHub, I'm James. I have that at lots of different places. This is Intermediate. And I presented this conversation, actually I presented this deck about four hours ago to developer week in Europe or something. And I had a, there was a partner on here with me, my friend Rain. So that's why the stuff on the right hand side, the pronouns are we, but it's I here. I'm not a database expert. I work with a lot of really amazing intelligent people and I learn a whole lot from them. And I can talk about it up and down in lots of different ways, but man, expert is a wholly other level. I'm curious about this stuff. I love tech. But honestly, I think the concepts that are presented in this presentation and some of the other talks that we've done around distributed systems, I really think is cool. And I think these are the concepts that I'll really define in our future. I've been involved with the Linux foundation and the CNCF for years. And I really feel they're on the cutting edge of a lot of this stuff that's going on. I think that's why a lot of us are attracted to this. And I looked to these governing bodies as shepherding these things so that they do end up in our future. So I think again, I think our host here. So this is some high level context and high level concepts. Like I said, I'm gonna be talking in the context of Congress database, but I'd really like this to hopefully help you think about how you kind of think about your application or service and what goes where in terms of, how do you get scale out serverless type architecture for your app. So let's just start with the word serverless. Now, when I first saw the word, I kind of was like, oh, that's kind of a weird name. I think it's infrastructureless, honestly, because I think of infrastructures. I guess everything's running on servers somewhere, but there's the things that we do. But I think to get a sense of what serverless means for all of us as app developers or just people who are building things, right? I'd like to go to the past. I grew up with this rotary phone over here on the left-hand side. I didn't like friends who had a lot of zeros in their telephone number because it was really painful. I don't know if some people probably have never even seen those things, but a telephone is a telephone. And long came wireless technology for our house and then really for broad cellular technology, right? And so the whole wireless principle was applied to the telephone. The telephone is still the telephone. It's just wireless now. It still does the same function allows us to communicate with people. It's just wireless now, right? And so we think about the concept, the concept like the core item hasn't changed. However, the way in which we deliver it has. I guess, yeah, I don't know. iPhones and our smartphones are a little pretty far away from phones, but in fact, I hardly even use my phone as a phone anymore. So it loosely works. Electric is another kind of way I think about this. You know, I think you look on the left-hand side, it's like, I understand this engine. I could troubleshoot it. I could work on this probably with my brother. He's a bit better at engines than I am. And you look at this middle one, well, there's lots of servo motors.  I don't have no idea what's going on there. And then on the right-hand side, well, that's the motor and electric car. I have no idea what's going on. It doesn't matter, a car is still a car. Like to the user, to your audience, the people who are actually gonna actually engage with this item, car is still a car. It gets me from one place to the other, right? It has steering wheel, it has four wheels. All right, maybe it won't have a steering wheel eventually, right? I mean, auto-driving seems kind of interesting and fun, right? So we're taking electric and we're applying it to the principle of a car, right? Or the core item of a car. And, you know, I argue that the same thing is going on in the serverless. And if we think about serverless, and what are these principles that were a time, that were tying to our applications, I think of this as a paradigm, right? And it really comes down to, you know, little or no manual server management. And there's always gonna be some level of management when we deploy applications, right? You know, automatic elastic scale, built in resilience, because if it's a serverless thing, it should just be there. And if I have to actually engage with the thing to make sure that it's actually fault tolerant, that's an issue, right? It has to be always available and has to be instant. And I think this last bullet is probably the one that I think is changing the minds of a lot of people around serverless and really coming down to changing the way that we use and buy software as developers and the way we actually, you know, run these things. I love the concepts of consumption-based billing. You know, what is my monthly bill? I don't wanna deal with, you know, buying a license for something for a year. I only use it for like two months out of that year. It's wasted compute, especially in the day and age of us having, you know, these large bills to the large, you know, cloud providers. How do we actually minimize and become very efficient with our compute and only have like kind of consumption-based, you know, rating and billing for around these things? And I think, if I think about those four kind of core principles of serverless, that's pretty cool. And I think we've come a long way with serverless. Serverless, you know, we have these like these compute platforms, you know, Fargate, Azure services. I really love Google Cloud Run. I think it's pretty cool. You can, you know, take any containerized app and just throw it at Google Cloud Run and it'll scale that thing up and down. It's pretty slick, y'all. I'd go check it out. But it's kind of just managing the infrastructure underneath. And then there's this emerging group of companies that are doing, you know, serverless functions. Again, you know, the big three, I'll offer that. But then I think about, you know, Cloud for Workers and Netlify and these sort of things. I'd love Netlify. I think Netlify is super cool. Where it's more event-driven. You know, it's a function that a developer can call. And it just basically spins up, spins down, is used as needed. It's just a function that basically, as you code, just sits in a directory. And I think these serverless functions are pretty, pretty cool. And I love the concept of serverless functions and the concept of lots of things that we do. And then there's these kind of, these larger serverless app development kind of platforms that are starting to emerge where I think they're putting it all together. They're getting compute, the functions, the whole thing. And I think, you know, start thinking of like the modern IDE and what is that gonna look like? You know, do we get to the point where, you know, we're kind of doing some of these things? I do believe that this kind of next generation of app development is happening. And it's really because I think some of the things that we've seen over the past two years of building serverless and using this. And the value it can provide to people who use these things. Now, when you start to deal with data, things get a little bit more complex when you, within a serverless environment or without, right? Like when you start to deal with data, you have to start thinking about, you know, great, I'm resilient and I'm fault tolerant, but to what level? What's my failure domain? Is my failure domain a region? Is it just an AZ? Is it an entire Kubernetes cluster? How do I survive the failure? Cause these things do go down, right? How do we scale these things so that they can actually, you know, if it's serverless, I don't want to be serverless within a single region. I mean, you know, how do I expand beyond regions, you know? And for databases, you know, the transactional guarantees get really, really tricky here because if I have, you know, a person in New York writing a record and somebody in Sydney writing the record at the same time who wins, how do you, how do you deal with these kinds of conflicts? And so there's things you have to do in the software to actually mitigate these sort of things. But if you take this and you take those serverless principles and now let's apply it to, you know, the database. And then that's what we're going to use as our example here.  We were doing the synchronization between two sites. Maybe there's a primary and a secondary one and one region, another in secondary region or maybe I need coverage in Europe. So I have, you know, this sharded fold database thing going on in US West and then I got something over in Europe and I'm doing synchronization and it gets really complex. In this modern world, this becomes more of a distributed platform, right? And we start to apply these principles to this distributed mindset so that, you know, each entity is kind of part of the bigger whole. And that's how you get serverless because scaling big massive pieces up and down, down to zero, it's near impossible to do that. It takes, you know, 10 people or even two people to do that. That's too much. Serverless is about automation. It really is. And it's how do you automate these things? And so when we think about the concepts or the core primitives of our application, how do we break them down so that we can scale them separately? And that's really the trick behind serverless. Now, in a serverless database, again, the data creates big challenges. How do we auto-scale? Putting data close to users so they have low latency access to that and thinking about these transactional latencies, right? Ultimately, I feel like serverless in the term should be infrastructureless because these are the things get really complicated. You know, scaling across regions, these sort of things are really tricky. I think ultimately the end game of serverless is about, I think, you know, it's the value to the user, whoever is using these sort of things. And for developers, I think it's about starting instantly. It's about eliminating the need to manage upgrade, operate, no operations, right? I don't want to deal with scale and I want to completely eliminate downtime. I don't think there's a developer in the world who wants to even think about any of those things on the top of this slide. I think what we want to do is just build. You know, I think we want transactional. We want data to be guaranteed consistent. We want it in real time. And I think ultimately the end game of this, at least for us at Cockroach Labs, when we think about a serverless database, you know, if we really think about that and you just have an API against that database with endpoints around the planet, could the database be something simple as a SQL API in the cloud? I don't even have to think about any of these things. And if we remove the stuff across the top of the slide and we start to just build and code against the database just as an API, things get really interesting. And I think that's the, like to me, that's the ultimate vision of kind of what what serverless can do for the database. And so, you know, think about that. What could that mean for you and your application where you're just some blank blank API in the cloud, right? And that's, you know, for us, it's a SQL API in the cloud.   So I'm going to go to cockroachlabs.com and you could spin up a cluster using our serverless instance right now. I just need to log in. I just hit the sign. Oh, I'm already signed in. And so it's really as simple as create a cluster. We have serverless or dedicated. Dedicated is a, you know, full instances where we have SREs managing it, it's private. Our serverless instance is multi-tenant. You choose a cloud provider, choose a region. Right now we're AWS and Google cloud. And you set a spend limit. Now this comes back to the consumption-based billing. And as consumption-based billing becomes kind of more important, understanding consumer behavior around it is actually pretty important. We've gone a long way to think through this. And for us, it was like, well, let's just put limits in place so that, you know, you're never going to spend more than $10 a month if I put $10 in my spend limit or zero. It could be completely free forever. And for us, that means, well, I have to throttle usage of the database over time. What does that mean for your application? Because I don't think anybody really likes to get a bill at the end of the month where some service just ran wildly for, you know, 20 days and I get charged, you know, thousands of dollars, right? And so I think as we build these things, we as developers need to be cognizant and aware of what people really want.  And then we just name the cluster. So I could just create a cluster. It's going to be ready in a couple of seconds here. And what's happened in the background, I'm going to show you exactly what's happened. So I'm going to create a user, generate and save password. Yep, great. And I'm going to hit next. I have a cluster up and running. And I have, you know, I have a complete set of connection strings. I can use a general connection string, parameters. I can use the CockroachDB client, all these things. Basically what I have is I now, I have a Postgres cluster. I have a Postgres instance, basically. It's a CockroachDB serverless instance. We're wire compatible with Postgres. So any of those kind of Postgres tools you would use or drivers, they should just be able to connect to this. And so you're just going to use the connection string or parameters. I use parameters when I'm using a bunch of different tools or just use the CockroachDB client. And now you have a complete relational database that is resilient. It's going to do auto scale. And I'm going to show you what it does underneath the cover. So quick demo basically is it's pretty easy to get basically a CockroachDB cluster up and running. There's lots of more information on our website about what CockroachDB does, how it's different than other things. But ultimately I think it is the simplest form. It's kind of like Postgres, but automate all the scale, eliminate the concept of downtime, online schema changes, upgrades, all that. That's really kind of the big stuff of what it does. So that's the quick little demo. I encourage you all to go out and check out a cluster. So it's pretty easy to get going. Okay, so let's talk about architecture. Let's drive into kind of how we did what we did. And this is really the top of this. So a database is really comprised of three layers. There's a language, there is a SQL execution layer and their storage. Every database really is kind of developed and thought of in this way. And really ultimately, any one of our applications can be thought about like this, right? Like there's an API with my application. Okay, sir, is it a UI? Is it just some basic, you know, rest API? I don't know. The language, like that's how you communicate. It does things and it stores data to disk. Literally a database is just like every other application. They're a little bit more complex. They're not easy to build. I'll tell you that right now. But they're all kind of like this. Now in distributed systems, you know, I think there's databases on the right hand side. You know, we have a distributed database. You have to start thinking a little bit differently because, okay, so the language is still the language, storage is still storage, but actually in storage, am I storing data across multiple different places? Because remember, this is a distributed system. This is no longer a monolith. This isn't like one server. We're using many, many, many, right? And so we have distributed storage. We have to think about how we get data to that. That's replication and distribution. Distributed execution becomes very important, right? I can have a single instance of Postgres on distributed storage. Well, I still have a single instance. All my rights have to go through there. I haven't solved the scale problem, right? So how do you distribute that for both reads and writes? Well, in our database, or how do you distribute your execution for, I don't know, whatever you're doing in your application and starting to think about these concepts is actually pretty important. I think the shift towards distributed systems is where these things are happening. So the divide of where you cut your code apart to actually make something serverless is really between execution and storage. Because if we think about serverless and what we're doing at the storage layer, things need to persist. They cannot be ephemeral. Like they need some sort of consistent existence, right? And you need to make sure that those things are up and running at all times, right? Whereas at the execution layer, I'm not relying on something that needs to be, like it's in that item, right? I'm just, for us, we're just executing a query. We're gonna use storage, right? And so taking away and understanding what's ephemeral versus what needs persistence, that's the divide in your application. So look through your code and figure out what is those lines? Do you need to rearchitect things? How is this gonna work? For us, we had to kind of rearchitect and tease these things apart. Luckily enough, it was pretty modular in our code. So it's fairly straightforward to do that. But that's the trick to really thinking through things that are serverless. I've talked to lots of people building serverless applications. This is the same pattern emerging across the board. And I think it's kind of one of these things is fairly simple once you see it. Ephemeral versus persistence, scale ephemeral, scale persistence in a different way. And I think that's the trick, right? So let's get into the storage layer. In the storage layer of what we're doing, it's a little bit different than some other databases, right? Like in Cockroach, and I kind of have to go through kind of how Cockroach works, but hopefully this is valuable to you as well from an architecture point of view, just show what we had to do. Ultimately in Cockroach, everything, all the data is stored in a KV. It uses KV underneath. Now we translate KV to relational, so it's SQL. But ultimately you don't need to know what's going on in this logical key space, but every table is basically this huge monolithic logical key space. It's all ordered, right? And KV allows us to do some really interesting things. And it's all ordered is the key thing. This lexigraphically by key is the trick here. And so what we do is we take all the tables and we convert them to KV. The K being a table name and index, the key and then a column name. And then the value is the value for that particular column. So let's just show how that works. Here's a quick table, it's the dogs table. I have an ID, I have name, and I have weight.  Now this just looks like, this is just a table. This is a simple DDL, same thing in Cockroach, relational. If you're familiar with SQL, you get this. And this is what my data looks like. I could select all from dogs. I'm gonna, this is what I'm gonna get back. Underneath the covers, what we do is we actually, when we actually store the data at disk, we're gonna take, and we're gonna translate each row into these KV pairs. So okay, here's the table name is dog. My primary key is 34 for that, the ID, right? And then for the name column, I'm gonna have Carl. Okay, for the weight column, I'm gonna have 10.1. And I just go down the line. And so we're translating records into KV. Now, if you look at the ordering of this, right? Dog 34, name, weight, dog 78, name, weight, dog 94. So we're ordering them. So this basically all gets encoded.  We're actually encoding these things so that we can actually get really, really efficient sorts. So underneath the covers. And we know exactly where to insert things into this ordered lexicographic pair. Now that's pretty cool. It's what allows us to actually understand where tables are when we start to actually move them around. Excuse me, I got a frog in my throat. Excuse me, everybody, sorry about that. So what did we do to make this serverless? Well, if we're gonna use shared storage underneath, what if everybody had a dog table? I wouldn't know which dog table belonged to which person. So what we did is we just basically added a tenant ID to the key. And so now this is Andy K's dog table. So what was my cluster? I forget, I don't know, sparkly kitten or something. I forget, we come up with these funny names, but that would belong to that particular tenant. And so what we do is we're just appending that to the front of that. So now in this huge lexicographically ordered KV set, all of the records for that particular tenant are together. And then inside there, the tables are all kind of sorted and then the keys and all the stuff, right? So basically what we're doing is we have a complete understanding across everybody. And we're using one big shared storage layer, but the tenant key is what's allowing us to understand which parts of this data belong to who, okay? Let's see here. There was a question that came through. What is the most appropriate naming convention to label nodes on a Kubernetes classes? For instance, controller and responder. Well, gosh, I don't know, Emra. I'm not, that is an interesting question. I don't know, I'm sorry, I'm gonna have to, I don't know that I don't know the answer to that. Sorry about that. I wish I did. I don't, like y'all, I live in this architecture of the application layer. I don't get too deep into like the, I understand how Kubernetes works, but managing it is complex and kudos to all of you who do that, but maybe somebody else knows, sorry, Emra. All right, so that's great. We just talked about the storage layer. We had to actually think about what we were doing from the storage layer. We then had to think about, okay, distributed execution, we're already doing that, but how do we tie that to a particular tenant? How do I make sure that, you know, Jim's execution is just mine, right? And this sort of stuff, right? So, okay, let's go back to what we're doing in Cockroach. And with this big, huge key space, and we added, you know, we added this whole like the tenant to each of the keys and this sort of thing. And then basically what we're doing is we take this big, huge KV range, right? And we, or this big, huge KV sort, and we cut it down into these ranges, which is basically these 512 megabit ranges. And think of this as like the way that we shard a table. We're just taking these ranges and they're small enough so that we can move them around really quickly. And we can write them to different physical nodes or different nodes that are running in pods in a Kubernetes cluster, right? And basically that's how we kind of distribute the data. And that's a kind of a key concept in Cockroach. Now, if you're gonna do this, we actually have an index so we can have to find these ranges, you know, so the first range lives on these servers and whatnot. And so we have an index structure that allows us to locate these things. It's very much like a B tree, if you're familiar with what that is. If you wanna check out how we do this, our code is completely open. You go check out our Git repo and actually check this out. Underneath the covers though, we're using something called Raft. I hope many people on this are familiar with Raft. If you're not, Raft is a really interesting concept as a developer and anybody who's kind of thinking microservices and distributed systems, if you're on this webinar thinking Kubernetes, definitely kind of check out Raft and see how it applies to what you're doing. But Raft is a distributed consensus algorithm. Now there's another one called PAXOS. Some people use that as well. And what it does is it's distributed system and it's gaining consensus. It really allows us to get atomic reads, atomic writes and consistent reads and what we're doing. Now, what is Raft? Raft is basically, it's an algorithm that manages replicas of whatever it is you want to actually manage and write, say, to disk. In our case, the reason I had this little blue thing, well, this is that range that I had before. This is the second range. So we basically break up our ranges and then manage them using Raft. Now we create replicas of these. So we have three copies here. Within Raft, you want three or five or seven or nine, 11, the odd numbers because you want quorum. So when I write to a Raft group, I want two of three of these to commit. I want two of threes to say we're good and then say everything's good because a third will come along or three of five. So it's a quorum-based transaction. So we get this quorum and actually make all these things work. Also in Raft, there's this concept of a leader. It's a special replica and there's two followers. All the rights, all the commands kind of go to through the Raft leader to the followers and it basically manages to make sure everything's good so that you only have to ask one Raft leader. It's like, great, is this good? Yes, it's good. And I could acknowledge back to the application whatever it's doing. It's going to have this kind of authoritative up-to-date answer for what's going on within that Raft group, right? This also allows us to get atomic replication. So we're going to make sure that this is going to happen. Like the whole transaction is going to happen or not. It's going to coordinate with other Raft groups because I'm doing transactions across maybe hundreds of ranges because maybe I'm inserting 10 records or I'm doing a select across different things and doing joins. Like we can do this kind of cross shard transactions as well and that Raft leader is going to manage that. It's going to help with consistency and make sure that the atomicity in acid actually gets committed. Okay, so if you want to learn more about distributed consensus, you want to learn more about Raft, there is this really wonderful website. I haven't been there in a while. I'm pretty sure it's still going on. Somebody probably would have told me but the secret lives of data.com, I'd go check that out. It's, they give a great kind of visual representation for how Raft works much better than I could ever do. So we use Raft then to actually distribute data, so each Raft group, right? There's three of the copies. It's the same data, it's that range. We're going to distribute them across three different nodes in a system in cockroach DB, right? And so that's what we're doing. We take the first range, we write it, we take the second range, we write it, we take the third range. What this allows for is kind of scale. I can scale, I can add more nodes so I get more capacity. All of these nodes could service reads and writes. I'm highly resilient. If I lose a node, I still have two of three of the copies left, right? And so that's kind of the special nature of what we're doing that's helping us at the storage layer. Okay, great. So how do I kind of pull all this together and now make this serverless? And this is the trick of how you use Kubernetes to actually do all this, okay? But one second before I get there, there was a question, Debanju writes, is it possible to allocate a network volume as persistent storage to these nodes? Cluster, on-prem, open-source cluster and network volume EBS, S3 or EFS.  And then you'll use stateful sets within the context of the storage nodes like where you need to persist. Use stateful sets to actually maintain that persistent connection between that pod and whichever volume you have actually connected to. And then so each of the storage like here within this context of this, this is us deploying a database. So this could be any application on a Kubernetes cluster. What you're seeing in the bottom, that color is this, this is just a pod and this blue box is the application itself. They're all communicating to each other. And so if I wanted storage, I'm just gonna take a, I'm gonna use storage class PV claim. I'm gonna use, you know, stateful sets to actually attach that to each one of these pods so that I could actually persist that to launch you. So it's a great question. Just me a while to figure out the storage class when I got first introduced to Kubernetes, how this works. So for us, you know, this is one single logical database across multiple different pods. Every one of these things can take reads and writes. This is just SQL. You can do cross shard queries. You can do, we can actually deploy this across multiple regions of multiple Kubernetes clusters. We can have one single logical database which is pretty cool, right?  This was a database that was built literally on the same exact principles as Kubernetes. This wasn't like take a database and do auto sharding and try to make it work in this context. Now this was basically built with the same kind of principles and that's why it works really well within this context. And using Kubernetes to actually build this out as a serverless cluster is pretty cool. And so what we did is we said, hey, look at, let's look at our, let's look at our stack, our layers within our product. And we basically took this kind of the execution and how to find the data and the language. And we put that in one version and then we took the other side and it was the storage of that data and that's separate. And so what we're doing is we're running a completely separate cluster of CockroachDB that's doing storage only. And each of those kind of pods in the bottom, they have their own PV claim. They actually understand where that storage is. And I'm just communicating to them. They can, they can service requests for basically getting data. And remember this data is spread across all my users across all their tables is now distributed across, okay, this is just three nodes running in three pods, but this can be hundreds of pods. And the SQL execution layer just works with this, with the storage layer to basically find that data. So lots of different data and users in the bottom and then the SQL, the execution at the top. And the SQL execution part is ephemeral. So here's a virtual coster for a particular tenant. We have three execution pods and it's just accessing its data underneath. And I can scale basically the execution now get really, really efficient. So tenant one needs three different execution pods because of their bandwidth, right? Tenant two only needs one, tenant three needs three, right? And it really depends on the load that that person has. And that's a key concept in with serverless, right? Scale up, scale down, scale to zero, right? Make it really efficient. So what do you get charged for? Well, for us, it's how much storage and how much compute you use, right? How many transactions? And that's really allow, we're able to scale these things separately, which is a key kind of concept within serverless as we think through this. So how does this look? In Congress to be serverless, we have like the storage and replication nodes. We have more than one in each of AZ, but we're doing a lot of them. We're actually working on making this across multiple regions. So you'll have this across multiple AZs and then regions as well. As beta right now, it's within a single region. You spin up, so tenant one is living on three different availability zones. So if I lose an availability zone, I still have other two other pods to actually go against. Again, it kind of improves that resilient nature. So tenant two comes in as one and then tenant three. And so we're just basically randomly deploying them across different AZs. Now, if you're gonna do this, you need to be able to find what it is is your compute layer, right? Where is this thing? And so, we built a piece of software which is basically a proxy, which understands where my tenant is. So if I come and ask any one of these proxies that are in any one of these AZs running, it knows it has a manifest basically. It says, hey, tenant one, here's where you can find tenant one's execution layer and route that query or route that request, whatever you're doing an application to that particular user, right? So we tease out the ephemeral compute from the persistent storage and then you need to find things and we built a proxy to do that. Really as simple as that to actually build out a serverless thing. Now data also scales, transactions scale as well. So volume of data will scale at the persistent layer down here in storage or replication. We're just gonna keep adding capacity there, right? But the ephemeral compute that goes up and down based on the traffic, right? And so we needed to accommodate elastic usage, deal with spikes and spin things down to zero. And this is all done via these kind of ephemeral kind of SQL pods. So we built this capability in autoscalar. And autoscalar basically is looking at, you know each particular CPU for these pods and understanding know what are the usages over the last five minutes. We're looking at peak CPU usage and all within the context of a particular tenant, right? And so if a tenant needs capacity we spin up new capacity. If they are not using it, we spin it down. If it falls to zero, we'll completely remove the tenant from the cluster. And so that we aren't using compute that we don't need to pay for. So how does this look for? So here's our diagram from before, you know we've teased out the two layers. Tenant one, my capacity, my steady state capacity is average here up on the left hand side. It requires three ephemeral pods to deal with that amount of traffic. But at some point I get a spike.  And so what we do is we have these things that we have in each cluster and there's a cluster in each availability zone. We basically have these unassigned hot pods. They're basically instances of my ephemeral compute later that are just unassigned. So the proxy doesn't even, they just know they're there but they aren't assigned to a tenant. And so what I do is I basically take one of these hot pods in the proxy and the manifest that it says, hey, assign this to tenant one and start using it. I have just scaled capacity like that. Because these things are already up and running it's up really fast. I don't have to worry about the time it takes for the pod to start and then start the application. All these things is just running an unassigned. And that's what we did. Now when things return back to steady state I spin that thing down. And if it goes all the way, right? It's like middle of the night nobody's asking for any transactions. We scale that all the way down. So the auto scaler is actually doing this in the background. But then most importantly, say a query comes in it wakes up that tenant. And so we're able to spin up a SQL pod very quickly. It's under a half a second and it's for that first query that comes in. I know we're trying to drive that down to like, under a hundred milliseconds under a tenth of a second. And so right now that's kind of a big focus. How do we get these not running really fast? Another big problem you have to deal with in the serverless world because well people want these things to actually come up really quick. And so what we're doing is again we just take this hot pod we don't have that latency of spinning up the Kubernetes pod instance. And we're assigning that to a particular tenant the proxy now understands that all the proxies know where to go. So if a query comes in against any one of them it knows where to go get that tenant, right? And so that's basically how it works. So that's what we've done to basically take something what was a distributed system and fairly elegant but then tease out this kind of ephemeral compute side from this persistent storage layer to make our application serverless. Now it was fairly straightforward for us because while we were already a distributed system so like kind of applying these principles were a little bit easier but I think if you start from scratch thinking about this like as you build your next application how do you kind of tease these two things apart and in the architecture of application makes a whole lot of sense because you kind of prepare yourself to apply the serverless principles to whatever it is that you're building. And I think that's the trick and for me the big takeaway. Again, you saw me create an instance y'all please go feel free to go out and build your own cluster it's pretty easy to sign up. We're gonna give you a free cluster up to five gigabytes of storage a month 250 million request units which is pretty ample. A request unit is just basically an abstraction of a query. All queries are not similar like select star from where and join blah, blah, blah that's much more query than select star from customer, so that's the way we do that and it's free. So you can go out and do that right now. Request units are interesting if you run out of requests units we don't actually, you don't run down to zero so you have no capacity we actually reserve enough capacity so that you have enough for the rest of the month so we basically kind of throttle it so like this last scenario is easy you have 8.64 million request units if you use everything on your first day you have that amount for the rest of the month, right? So it's fairly good from that point of view. So what's the chargeback model for this cockroach DB? The charge model is basically you can add a gigabyte of storage or 250 million request units for additional I think it's a dollar per, I forget what it is you have to go to the website and look at that but it outlines all of that but it's free up to that certain level. So okay, so that is all my presentation there weren't a whole lot of questions I hope it was valuable to everybody I do hope to see people live I'm super excited to go to QCon and be live with people in a couple of weeks I'm also really excited to go to Valencia I would not, I would be lying if I didn't say that you know the the Congress Labs team will be there we'll have lots of engineers who can talk through these things with you we can talk about our database as much as you want as well we'll be giving away things all these things if you're thinking about going I really look forward to seeing people again live at QCon it's my favorite two shows of the year are QCon Europe and QCon North America so I'm really looking forward to getting back with everybody so with that, if there's no other questions I wanted to thank everybody for taking the time today I hope this was valuable to you you know I hope I did a little bit of a balance between us talking about a database but kind of how we thought about going through this serverless journey I really hope it came I really hope that was a value to people so all right well thank you everybody I really really appreciate it oh that was my other presenter this morning that's my friend Rain, oops I didn't fix this slide so thank you everybody I really really appreciate it and have a great day. Great thank you so much to Jim for his time today and thank you to all the participants who joined us as a reminder this recording will be on the Linux Foundation YouTube page later today we hope you're able to join us for future webinars have a wonderful day.


In recent years, mold has been blamed for all sorts of vague subjective symptoms, but we have little scientific evidence that mold has anything to do with them. However, this concept of toxic mold syndrome has permeated the public consciousness, perpetuated by disreputable predatory practices by those making money testing homes for mold spores or testing people's urine or blood. But all these tests are said to just further propagate misinformation and inflict unnecessary and often exorbitant costs on patients desperate for a diagnosis. The continued belief in this myth is perpetuated by those charlatans who believe that measles vaccines cause autism, that homeopathy works, and that fluoride in the water should be removed. Mold toxin contamination of food, however, has emerged as a legitimate issue of serious concern, perhaps even more important than other contaminants might make their way into the food supply. Hundreds of different types have been identified, but only one has been classified as a known human carcinogen, and that's aflatoxin. The ochrotoxin I've talked about before is a possible human carcinogen, but we know aflatoxin causes cancer in human beings. In fact, aflatoxins are amongst the most powerful carcinogens we know about. For example, it's been estimated that about a fifth of all liver cancer cases may be attributable to aflatoxins, and since liver cancer is the third leading cause of cancer deaths worldwide and kills so rapidly after diagnosis, the contribution of aflatoxins to this deadly cancer is quite significant. And once it makes it into food, there's almost nothing you can do to remove it. Cooking, for example, doesn't help, so once it makes it into crops, or the meat, dairy, and eggs from animals consuming those crops, it's too late. So we have to prevent contamination in the first place, and that's what we've been doing for decades in this country. Because of government regulations, companies are almost always sampling for aflatoxin, resulting in nearly a billion dollars in losses every year, which may get worse if climate change worsens aflatoxin contamination in the Midwest Corn Belt. So on a consumer level, it's really more of a public health problem in the less industrialized world, such as African countries where conditions are ripe and farmers can't afford to throw away a billion dollars worth of crops. Indeed, aflatoxin remains a public health threat in Africa, world China, Southeast Asia, affecting more than half of humanity, which explains why the prevalence of liver cancer in those areas may be 30 times higher, but it is not a major problem in the US or Europe. For example, only about 1% of Americans have detectable levels of aflatoxins in their bloodstream. Why even 1% though? Well, the FDA works to ensure that the levels of exposure to these toxins are not kept as low as possible, but instead as low as practical. For example, in California, there's been an increase in unacceptable aflatoxin levels in pistachios, almonds, and figs. Unacceptable in Europe, that is, so it affects our ability to export, but not necessarily unacceptable for US consumers as we allow twice as much aflatoxin contamination. Figs are unique since they're allowed to dry on the tree. This makes them particularly susceptible to aflatoxin production. It would be interesting to know about the fig consuming habits of the 1% of Americans who turned up positive for the toxin. If figs were to blame, I'd encourage people to diversify their dried fruit consumption, but nuts are so good for us that we'd really want to keep them in our diets. The cardiovascular health benefits outweigh the carcinogenic effects, preventing thousands of strokes and heart attacks for every one case of liver cancer. Thus, the population health benefits provided by increased nut consumption clearly outweigh the risks associated with the increased aflatoxin exposure. So we're left with aflatoxin being mostly a problem in the developing world, and because of that it remains a largely and rather shamefully ignored global health issue where attention has been paid. It's been largely driven by the need to meet stringent import regulations in the richer nations of the world, rather than protect the billions of people exposed on a daily basis.


Hello, this is Laptop Media, and today, we will show you how to open the Acer Aspire Vero AV14 and what's inside of it. The first thing you need to do, is to remove the bottom panel. To do so, you need to undo 11 Philips head screws. Then, pry the panel with a plastic tool and lift it away from the chassis. Please remember, it would be of great help to us if you just hit the like button and subscribe to our channel. That would motivate us to make even more and better videos for you. Inside, you will see a 53Wh battery pack. It lasts for about 11 hours of either web browsing or video playback. To remove it, just unplug the battery connector from the motherboard. There might be some Philips head screws too. Unfortunately, the memory here is soldered to the motherboard. On the other hand, there is 1M.2 PCIe X4 slot for storage. The cooling comprises two heat pipes, a medium-sized heat sink, and a fan. Furthermore, the VRMs have a heat spreader, which manages their thermals. If you'd like to see more disassembly videos of the latest notebooks we would highly appreciate if you hit the like button and subscribe to the channel.


You too. What's up, man? This is CFM week seven. You guys have been waiting. I had a bye week last week. I'm sorry No new news. I don't know what else to tell you guys right now. I didn't get no bill No, they didn't come to me in the offseason or during the week. They didn't they didn't do none of that man.  Oh the one upgrade. I did get Chris West stream My free agent was this in 6-4 corner. That's 94 speed. He is now 95 speed chat now 95 speed 6-4 corner. So I have Rashad Melvin 6-2 90 speed only But 6-4 95 speed the other corner position. We're gonna start mark. He's Blair safety We're gonna start Ronnie Ronnie balance on the safety might mix in the rookie Jameson Johnson Love that name Jameson Johnson might mix in a little bit. Who else I got some other dudes I got red wine other dudes like that man, but no real I have no real Goals I have no real things to acquire this game Just want to go ahead play get to six and oh playing DK nice We got no he streams as well on twitch on man, man. So I think he picked up the Steelers I think he got moved in the league this team is currently on five So let me tell for him to make playoffs.  It's like he's just chilling Little more three-fold. Okay. Okay Get a little more aggressive here fast now These dudes are fast personal more now. I'm gonna get it done out there It's just when you don't have escape artists. We've talked about this a thousand times I gotta make sure our max protect block the crib really Do a good job We're staying in the pocket That's why we got Paramount is a superstar development I'm a pyramid absolutely sharking and BS and they gain some speed and stuff But we got still Well, my receivers are so stupid in this league is not like it's so Valley you want a contract when you hit like that always good to go up We didn't even take really anytime at the clock Marguerite's hunt. That's a sign. I got for five years. I might as well play my man Jacob Martin, right? Shotgun cluster They're good tackle kid this XP game.  Okay. Okay. Okay. There you go miles. Okay. I'll be a loss, right? miles Jack Paramount has post flag elite And I believe that's in that's in Arizona Pistols in Arizona TJ Jacob's goat man. I'm chilling man. How are you? Let's go.  I mean once these boots everybody shit's got out of me Once was everybody got out No, I don't think DK was in the season last year Marquers about that That's why we get speed boys. So much speed. It is scary XP game I'm definitely I need it. I need to get I need to get like a running back I need to get a running back that is a threat and this team Between both scar bro miles saying I can't have any shirt and agent Peterson.   Huh? These kids be flying with this bear. Huh bear is tough Was a pinch buck that they be wearing I'll take David Johnson. What you what you need our first round pick for you Don't run here, so now boys, we gotta put Any action will put line Blair down here in the box just make a tackle. I'm gonna pick off on these passes.  I mean I was Melvin in Westry, but Jesus I didn't trust it. Fuck. Damn it. That's a pick six for TJ. What man, I'm gonna pick that off I Damn it, man. Yeah, once you got cross that line y'all saw him move though, right? He was moving This thing my team too good man He looking through the playbook right now chat.  I do it too like damn man. This might be it See, I don't really like bear against the spread off stuff low games man. What's up? How are you man? You guys can watch these games live twitch.tv slash stuff that we're up over? Yes, Aladdin we had the podcast man.  Let's okay Okay, the ball will be back The ball will be back.  I mean what what why don't want a bad corner? I said, what are you? What does it look like? What are you talking about? Whatever you like dude Kobe I'm and up. I'm and up, but I play back So they don't press so they pretty much get beat by every route above it on the street All right, we got to take a chance here No, I was not trying to play I just don't understand why we're talking about corn routes right now Like we're not talking about like I'm not getting beat by Honestly, I did like cluster, but the reason I stopped running it was because It doesn't have any run that you can't run out of it.  It's not so that's just a bad playbook because of that I don't know you guys play that's one in the game. It's so easy to run and people run all the time It's like bro. What's the point? So I'm interested to see what he's gonna call right here, you know, you can run like I think there's like a single back But it's you're saying like there's no running. Yeah, like that. That's why that's why I like cluster cluster was really good But you come out on goal line, what do you want to run here? Like you know what I'm saying, Chet?  Okay, that's how good play man. That was a good drive He really made good plays But he's gonna proceed to give up another one play touchdown with a little more receivers here Three-minute drive, eleven plays.  I don't know. I thought he would just run I don't know.  I don't know if I'm gonna do this to Chet I don't know if I'm gonna take this chance to cover this. That's what I mean That is the easiest first down of my life with escape artists Oh my god dude, gotta love man Gotta love it Chet Oh no, this game is over Worst part was if I had got to that running run back play right there Give me a good pass so I can go pick Yeah, all my franchise, man, you can check out the YouTube. I got my draft on there I got every game I play on there. You guys can check it out, you know Could a sack take him out of football room? I kinda wanna make a mistake He might run Let's give him some time, maybe he'll make a mistake, Chet I don't think he'll make a mistake on me blitzing Just do physical area best player ever I just, I need to get better scramble with this guy I don't know if it's a pot. They told me if I hit left trigger I can run fast Or something with the quarterback. I don't know I never thought it made me run fast. I'm gonna try to do it just this play really Cause when people blitz everybody at you Without a mobile quarterback, it's like, I just never thought it was like really that fast Like this is what I would do. Look at the example about blitz everybody Like I'll help you guys. I mean, one thing I like doing Against Seedus right here like this I would always like motion blocking this dude right here Like this in here, but I can't roll out. Let me try I'll do a pick cause of it. Alright, he moved a little bit. He moved a little bit faster He definitely moved a little bit faster. I'll tell you that Damn, I just do a pick on my stats for no reason Alright, alright, alright, alright now Chet, alright Now we're cooking with gas. He moved a little bit better I feel like when I play defense like that though it's like it's either a sack or completion Or an incompletion. It's really not I don't know how to explain how it's really not a turn over defense Shot right. I don't know. We're gonna find out. I'm doing everything I can Pistol ace. It's awesome. It seems like a lot, man That's what I'm talking about.  Let me escape artist. You don't need to do all that Bro, old Danny, listen, I've been playing hella CFMs Before the MCS I used to play CFMs like with my buddies and stuff That was what it was really fun about, man, really before Now my squad, this team is really good actually Run, three seconds, run And back to shoot Smoke down instead of a pitch six. Nice spot, bro 4-5-2. I mean, how many hours you gotta do, bro? Like am I bad for accepting that? Like what? Alright, left trigger, here we go Cross the lines as that fails Huyo Jones. I ain't getting no abilities yet Dude, he was a 63. He came in the league as a 60 Play 33 Christian Wilkins?  It works, too. It works, too Nice throw, kid. I like it I like it. I like it Christian Wilkins right now, man I'll just change positions to change their ability Yeah, that's why Huyo Jones got what you can call it Huyo Jones has, you know, about time when he got home Jesus Chuck and cheese, man. What's up, buddy? How are you?   Goddamn He was just putting picks all on his name I can't catch one pick Man, what's up, man? How are you? Game sucks, man What's every person on the book? I got two picks.  Go back to snap throwing something I feel like without a skateboarder, you gotta play like this You just gotta dimp and dunk and dimp and dunk I mean, bro, I don't know what man up and watching What's everybody, man? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? What's everybody? Sam, what up, dude? How are you, man?  That's the second time you do right at me I do a bad, though Second time, chat He just had a hundred-yard punch at 100-yard point.  The worst, dude. I mean dude, just 100 points for the skate bars. 100 points, I just can't, you just can't move in the pocket. Shoulda screaming at me. Started doing that drag champion in these abilities. Wave. Uh, every two days.  Oh lord, Jesus. It doesn't matter how much I get sacked, man. Who's the good college teams? I don't really watch college. I'm an NBA guy. I don't know what you want us to do. I don't even know what to say.  God damn, man. Look at the ball. Look at the ball. Look at the ball. Look at the ball. Look at the ball, man. Dude, Hunter is a monster, huh, Chet? Dude, Hunter is a monster, huh, Chet? I think I sacked five times. Cole, what's up, though, man? Hey there, Chet. It's just like, it's so hard to make some of my page and put some everybody up and blocking. I want to get some blockers. I want to go to drag, but I want to get some blockers with me. I'm saying like, that's just not worth it. Like, what? Like how's the flats on doing that type of shit? That's exactly, well, with no ability, that's exactly how you want to play draft champions, man. Nah, I don't know yet. That's exactly how you got to play, but you can call it draft champions. Just boring, man. Blitz, everybody. But don't worry, we're going to get an escape art or something. Tell you that, Chet. And once that happens, we're going up top. Just man, I threw them two picks that game. That hurt me. I didn't even throw for a lot of yards.  I'm going to have four TDs. I guess that's pretty good. Nobody had 100 yards.  Julio Jones had two touchdowns.  What I got was this four sacks of both of my goons.  Brian Burnt. I'm just trying to do those two, just chuck it up picks, really. So it's like, yeah, escape artists, it's not, it won't be fun. It's not going to be fun for these guys. I'm telling you, if I get escape artists, they all won't quit. Redraft. Redraft. Let's see what we got. Okay, Tyree got skill points. Okay. We're going to pull on Tyree, Captain Jett. They said improviser. The improviser in 95, man. I'm wearing this dark as he deep dark as he mid. Both auto actresses over 90. Just a goon. So, improviser in 90. So I said I got improviser in 95, man. DK good game, man. I didn't play good at that game, I mean. Happy birthday, too. They said DK birthday, you know what I'm saying? Damn, okay, Tyler Croft. Catching, catching traffic. Short rock, deep rock, damn.  He started development. How old is it? 27? He's just slow. 80 speed. Damn, he might want to get some run. Sheldrick red wine. We had to pick six that game. We put all this stuff on run support, man. Any DB, we put run support on tackle. Play recognition and tackle. That's what I want. Tackle. 81 hip power. What's the tackle? 75, that's good. I'm going to party me out with a sub, man. Appreciate you. I don't know what Charles is. We'll give him some power rock. Matt Tanner, this is my son. This is the black guy or the white guy? I think it's the black guy. I don't know if it's the white guy or the past protector. Past block, good stuff. CFM, we're playing CFM right now. You can check out all of these games on, what you're going to call it, probably. Just, I mean, I don't know if I'll ever get a escape artist. But yeah, that's why I draft him. I'm sure he looks just like me. I don't know if I'll ever get a escape artist. I mean, I don't need it. I just don't want it.    I need, I would need, what do I need? They said 95 improvisor. But I definitely need to get the superstar development first. That's what I need to. Once you get the superstar development, boom. You get it. You see, Westree, we got them to 95 speed. Yeah, let's see what's up with that 2K dude. I don't know, dude. I don't think dude said nothing back to me yet. Let me see. Dub, dub, dubby tweets and reply. Oh, I'm still recording. My bad. That was week seven. We are six and all boys. Hit that like button. CFM big strike.


When it comes to violence at protests, people on the left will often disagree. Some will see riots as a legitimate response to state violence, others will think violence is always wrong. Many will see protesters burning vans and smashing windows as no moral disaster, but rather a public relations one. These are all options which are widespread on the left. I think we can have productive disagreement about these questions. What you don't normally see among progressives though is applauding cops as they swing battens at crowds. But that's what Labour Shadow Minister for Further Education did this afternoon. Now he quote tweeted a video by journalist Billy Stockwell of clashes between cops and protesters at Bristol's March Against the Policing Bill and wrote, this is Toby Perkins. This looks to me like entirely appropriate use of the baton. A good example of proportionate policing under extreme pressure. Well done with free clapping emojis. Now let's take a look at the video which Perkins thinks was a great example of proportionate policing worthy of a round of applause. Now whatever your position about policing and protest, do you want to abolish the cops? Do you think the cops do a good job? I think the idea of clapping at that situation, which looks quite difficult for everyone involved actually, but seeing that as something to celebrate, I think just seems completely sadistic. I mean, there's someone really swinging his baton, people really getting hurt. I mean, to me, that doesn't look particularly defensive. If you're swinging your baton like that, it's not someone holding up their shield. That could cause real damage and you've got a Labour MP here, Shadow Minister and a Shadow Minister who represents young people. Shadow Minister for further education and he's giving a round of applause as a cop hits a protester with a baton. Now, obviously, that didn't cause any controversy today. The tweet that caused controversy, actually it was an interview that caused controversy was Nadia Wittem saying, actually, maybe I want to work out what the facts are before I start condemning people. That's seen as beyond the pale. A Labour MP who's giving a round of applause for a cop hitting someone with a stick, that's completely acceptable. People are saying, Nadia Wittem should lose the whip. This guy, no one's even saying he should be forced to apologise or resign from the front bench. Pathetic, isn't it? When you see somebody cheering on, bullying, which is being done by other people, there's something about that which I just find so unshique. Do you know what I mean?  You're clapping from the sidelines that these kind of puffed up, drunk on their own power, cops swing baton around, but batons around. I don't think that it's becoming of a Shadow Cabinet minister, not just on the politics of it, which are, of course, atrocious, but just because it's so pathetic. It's like Randall, the school snitch from recess. You don't even have the kind of gumption to do it yourself, but you're kind of in the sidelines going, oh, I'm approved of this. It's also come to my attention that Toby Perkins has had some pretty offensive things in relation to the GRT community. He said that he wouldn't want a travellers encampment to set up near him. He apologised afterwards after there was an outcry from the GRT community. When you put those two things together, the applauding of indiscriminate baton strikes against protesters who are there in part because of a bill which will criminalise and really crack down on the GRT community, I wonder if there are some connections here. If not consciously, but then unconsciously about a kind of desire to see more authoritarian measures from the state against those who are deemed to be disruptive and criminal, whether those people are deemed to be that way because they're protesters or if they're deemed to be that way because they're part of the GRT community. That's really dark. I hadn't thought of that connection, actually. I mean, my interpretation of it was, and I think that's very valid. I didn't know about those previous tweets from him or previous articles, previous comments.  So obviously, you've got Keir Starmer said, we have to look like, we support the police. We have to look like we don't want to defund the police. We don't want to abolish the police. And they've ended up saying, oh, we have to now clap everything they do. So you have a situation you now have front bench shadow ministers, you've got a cop hitting someone with a baton like literally beating someone up and they're like, oh, yeah, that's brilliant. That's brilliant. We love that too. We love that too. And then you can sort of just imagine them sort of, you know, how far does it have to go where they won't be giving this huge round of applause because they think it makes them look good. And sooner or later, we're going to have a situation where they're doing this huge round of applause because I think that's what you have to do to get elected. And then everyone's just looking at them like, guys, no one thinks that's cool. Like, where does this end? If your instant reaction to seeing police violence is to say, well, we're the Labour Party, we want to get elected. That means whatever the situation, we have to side with the cop. I mean, it could go really badly wrong, couldn't it? Well, I mean, yeah, yeah, it could. Because one is unprincipled. It's so unprincipled. And two, you're never going to be able to outwater cannon pretty Patel. You know, there's always going to be a politician on your right flank who can go much further. And the thing is that they really mean it. You know, pretty Patel has previously spoken out in favour of bringing back capital punishments.  So it's just it's inauthentic.  And it's also not even that successful as an electoral strategy. But what's more, I think that it is a real insult, considering Labour's own history. So when you think of the violence meted out to minors, when you think about what happened at all grief, when you think about what happened at Hillsborough, and all of these events have really played into the politicisation of their membership, and have shaped Labour's history in self image and connections of working class struggle in a really powerful way. So then a Labour shadow minister to turn around and say, you know, I applaud baton strikes or to symbolically endorse indiscriminate baton strikes is an insult to that history, or a sign that you never took it all that seriously in the first place. And this is this isn't about whether you consider the events last night in Bristol to be either morally or strategically right. That's entirely a separate issue. It's a measure, I think, and a very basic political test of whether somebody is serious about progressive politics is how they react to images of state violence. And anyone who applauds or celebrates it cannot be trusted.


All right. It is Python on hardware time. There is a lot going on. So for 2020, we asked the community, what do you want to see in Circuit Python 2020? You tell us. It could be projects. It could be code. But like I was saying on the show until because Scott was there and he heads up our Circuit Python development, Circuit Python is code plus community. So take a look at the blog post on our site where it's also in the newsletter because in addition to here's what I'd like to see with, you know, poor technical features. People are telling their personal stories about what it's like to be in a very kind, functional, inclusive, diverse community that are sharing projects, sharing code and trying to make something that makes programming easier and more fun. From beginner all the way to experts, one of the things that I'll show in a couple minutes here is the ease in which you can prototype and do things and iterate is what Circuit Python is really good at. And it's really good being able to have that idea and being able to make it. But boy, it would be lonely if it was just you doing it. So part of what we've done is build community around every part of Circuit Python. So just to give you an idea of some of the things that came in so far, okay, because, you know, folks have lots of different ways. So one, you can just how to get it to us. You can do a video on YouTube post on Circuit Python forum blog post on your site series of tweets. You can put a gist up on GitHub. You can email us Circuit Python 2020 at Adafruit.com things that we're looking for projects like to build things you could easier additional community programs and the list goes on and on and on. The folks that added stuff, some of it's on our team. Some of it's things like I want to see home kit. Some of it's here's specific things I want to see with music. Here's specific things I want to see with Blinka, which is our, which is for Linux. So that's all available. You can just make sure you email us or put it in Discord or tag us. We find comments and we add those as well. Like here's the thing we saw on Twitter. Here's all the things we saw on Instagram. And we'll tell you, whatever you think would be cool. We do listen to what people are saying. People want something. Tell us and it gets into the blender and we mix it up. And you may not get to it this year, but you can see past years we have you have, but we had a pretty good run. And it's also interesting to hear from people what they liked about the last year as well. There's stuff that you've seen that you're like, wow, I'm really glad this got used or got made. That'll be also helpful. Just, you know, we, we make code to work with other people. We want to hear from it's not just what I want to build. It's what everybody wants to build. And I think at this point, we're like, you know, year two, three into Circuit Python, you can tell this is working out. There is a huge ecosystem of boards already. We're almost up to 100 boards over half of them. Most of them are non-native. Correct. So that's, that's how we know we did a good job when we're, when more people are deciding to put their thoughts and passion and goals and hope and even business ideas into this. So speaking of, there is a new board. We have the Circuit Python. Do people say MXRT? It's the MIMXRT 1060. Okay. This is a super powerful NXP chip. Ultra, but it's like a gigahertz. Super powerful. And Feather Format, USB-C, Circuit Python running, and Arturo has been a member of the community. It has a board called Serpentay, sells it on Tindi, and it runs Circuit Python. And this is the, I feel like a mezzanine thing going on there too. Just kind of cool. Initial Plurio Quest came in. It's now on circuitpython.org slash downloads. And Lady, just for the folks that aren't super technical, or even if you are like, it's hard to keep track of all the chips. Why is this NXP chip in particular good for this or for anything? No bad chips. All chips are good. But this one is interesting because it's a very, very powerful chip. It's running the 1010, I think it runs at 500 megahertz. This one might run at 700 or 800, I can't remember. And you get external memory, external flash. I mean, they're very intense chips that can run Linux. I mean, it's almost the same power as a Raspberry Pi Zero. But they're very inexpensive. The cost has come down quite a bit on these chips. And so, for example, the 1010, which was on the other feather, I like to use that as an example because it's running at 500 megahertz. I think it has 120k of RAM. You can put external flash on it. And it's running at, it costs like $1.25 or something. It's so inexpensive. And for CircuitPython, we have enough RAM now, I think, to do a lot of projects. But because we have to use 80% of our cycles on interpretation of the Python script, having a very, very fast processor will make people feel like it's working a lot more like modern Python on a desktop. Or trying to achieve modern desktop Python speeds on a microchar. So if you learn Python on the desktop, theoretically, as these boards come out, it is pretty much the same thing. So interesting. They have a couple of the intricacies that are very interesting. I mean, they're not the easiest chips to use, of course, as they get more powerful. They have memory management units. And you have to partition your memory in a certain way. But they are also extremely capable. The chips have high-speed USB. This would be one of the first high-speed USB chips that's supported for CircuitPython. So it's very exciting, because we want to do more with that. So expect more. Watch the news. It was on Hackster. Watch our site. We have some boards coming. Our Turo has some boards coming. It's working out. And hopefully we'll be doing some partnerships with some companies, maybe including an XP, on how to introduce this chip to a world of makers, hackers, artists, engineers, people who want to build for fun and also for industry and also for business. So stay tuned for that. All right. Very exciting. Okay. We've been doing our top of the decade posts on Adafruit. And the number one product for the last decade, all together, when we add up everything, was the Circuit Playground Express. And one of the reasons is because it runs CircuitPython. That's right. It also runs Makeout. It also runs Arduino. It also runs TinyGo. It also does other things.  You voted with your dollars. And that's what we tallied up. And that was the product of the decade for us. It's new products that are running CircuitPython. We have the Itsy Bitsy. Yay. People wanted something small. It has a Bluetooth. This is it. It's a Bluefruit board, but it's so teeny. It's the Itsy Bitsy NR 52 840. The CircuitPython thermal camera that Cedar Grove is working on. This is a cool project. GitHub repo has a video on YouTube. It's graphics. One of the things I liked was as Cedar Grove was discovering how Display.io worked, made these cool graphics to better understand themselves how it all works. So check that out. Congratulations to Deshipu. The new Pew Pew M4 is a CircuitPython graphical handheld game console. And it is now Oshawa certified open source hardware. Some happy new year from our friends over in Japan who made the CircuitPython book. That's available in Japanese language. They made this cute graphic and puts it up. It's a Chika Laurie. I guess she's the mascot. This is the CircuitPython MIDI to control voltage module, the winter bloom. And this is by Zia Coates. Fun easy to program, allowing integration between USB MIDI and module synth gear. This is what JP made in fact. I love the PCB on top of the cigar box. It's cool. It has a really nice look to it. This is what I was talking about before. Needed just to make this light. Needed to be motion activated. It's a joy to prototype with CircuitPython. And well documented Adafruit boards. CircuitPython is code plus community. If we had to add a tagline we'd probably say it's a joy to prototype with CircuitPython. So that's how easy it was to make. So easy. All right. Helen, it was just on the show and tell. Was it 36C3? It was cool get together that they do in Europe every single year. This is the Serpentay. I was talking about before. We're in some Neopixels and it's wearable. And it's soldable. Speaking of Serpentay, this is the first Serpentay shield. So the Serpentay Circuit Python board and folks are already building accessories for it. Oh, I like this. It's a cute idea. Yeah, you'll go to Encoder, go to IO, and Noled. Yeah, it's super cute. Good idea. Okay. These are some feathers that are taking flight, making their way. This is a UWB localization feather. Yeah.  Yeah. This is the OrangeCrab revision point two boards. They're in. They're in orange. And this is yet another cool feather design. So we're trying to keep an eye on all the different feathers. There's hundreds of them. This is so intense. Look at this. GitHub.com slash Adafruit slash awesome dash feather. That'll give you an idea what's going on. A lot of these runs from Python, of course. There was public domain day. And so Michael Weinberg, a friend of ours, made a Raspberry Pi Python powered image display that used the Children's Museum of Art open access API. And so then, of course, Dan over on Twitter said, I can make this with PyPortal. So we're already seeing that. And that's one of the cool things. When you could do rapid prototyping, it's almost like skateboarding, where everyone's doing tricks together. It's not a competition. It's like, hey, look at this cool trick. Hey, look at this cool trick. Free art every day. Here is another PyPortal project.  All right. Go subscribe and follow CodeChomper. Get those numbers up. This is a neat project from Adabox 14, which happened to ship with a Circuit Playground Blue Fruit Express that runs CircuitPython. It's one of these cool globes. And you can make this technique inside of the snow globe. It's like acrylic paint and stuff like that. We don't really go to CES. I think maybe we were banned for TVB guns or something like that one year or someone that we knew was. But there is, we try to keep track of like what's kind of interesting in the Python community, at least this year. And so this is called Richie. And it's a Python controlled robot. There's a circuit. There's a Raspberry Pi inside of it. I'm trying to get a hold of the company. It's super cute. And it's expensive. It's $10,000. But the idea is you'd be able to program it with Python, amongst other things. So that's kind of cool. So we'll continue to try to do some more coverage from CES. 7,000 thanks. The newsletter that we do every single week about Python and hardware. We reach 7,000 subscribers. Thank you so much, everybody. 2020. We'll continue to cover all the greatest news in the world of Python and hardware. Lots of ways to send us news and more. Check the blog, check the newsletter, check our video, put it in the comments. We'll probably cover it. That's Python and hardware news this week. All right. Okay.


This study examined the presence of aerobic bacteria, antibiotic resistance, and multi-drug resistance profiles of bacteria isolated from various wound infections among a group of Egyptian patients. The results indicated that polymicrobial infections were present in 55% of samples, with Staphylococcus aureus being the most common cause of wound infections due to accidents. The prevalence of methicillin-resistant S. aureus was high at 89.9%, while Pseudomonas originosa was found to be highly sensitive to Suprafloxacin but highly resistant to Levofloxin. Additionally, several isolates displayed a multi-drug resistance profile, indicating a need for improved hygiene practices and health education strategies to reduce the risk of wound infections caused by these organisms. This article was authored by Iman Farooq Ahmed, Aisha Helmi-Rasmi, Aptu M. A. Darwish, and others.


Welcome back to my channel guys, it's your girl Coco Styles and on this channel we talk about beauty, fashion, lifestyle and styling. So today I am going to go to the dentist and I'm gonna get in visit line guys. So I thought it would be a good idea for you guys to come with me along with the entire process. I'm not gonna video inside but when I get back home I'm going to show you guys the in visit line. That I got and if I'm not mistaken because it was like a month or so ago. I don't think I got the in visit line brand. I think I got another brand which looked a little bit better as far as the clearness on the tracks. Well tracks I don't know I don't think all of them. So you guys are probably like oh why are you getting in visit line blah blah blah. I am going to be 42 this year and I am noticing that my teeth are shifting and I don't like it. It's like little stuff like a little space over here. Like the center one looks like it's shifting and I believe one over here looks like it's shifting. So I wanted to get that fixed before it gets out of control guys. So when I come back home I'm going to show you guys the tracks, the trays, the trays so you guys can see it. And then I think I still have the photos from when they first took it and then you guys would be able to see my imperfections that I want to fix. And let me see the cost of it. Okay so I have a regular dentist who happens to be out of network which I love her. I've been going to her since 2013 so I didn't mind her being out of network. And then I have another dentist on this side, well an orthodontist. So my first dentist she charged about $5,500 for the visit line. And this actual orthodontist was $4,300. My insurance was only covering a very very small portion with the out of network provider and covered pretty much half. At the in-network orthodontist. So if you guys are looking to get it make sure you're going to an in-network orthodontist. And I would say go to an orthodontist opposed to a regular dentist is because they're different, okay. And I didn't know that before until I did my research. So go to an orthodontist, make sure that they're in network and that they specialize in visit line. What else? So everything was pretty pretty smooth. Of course the office is completely different from a regular dentist office. It was like really fun. I've never been to an orthodontist because I've never had braces. I've never had any issues with my teeth. But again I guess I think it's because I'm just getting older and it's just like shifting. Which I think is totally normal. So when I come back home I'll show you guys everything and take you guys along with me. I do know that I will be switching trays once a week. So I believe people do it every two weeks. The first dentist that I had, my in-network dentist, she told me six weeks. I'm sorry, six months. The orthodontist doctor said 12 months. But he said the reason why I say 12 is because I don't want you to get your expectations up and it's not where you want it to be in six months. Yeah and like I said, the first lady, she was just more money. The actual orthodontist was a lot cheaper so I highly recommend doing that and making sure that they're in-network so you're saving your coins guys. They also, one thing I didn't like, excuse me, at the new place was she told me that my insurance wasn't covering it. So it kind of made me raise an eyebrow because my out-of-network place, they actually gave me what like, I think it was like $750 or something small. But I knew it covered, my insurance covered like 2000 or something. So it kind of tripped me out. But the in-network lady told me that, oh no, they didn't cover it. It was an age cat. So I was like, are you sure? She's like, yeah. So of course, me being me, I'm going to call my insurance. They're like, there's no cat.  And I know she kind of felt like she screwed up.  But basically they did cover 2000 or something. It may be 2000, 2100 or something like that. So that chopped it down to half. They also had a payment plan at my in-network doctor with no interest, which is really great for people who can't afford it. But my out-of-network doctor, she was trying to get her coins in like six months. So which was, it wasn't bad. But I know people don't really have it to pay something out of pocket like that or even monthly or even be pressured to pay it in six months. So think about stuff like that. It wasn't an issue for me. I just felt like she was just overcharging the out-of-network doctor. So that's why I actually switched. And she wasn't an orthodontist. So when I get back, I'm going to show you guys some more. I'm going to show you the trays and stuff. I may try to take them out. Maybe not this actual video, maybe another one. But I'm going to try to do it at least once a week for you guys so you guys can see the progress. And I don't even want to cheese up in the camera because I have a... Oh, you guys can see it. You see that space? That and then this is the space here.  I'm sorry, black triangle. And it looks like a little space. But I think that's because my teeth are shifting. And he said that he's going to like shave it. So that freaked me out. But he was like, no, it's really small. So when I come back, I'm probably going to be all up in the camera for you guys. So I'm happy to actually bring you guys along with them. I don't have a lot of issues. However, the little bit of shifting that I see every time I watch a YouTube video, I'm like, what the hell? And that's because my mom has perfect teeth, guys. So I'm just used to it.  All right, guys, my Invisalign. So let me rephrase it because I didn't get Invisalign. I got the brand called Spark. And Spark is a little bit different from Invisalign as well. The trays look a little bit clearer than Invisalign. Like, Invisalign has like a tint of yellow to it. So I'm going to jump right in. So I'm probably talking with a little list a little bit because I do have them on. And I'm going to try to come close so you guys can see. So I have nine buttons. I have three on the bottom, right? Maybe on the bottom? Oh, five on the bottom and four on the top. Yeah, five on the bottom, four on the top. They also said anytime I change my trays to make sure that I am making sure that my buttons are all still there. If they're not, I have to call. So I'm just going to jump right into it and show you guys and have this whole goodie bag of trays. I have a total of 25 trays. I'm going to be changing my trays once a week. So every Monday I'm going to do mine. I'm just going to pin my hair back so you guys can see. It's probably going to fall down again. So here is his spark. I don't know if you guys can see that. So that's spark, right? My trays. Hold on guys. And those are my trays. Let me just grab this because it fell. I have 25, like I said. This is tray three. So I have 25 and then they give you five containers. Here is my case. The case is different from the Invisalign one. So the gray one has a mirror on the inside of it. Just in case you don't carry a mirror around with you. You've got the little mirror in here. And then the other one, little change coin purse, which is this one. I'm trying to make this video short first. Yeah. And this one is like a little coin purse. It has a little ventilation at the bottom. So I'll probably carry that one more so than anything else. It's blue, green, whatever you want to call it. Feels awesome. So that's that. And then my scents, my overdances, they actually gave me... Oh, you know what? I should show you guys the thing, but I took it to see this. They also gave me... What's this? They gave me a file for the top of the liners if they are rough. But I will say what I'm having right now, it's not rough. They also gave me this...  I don't even know what this is. It's just stuffin' all around the office. They gave me a cup of water. How cool is that? And then they gave me the chewies, guys. The chewies, I've heard that you need these for when you are putting them on and they're not actually fitting firmly. So you just chew on them for two to five minutes and then you're good to go. So I'm gonna come closer so you guys can see it. I'm gonna try my best not to be all... This is gonna be stank. So I don't know if you guys... Here is a button here and here and here and then I have one over here. Over here, sorry. I don't know if you guys can see that. Over here. And then over here. Then I have one, two, three and then I have a fourth one here. Should I take them off? I'm gonna take them off. But it's gonna be some saliva, so let's try it out. So here's the thing. I saw a young lady taking off her invisible lines and she was struggling.  And that's it, right? It's off. Simple. I'm gonna pop it back on and that's it. So again, I'm gonna change my trays once a week.  Like I was saying earlier and she says because after the 10th tray if I don't go get it shaved in the center slightly it's not going to move like it's supposed to. So she put a big sticky in it. I said stop and then go for another visit at the dentist at the orthodontist so they can shade the middle down which is really really small she said. But other than that they do not hurt me today guys. And again you guys see the space here. It's not a space but this tooth and this tooth are shifting and this tooth is shifting in my center teeth. You guys may not see it but I know how my teeth were and I am getting older. I'll be 42 this year and I know that they're shifting and I don't like it. So I'm gonna let you guys come along with me in my journey. I'm gonna do my best to really record the entire thing and try to pop in some pictures I don't even think I have. I just hope you guys can get a really good view. Let me give you one more view of how they look. So you see this here the space I have a little space here and they're just shifting. Like this one is shifting here Yeah. So it's not bad but I know for me I don't like to see it so and again the older we get they're gonna start shifting. So that is it for this first video of my Invisalign process. Again it does not hurt me today but she did say the first trade is not one to hurt me. My lips are so dry. She said the first trade is not going to hurt but the second one may. So I'm just gonna walk you guys and take you guys along with me in my journey. Like I said I have 25 trades I think she says she thinks that I'm gonna want to more after the first set of 25. But who knows we'll see and that's just for a perfect perfect smile. Guys comment below if I sound like I'm talking with a list it doesn't seem back to me but I don't know what you guys hear so just let me know. But I do again want to bring you guys along with me through the entire process and again it's called spark it's not the standard Invisalign brand. So if you like videos like this please comment below and if you say to the end of this video please comment Coco we see you and don't forget to follow me on Instagram at CocoStylesNY in my blog CocoStylesNYC in my website CocoStylesNY.com and I will catch you guys in the next one. Bye.