All right. Well, good morning, everybody. I guess it's about time to get started. If you've had your coffee My name is John. I'm here to talk about the criminal. This is the first In-person talk I've done in almost three years, which if people know what my schedule used to look like is a pretty strange thing I can't imagine a better place to start, but it's also the first version. I give in this talk in general And then over a year. So a little bit has happened since I last did this Right the last time I did a talk like this was in August of last year. So we've merged a good 84,000 patches since then coming from nearly 5,000 developers We've added about 3.6 million lines of code to the kernel much of which is AMD graphics boilerplate, but there's other real stuff as well We put out six kernel releases with another one coming at the beginning of October. So The point that I would make here is that There's really no way I can cover all of that So if you're looking for a comprehensive summary of what's going on You're gonna be disappointed. In fact, I haven't really tried to do that for a while So what I intend to do is to focus on a rather smaller number of what I think of as Transformational changes things that are fundamentally changing how we will either make use of or develop the kernel in the kernel community so That's that's my theme, but let's get a few of the details over with first This is what we've done over the last year in the kernel development community As you can see there have been six kernel releases coming out on the usual nine or ten week release cadence You can almost set your clock by the kernel release schedule these days Each one of these is a major release somewhere between 12 and 15,000 commits added to it And each one involving the work of about 2000 developers Now this is really pretty normal for the kernel these days The only thing that I might point out is that the nearly 2100 developers contributing to 5.19 were in fact the highest we've ever seen So we do continue to to grow the kernel community We have an ability to bring people in that I think a lot of projects would really love to be able to match There's there's a lot of people who are out there Wanting to work on the kernel for one reason or another and it helps to keep the community healthy So this of course is the mainline kernel as released by Linus Torvalds But none of us run mainline kernels these days a very few of us do only the more adventures among us do that What we run or what are called the stable updates or something derived from that usually by our distributor So this is the current status of the stable updates There are six of them being maintained now they've been kept around for a period of up to six years 5.19 is also being maintained, but that will last only for about another month So the thing that I would point out here is that these kernels have seen a lot of change a lot of stuff going into them 4.14 has at this point and this by the way is a little bit old But almost current has received over 24,000 changes since the allegedly stable 4.14 kernel release was made That is over a full development cycles worth of changes in fact getting closer to two development cycles full of changes So there's clearly a lot of stuff left that we still have to fix After we put out a nominally stable kernel release it takes a long time to really find all the bugs and get them fixed in fact I was Kind of curious about just how long it takes so Wanted to do a little bit of an inquiry into where these bugs are coming from or actually Something that's a little bit easier to answer which is when are these bugs coming from how old are they and the nice thing is that?  Just it's just a bug fix that I found in the 5.19 series There's nothing particularly special about it just one of many But one of the things that developers do when they're putting in a bug fix besides describing the bug and what's being fixed and all that Is they add this fixes line? That says the indicates which commit introduced the bug in the first place This is useful for the stable kernel maintainers to know how far the back ported and such it lets you know How old this bug was how long it has been in the kernel now in this particular case the developer also Helpfully put that it was introduced in 4.14 But they don't have to do that because the the fixes line alone is sufficient to tell us how old this bug was So I looked at 5.19 and all the things that it fixed and saw where the bugs came from and got a nice Allegable plot that looks like that But if you zoom in on that you start to see a few things up there the top line is 5.18 So the 5.19 kernel fixed 268 bugs that were introduced in 5.18 So that many that were carried over from the previous kernel release it also by the way I didn't indicate it here, but fixed something like 700 bugs that were introduced in 5.19 bugs that were never actually released in in a stable kernel So you can see that but remember that other bug I was looking at came from 4.14, which was there in fact 17 bugs from 4.14, which was released five years ago almost exactly five years ago We're fixed in the 5.19 kernel, which was released last month So these bugs hang around for a long time. In fact, you can see this long tail of bugs If you go to the other end of the plot you see this in fact a quite long tail of bugs And we are still fixing bugs that were introduced in the two six kernels In fact, if you look at the kernel release history since we went over to get the entire known history There are only three releases that did not introduce bugs that were fixed in 5.19 So these bugs hang around for a while There's there's an interesting singularity there at two six twelve and one might think that two six twelve was a really terrible release They had put all those bugs in but two six twelve, of course is the beginning of the get era That's when we started using the get source code management system So those bugs are actually bugs that were really Introduced in the kernel any time from the beginning of Linux through to two six twelve in 2005 So that's why there's a whole bunch of them that pile up there But it is an indication that some of our bugs are indeed very old So a summary of this is that we're gonna be fixing bugs for an awfully long time. We Are hopefully introducing them faster than or fixing them faster than we are introducing them I intend to do some analysis to try to figure out if that's really true, but in any case even at that rate Bugs stick around for a long time. We have a lot of bug old bugs in our kernel So moving on to some of the big changes that I wanted to talk about I have a handful of them here The one I want to start with has been certainly a big topic at the Linux plumbers conference and other such Which is the Rust programming language Which is with any luck coming to the kernel sometime soon and people might ask why are we going to? Try to introduce a new programming language for kernel development And why rust in particular and the answer to that comes down to a few things But one thing to start with is all those bugs that we were just talking about The rust language is designed to make it not a lot harder to introduce many types of bugs Right it allows you to find types that can enforce all sorts of rules such as locking rules in The kernel to access a shared resource you have to take a lock typically later on you have to release the lock But there is really very little that can enforce that in the C programming language So we have bugs where data structures are accessed in racy ways We have bugs where somebody fails to drop a lock in the right place That sort of thing rust can enforce most of this at compile time. So those sorts of bugs just vanish The same is true with for example memory allocation memory safety that sort of stuff The C language is plagued by this concept of undefined behavior Places where the standard says if you do this Then anything can happen and the compiler is free to just crash your program or go off and drink all your beer or whatever That sort of thing the problem is that undefined behavior is almost impossible to avoid in an actual real-world C program It happens all the time and then strange things can happen rust is intended to to eliminate that to have behavior be defined in all situations and Get rid of this whole big bear trap that lives in the C language that continues to bother us the other thing is that While we have a lot of accomplished C programmers in the kernel community a lot of the developers who are coming into the world now Are less than thrilled about working in C. It's it's not You know it's something their grandparents used And they would rather have a language that helps them get programs right from the beginning that sort of thing so A lot of those developers are currently perhaps deterred from getting into the kernel community for a number of reasons C being one of them I've already seen a fair amount of interest from people who's saying if I can work in rust in the kernel Then I would like to do that. I think that the brain language like rust is a key to bringing in a new generation of developers Just hop I'll come back to a bit later on and I think that's that's really important So given all this one might wonder what what's the hold up? This has been worked on for a few years Why isn't it there already and the answer is comes in a few forms One of which is that rust is not the easiest language to learn Either if you're learning it at the beginning or if you're learning it coming from a C background It doesn't really look much like C So I just went into the kernel crate that's being proposed there and picked out a simple function This is a function that will panic the kernel and if you know rust you can read this and you know what all of the stuff Does if you can't well, I just saw a comment from a kernel developer this morning saying that rust is programming by smiley Programming by emoji It really can look that way to a lot of people if you don't understand what the lifetime markers and all that stuff actually look like So it's all stuff you can learn, but it is new it is different And this is a problem for the thousands of people who work in the kernel community now Who know see very well who know the code very well who are gonna have to learn this If rust comes in the kernel even if they themselves do not intend to write any code in rust Because they have to be able to maintain the code that is submitted by others They have to decide what goes in they have to be able to fix it So this is gonna impose a huge learning burden on a large community of developers And that naturally is going to create a certain amount of resistance and there are people who are not pleased with this idea at all that the people promoting rust in the kernel are Signing up for a whole lot of hand-holding and developer support and the good news is they seem to understand this But it's it's going to be an interesting process to get people up to speed on this Another problem with rust is that the language is still evolving See is pretty static these days rust is still changing from one run released to the next There are a whole lot of features that have not been stabilized and the kernel needs all of them so So we don't really have a stable version of the compiler to work with and we're having to use Features of nightly releases and all that and that makes people nervous when you're talking about building a production kernel with with this This kind of thing we've gone out of our way to Ensure that the kernel can be built with a whole variety of C compilers of varying ages so that anybody can do it With rust you're gonna have to use the current development version of the compiler and that that makes people nervous and again with good reason And finally there are some things that are simply hard to do in the rust language Due to the way it works Classic examples the doubly linked lists that the the C uses heavily throughout Due to the way it rust works You really cannot easily make a doubly linked list because you're trying to do ownership in both directions and rust wants one Owner of each data structure and so on it gets very complicated very quickly There was a whole discussion at the rust conference last week about Pinning and how you simply initialize a self-rential data structure of this so that it doesn't get wrecked when the rust Compiler moves it around and so on so there's some hard problems to be solved because some things that we do are just hard to do and Then I would point out that kernel developers can be fairly conservative sorts of folks at times Again with good reason if you make a mistake in the kernel You can create problems for incredible numbers of users and these problems can only show up years down the line when that kernel Shows up in some enterprise Distribution so kernel developers have learned to be very careful, but it this works both ways and it also can lead to Resistance to the bringing in of new technologies that we really need to have we're certainly running into that This is a quote from a kernel developer whose name I'm withholding for for their own protection from a few months ago this developer was Simply flat of insulted by the idea that his skills were not up to the task of writing safe code in C And that we needed to use a language that made writing safe code Easier, right? You run into this sort of thing and in any community and certainly in the Keener kernel community And this is going to take some work to overcome. We're doing it. I think we're going to get there and I think that It's pretty clear that the rust support will be merged on an experimental basis It could happen as soon as 6.1. I think it's going to take just a little bit longer than that It will be a subject of discussion at the maintainer summit tomorrow And we might have a little bit more inside then But it's coming soon if it doesn't come at 6.1 It will probably come sometime early in 2023 and then the show will begin and we will see how well it really works for developing of kernel code So next thing I want to talk about how many of you know what I owe you ring is at this point so Probably less than half of the audience I Know you ring takes a little bit of explanation. This is a new API in the kernel. Now. Let's start by talking about the traditional Linux or Unix system call API if you want to read data into a buffer you call read You can pass it an open file descriptor a buffer in length And the kernels job is to fill that buffer with that many bytes of data from that file descriptor pretty simple But this the system call has some limitations that have bugged people for many many years is single threaded in the synchronous you call read Nothing happens until that read has completed everything stops in that thread There's really nothing else it can go on which doesn't work well in the modern world of large numbers of processors And you're trying to do a lot of things in parallel and that sort of thing Read is also simply a system call one thing that Unix developers have learned Many years ago is that system calls will slow your program down and one of the best ways towards better performance Is the avoidance of system calls? Linux system calls are faster than most others, but they still are impediment. You've got a context Which there's stuff that has to happen So you want to avoid system calls whenever you can if you do a lot of reads you have to do a lot of system calls So what's another way that you could do this? If you use IOU ring you end up setting up a shared memory area This memory is shared between the kernel and user space both sides can access it directly as memory And it's organized as a circular buffer So you put things at one end in at one end pull things out the other in this case User space is inserting commands where commands are something like read this many bytes from that file And then the kernel is consuming them at the other end of the circular buffer and executing them So these two things are happening in parallel asynchronously from each other User space can put a whole bunch of commands into this buffer without waiting for any of them So you can stack up a lot of stuff to do The results then come back in what's called the completion queue which is another shared memory area again Organizes a circular buffer, but this time the kernel is the producer in that buffer writing results into the buffer and User space is consuming those results out to find out what happened to the request that it put into the submission queue So the results of course can show up in a different order Then they were put into the submission queue because it's all asynchronous everything is completed when it's completed so This brings some real advantages that people have been looking for it allows a process to do operations Asynchronously we've had some support for that since the the 2.5 days really, but it has never worked all that well It's only supported certain use cases This is generally synchronous IO that can work with pretty much any IO device out there and files and so on So we finally have a true asynchronous interface for the kernel But the other thing is that as long as those buffers do not empty out User space can continue submitting operations and the kernel can continue Putting out results with no system calls happening at all It just each side just checks the memory buffer deals with whatever has been put in there and executes it from there So no system calls at all. This has resulted in some pretty amazing IO speed benchmarks If you're trying to do that sort of thing Has enabled a level IO performance that we've never really had before And so this has a lot of people excited because if you're trying to write You know a busy network server or a whole lot of other things that do a lot of IO This really helps a lot But there's actually more to it than just the synchronous nature of it one of the things that's worth mentioning is what's called registered files and buffers and To explain that we need to go back to that system call Right the read system call has to do the work of copying the data into the buffer But there's actually a whole lot more that has to be done here The kernel has to look at that file descriptors Verify that it's a valid file descriptor that the process is able to read from it And then it has to lock down the file descriptor so it does not get closed while the read operations taking place Then it has to examine the buffer and make sure this is actually valid buffer in that process's memory area If that buffer is not actually resident and RAM it has to page it all in It has to lock it all down so it will stay there and then finally it can put some data into that buffer For many operations if for example the data being read is already cached in the kernel Which may well be the case for file IO then this setup overhead is the the biggest cost of the whole operation by far a Registered file allows the kernel to do that setup work for the file descriptor and lock it down once And similarly for a registered buffer you register both with the IO u-ring subsystem It remembers them and then you can do operations on both of those without incurring that overhead going forward So that takes out much of the overhead of doing IO and again helps to increase IO speed significantly There's a whole wide range of commands that you can do not just things like read and write you can open files and accept Network connections and send messages and there's work Going on to add things like creating a new process and other sorts of things that are not really IO related at all a whole lot of I Think in the end we're gonna end up being able to do almost anything you can do with a system call by way of IO u-ring as well So you can fill up this thing with a lot of operations these operations can be chained you can put them in series So if you put in say and open a bunch of reads and then a bunch of writes say to a different file descriptor and a close All of that stuff can be put in the buffer It can all be changed so that each operation begins automatically when the previous one successfully completes and the kernel Handles all that user space just has to put the whole series in and forget about it. So it's done So it allows you to do some pretty complex things by way of the ring. It is in a sense becoming a separate API to System calls in the kernel that allows you to load Some sort of simple kind of programming to the kernel and execute it all asynchronously and just get the result back When it's all done. It's a very different approach to programming on Unix type systems And people are starting to run with it and do interesting things with it One of those is a thing called you block a user space block driver You know block drivers are normally block drivers being drivers for disk drives or similar devices aren't normally entirely within the kernel This allows you to move it into user space and the communications with the kernel happen again through an IO u-ring buffer set So I wrote about this they've they've done some things like a loopback block device and the network block device And a reporting performance results that are actually better than you get with the in kernel devices Which is a very interesting result So I think this is interesting for a number of reasons Everybody is said for you not everybody but certainly people have said for years that micro kernels are the architecture of the future They're more robust and more secure that sort of thing. There have been a lot of reasons why this have never taken off One of which being that the communications overhead between the various components of a microkernel really kills the performance of the system IO u-ring seems to have found a way to eliminate that problem We now have a very high bend with communication path that has almost no overhead at all So we may be seeing an era where things like block drivers and other things will move out of the kernel in the user space Processes because they can be made more robustly perhaps in an unprivileged mode and Without the performance cost that you used to see you that sort of thing And this is part of a bigger trend that I've been observing for a little bit This is a picture that I ripped off from Red Hat's website because it was easy to find of the traditional idea of how Unix systems were where you got one very well-defined box Which is user space that has processes in it and another well-defined box Which is the kernel space and this very narrow little pipe that is the system called interface between them And that's really the only way to communicate. I Would put forth the idea that this this model is going away that that boundary between the kernel and user space is Becoming increasingly porous and that we're seeing strange things being done on both sides So examples would include iou ring which it is talked about where you can stick programs ioprograms into the kernel and move the Block drivers out of it. I haven't even talked about BPF, which is another fundamental thing But everybody's heard all about BPF. So I left that out of this talk Except for one thing I wanted to point out Which is if you think that BPF is a cool technology, but you're not really using it I thought so and then I asked my computer how many BPF programs were actually loaded and running on it and found 17 of them Mostly put there by system D, but there are other users as well BPF is here it's taking over an awful lot of things and will continue to do so and again, it's Making holes in that boundary because now you're loading real programs into the kernel and running them in the kernel context in a way that is Hopefully safe and able to do interesting work and increase the flexibility of the system as a whole The system out there called Daemon and associated thing called Daemos This is a mechanism that allows A lot of memory management decisions such as which pages you push out to to swap which ones you keep to be pushed out to Under user space control. There's a whole lot of mechanisms that have been added there You can search those out if you're interested in them user fault fd pushes that even further of course by allowing By referring page fault handling in general to a user space process in certain cases Sec comp does a similar thing with security decisions where you can now defer decisions on security policy to a user space process something that was previously entirely the the province of the kernel xdp is a networking subsystem that allows the handling of a lot of Network protocols and such in user space while still taking advantage of Of kernel drivers that sort of thing The people who are really looking for high performance with networking have gone over to using xdp It's done again with bpf of course and that sort of stuff So the thing that I would point out here is that In my mind linux systems are going to look an awful lot different in the future As all of these technologies really set in and take hold and the way we program our systems changes And the system call interface is not going away But I think a lot of the code that we use a lot of the code that we work on is going to Only use those interfaces to gain access to these other ways of working with the kernel which offer more flexibility and better performance and The ways to to make the kernel really work the way you want it to do And that's going to lead I wouldn't say the fragmentation but it is going to lead to a world Where the kernels that we are running are not all the same anymore Because depending on which bpf programs you've loaded into your system Your kernel is going to behave very differently than the kernel on some other system out there So it's a more flexible world and that's going to have I think both ups and downs But mostly ups. That's why we're pushing in that direction So the last thing that I was going to talk about is a subject that I Refer to as generational change talking about the development community now This is a picture that I took in 2001 at the very first kernel development summit So there are some familiar faces there if you go out you will find some of these people wandering the halls If you go over to to the links plumber's conference, you'll find an awful lot more of them A lot of these people are still around Some of them I think are still wearing the same clothes But a lot of these people are The people who are our top level maintainers who are in a lot of ways in charge of how our development community works And what we do so there are some very good things about this This development community Represents a really unparalleled depth of skills and experience We have people who have been working on the kernel for 30 years And know it from one end to the other. They know not only how the kernel works, but they know how our development process works They know how things are done and just as importantly why they are done that way I think there are very few software projects out there That have had this many people stick with them for this long If you look at most projects within companies people come people go And the people who are working on it now may have very little to do with the people who started it years ago Even if the software itself is as old as the kernel is So this this is a really good thing. This is not something that we want To to lose anytime soon But at the same time It it brings some some problems with it including A resistance that changed I already alluded to when talking about bringing rust into the kernel We have people who have been working on the kernel for 30 years in c And don't necessarily see a reason why they should do it any other way. It has worked very well for them until now And so they resist putting things in And you will find that in a lot of of areas whenever somebody tries to bring new technologies into the kernel We often run into that sort of resistance We also run into it in the development process itself The kernel project famously still uses email as its primary communication and And management mechanism. There are a lot of good reasons for it. I really still don't think that You know the the modern web based forage systems and all that We really scale very well to project the size of the kernel Where you have thousands of developers and all this stuff going on at once. It's very hard but To a great extent we're not really even trying All right, again email has worked very well for all of us You know, we figured out how to configure our email system to work well for us back in the 1990s sometimes And I haven't really changed it much since and don't really want to change it now And so there's there's not a whole lot of impetus to change to a new way Of development and again, it works for the existing community It tends to be an impediment for For new developers who have to figure out how to set up their email To actually deal with the sort of volume that sort of thing Have to figure out that they shouldn't actually subscribe to linux kernel because they will really regret it Have to figure out how to send a patch out of their corporate email system and not have it be corrupted On the way out all this sort of thing you see people struggling with this sort of thing I believe it turns away a lot of our developers, especially those who would Fix one thing and then move on which are important community to have as well A lot of these people just don't want to deal with it The other thing I would point out if you look at This picture This is not the most diverse crowd that you've ever seen If you take a picture now it is a little bit better, but not that much better Really not that much better at all. It hasn't improved that much In in 30 years And sometimes I worry That we have kind of given up trying That the things that we have tried don't seem to have worked That sort of thing We really need to I think turn over some of our community because we're leaving a lot of talent on the table We're missing out on the contributions an awful lot of people could be bringing By having a a community that is this This Undiverse so I would really like to see that that fixed I would really like to see a new generation of developers come in that can Can change that situation and make our development community look more like our user community and and the world as a whole I think we need that to be successful going forward and to last for another 30 years And finally the kernel maintainers are increasingly An increasingly tired and increasingly grumpy set of single points of failure You have people who are joint choke points from various subsystems Um, they didn't generally want to be that way. I mean I am arguably one of them. There are many of them out there But They're the only people who are maintaining a particular subsystem So you have to go through them they tend to be overwhelmed partly because While companies are happy to employ kernel developers They tend to be a little bit less thrilled about paying for kernel maintainers and so people are Often trying to squeeze Maintainership duties in to spare corners of their time or on their free time and so on and so they get tired Um, they drop out at times. It's a bit of a problem It's a bit of a vulnerability in our development process that I would really like to see address somehow So, um, what can we do? How can we change because this is going to change because these Developers who've been working on the kernel for 30 years are eventually going to find something else to do one way or another Right, we are going to go through a change here That may not be this year next year, but it's coming So one of the key ones is is getting away from this single maintainer model that that we still have throughout much of the kernel I developed I know once described the kernels being hundreds of independent little five thumbs and it tends to be that way But it doesn't have to be that way There are some subsystems that have gone to To groups of maintainers that can all handle the maintenance duties Those subsystems tend to be a lot happier and less grumpy in general we're making progress there and It really showed us value last year When one of our most senior and most important kernel maintainers had a health crisis and had to drop out for for quite a long time And maintenance of that subsystem one of the busiest subsystems in the kernel continued on To at a level that almost nobody even noticed the outage Which was really pretty amazing a few years ago. It would not have been that way It would have been a serious problem We need more of that because these things will happen Documentation of course I can't do a talk without yelling at people about documentation because it always kind of falls by the wayside but the developers in our community Containing their heads a lot of what people are calling tribal knowledge of how things work and why they work this way And why we've done things when they go away that knowledge is going to go with them We really need to set down an awful lot of more of it into our documentation So the people who come come in can pick it up and not have to learn these lessons the hard way Which you really see now you see a lot of this with people who just submit patches that Go against the way something is done in some subsystem and they don't understand why and they have to be corrected We lose a lot of energy that way now in the future if we lose the knowledge to review these patches and correct people Then we're going to have worse problems. So we need to increase our Energy put into documentation. This is another thing that companies tend not to want to pay for And so it doesn't happen and it's it's a problem Throughout the the open source ecosystem and very much a problem in the kernel And finally, I believe the kernel community has long under invested in its development tools This is the community after all that did not use the source code management system for its first 10 years of operation Um, it says something there, but it's also the community that once it did decide to Use the source code management system created one that transformed how everybody developed software The scale on which we do things tends to Mean we put unique demands on tools and if those can be solved they solve a lot of problems for a lot of people So the point I would make is the investment in tools has always really paid off very well for the kernel community We don't do enough of it We've seen some of it recently especially coming out of the linux foundation In the addition of the lore archive and tools like v4 Once again, I think you've repaid the energy that went into them over course of months and most We need to do more of that. We need better tools For our whole development process so that Developers coming in will have an easier time of it and can come up to speed and stay up to speed Much more quickly And then finally just to close we need a new generation developers people who can shape the kernel's next generation because Things are going to change there. We knew need to keep bringing people in Maybe some of those new developers or some of you folks out there I would encourage you to to join our community and be a part of it is a fun and exciting and interesting place And with that I am done. It looks like I have a couple of minutes for questions If anybody has any Is there any sort of how to on doing that making documentation because I don't remember seeing when I knew it took me forever to learn how to read it All right, um, steven asks is is there some sort of a how to in the documentation about how to use email with the kernel community And we do have one document called email clients I believe that it's really focused on how to make your email clients and patches without destroying them Which is an important thing to do we refer people to that often because You have to do it and Some people reading there that with their particular client is really hopeless. You know if you're looking at look You know do something else. Um, that sort of thing um The bigger task of setting up a proper email environment so that you can get some sorts of email from the kernel community Without getting the entire linux kernel firehose And cope with it and do that there's there's nothing there for that And people just have to kind of experiment with that some of the tools I just mentioned include Ways of setting up a more web like interface to the To the linux kernel archive so that you can subscribe to particular discussions and that sort of thing Make it look a little bit more forum like for people who want that Um, I've written about that some on lwn. That's still in an early stage, but I think that will help some people as well Yes Will we have to use a development grade rust compiler for the first experiments? And it depends on what you mean by development grade the answer is yes The the plan is I understand is that you'll have to use the current release Of the rust compiler, but you will have to invoke the magic macro that turns on the nightly features that are not Actually stabilized and are not normally available in the current rust compiler So you will have to do that for a while because I mean the number of Unstable features that the kernel acquires is fairly large and it's going to be a while before they are all actually made into official rust stable features Okay way in the back you're gonna have to ask loud I'm having a hard time hearing you. Sorry. Um if you could Come up here if we have a mic somewhere. I don't Do we have a mic somewhere? It looks like there's a mic there. All right Just in one two three So the mbd user space block driver Is not just slightly faster probably probably about the same speed or slightly faster than the kernel device But it also has many more features now. I mean it only took about a week to write. So it's actually a You block is actually a lot more amazing than I think you even said in your slides. It's a it's a quite a game changer Yeah, I agree. I think that you block and other interfaces like you block For other sorts of subsystems Are indeed fundamental changes and as you say Once you've moved it out of the kernel, you can write it quickly. You can add features to it You can do things like that. It's it's going to speed things up Development wise as well as perhaps performance wise. I think the development wise part is the more important part All right, so we have a couple of online questions. I I can't see them. Um, yeah, I can I can tell Let's hear them When do you expect us to see drivers written in rust in a kernel release? When will we expect to see drivers written in rust in a kernel release? I don't know the when rust itself is merged It comes with a couple of drivers. There's an mvme driver That was written that is part of the rust for linux patch set Uh, it were it supplements the existing mvme driver, but in fact As the developer was just saying a couple of days ago and at the rust conference performs Just about as well as a very highly in tuned in kernel driver So we'll have those When we will have drivers for devices that are not currently supported By an existing c driver that I don't know I think it may be a while before people are willing to trust that rust is going to stay around and commit to having a driver in that mode But I could be wrong on that. We'll see Any view on when we when The next lts kernel comes out When will the next lts kernel come out? That is by convention at this point the final stable kernel release of the year So that will almost certainly be 6.1 That's an easy one All right. Well, I'm out of time. I think I'm done. I should get out of the way and let torsten set up for his talk And I thank you all very much for your attention


We're working together on a series of mini-documentaries about NSA spying issues. We're bringing together the voices of whistleblowers, security experts, and people from across the political spectrum. And our idea is to publish these right before the October rallies that are going to be held in D.C. on the anniversary of the Patriot Act. I'm very honored to help out the EFF and stop watching us, to help them get out the word and make the rallies in D.C. as big and as informed as possible. Ryan is an incredibly thoughtful, creative individual. He's a very talented filmmaker. He wrote and directed We Are Legion. He is a very insightful interviewer and he's able to get to the root of complicated issues through film. This is the moment. This is the moment for a large-scale debate on the future. The future of this thing we all love, the internet, the way we communicate, our relationship with our government, and how technology and its progress can blend with more traditional notions of privacy, liberty, and democracy. We're looking to raise $15,000 to finish the videos and publish them before the event in D.C. If you can't make it to the event in D.C., helping us fund these videos is a wonderful way to pitch in. So please make a donation if you can, and thanks for all your support.


Gun one, break down a bipod! Bipod! Hey, gun two, what's the round count? Round count. Round count. 200 rounds! 200 rounds? Yes!


All around us, throughout the universe, and at every scale, there is continual change occurring. Now the kinds of transformation that are possible and the circumstances in which they can occur are governed by the laws of physics. And yet we recognise that there are fundamental phenomena involving change, which the laws of physics don't seem to adequately capture for us. For example, think about information. Increasingly, our society is based on information. We know that it can be created, that it can flow and can be transformed. But what is its fundamental nature? Is there really only one kind of information, or can there be different kinds? Here in Oxford, my colleagues David Deutch and Chiara Maletto, with support from the Templeton World Charity Foundation, are endeavouring to create a new language for physics, in which these questions can be made precise and then fully answered. This endeavour is called Constructor Theory. Science explains the physical world, everything that's out there, including ourselves, at the fundamental level in terms of laws of nature, that is laws of motion, the law of gravity, electricity, magnetism and so on. Over the centuries since the scientific revolution, one thing that hasn't changed very much is the mode of explanation of our fundamental laws. So, for example, if we see a comet in the sky and can measure where it is and which direction it's going and how fast, we can use the laws of motion to tell us where it will be at any other time in the future. But sometimes that question is not the one we want the answer to. Sometimes we don't want to know necessarily where the comet will go if nothing gets in the way. We want to know where it can be made to go, given certain resources such as rockets, fuel and, most importantly, knowledge. That is the sort of question that is addressed by Constructor Theory. Now, information is essential both in science and in everyday life, even most so now that we live in a world where there are billions of computers all interconnected with one another. What does the existence of information tell us about the laws of physics? Well, in Constructor Theory we can answer this question exactly in what we call the Constructor Theory of Information and with that theory we bring information directly into fundamental physics. Information is very different from anything else we have in fundamental physics. It's not an observable, it's not like the velocity or the charge of particle and it somehow transcends the physical systems that contain it. Just think of a message, for example. It can be embodied in the transistors within a computer. It can be spoken aloud in vibrating molecules of air and it can even be instantiated in the flags of an air traffic controller. And yet the meaning of the message stays the same. If information transcends physical systems, how can that be a physical theory of information? How can we free information from its dependence on particular physical systems and yet retain its deep connection with the laws of physics? Well, you can't see information in a physical object unless you also know how the object could have looked if it had other information in it. And that is called the counterfactual property of information and it is easy to express in Constructor Theory because Constructor Theory is all about what is possible and impossible. And the only other thing that's needed is that the information when it's received can be distinguished by the recipient from all these other possible ways it could have been and also passed on to other recipients and that means it has to be copyable. Now these two properties of information, the counterfactual property and the copyability are both easy to state in Constructor Theory terms and without referring to any particular type of physical system. The very next step which involves imposing a condition that's very natural in Constructor Theory leads directly to all the most important properties of quantum information which is at the heart of the new and rapidly growing field of quantum technology. So the Constructor Theory of Information expresses the regularities in the laws of physics that permit the existence of information in our universe. These regularities permit things like computation, communication and even the existence of living organisms which evidently contain information about their own design. And all these regularities can be expressed exactly in terms of possible and impossible transformations and this is why Constructor Theory suddenly opens the doors to these concepts and brings them directly into fundamental physics. A DNA molecule is an information storage and retrieval device and so is a computer drive that holds something like the design of a new iPhone. Now these two objects, the molecule and the drive are physically very different. They have in common that they both hold information but it's information of a special kind the kind that can cause transformations in other objects much larger than themselves and we call that kind of information an abstract constructor or knowledge. Living things are made of atoms just like galaxies, planets or rocks but unlike these living things look much more like designed objects such as cars, robots or iPhones but of course living organisms haven't been the output of an intentional design process they haven't been produced by a factory. Now there's a scientific theory, Darwin's theory of evolution that explains how living organisms can have come about through the undirected process of variation and natural selection. The centerpiece of the explanation is a physical object. It's the DNA sequence that codes for the organism's design. This is what biologists call a replicator because it can be copied from generation to generation by the cell it lives in and for replication to be possible the cell must be capable of undergoing self-reproduction that is to say it must be capable of constructing another instance of itself with high accuracy.  Their accuracy is so remarkable that some physicists have been wondering how they can occur with such an accuracy on the simple laws of physics. Constructor's theory explains that they can and why. An accurate self-reproducing bacterium must contain a recipe, a sequence of elementary instructions to construct a bacterium and that's the fundamental thing that a bacterium has in common with say an iPhone factory. For the factory the recipe is the program that contains the design of an iPhone. For the bacterium the recipe is the DNA sequence and self-reproduction happens by copying the recipe in the DNA sequence and by reconstructing the rest of the cell by executing the recipes step by step. And one such step that is crucial for high accuracy to be achieved is error correction. Error correction for the bacterium is when anything that has gone wrong in the copy of the recipe is corrected and for the iPhone factory is quality control when faulty end products are discarded. Without error correction an error catastrophe would occur and this is because both the bacterium and the iPhone are highly complex structures. This plays one small bit and nothing works anymore which is why things like viruses that don't use error correction must stay simple under our laws of physics. And the striking thing is all this can be expressed exactly within fundamental physics. Knowledge is central to construct a theory. That's because the basic principle of construct a theory is that any transformation that isn't forbidden by the laws of physics is possible and that means that it can be performed in practice given only enough knowledge. So construct a theory can let us understand how knowledge and knowledge creating systems such as humans work. Constructor theory draws its fundamental distinction between transformations that are possible and those that are impossible. So construct a theory recasts physics into a new form capable of tackling these deep questions like what is information or what makes complex life forms possible. We believe that construct a theory has the potential to change the way we think about the universe and our own place within it.


This paper reviews the scientific literature on microwave pyrolysis, which uses microwaves to rapidly heat organic material and convert it into usable fuel. The paper concludes that microwave pyrolysis is a promising technology for energy recovery from waste materials, but further research is required to improve its efficiency and environmental sustainability. This article was authored by Howard H. Chase and Sushir on LAM.


So we're here at the display week 2023. Please introduce yourself. Steve Nivesen from Real Fiction. We are presenting here today. It's my colleague Richard from our Taipei office. Directional pixels for 3D without any optics. So what we can achieve here is you can observe different images from different directions. This can be used to create 3D images without having to wear glasses. And we eliminate the optics which make it potentially a much simpler mass production method. And also we eliminate some of the restrictions that you normally have in optics like color aberrations and limited viewing angle and limited angular resolution. So we do it all in electronics. We have here a micro LED in the back. If you lift the camera a little bit up you can see there's a micro LED behind this. This is just a very simple small proof of concept with a monochrome small micro LED display. In front of that we have a special ferroelectric liquid crystal modulator, a light modulator. And they are multiplexed, time multiplexed together in a scheme that makes pixels look different from different directions. And here we have created 10 different directions and you see different letters from each of the 10 different directions. Is it for holograms? It is holographic experiences. Basically it's an autostereoscopic system intended for being connected to an eye tracking system. So you can have a full 3D holographic experience. How is it compared with what people are talking with the light fields? Yeah, it's basically the same experience. You move around and you get different perspectives. In this prototype demonstration you don't get perspectives, you get different letters. But in the next coming versions we will have different perspectives of images. When you move around you see objects from different angles. When I see the light fields people talk about, it's kind of like, for example, dividing the display resolution by the number of views. Yes, we don't do that here. We conserve the resolution of the display. We put a light modulator in front and then we time multiplex between in this case 10 different letters. So we are showing 10 different letters time multiplexed very fast. It's operating very fast. We have a response time of the liquid crystals set up below 50 microseconds. So these are special liquid crystals with very, very fast response times. How much is 50 microseconds? Is that 200 frames per second? 50 microseconds is 20,000. 2000? Is it 200,000? This is 20,000. But it's very high refresh rate. It's absolutely very high refresh rate. The highest in the world. It is. And this way we're not doing spatial multiplexing but time multiplexing. And because we're not doing spatial multiplexing we're not losing resolution. So this is a big challenge with... Can you make this for AK? Can you make it for a big display? Yeah, our plan is to make an 85 inch 4K display. We're working on... Every angle has a full 4K resolution. Yes, we're working on that. Nobody else does this, right? Only the real fiction. It's like putting the fiction into real life. Is that your idea? That's the idea. How old is the company? The company itself is maybe 10 plus years, a little 11. The real fiction lab is a spin-out of real fiction. And we are 4 years old now. We are dedicated to developing this technology. Is this the future? How it's going to be? It's going to be... People are going to feel like they are there. Yes, this is different applications. One is 3D holographic experience. The other one is that you can watch different movies on the same display. That's another application of directional pixels. Do you want to introduce your colleague? This is Richard Ouyang from our senior development engineer at our Taipei office. Hi, I'm Richard. Just click here. No, just to have only one at the same time. So please introduce. What are you working on? Here, I'm responsible for all this directional pixel technology here. So here you can see we are using a time division here compared to other companies that are using lentic lens with space division. Here now we have no resolution loss here. So each image here that we are showing is for 130 Hz. So actually we are sending out 10 different images here at the same time. So that means we can reach 1300 Hz at this moment. And we will increase this. Maybe next step we will make 4HD or 4K or 8K resolution display that could be very nice for multiple users at the same time. How far are you from this one? I think... How much work do you need to do? Do you get it in a big... Yeah, tons of work. Because currently just we choose the technology that is using the time division here. So that means, yeah, we can make that really different and no limitation for whole agreement display, yeah. All right. Just as a little message for the people watching the live stream, it's going to come back. Maybe the signal is not so good in the US. All right, yeah. Yeah, and if I can grab the microphone. Yeah, so you're based in... Taiwan. Taiwan, yeah. So what is the role of the Swedish office or the Swedish... Are you all in Taiwan or... How would you say? Yeah. We are in Copenhagen in Taiwan. Copenhagen. Okay. Let me put it right here. Okay. Like that. Hi. Yes, hello. I'm Tom Muggles. I'm the CFO of Ref Fiction. I'm based in Denmark and Richard, that was just speaking, was based in Taiwan at our lab facilities there. Stain is based in Denmark as well. I work alongside with Stain on this project. And I heard one question was, when are you ready to present something like the display we have to the next, left to the right of our proof of concept. And basically, we are working on a model that will be presented later this year, a 17-inch LCD model. It's a slightly different technology than what we're seeing here, because this is proof of concept based on microLED and FLCs. The up and coming 17-inch display, which is, you could say somehow similar to this, but it's a 3D display, is coming out later this fall. And we're looking very much forward to presenting that at a public demonstration this fall. And you can switch at 50 microsecond too, in a bigger size? No. That one is based on a slightly different technology, so it's not going to be capable of the same number of viewers as the microLED version and FLC version is. However, it is going to be impressive for more than one user. So basically, several users can be able to see 3D, and you can also have dual view at the same time for different persons. So, yeah. What part of your technology goes into the holographic feeling? Because you want to have both eyes get something different. Is that what is happening? Yeah. All the angles, both eyes is getting two views. Two different ones. But the number of views that we can distribute using this technology that we're presenting today, the number of views that is much greater than the number of views we can do on the one that we come out with in the fall. However, the one we come out with in the fall does have multiple viewing for a couple of persons, but we are not able to create individual views as we are with this one. We can take the number of views on the LCD version up to at least two and also higher. But that's going to be the first display. So it's going to be much more, you can say, than what is out there today, because most displays out there are one user 3Ds. And the resolution has a loss because of the spatial situation there. Does it use a lot of power to refresh so quickly? No. Actually, it can set power if that just only... Sorry, I just need to power you on again. Let me hope. Yeah, because if you are just one user here that we could just send out only two images to your left and right eye, so that could be safe powers for the future. So I think that because that in current display you can see that there is sending out all the rooms. So that actually weighs some of the powers. Well, currently that based on the electronic technology that here we are using, that means only the light going through your eyes that is needed. It only works as micro LED? It could be micro LED, it could be OLED. Yeah, we have several technology... OLED can refresh so quickly also? Yeah, yeah, we can decide. We can decide that for our new back plan. So that's... What's the best? What's the best? Is it micro LED? The future? If the performance that I was in micro LED is current that I would suggest use or leave. Yeah. Maybe also has bright, high brightness? Peak brightness. Do you need big brightness for this technology? Peak brightness. But the average brightness that could be just operation of normal display here that because you can see that here we send out 10 different images here and we have scanning sequence here and so that... Yeah, that we need higher peak brightness but that could be operation of current technology. Right. Can you describe a little bit? So what happens in Sweden? What's happened in Denmark? And what's happened in Taiwan? Well, basically we have a... We're listed in a stock exchange in Sweden on 1st North in Stockholm and then we have our operational headquarter in Copenhagen, Denmark and that's where we have the majority of our employees working. Then a couple of years ago we started the company Rare Fiction Lab which is a subsidiary of the Swedish listed company and that company has recently started a... a branch office in Taiwan where Richard and James are working and we are working alongside one of our large shareholders, Amtran who is one of the investors in the... in the parent company in Sweden. So you can see we have our operational headquarter in Copenhagen and then we have our development lab both in Denmark and also in Taiwan. We work alongside with large institutional governmental facilities such as IMEG and Fraunhofer and we work alongside with other collaboration partners as well. So the front part and the back part is synchronized? Yes, correct. Is that how it works? It's synchronized at very high speed. How do you do that? Actually that is pretty simple. You just use some signals and clocks and you can just synchronize all these contents together and you just need the algorithm calculated in the correct way so that you can have the image just in the right position. You can see we are dividing all the images in 10 zones but it could be more. Alright. And previously I asked already like how far is the big one? Is there any way to speed this up if there is like big investment or something? Of course there is. If there is a big investment in creating a display based on this technology it will speed up the process and as I said we have a 17-inch ready which is based on an LCD technology which is capable of doing 3D for more persons so this fall we will be presenting something new. Alright, thanks a lot. Thank you very much. Thank you very much. Wow. Check out the WISE.  I think I'm saving over a thousand euros every year because I use it everywhere when I pay for stuff. You want to pay for stuff in the world so you can check out my longer video form where I explain some more why I think this is amazing and it's free. You can just sign up with my link down here and you can use it on your Android pay your Apple pay it's like a prepaid Visa debit card so you need to put a little bit of money on it and you can just put money on it from your local bank account and there's zero fees. The fees are so tiny. It's like 5-10 times cheaper than your bank. Don't use PayPal anymore. Don't use Western Union when you send money to a whole bunch of countries around the world. WISE is way faster and it's 5-10 times cheaper. So really check it out. It's cool and I appreciate if you use my link below. Thanks for watching.


Not about washing the dirt on your skin but a certain purification on a deeper level happens. In line with your ears, here at that point you put little cold water. Once your cellular structure is charged with energy it will remain youthful for a very very long time. In most Indian languages, in common usage the word hatha means being adamant. This is a quality that you will need. Your body says enough, I had it. But you are adamant. This is hatha yoga. Your mind says I give up, I can't do this anymore. But you are adamant, you simply do it. So hatha yoga is about creating a body which will not be a hurdle in one's life. It will become a stepping stone but not a hurdle, not a roadblock in one's progress of blossoming into his ultimate possibility. So simple tips. I am not known for giving tips. Bad reputation I have. But simple tips. In the yogic culture, a shower there was no shower, bath always meant dip in the river. Always went to the river, dipped, come out and do it. If you do this, your muscles will be good. So an alternate way of doing it is usually in our homes the pail that we use to pour water is this big, at least it has four liters of water. If you do this, the whole body, that's it, always, I mean I'm not going to insist on this for the ladies, your hairstyles and everything. But always a bath means the first pail of water is on your head, always. Putting cold water on your body will shift the heat into your brain very rapidly, it should not happen. So this is why those who don't want to wet their hair, at least should take a little bit of cold water and put it, you know there's a point here, in line with your ears here, at that point you put little cold water, immediately you will see a certain cooling happens in the head region, after that you can have bath with just the body. But otherwise you always the first pail of water is over your head, not on your body. So what you do is you fill the bucket and that's the best way to do it in the morning. The body should be immersed in water, that you're trying to create a simulated dip in the river, okay? At the same time the whole body should be, at least the skin should be covered in water, at the same time, not like this, this, this, this, this, you know. If you pour water, the whole body, the body should think you're taking it for a dip. So if you pour like this, there is a certain coolness in the system and muscles become very flexible. Shower can do it too, if the shower is forceful enough or at least if the volume of water is good enough, shower can easily do that. It's always best that we use water which is little cooler than the room temperature, just a certain volume of water to flow over you or to be immersed in a water which is cooler than room temperature because if this happens one thing that happens on the surface is the cells, the epithelial cells will contract. When they contract they open up all the pores. The pores between the cells will open up. The cells themselves have pores, we don't want that to open, that will open if you put it in warm water, if you dip your body in a hot water tub, the cells will open up and take in water. That is not always a good thing to do. You put the body in cold water, the cells will contract, the in-between spaces will open and that's important for practicing yoga because we want the cellular structure of the body to be charged with a different dimension of energy. If the cells contract and it allows space and then you practice your yoga then the cellular structure in the body is charged. Why one person seems to be far more alive than the other is essentially because of this and once your cellular structure is charged with energy it will remain youthful for a very very long time. When people are thinking why the old bugger is still not dead, you still feeling like you're twenty-five. How do yoga is a way to frustrate the world also. So water which is cooler than the room temperature in India, it is in South India at least it's not so much of a problem, the water is always in that temperature. Ideal place but if you're in a colder country, if you're in a temperate climate, the water may be too cold, that is not good. The water must be let's say within five to eight degree centigrade lower than the room temperature, not more than that. So if you have a tendency to catch cold initially, first couple of weeks you put a spoon of eucalyptus oil in the water, cold water and pour it over you, you will see your cold will go away, not because of the eucalyptus oil just because of the cold water. If you have an infection and something else where excess mucus is being generated that needs to be treated differently. But as I said the water should be just somewhere five to eight degrees below room temperature, not an excessively cold water, no. If there's any kind of interaction, any kind of mingling and mixing of whatever kind, if you're in a crowd for too long, when you go home first thing is shower. You must do this. If it takes three, four, five showers in a day it doesn't matter. For a sadhaka it's good to shower many times a day. You shouldn't overdo it. But there were times when I used to shower minimum five to seven times a day. Now it's come down to maybe two definitely, sometimes three, two is a must for you. More is good. Any kind of physical contact happens with somebody, a period of more than let's say six minutes, if you're even holding somebody's hand. Before you do yoga, it's best that you have a shower. This is not a cleansing thing, we're not trying to clean the body, that's not the point. It's not because somebody is impure, you're trying to clean your body. Yoga is a way of organizing your energies into an individual. So if any kind of transaction happened too much, if I come and sit in a program, I'm not even physically touching anybody. If I sit in a program for two, three hours, first thing is shower.  So at any time, first thing when you go home, shower. Shower need not mean soap shampoo this that, a bucket full of water boom, just water flowing over, it purifies. How does water purify without washing and scrubbing, not like that. You know in nuclear reactors, they're using certain metals, particularly metals like titanium and even platinum and few other things. If they want to purify these metals, they want metals in the purest form. In the normal laboratory process, they can only purify to a certain point, beyond that they're not able to purify. So what they do is, you make a rod of this metal and make another ring, just move it up and down without touching, just do this, you will see the metals will get purified. So seventy-two percent of your body is water. You just throw water over this, there is a certain purification. Not about washing the dirt on your skin, that is anyway there, that's a different thing. A certain purification on a deeper level happens, just allowing water to flow over you.   You're like born fresh. Have you noticed this? You feel it's all gone because all that's happening is this is largely two-thirds of it is water. If just water flows on this, certain things will change.


Welcome to the city of Santa Rosa district or demonstration. We will first show you where to find the district or tool on the city of Santa Rosa redistricting website. And then we're going to go and give a tutorial. So, if you go to the city of Santa Rosa website, you will see as we scroll down that there's a big purple button on the top left that says submit a draft math online. Now. That is where you will click to access the district or tool. We also see right below. There is a video recording of how to use district or that was recorded after January 25th city council meeting. So, we're going to go ahead and click on that purple button. And here we'll see the city of Santa Rosa district or website. So, there's a couple of sections. The first section gives you a little bit of information on the background of the census on redistricting on the data that we're using. As we keep scrolling down, you're going to see that you have the ability to draw a community of interest map and a district based map. And today we're going to show you how to draw that district based map. If you keep scrolling, you'll see the public gallery and we already see a number of submissions that have been received, which is wonderful. And so we'll show you where and what button to click to have your map added to this gallery. You also have a portion of this where is the work in progress. So any draft maps will be in this section. And then finally, the about section gives you some more information on the data that is used on district. Another note, their district is an online mapping platform that other jurisdictions are utilizing. So we really want to make sure that we are clicking on the Santa Rosa district or website. So we're going to click on this purple button. Again, we're here to draw district based maps. So a couple of things to note on the top left section, you have the ability to zoom in and zoom out. And you also have the ability to orient your map pointing north. The background portion of this map, we have the outline of your city and also these gray geographies here in the background. And if we remember what that purple button said, it said draw a district based boundary out of blocks and census blocks are the smallest unit of census geography. And so that's how the city is broken up in those census blocks. On the right hand side, we have a couple of buttons up here on the top right. The first button that is highlighted automatically as you open this platform is called the pan tool. This tool allows you to move that map around also gives the ability to zoom in and zoom out of the map. We also have the paintbrush tool on the right where we can see there are seven different colors here. And we can also change the size of our brush stroke to grabbing a large portion of those census blocks to doing one by one. You also have the erase tool, which does the same thing where you can make a larger erase tool to erase more or go down and just erase small portions. The final button on the top right before we go into the drawing demo is your inspector tool where you hover over a specific census block. There will be more information on that block, including the total population and the ethnic breakdown of that specific block. So we're going to go back to the brush tool and we're going to click on the color blue. So the color that you are currently using will be a circle and the rest of the colors will be a square. So we're going to make our brush a little bit larger. And then you can click on the map one by one to grab portions of the census box or you can click on the map and drag your mouse down.  We see as we are grabbing more of the census box that this bar is moving in real time to the right. This bar allows you to see all of the total count that are being a part of the district that you're drawing. And the line in the middle shows the ideal number of people in a particular district if you were to draw districts of exactly equal size. So if you remember the number one criteria for redistricting is to draw districts of relatively equal size. So you're not bound to draw districts of exactly perfect size. You do have some room to have districts that are a little bit smaller and a little bit more populated. Now to change your color you can click on another color and now we have this yellow one that is a circle. Another thing as you're working here if you have a district that is perfect you don't want to make any changes to it. You want to go ahead and click this button that says lock already drawn districts. Now I won't be able to modify that blue district or take any portions of that with the yellow one that I'm drawing. You'll see here there is a difference between the community of interest tool and the district based tool. We will only be able to draw up to seven districts for our particular tool and the community of interest tool. You have an unlimited amount of a community of interest that you can draw. Okay, we're going to just have a little bit more on the map and then we'll talk more of what we see here on the right side. If you want to produce a map and save a map that is a full plan we want to keep an eye on this unassigned population. So I'm going to zoom out a little bit so we can see what we're talking about. So the unassigned so everything that is not currently in a district that number is going to be right here for you in real time. You'll also be able to click on this button that says highlight unassigned units. This will show us all of the census blocks that are also currently not in a district at the moment. Districter gives you the max population deviation of a district. It does not give you the total plan deviation of a district and redistricting partners will be able to give that to you in the council. But it only gives you the max population. So what we want to look at here is having the total plan deviation be within a 10%. And again, you can go ahead and draw your plan and redistricting partners will look and see what your total plan deviation is. So what it does is it gives you the district that has the largest deviation here for this instance is this teal district. Right now it's 41.63. So we want to lower this district will go to that erase tool and now I can take out some population for that district to get it closer to that ideal size.  Now we're going to look at some additional data layers and then finally we'll show you how to save your math to that gallery. So we're going to click on data layers. You are currently who already show you the painted districts which we've drawn. You can also show the numbers that you'd like from one or if you just like to have those numbers up. You also can see the current boundaries of Santa Rosa as reference of a reference point. You can turn those on and off. You can also see your population by race. So you can show the total population of your city. You can also look at that if you click variable go down to this tab look at the diff the different ethnic populations based on race. We can also see that based on the citizen voting age population and this is a data set that is also from the census and it shows you all of this population that is over the age of 18. This is the data set that we would utilize if we were drawing any majority minority districts but we would need your legal counsel to direct us to do so. So you have those different ethnic CVAPs as well. The final tab before we show you how to save your math is the evaluation tab where you can look at your districts in comparison to one another also based on race. And you can compare those. You can change up these variables. Look at how they fare from district to district. So right now because we only drew three districts at the moment again just for example purposes we see those in shaded with percentages. And if we click on the citizen voting age population by race we can see that as well. So those are the tabs that we have. And now if you're ready to save your math to either share directly to the gallery or to save it as a draft you're going to want to click on the save button here up at the top. And now up will pop a new window which will give you some more information. So if you want to save your Mac directly to that gallery that we saw at the homepage you can click on the screen button. You also have the ability to title your math or name it. One of the differences between the community of interest tool and the district based tool is that you see that there was no place on the map for you to give extra information on your plan the reasoning behind your plan. So you can go ahead and title your plan but then another way where you can give that information is to attend a meeting send an email so you can give more context to the council of the basis for your plan. You also have the ability to save it as a draft so you're going to want to click work in progress and then save as dropped at the bottom. You can also if you'd like to share your specific URL link around neighbors to friends by clicking copy to board and then your specific URL link for this plan will be something that you can share. But the best way to ensure that the council is able to see your mouth is to share it directly to that gallery. Also if you have a map in the gallery that you've saved, you can go and open it, edit it and then re save that as a new plan if you really like the base of a plan that is already in existence. The final button is these one at the top right with three lines that we go ahead and click on that. We can print your map out as a PDF if you'd like to do that. You also have the ability if you'd like to look at this in another mapping software such as a maftitude or Esri software. You can download this as a GeoJSON or a shape file and then you can evaluate this plan on more on your own time. So that is the district based demo.  So again, the best place to submit your plan is to visit the city of Santa Rosa website. Click on that purple button, draw your map and submit it to the city. Thank you.