Good evening, thank you all for coming. Hop you all had a good lunch. We won't make you one jump up and down to try and keep me awake. So I'm going to talk today a little bit about how we added software updates to the AGL Linux. So myself, I'm from company, ATS Advanced Serm Almighty Systems. So we do open source connected mobility work for the automotive industry. And we did this with AGL— so AGL Automatic Grade Linux is best summarised as open source Linux for cars This is a Linux foundation project, when the members are mostly car companies and their supply chain. To be clear, it's primarily about building an open source Linux base which car companies and their suppliers can then customize and put inside vehicles as they are shipped off a dealer's forecourt, y gallwn ddweud y fath o'r bgwylburnu yma, feel eich gwyllwyr iawn yn y bwyd ac yn y bwyd, mae'r fadwch ymlaen gael ei wneud oes yn fath o menlyniad i eich fath o'r bwyd, oes eich hynny y gallwn bod ystod yn gyfrannu'r platform ar y pwy oll oherwydd yr aroed. clarity yn y fath o'r bwyd ac oedd yr hyn yn eu cystaf defnyddol iawn. A oed yn gallu'n gwybod y botwm yn bwyd, The automovist isn't there, suppliers were safe after to rework all this stuff. Or purchasing something. Great expense. I won't talk too much about the AGL project itself. I'm not officially part of AGL anyway, so I don't take anything I say about it as truth. In fact running parallel with this is a talk by a Walt Minor who is Mr AGL. And I would recommend if you want to understand more about it coming, then go and see his talk. ond y gallwch yn ei wneud yn ei gael i'w gwir i ni i gael i chi wedi ei wneud i chi eich bod yw'n gwneud yw'n gwir i chi.  A'r ffordd wedi bod yn y gwir i chi'n arferfynu hynny'n gwir i chi chi'n rhaid o'r ddefnyddio ar y cyfnod Ac yna'n meddwl y gallwch yn cymryd o'r cymryd arwyd, y byddai yn ysgrifennid gyda'r cystoffol yn cymryd yn cyffredinol. Mae'r cystoffol yn ymweld yn gwahod yw'r cyffredinol. Mae'n meddwl yn ymweld yn gwahod yw'r cystoffol. Mae'n meddwl yn cyffredinol, a nid yn ymdweud. Mae'n meddwl am y codiol, mae'n meddwl yn gallu llai. Mae'n meddwl, ac mae'n meddwl yn ymdweud yw'r cystoffol a'i wneud bod sy'n mynd i'r problemau a cyrddoedd y llifon SSL o'r llyfr o'r llyfr o'r llwyth gweddol. Beth oeddwn ni'n gweithio ceisio y dyma'r apod, sy'n gweithio yma'r sy'n gweithio'r cyfrwyr sy'n gweithio'r llyfr o'r llyfr o'r cyfrwyr. Mae'r cyfrwyr yn y cyfrwyr yn y cyfrwyr, ond maen nhw ydw i'n gweithio'n ei chanelio sydd wedi gwneud yn gwirio'r cyfrwyr. Over product piece of product development. And this is kind of the thing. You should remember when Google did this with the Chrome browser, apparently pretty much the first piece of Chrome, the Chrome browser that Google built, was the auto-updater. And they got everyone to install it. And then, once you'd installed it, they just kept pushing updates to it through the entire development process, even internally inside Google before it went out of code that was shipped to customers. And this is good because you battle hard on this process. And if the first time you have to do a software update for real is when you've already got a fleet in the field, then that's going to be a pretty high stress situation, to say the least. And it's also one of the difficulties with testing software updates is an update is always between two versions, right? And so when you've got your final production version, how do you test the updates? What's the next that you try against? Whereas if you've had the updates in early, and then all of the corner cases related to, for example, an easy one would be updating database schemers if you're using SQLite or something to source and configuration data, as you modify your program, you're going to have to figure out a way of rolling changes forward through versions. Now, if you've already done that 10 times by the time your system is released out into the world, then the chances that the 11th update is going to work is going to be much higher. Whereas if this is the first time you ever had to do that, then it may be that you increase the risk of running into a situation where something about the database schema means it's very, very hard to update. And you find out about this when you've already got thousands of these things everywhere. So it's much better to discover that really early on.  And you get the learning when it doesn't really matter so much. There's also another couple of cases, like test fleets. So beta testing pieces of software is quite nice to be able to do that. Automatically, we use it internally for our sales demos. So we have some pieces of sales demo hardware which are scattered around the world. We're actually based in Berlin, in Berlin, Germany. But we've got some offices ourselves out in Japan and Taipei. And those guys have hardware units, so it's quite nice to be able to push up these to those things remotely rather than happening to post them back across the world.  So that's why you need these updates, why it's interesting to put it early on. So the goals for what we're doing as a project, though, are maybe a little bit different to a normal system. And so AGL isn't a single product that's a basis on which you can build products. So it's a basis on which you might want to build, for example, an in-car entertainment system or maps or something. And it's also not a single piece of hardware. So AGL supports at least half a dozen pieces of hardware commonly and quite a lot more if you count hardware vendors who've ported AGL to their platforms. And so it's actually very wide at both the bottom and the top. So this means that it's not a matter of building a single once-off software update platform. It's a matter of building a thing which can be used for lots of different boards, for lots of different products. And so we kind of had to meet people where they were with their existing looks like normal desktop Linux rather than force and pretty rather than force big changes on the existing stuff that people were doing. And so this is sort of another angle on the same thing that software updates have been a required feature for any shipping embedded Linux product like since embedded Linux. And lots of people have done it. It's been done dozens, hundreds, and hundreds of times by various people. But these systems all tend to end up as a point solution which is used by one particular product and maybe reused by the same team the next time they do the next product. But so far, we haven't really seen a kind of a community developed where you have lots of people each selfishly building their own thing for their own purposes but contributing those changes back up to some meaningful upstream. And then you get this kind of effect where everyone's doing it for slightly different reasons, but between ourselves we managed to build the commons of really valuable code. And I think that's something which so far the update world hasn't really happened in the software update world. And that's actually quite different from just making the code open source.  But what we want to do is to find a thing where everyone can build. So this is really about portability. And there's definitely like, if you ever read the UNIX as a virus, no, OK. His basic thesis was that the success of UNIX is because it is very, very easy to take it and use it on a completely different system that no one ever thought about. And that was his claim for why UNIX succeeded versus various LISP, whatever things didn't. OK, so I'll talk a little bit about update methods. So if you've used desktop Linux, then you've probably used RPM or DEB or something like that. And that has the advantage that it's actually very simple to do. Yocto has support for doing this, for generating RPM's built in. But it's maybe not what you want for a product which is going to get shipped out to lots of people. Simple as its advantage. First disadvantage is it's unsafe against power off. So if you pull the plug while an update is running with an RPM system, the system will end up in a indeterminate state. Now caveat, there are some bits of work going on inside Red Hat to make that work atomic. But it requires support from the file system. And it still doesn't solve the problem of changing between two versions of your system in an atomic fashion. And the other issue with RPM is the dependency resolution process by which if you have some application which depends on some library, there will be some combination of application versions and library versions that work together. Now if you've ever run unstable or Debian, then you'll have certainly experienced the situation where you type app get update, app get upgrade. And you get back this long error message that says, I'm sorry, I can't install this because, and it gives us a very long complicated explanation for a whole long and complicated set of reasons why it can't install this thing. And the fundamental problem is that you can have a set of packages which are mutually compatible over here. And you can have another set of packages over here which are mutually compatible. But it can be the situation that there's no way of migrating from one to the other while constantly maintaining package compatibility. Now if anyone here is a Debian developer, then my incredible thanks go out to you. Like this is getting this to work is an incredible task. And they managed to, by the time Debian goes stable, everything does actually seem to work. And I'm super grateful for anyone who is in the process of making this work because I understand it's not easy. Now the Haskell guys, in fact, they actually use an automatic theorem prover to try and solve a package dependency upgrade problem. Now that is a very clever solution. It turns out it still doesn't work in all cases because you can always construct pathological cases where it's impossible. And it also means the automatic theorem proving may never actually finish. So anyway, good for tests, but not great for a real system. Another popular solution to this is to do full file system updates based on a dual bank process. So you take your flash, and you basically divide it into two partitions. You have the old, the new, you run on one partition. And while you're running on this partition, you update this partition, and then you tell the bootloader to please go and update the other partition. And then next time it boots, you boot up with this partition, and it's all fine. Now this has the really nice advantage that if the power goes off or you have any problems halfway through, then the system aborts, and next time it boots up with the old system and it's unchanged. And you don't tell the bootloader to do the new thing until you've completely finished and flushed all the changes to the new partition to disk. And that also gives you advantages where you can do things like you can trial boot the new system. And if the boot fails for any reason, then it can automatically switch back to the old system. So if you send an update which accidentally bricks maybe some particular variant of a device, then you can automatically recover from that without them either sending the thing back or having some Vulcan death grip to go back into recovery mode. This is good because it's robust. A couple of problems with it. So the first is it tends to be quite device specific in how this update is built because it depends on some changes inside the bootloader. And it depends on creating this flash partition layout with a bootloader partition and then one operating system and other operating systems and spare space for users to put their own files on, things like that. And that's a bit in conflict with the requirement of this system to be generally usable by lots of different people. And you still need to make some more changes to build this into a fully-feature system. So you need some way of incrementally downloading image updates. You don't want to have to send an entire hard disk worth of flash drive, worth of updates every time you update a system. You want to be able to do that incrementally. So you could use R-Sync. You could use BSDiff, BS Patch to do that would be a solution. But that's the sort of thing you have to actually build. And then you also need to build the server-side infrastructure which can say, OK, this user has got version number 10 of their system. We're upgrading to version number 12. So we need to either you roll them one or each at a time, or you have to build a difference between version 10 and version 12, and then send that diff down. And that's a calculation which you have to do on the server, and you probably have to cache it because it's quite expensive. It's a bit of a pain. But the thing we selected for AGL was this system based on OS Tree. Now, this is interesting. This is a combination of the robustness of this dual system approach where you have a complete file system image which you've built, which you've tested, which you boot with an incremental update. And it looks a bit more like sort of getting that respect. And I'll talk about that a bit more on the next slide. This is a more modern approach. It doesn't involve treating your flashes as an array of bytes because it's not really an array of bytes anyway. And it has a really nice advantage. It's actually quite easy to make reusable between projects. So the work we've done to get this to work on these boards is actually quite portable between these boards. And I hope it's quite portable to new boards as they come up. So OS Tree wasn't developed by me. I mustn't take credit for it. I won't take credit for it. So Colin Walthers is sort of one of the guys behind it. And it's really came out of the Nome Continuous Project. So these were guys doing continuous integration builds of the entire Nome project. And they wanted to be able to send these out to devices to testing them. But it's actually found use in a bunch of other places. The Qt company have got a system based on it. QTA uses it. And there's a few other projects which are picking it up. And really the way to think about it is it's like Git, but for a root file system rather than a set of source code. So the way this works is you could sort of imagine it both as taking your root file system image and then checking the whole thing into Git source control and then checking that out at the far end. Now that doesn't actually work in practice because Git doesn't have a full set of permissions that you need for a Linux file system. But it's basically the idea you have a set of files which are hashed and stored indexed by their content. And then it builds up directory trees by basically a list of pointers to all of these objects. Now this has a nice advantage. I'll describe more about the directory layout in a second. But it has a nice advantage that you only have one flash partition for your entire system. So you don't have this problem with the dual partition approach where in the factory, when you first manufacture the device, you have to take your flash and you have to chop it up into several pieces. And that process where you chop it up, you can never change once that device is left.  So you take however it is big now and you make it a bit bigger. And then you have to pay for that overhead twice because you have two copies of this OS partition. And then the bit that's left over is the bit that the user gets to use. So it can be expensive. And depending on whether you're selling mass market or high value goods will depend on whether that cost of flash is going to be important to you or not. But the system for OS tree works by having one partition and then multiple cheer routes inside that. So you have a full, what looks like a full user space down in some sub-directory and another one somewhere else. And the system chooses between those at boot time. So one of the nice advantages of doing it this way is in the same way that when you type git pull, it only pulls new file objects that haven't are new to the system. And it does that in an incremental fashion. And you get the same advantage with this. So because internally on the file system it stores all of every file is stored under a file name, which is basically its hash, you can very quickly discover whether or not you have any particular file, even if you've never heard of a name before. And that's used by OS tree when it downloads these updates so that you only have to fetch new objects. And there are actually some extended tricks that it can do to get compression between objects as well as one. Unlike git, it also uses hard links to share copies of files between two different versions of your operating system. So if, for example, you have a very large file in your update which doesn't change between releases, it might be a piece of configuration data, or in the car industry it might be some base map information outlines of all of the countries of the world, that probably doesn't change between updates of your system. And if that file is the same on both the old version and the new version, what it does is it uses Unix hard links to share that one copy of the file between the two, the old and the new version of your checkout. This means that rather than being double, it rather than requiring twice as much space as a non updateable system, it requires space, which is basically the biggest delta that you're ever going to deal with. And so very large files, you can really get some savings there.  And this is, while I'm saying it's like git, it isn't actually git. The biggest difference is that git has a very simplified model for permission bits on files. And this is by design. It's designed for storing files in source control. It's basically just directory and executable bit. Whereas OS tree has a full set of Unix permissions and also supports all the extended attributes. So if you're using SE Linux or SMAC, then all of those labels get bundled in. And it stores those as well. Shoi. Have you put into a new system if you've run around? Yes. How many times? It's optional, but one normally. By default, it's one. And then, sorry, the question was, when you get a new system update, what happens to the old, old one? So does all these old files kept around? Only answer is it cleans them up. So it will remove the old hardlink tree, this sort of cheroot that gets deleted. And it also garbage collects objects which are no longer referenced as well. It does it. So if you're running version two right now and you're updating to version three, then as part of the update to version three, it will delete files that are no longer needed in one. That's probably longer, but it takes a bit of time to think about it. But from the server side, I'd actually like to roll that back because there's something we didn't have. Yes. So the question was, if you're at version three and have to go back to two, is that going to work without network? So yes, so you can. That's arbitrarily configurable. Yeah, default two. So if you boot three and it's duff, then two will still be around. But one won't be by default. Two will be, but one won't be by default because they don't understand it. Yeah, make that number five if you want it yet. And that might make sense if the network was really expensive. You might want to be able to flick between several versions relatively cheaply as part of some testing process. And then that would make sense then. Well, sometimes you have to run it much later. OK, yes. Yep. Something works. Yeah, exactly. Yes. You can. It also depends on if you post the update from here. Cool. Well, good question. Thank you. OK, so this is an overview of what the Flash partition looks like in this OS tree world. So this is an example. This is the Raspberry Pi example, but others look basically the same. So the important thing to distinguish here is these are partitions and file systems. So there's two partitions here, the bootloader partition. And nearly all the Flash is taken up by a single partition on the Flash. So this could be a one EXT4 or F2FS file system here. And this is what we call a physical sys root. And that is distinct from a deployment sys root or a root FS. And this is the bit which is deployed.  And you can have multiple ones of those inside a single physical sys root. And when I was talking about the hardlink trees, so this is an example for two updates, both of which have bit wise identical copies of binbash. And so in that case, there's this user binbash inside version one. And that's a hardlink to some object. And there's a user binbash inside this charoot. And that's also a hardlink to this same fast system object. And there was also a hardlink named after the hash of the contents of the file. And that will be in this objects directory. So if you're used to Git, then this is your Git objects directory. And of course, hardlinks in Unix are symmetrical. There's no master of these three. It's just three things all pointing to the same file. And this is actually a little bit different to how Git works. So when you do Git, when you do a checkout by default, it actually takes copies of the files because you might want to open that file in Vim and edit it. Whereas with OS tree, it doesn't want to take a physical copy of it because we're about saving space here. And we can trust the system to not overwrite these files. In fact, we enforce it. So that's the layout on disk, on flash. And the boot process is, yeah, then you're, that is a problem. The problematic name is actually slash sysroute because that's by default bind mounted back right up to this top so you can have access to it. So yeah, probably don't do that will be my best suggestion or it wouldn't be that hard. Or it wouldn't be that hard to change it, although it might be easier to change your code that assumes a file called slash sysroute. Yes, yes. So in all, yes, exactly. Yes, so I will, yes, on. Yeah, maybe it's in the next slide. But basically what you do is anything which is inside that, anything which is inside here which is doing this hardlink stuff is mounted, there's a read only mount over the top of the read write mount for the whole system. So as a user space application, you're unable to change those files. And if you had, if you changed it in a way that broke hardlinks, it will be OK. But you wouldn't want to assume that. OK, so we talked about the file system. And I'll now talk a little bit about the boot process and how that works. So basic boot process, the bootloader is the thing which is responsible for picking what's called a deployment. So this is whether it's version two or version three that we're going to run right now. And that has to be done by the bootloader because the kernel may change as part of these updates. And so the bootloader is the only thing which can make that decision and make sure the write kernel is loaded. So it does that. It boots the kernel. And then there's an init-rd, or init-roundfest one of the two, which has to be aware of OS tree. So we've got some integration for that. And so that the init-rd is basically responsible for doing this chyrwt operation. So by default, the root file system is this crazy physical sysroute. And so it's going to have to do the process of chyrwiting or pivot route down into some subdirectory and does some bind mounting in order to give the system an environment that looks pretty much like a normal, standard Unix-type environment. And then finally, once it's done its thing, it then goes and kicks off your normal sbin init. So that's going to be by the system D or sys5 init. So that's the actual changes which you need on the final deployed thing. And I want to talk a little bit about the changes we did inside Yocto, sorry, open embedded for integrating this. So we've added a new image type to open embedded. And that does some shuffling that makes this root file system updateable. So you have to move all of the read-write data into VAR. Because if OS3 has this assumption that anything inside user is part of the updated world, and so you may not change anything in there, and it will get blown away every time the system updates, and anything that you may change is inside the slash var directory. So we make that change. We make the user move change. And this is a thing which is kind of coming from Red Hat, which is merging slash bin and slash user bin into a single slash user bin. There's sim links in place, so as a user, as a consumer of this, you don't have to worry. But it's called user move, and it's a thing that's required. And it takes all that, and then it commits the result into a OS3 repo.  And that's logically the same as either a tarball or an EXT3 file system image. But in this case, it's a directory of objects that you don't have to worry about the internal format of, because OS3 deals with that. But this is another representation of this file system tree. And then, optionally, we'll upload any newly created objects to an update server. And it does this in a way that's incremental. So for example, if you've only changed half a dozen files, it's only going to upload half a dozen objects to the server. And also, finally, creates an initial bootable file system image. So one of the things that's sort of half hidden from you without doing software updates is the difference between a root file system image, as in slash and anything underneath it, and the actual thing that you have to write to an SD card to produce a working system. Now, normally, this is relatively simple in its changes, right? You've got to figure out where the bootloader goes and there's a partition that wraps it and not much else. In the OS3 environment, it's a little bit more complicated, because you have to do this thing, where this is the root FS that comes out of Yocto. And then you've got to bundle all of, basically, put it under this tree and put some objects in here. So it does that. And the integration we've done actually does all of this as part of the normal bitbake process. So these are image classes in bitbake, which is really nice.  There's a little bit of board work that we also had to do. And this is mostly figuring out how the bootloader is going to work and tweaking some things to do with partitions. So right now, we have Renaissance Archar Porter, which is sort of almost the standard platform that AGL uses as its reference platform. It has lots of platforms, but Archar is one of the important ones of those. We also support QMU. In fact, we do that via U-boot. So by default, QMU has effectively its own bootloader. You just pass it a kernel and a root. I'm pressing it BROs. If you're going to pass it the kernel, you can't do software updates. So what we do is we get QMU to run U-boot as its initial thing. And there's like a minus ROM option in QMU that does that. And then it's pretty standard. Miniboard Max, we also support. And we do that via U-boot. It turns out it's easier to recompile U-boot for the Miniboard than it was to try and figure out how to get this stuff working inside UFI. So we did the former. We support Raspberry Pi 3 as well. And you might get the process here, but we do that by chain-loading via U-boot because the Raspberry Pi has its own built-in bootloader, but it's actually very, very simple. U-boot is a supported thing. You just build U-boot for Raspberry Pi, and then the Pi boots, it boots U-boot, and then from U-boot, U-boot into our stuff. So far, we've done everything using U-boot because it's been kind of the easiest way to get where we want to go. But there's not actually that much in terms of code in there. And so supporting other bootloaders is a relatively straightforward process. And one I would be interested in having a go, but so far it hasn't been important enough to warrant to not just do the simple thing. OK, so that's the build process and the Yocto integration process. So basically getting all of those changes I talked about earlier and getting those inside. And so when you do a normal Yocto developer flow of BitBake, it does all the right things for you. So I'm going to go ahead and get a little bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit of a bit The one of the big changes is in order to support updateability there's a split between a very hard split between read-only files and read write files. And so anything which is read-only, anything which is updateable as in you want to be able to push updates to it has to be in one of these read-only erioedd, ond mae'n mynd i'ch gael gweithio'r ffordd. A gynnyddio'r ffordd yn barhau. Mae'r ffordd yn ymddangos o'r osu. Rwy'n golygu ffasgfodd yn barhau, ond mae'n gallu'r ffordd yn barhau. Fasgfodd yn barhau, ffasgfodd yn barhau. Rwy'n go. Felly, mae'r ffordd yn barhau'r ffordd. Mae'r ffordd yn barhau'r ffordd yn barhau. Yes, yes. I mean it's pretty, yes, everything except VAR, and ETC is a special case as well. Yes, so ETC is an interesting case. So what it actually does for, so the problem is basically this, right? There are some files in ETC which users, as in end users, may want to modify, and there are also some files in ETC which you, as the provider of this system, may want to modify. And the distinction between the two is actually quite hard to make concretely. So, for example, Wi-Fi passwords and usernames and passwords are probably on the user side of the thing. But then there are some borderline cases, like, for example, you could imagine which particular modems on the system are being used might be a thing which is being pushed down from above, or might be a thing that you've written some configurator for that the user can change themselves. And, like, this is a problem that exists in desktop Linux as well, right? Debian has this, like, slash ETC just default thing, which is a bit crazy, that's trying to separate out bits of the config which the package maintainers are going to work on, and bits of the config which the end user is likely to change themselves. So what OS3 does is it basically does three-way mergers. So if you can, as a provider, you can make changes to files and they get updated. And if the user hasn't changed and those updates just get applied straightforwardly, if a user has changed that file, then you get a three-way merge between the old and new version from you, the provider, and their changes. Now, this is crazy dangerous, right? And probably not the thing you're going to use in production. However, it does work today. And one of the problems with doing read-only root FS is, in order to make the system boot at all, you have to go through and find all of these cases and do some tricks to avoid them. And that might involve patching upstream packages or patching the packages to change these things. The long-term solution for this is the stateless stuff that the system D guys are doing. And basically what the system D guys say is packages may not write stuff to slashetc. Package configuration belongs in slash user along with the binaries, which makes sense, right? Because configuration that's provided by the package and binaries, which are provided by the package are fundamentally the same kind of thing, right? And then slashetc should be empty and then the system can change that and you can store things that you modify as a package in slash bar, I think. So they're kind of working on this, but right now it's not quite ready and you're very quickly going to find packages that don't work. Now the three I merge on slashetc means that your system will actually work today. And if you can probably break it if you try really hard. And it's a better situation to go from having updates for most of the system with some corner cases where you can break it and then eventually you have to fix all these problems and delete all the files from ETC than first having to make all of these changes to all the packages and whilst that process is going on, not actually able to do the software updates at all. So it gives you a development level balance, which I think makes sense. But yes, it's dangerous if you rely on this. I don't know. I haven't looked deeply into that corner of OS tree. It's I suspect it wouldn't be that hard to enforce that or maybe when the three way merge fails, just bought and blow away slash but I'm outside of my understanding really. I mean, the right answer is to do the split, right? That's that's what the right thing to do. So, oh yeah, writable files, all the user data is in var. That's the key change. Now, for the agile application framework, this is interesting. So background, if you've used Android phones, you've used a very similar thing to the agile application framework. And the idea here is you can have a split between two sets of developers for a particular platform. You can have the people who develop the hardware and the stuff that enables it. And so in the Android case, this is like Motorola who make the phone. And then you can have application developers who develop applications which are portable between multiple, multiple target devices. Now, agile has the support and it's historically it was kind of part of the sort of the ties and the ties and world. And so what you end up with is is to actually to software update domains, you have the underlying operating system, the kernel and all support things. And you have the the applications running on top of it as in the app framework managed applications that run on top of it. And they can come from different places, they can be updated on different cycles. Now, obviously the user installed applications are in slash var and they're specifically in Valib AFM on AGL. But the question really is how do you manage that directory? So the kind of a simple pure answer would just be to say, well, it's in slash var. It doesn't belong as part of our system. Thank you. Goodbye. And that runs into problems when people want to test. So one of the common use cases you're going to have is, okay, I just want to build this thing, flash it on to a drive and might get one of my testers to try out or something like that. And if they as part of that process have to then go and manually download a whole bunch of applications in order to build a usable system, it's not really a usable platform for people to work on. So you could maybe, you know, you're probably going to end up in that case writing some script called like install some stuff on my new device. But now it's a pain, right? You sort of build this image in this beautiful bitbake world, and then run some random, your own random scripts on the end of it in order to make things usable. And that's not pleasant. So that would be the ignore option. The middle option is would be to have a concept of applications which are installed by the system and applications which are installed by the user. And you could theoretically have a situation where you can have upgrades independently on those in these two worlds like as a platform provider, I might want to provide some things. And as a user I can manually install updates. But then there's a real question about exactly what the priority rules between those two look like. And it's also going to be a lot of integration effort. And there's probably some corner cases that are going to be very, very surprising like what happens if a user upgrades a minor version and then you upgrade a major version like who takes priority. So what we actually did inside AGL was a little bit simpler. And that was to we populate this var application directory just once the first time when the system is built, we have one population of this directory and then after then we don't update it. And in fact, the reason for that is for most of the use cases, this sort of makes sense, right? So when the devices are deployed in the field, they're going to get updates for these applications via the application specific update process, that's fine. When you're testing, you're probably either testing the low level, as in the kernel on board support level stuff, in which case you probably don't need updates for the user applications, right? The default set from last week whenever you built the image is probably going to be fine. So it works for that guy. And the application developers are probably going to have a situation where they have a direct install process straight into a prebuilt system, because they often won't be building the image themselves. They'll just be getting a binary image from some server that's been built by somebody else. And then using a process like use on Android where you type an ADB install to push your updates to it. And so they're satisfied by this solution as well because they don't need to update these things using the arbitrary route. So quick getting started and then we're done. So if you want to try this stuff out, it's pretty straightforward. If you get the charming Chinook release of AGL, Google search, you'll find it. There's this AGL setup.sh script that basically configures a bunch of layers and boards for you. If you just pass in the AGL Sota option to that, it will work.  The code if you want to look at it is in meta-AGL extra meta-sota. Once you've got the AGL code down, it's going to be easy to find that. And I've included a link there for the wiki page for the getting started about to do that. If you're not using AGL but still want to use this, then all the functionality for this, we've extracted out into a layer called MetaUpData. And this is basically just that code repackaged as a thing that you can just pull in anywhere. This should be pretty straightforward to add to any open embedded project. You pull in this layers, you need a couple of support layers. Right now our update client uses Rust, so you need a meta-rust, but that actually works really well right now. And just to prove that it is easy, we have an example project. So if you go to garagequicks.rpi on our GitHub, then there's instructions for doing that. And it's basically getClone the repository, run startup, and then BitBay, can you get a software-updatable image? I've got one minute, so I will say nice use of this is you can use it for testing continuous integration builds. So, for example, host your build output on an HTTP server, and then pull updates down rather than reflashing entire cards in order to do CI builds. And that's really nice, because if you do CI builds, normally you end up destroying SD cards, because they don't like huge amounts of writes all the time. And this is maybe easier than switching cards or netbooting. Okay, so that's me. AGL is now certainly without the box, and if you're not using AGL, then meta-updata are on your done. I think that's me, and that's time. So, yeah. Thank you very much. I'll hang around after if you want to ask questions. But yeah, thank you very much for your attention.


Hi everyone, Joe for Jaspy's Case, Brakes.com coming at you with 2022 Panini Prison World Cup Soccer Six-Box Half-Case Picker Team 4. We got Nick Jaspy here ripping open some boxes for us. Here is the list. Big thanks everybody for getting in on the action here on Thursday, the 10th is the second at the case. We opened the first half last night. Patrick Davis, Double Asphalt Moto, Australia and Japan. And it was Grant who bought the 11 team combo. That features those teams right there. A lot of nice stuff here. Good luck everybody. Here is the first half of the first box. I think we pulled a National Landmarks card in the first half. Just full disclosure. Spartan just saw the new John Wick trailer. John Wick, you mean? I'm not a fan of the series. I have not seen a single minute of that series. My brother Alex, he told me to watch one. Alex? So I've watched one. Alex? Yeah. That seems like not his movie. He said they're so cool. Like it's way better than, you know. Like a Marvel movie or something like that? Yeah.  I thought I thought I'd be busy watching like The Lighthouse, you know, yeah or like the lobster by the sea movie. The first one is good, but then it's like, okay, do we need six more? Oh, nice. We got the Irving Lozano. Chuckie? Yeah. Irving Lozano, uh, manga car for L3, for Mexico. Patrick Davis. Wow. And I discounted them. Heavily. Wow. Nobody wanted L3. Wow. And we got a Ricardo Pepe, red. Not on the squad, but this is one to hang on to, to 3.99 in four years when he's not a rookie anymore. Yeah. I think there's 12 MLL players instead of these players I play in. Yeah. At the very least, I thought they put them on the bench for the work-up experience, you know. No, let's take a 29-year-old Jordan Morris instead. There is Aquam Hassan Afif for Qatar. And that Peafock didn't make it or whatever his name is. Cutter, that's for the 11-team combo. Zach Steffen, I mean. And there's Rodrigo de Paul to 1.99. That was from the, from the Series 1 break. And DePaul goes to Marc and Argentina. There's Diago Costa, Crackdice, rookie Crackdice for Portugal. Related to Douglas Costa? I don't know. Is Douglas Costa Portuguese? And all-car chip, of course. And it's probably worth hanging on to every one of these, like, rookie cards, because who knows where they'll be in four years' time. And especially with the World Cup being in North America in four years, it'd be great to hang on to these because, you know, I mean, the interest is really going to, I mean, interest is all spikes every World Cup, but interest in soccer will probably be even greater when it's here in North America. All right, we've got Wabi Khazri to 22. That's going to be for Tunisia. That's going to be part of the 11-team combo that is for Grant. And we've got 6 out of 10, Adrien Rabiot for France, for Le Bleu, Sean Maddock with France. That card's gold. That card is gold! I'm not too familiar with this guy, but it's out of 10. He is 27 years old, plays for Juventus currently. He is a central midfielder. Watch out for Lukas Fabianski autographs in this. Some of them have Leonel Messi stickers on the Fabianski. What? Pretty sure it's Fabianski. 47 out of 2.99, there's Idrisso Baba for Ghana. That's going to be part of the 11-team combo for Grant. Chris Maxwell is saying your Eagles are the real deal. They're legit. They do seem like it. There's Casametro, Pink, Parallel. I don't think there's any other big World Cup snubs. There's Milan Boryan, rookie silver. Wait, so are you saying that Leonel Messi autographs have Fabianski autographs then? Or do they still get... I don't know. It's a good point. Is it like a swap mix-up, or is it just Leonel Messi still has his own Leonel Messi? I think... Because they're not going to screw up Leonel Messi. No. I think whoever was stickerin' them just stuck a couple maybe, and it was like, oh no. Hopefully not the whole run. Some intern. Didn't like Benzema not make the World Cup squad last World Cup. Was there any big ones like that? Yeah, soccer fans out there, let's crowdsource this information here. Any big World Cup snubs, roster snubs. I want to say no. I feel like there would be... I feel like there would be more... How do we lose to the Germans? In women's? Yeah. Come on, Megan. We lost to England two months ago, too. I mean, I feel like they're a better team, but... Yeah, it doesn't seem like... At least according to ESPNFC.com, I guess Mukoku was a shock call up for the Germans. Yeah. Good for the homies. Is there any Mukoku in here? Probably not. I have not noted yet. If it's only 17 soon... He's in like, Bundesliga product, I think, or something. Maybe that's where I've seen that name. You stopped on the... Back in 2018, Benzema had a beef with the manager and was left off the World Cup squad. Yeah, I remember him not being on it. It was like a huge deal. And like the one who kind of got in trouble. Franck Ribbery. Oh yeah. Although Benzema has had issues. Yeah, Franck Ribbery... I think they were involved in some sort of like prostitution scandal or something like that. Not great. There's Jan Bednarik for Poland to 75. That will be for... For Raymond. The big bummer is not that it's during season, like people like Sadio Mane are hurt. I don't think he's gonna play in the World Cup. Yeah, I don't think so either. Which is a bummer. A lot of these guys were. There's Felix Afenagayang for Ghana. It's part of the 11 team combo grant with that one. It should have never been. There's Anthony Martial for Le Bleu International Inc. I don't think... I think he was a little bit on the older side, I want to say. Sean Maddock with France. How old is Anthony Martial? He's... I think he's like 27, 29. I thought he was older. No, he's 26. Oh yeah, that is kind of... Yeah, he didn't make it. Although France is kind of loaded. Felix Afenagayang for Ghana. We've got Edson Alvarez to 399 for L3. And the Korea Republic Silver. I know Conte's hurt. That's for Bang Soon Hwan. No, I won't say that one. I remember in previous series the Silver's... Silver's obviously will do better, like the lower number team cards would go for a lot. Is there any mascot cards? There are, I just haven't seen any yet.  Yeah, I didn't like what World Cup was though. Russia? No, the Russia was a fox. Maybe I'm thinking of Brazil. Fuca? Who's Fuca? No, that was a good one. That was the Armadillo. No, so then it was lost World Cup. World Cup mascot kid. No. I thought I remember like a kid. I think it might have been the Russia one. That was cool. He's cool. I gave Hytham's kid like a little plush doll from the 2018. I was like just giving him vintage toys. 1998 is so lame. The France one where it's just a bird? And of course ours is like corporate. It's like a cartoon character. There's Harris, Sephirah Vova. Oh, thanks Nick. Appreciate it. That's for Switzerland. It's going to go to Ed. This is for Cameroon, Martin, Hongla. We got Gabrielle Martinelli for Brazil. I'd love to see some parallels of that dude. Anis Slemane. Oh sorry, TC, I missed that. I don't know if he walks by here. I'll ask him. Brazil, that'll be for Eric. We got for Saudi Arabia. Abdullah Al Malki to 299. That's for the Combo Grant with that one. Your Dark Horse Pick, Chris's Dark Horse Pick Senegal. I don't know, without Saudi, with Saudi Omane maybe. Without Saudi Omane, that might be a little difficult. Saying Saudi Omane was the glue that held liver pulled together. I mean, it seems like it. But I mean, it was him that won the Africa Cup of Nations. Oh, Tyler is wondering, in honor of your knowledge of baseball pitchers, he's going to give you the name Kodaisanga. Does that mean anything to you? No. Why do I know baseball pitchers? I don't know. Tyler seems to think that you have a strong knowledge of baseball pitchers. No, I don't. We got, ooh, nice. Hyunmin Sun for Korea. Nice, that goes to Sun Hwan. Congrats. I think he's going to play. I think he's hurt. Yeah, I think he's hurt too, but I think he's going to make it. Nice one. For Korea. There's your in Timber to 399. Isn't Korea in the group of death? Yeah, that's going to be a tough group for them to get out of. Dennis is asking, hey, Joe and Nick, do you think any UEFA sealed box may go up in price once the World Cup starts because you're sitting on some UEFA hobby boxes? Possibly. There's Noah Okafor. I feel like all the soccer will probably get a little bummed. Yeah, I mean, if you've been keeping track of the market, if you've been keeping track of the market, they should be kind of creeping up already. World Cup's only 10 days away. So those should be creeping up already. But yeah, once it gets underway, maybe you'll see another boost, keeping on the market. Yeah, if that Jersey Fest doesn't fill today, I just cancel the World Cup, I guess. I don't want to have it like, oh, we're in the World Cup and still not filling out. Yeah, that'd be embarrassing. I had everybody get to team, but not like, oh, if I get Morocco, I'm screwed. I'm going to have a least goal scored. Whoa, you're going to have all sorts of props? You're going to have all sorts of props. Wow, that's fun. That'll be a lot of fun. All right, keeping you connected to the World Cup. Allison and Edison to 25%. It won't be only soccer that's entered. Other product can be eligible for a World Cup promo. Yeah. Nice. Manuel Neuer for Germany to 199. Grant with Z-Germans. Oh, you're thinking about Chris Jaspy, Tyler. Chris Jaspy does have a wealth of baseball knowledge. Yeah, Kodai Senga's record saying is the, oh, the pitch that played with Seiya Suzuki. And Suzuki's trying to recruit him. They're the Cubs anyway, Rex. They don't pay their players. Right. No fans. I guess if you're maybe Kodai Senga and be like, hey, hang out with my buddy, Seiya Suzuki. Eat pizzas together. Occasionally win a baseball game. Win ace, win a series every other month. Yeah. There's Karim Adayemi, rookie silver. I think he's supposed to be pretty good too. Grant with Germans. Cubs have the cheapest owners. Right, pretty young. I mean, Oakland A's, but second, most cheap. What about the Reyes? Yeah, but at least the Cubs, they take in a ton of revenue. There should be no reason for them to trade their foundation. I mean, they traded. They won C's. They got Riff. Eloy Jimenez. Anthony Rizzo. Chris Bryant. Javi Baez. Man, imagine that team. Right. Great team. And now they'll just, and now the Cubs just uses like clickbait for the media. We're just like, I had Tray Toner could go to the Cubs and Aaron Judge Cubs. But in reality, they've never had a free agent signing other than like Alfonso Soriano. Jason Amor. Oh yeah, that's really bad. That'll be the excuse to use. Oh, we don't want to, you know, have another Amor situation. So here's two boxes and here's the third and final box here. I guess the Pirate's owner too. They're pretty cheap. Alright. There's a Gonzalo Plata. Which I believe in Español is silver? Plata? Yeah, I think, and this is a Plata parallel as well. I thought it was like a fruit. Maybe I'm wrong. Spanish figures. Let me know. Ricardo Pepe. As well.  We've got Diogo Costa. It is silver. We've got the Plata, Plata parallel. Plata, Plata, color match. We've got, for France, that's William Saliba. 288 out of 299. Blue for Le Bleu. Which is blue. In French? That one I know. There's Eunice Moussa for the United States. So 399. Tim with the Americans. I believe that we can win. Second half of the box. That's true Rex. Well, we'll see how those prospects work out. He got for those guys. We've got Hassan Al-Haidos. 108 to 399 for Cutter. Part of the combo team for Grant. The autograph coming up is going to be Gareth Bale. Oh, not an auto. Totally got trolled. Brian with whales. Is this the auto then? Oh, it is. It's a one of one Javi Hernandez. Woo. Raymond Goh. With Espana. Wow. One of one. That is nice. Raymond. All aboard. The Big Hit Express. Goal, goal, goal, goal, goal. 4 out of 99. Moises Cicero for Ecuador. 299. Part of the combo team for Grant. We've got Talbi for Tunisia. Also for the combo. And with the Hyunmin Son, then we've got the one of one Javi autograph. It's pretty nice. It's Noah Okofour. Rookie Pink Parallel for Switzerland. Part of... No, that's for Ed. There's Karim out of Yemi. Rookie Silver. Switzerland actually has a kind of a low key. Good team there. Grant with the German. There's Ruben Diaz to 299 for Portugal. That's going to be for Elefteri. Wow. We do need a Messi. We'd love to see... I mean, we've seen a couple base cards, no like silvers, no low number of parallels. Definitely no autographs. We've got to find some of that guy. There's Elias Ciciri for Tunisia. It's for Grant in the combo spot. There's Neymar Cracked Ice for Brazil, Eric. We've got Irman Luzza for Morocco. It's part of the combo. Rookie Silver. I've not seen a lot of Bucal Saca either. Base or otherwise. We've got Edson Alvarez. 27 out of 1.99. That's for L3. That's for Mexico. Patrick. This is not little Messi, but it's Giovanni Lo Celso. International link. It's for Marc in Argentina. And another red Ricardo Pepe. 002 out of 3.99. For Tim in the United States. More I think about it. Yeah, you have to have. You've got to have Ricardo Pepe on that US team. We've got Andres Skov Olsen. 74 out of 3.99. S-E-N. Denmark. That's for Carlos. Kai Havertz. Cracked Ice for Germany. Jude Bellingham Silver. Could make a big move to the English Premier League. Next summer. Liverpool's benign and they need a midfielder like him, but they don't make it to the Champions League next year. I'm not sure if they're going to get Jude Bellingham. 170 out of 1.99. It's Yusuf Sakhni. M-Sakhni. For Tunisia. That's going to be for Grant. And we need some parallels of that guy. Redemption. We've got Jackson Irvine. 266 out of 2.99. Jixon Irvine. Irvine. That's Australian, right? Jixon Irvine. Australia. Sulkaruz. For the Sulkaruz. Patrick with Australia. That wasn't my voice here. Excuse me, I'm going to get a lozenge going here. Imame. Imaye. Morocco. That's going to be for the 11 teamer. That's Coutinho. There's Arthur Teate for Belgium. By the way, that Jude Bellingham goes to England. David B with England. That's right. Belgium, that'll be for Raymond. Raymond L for Belgium. Two different Ramens in here. You've got a Lucca Modrich. National Pride. And a Urian Timber to 3.99. That's for the Netherlands. That's going to go to Greg. And the Modrich goes to Grant and Croatia. We've got Ike Ugo. Nice. Canada. Greg with the rookie silver. And we've got a Carlos Rodriguez. Rookie silver for Mexico. That's for Patrick. And the last one here. It's going to be International Inc. Pau Torres. Pau Torres plays center back for Villarreal and the Spain national team. Just 25 years old. Spain, that's going to go to Raymond Go. And there you go, gang. I'm Joe for jaspyscasebreaks.com. That was 2022 Panini Prison World Cup Soccer, six box half case picker team four. The next half case break, which is in the store now, I think might be our final case. The next half case is going to be from a fresh case. I'm Joe. I'll see you next time for the next soccer break. Bye-bye.


We're in Jaquenta. Okay. Hey, the boy in that one. All right, no more. Let's see, let's see. Yo, te le voy a levantar, okay? Sector, probably two more. Uh, we'll just hold up a lot. Zero, one launch. Hey! We got zero, five. Uh, first of all, more. The launch is currently... Keep eyes on him! We'll be making our approach. Try to pick these people up. Kevin, the heaving line! Roger. Nice, nice. Nice and easy. Don't even got it. You got seven feet. Roger. All right, guys.


Tarzan of the Eight. Brought to you from out the pages of Edgar Rice Burl's Immortal Book. Tarzan feels his whole giving way. The sucking, slithering sand has drawn Tracy down too deeply for the Eight-Man to pull him out. For two hours Tarzan has fought with death. Now every nerve, every muscle, every fiber of his strong body aches and pulses with the unnatural strain. He tries to free his hands. Tracy, feeling the movement, struggles in frenzy, grips more tightly. His nails dig into the Eight-Man's wrists. His raised eyes stare unseemly before him. Again Tarzan tries to free himself from his deathly grip. Again Tracy clutches at his salvation. Tarzan's arms. With a mighty effort Tarzan braces himself. His tortured lungs feel the relief of his screams. The shock hits Tracy like a blow. His fingers relax. Clutch again, open and close convulsively. Claw-like. They grasp empty air. Tarzan has freed himself. Gasping, he throws himself on the sand. His breath comes painfully. The blood throbs in his temples. Tarzan pulls himself painfully to his knees. Tracy is almost up to his armpits on the sand. Every futile movement draws him deeper, pulls him more securely in the treacherous sand.  Tarzan hears the answering call from the tall trees. The eights have heard. Every movement is tortured to Tarzan. Every joint is strained and wrenched. He glances at Tracy. He decides to be sure that his knife is there and starts for the nearest castle tree. His fingers are almost numb with pain as he pulls himself up from branch to branch. Up, up, up he goes. Sits a slider branch and hacks the tough joints of a creeping vine. The knife that is so easily killed hotter finds the fibers of the vine a different matter. Tarzan splashes, pierces. The fibers pop. The Eight-Man gages the distance to the ground, drops like a sounding lead from limb to limb, throws himself clear and grasps the broken vine. Side to side, swinging like a pendulum, breaking his fall with beaten elbows. He tears the sturdy tendrils from that clarin tree. Close to the ground, hanging to the vine like grim death, he shoots through the leaves. At last he reaches the ground. Tarzan points to the vines, then to the quicksands. The smaller eights bound forward. The older take their time. Tarzan leads them to the quicksands. Quickly he passes one end of the vine under Tracy's armpit, throws himself on the ground, reaches out, pulls the vine around Tracy's chest. Tracy's touching fingers try to grasp Tarzan, but the eight-man twists to one side. Tarzan points to the free end of the vine. The vine pulls fantastically. The eights follow two. Tracy yells in agony as the vine bites into his chest. The eights, canning among themselves, pay no attention to them, join in Tarzan's new game. The vine stretches and creeps. That wound is out of the fiber. It's clear. A horrible cutting down on the quicksands. Tracy struggles. His feet move. He runs it forward. He creeps the sand with his fist. The eights reel back. Tracy dances momentarily in midair, pulls on the sand, clear the clap. Meanwhile, aboard the steamer, snikes, hearing the hammering in the hole is on to find John. And Clayton works desperately to loosen the last remaining bolt. How long, Clayton? I can't hold on. Just a few seconds, Daddy. Just a few seconds. That's right. Now, I'll give you ten seconds, John. One more blow of the hammer and the water goes to the boilers. We've been to the boiler room and set the valves to the hole. That's right, Ben. It's too late. The water's over the pipe now. One blow from the hammer and we all go together. Come on, Clayton. John seems to be slow on the take-off. He opens the door, the water rushes. When the door opens, hang on till the first rush of water is over. Get a gun. First thing, stick it in your ribs. All right. Well, John... Don't move. Professor Porter has an automatic breast in the small of your back. Now, Miss Porter, are you all right? Yes, I think I am. Yes, I'm all right. I am a man of peace, but at the present moment, I feel almost tempted to press this trigger for you. You can't do that. Why? Why kill a man in cold blood? Oh, by Joe. I say, what a crust. Here you jolly well try to drown us.   John, I'll let you live on one condition. Anything. Anything. If the professor here will quit shaking that gun in my back. Not for a while, John. Not for some little time yet. Miss Porter, take night's gun. You won't mind. We'll use snipes. All right, all right.  Do you want to see me killed? I ain't sure, but what that ain't a bad idea. Come on, come on. We're wasting time. John, where's Mr. Philander? He's below in his cabin. Is he all right? He's all right. Just... Get him up here. Yes, sir. And John? Yes, sir. Get the boat ready. That, that's it, mate. Fill the boat for them. I'll turn them free. You do as you're told, John, or the professor's finger will itch and... Anything you say, Mr. Clayton, anything. Miss Porter, will you go below? Get all your things that you can carry and stow them in the boat. Now, John, I want water, provisions, clothes, a good compass, rope, matches, firearms, and ammunition. Yes, sir. And John? Yes, sir. Rockets. And be sure they're a good one. White, red, green. Yes, sir. And John? Yes, sir. Not only pistol, but four rifle. Now, John, order your rats. So, all right, then, mate. Do as the gentlemen thought it. Thank goodness. Thank goodness. Well, she needs to land us. What have you been doing? Doing. Doing? I haven't been doing anything. I've been done too. These things... Yes, yes, yes, I know. We haven't been able to think of a good name for them either. Don't you even blunt or I'll shoot. They locked me in the cabin. Accused me of hiding some map or something. Threatened me with some very refined methods of torture. No, no, I think this is all... Why, hello, Mr. Philander. Why, hello, Jane. You brought our hunting clothes, eh? That's the thing. And all the fair shoes. We might be able to make some dresses and kills out of grass, but I like shoes. I'll relieve you of the gunpowder. If you go below and get some ravers... I did forget them. I went to your cabin, Cecil, and brought your kids. Oh, good girl. Now, I think that's what's going on here. That's right, Killy. Why, you are no famous... Now, you listen to me, Professor Archimedes. I think you've seen the boat, Mr. Clayton. Fine.  Then the Professor will keep you covered till I get aboard. How's that? But, sir... It doesn't suit you, eh? Well, we'll row away a few hundred feet and then you can get out. But, sir, that... that ain't right, sir. What's the matter? Can't you swim? No, sir, no, sir. I'm the shark, sir. Well, that's too bad. Now, swing out the boat. Can you get in? Yes, yes, sir. And you, Killy? After you, Professor. In you get. And stop arguing. Oh, very, Mr. Clayton. Right. Lower away. Your neck. In I say. I'll go. I'll go. Looming. Don't shoot. Don't shoot. Don't go. Don't go. Light it up. Oh, my God! Hey, what's that?


Do you remember in April of last year April 2020 when I shaved my head down to the bone baby and now look where we are I can't get a haircut.  I don't know what to do I'm not gonna trim it myself again. Really. It's really something. What can I what can I do with it? I have been wearing more headbands, and I have been going for kind of this this like 90s Hair cut a little bit like this isn't look half bad. What do I do with it? I have no clothes. It's why I've been wearing more hacks Welcome back to video Hello, how's it going? Hope you're doing well I feel like it's been like forever since I actually recorded something because I've been doing so much streaming recently I'm having a lot of stuff going on in the back end of me life, but we're back on the reddit We haven't been on reddit in a Hot sec. I'm gonna do top of this month because it's been multiple months Yes That's pretty true. Look at those socks though. They got cute frogs on them. Do I have cool socks on today? No Do I have cool underwear on today? No. Merry Christmas, Ethan. This was so cool on December 23rd 2012 We had a hundred subscribers eight years later. Here we are at two million. We hit two million subs Exactly eight years later after hitting a hundred subs so crazy This better not awaken anything in me on Christmas Eve me and my pal lopes did a did a stream together And I decided to bust out the made outfit you weren't there the made outfit might not come back because it was too tight I literally had to rip it off of my body after the stream, so That's a Little it's a little Let's see hold on. Let's see hold on. Let me put this let me put this on you see if I can make this work Oh, she is tight. Yeah, there's no way. There's no way I can zip this thing up still got it though, baby Yeah, see the back that's ripped open. There is a zipper, but it's all broken Yeah, let's wear this for the rest of the video. Why not be watching everyone excited get a sight Me watching everyone get excited as the clock starts zero on New Year's Eve. Well, I get flaccid facts of that beautiful beautiful day Was that a new year's ready? I was completely alone on news. It was kind of depressing a very threatening quartet Pretty good ah Lawned Eve perhaps this looks sick. Is this Soco? Yep. It is I'll be dying my hair white again It'll happen. Just I can't go anywhere. Oh But why not Ethan looks like young Carl That's cute whoa, that's so sick Come on do something he's I want to see a ton of these not of me it's bell specifically, but a bunch of different Deep fakes.  That's so funny.   This is pretty similar. I strive to be like that though.  Oh my boy that tree Let's just say quarantine's been long oh Oh, that's a bummer. Oh, this is really cute. Eve sketch. This is kind of what it'll look like when I want Tara too Every single mistake I've ever made in my life me trying to sleep. That's true I think about the other night. I was up thinking about the time that I was in like 8th grade maybe a freshman in high school I was in the car with this girl that I had a huge crush on and I was saying a sentence And I just couldn't say I don't remember specifically what I was saying But I couldn't say a word for some reason I kept slipping up on it I said it like three or four times and then she just said the word for me And I was like, yeah, and I was so embarrassed because it wasn't a hard work I just couldn't say a word. God. I think about that all the time. She'll never love me. Oh my god. Oh my god Good, this is so good. Oh my god. This is awesome. That's so cool. I love that That's so cool. You made it a little Ha ha ha this is so cool. Oh my god seen this before that's awesome Oh, that's so cool morning.  He's having a hard time dealing with marks and on existence It has been really fun making these kind of videos. Also. I made a What is it called I'll tell you Ethan is bored here it is and it's just a bunch.  Why do I sometimes get a possessed reddit post actual footage of me a British Reacting to Ethan's new video calling twinnings twinning twinnings twinnings That's not going right Dunking a raw unbuttered crumpet and tea. Oh my god putting the milk in first. What do you mean putting them? Oh, I see you're mixing it It doesn't make a difference.  Ethan has bigger plans for the future. Ethan continuously trends on Twitter Ethan has two minutes left. I Think this also is like a fluke. It's a combination of me and Ethan Dolan That's why I've been trending a lot or the name Ethan has been trending a lot on Twitter because it's a combination of me and Ethan And I think both of our fan bases just kind of collide at the right times because it is it's not like 18,000 people are tweeting about me Also, Ethan is a fairly common name So anyone who tweets with the name of Ethan or at somebody who is named Ethan gets added to that So don't get too excited about it. Okay Do you have a CDL by chance?  I don't know if that's real. That's crazy. You have to actually throw away your car now, though You know not a lot. Whatever dude. Let's turn into Chris anytime. I should do that. I don't have hair things This is so cool. This is so cool You know me me an outfit. I think it's a look I don't care what you gender you identify as put it on I don't want to I don't want to brag, but I've been working out also me sweating like a maniac two minutes into we tennis Yeah, that's pretty much me. I've been worked out in a bit and I feel terrible about it. Oh Look at this. Look at this. He's got big stick.    That's so cool.  Oh, I saw this one the other day a Little bit concerning of how accurate you've got my living room, but oh my god. This art is phenomenal. Oh, it's the same the same person this one I saw I think I saw in the last right of video.   All right. All right. I want to see some real me me mean mean mean town I Don't know I'm gonna come back in a week and I expect there to be crank gameplays memes galore Okay Thank you all so much for watching. I hope you enjoyed You ever stretch have a good day. Bye


Hello and a very, very warm welcome to this discussion, which is a key part of the World Economic Forum Sustainable Development Impact Summit. My name is Sally Bundalk and I'm going to be steering you through this session and it's absolutely jam-packed. We've got some fantastic contributors all lined up to share their skills and expertise. Just to tell you, and you can see them all there and I'll introduce you to them in just a moment, but just to tell you a little bit about me, I work for BBC News as you can see and if you are an early riser, you're a peeing time and I do appreciate you all connecting from all over the world, but you'll catch my programme on BBC World News. It's one hour, it's live, it's packed with all the news, latest news business and sport and when I say early hours for me, it means my alarm this morning went off at 1.50am and I was in the newsroom in London at 3am and I know pretty shocking but hey, makeup covers all the issues and my area of specialism is business and finance and so the discussion that we're going to have now this afternoon has been a key talking point I have to say with many of the chief executives, politicians and leaders that I've been interviewing in recent weeks on BBC World News, we're talking about the world of work, the dramatic changes the global pandemic has forced, if you collide that with climate change and also bring in the disruption of automation, you've got what many would argue is a triple whammy which whether we like it or not is transforming the world of work. So today, as you just saw there, we have a great set of panellists who are going to share their thoughts and expertise and also I just want to mention that this discussion we're having, this first part is an open discussion so what that means is we would love to hear from you so please get involved via the chat messaging app at the section at the bottom, you hit the button, send us your questions and your thoughts and your comments and we'll bring them through into the discussion as well and also do share far and wide on social media, the fact that we are having this conversation, some of the key points that are made, the hashtag to use is SDIS 21 so that's all to come but as you can see we have got three fantastic panellists who are waiting to share their expertise so we've got Robert Moritz who is the chairman of PWC who I must admit I have interviewed many times in the early hours on a cold balcony in Davos at the World Economic Forum and of course his his remit is well and truly overflowing at PWC but also he's very actively involved with WEF which includes initiatives to do with the future of work and education so Bob Great's happy with us this afternoon we've also got Dan Rosenswig who is president and chief executive of the company Czech this is a student services company based in California I hope I've got that right Dan he's also an investor in many Silicon Valley companies as well and is involved in several initiative initiatives that encourage mentoring and workplace equality so Dan great to have you on board and we have Soonju Gug who is joining us from Singapore it's late in the evening for Soonju she is chief skills officer and chief research officer at the skills future in Singapore she leads a team of jobs skills analysts data scientists and futurists to identify global trends that impact business jobs and skills so we're going to have a discussion now for a period of time as I've mentioned it's an open discussion this will be recorded and available later as well for you to watch again or to spread far and wide but just to mention after this we've got a very interactive phase two of this session where we'll all be set moved into breakout rooms and during that session that's more of a private discussion where Chatham house rules will apply but for now let's begin with the panel conversation and as I said we really want to hear from you those of you who tune in from all over we want to get your comments and your questions in so do get them sent to us so first of all Bob if I start with you and we begin with from your perspective what are the most promising approaches for upskilling and by that we can look at you know post pandemic activity what's going going on across different industries where have you seen promising approaches to that challenge Kelly thanks first for moderating the conversation and I'm thrilled to be doing this not in the frigate zone of Davos Switzerland in the early part of every calendar year but coming back to your question first let's start with a statement the world of work has to work better for everybody and what the last 18 months has definitely demonstrated is that we've got to evolve and collectively work across the entire ecosystem to make it actually work better for everybody on a more inclusive basis so what are the things that we see as promising first there's a hell of a lot more awareness the divisiveness has come in terms of the haves and have nots becomes painfully obvious second the ability to see that it is possible to change change the way we do work from an in-office approach to a hybrid approach to a totally digital approach shows it is possible to change the way we think about things so that's another positive that's come through with that though obviously is the challenge of covid right we've got a really crowded agenda now as people think about what are the various challenges they've got to deal with so it really requires sort of three fundamental things first the time and attention of government business community leaders and educators coming together collectively to work this across the entire ecosystem when we see that happen in various countries and we'll talk about Singapore in a few seconds with the rest of the panel there's great examples where business and government come together very well the second part i would say where we see things working really well is when we bring our youth into the equation india is a great example that we're part of an organization called generation unlimited and that case is an offshoot for unicef we're focused on four things one is connectivity to make sure people have access second is the quality and content of the education that goes to the curriculum that's being provided which we know when you look at those two things it's been challenging in the world at the lower level of education and the higher level of education third is the issue of entrepreneurship making sure we actually have jobs that our skills can be used against in the developing part of the world's right now that's actually not as big of a challenge in the developing parts of the world it is a big challenge so making sure we've got to focus on entrepreneurship and the changing way work will be done is going to be important and last but not least is bringing youth to the equation we actually have youth champions in india and the genu organization where they're actually the ones driving the change they're activating it bringing it to life working with educators business and government so the combination all those things silly is super important to get to the positive outcome we're looking for which goes to how do we have the impact on the most peaceful possible to get them skilled for the work of the future whatever that may be looking like and we cannot predict what it's going to look like so agility is really important in this part of this process okay super thank you bob soon do you're nodding away there um what are you seeing doing in singapore that would you know show us examples of promising approaches to upskilling thank you bob for the sharing and thank you sadly for the question can you hear me yeah we can loud and clear okay yeah great um i would say that looking at the questions i will caution us not to get distracted by the word post-covid and we can't kind of think that we're going back to the typical normal business as usual i would say that the the post-covid actually give us a great opportunity in fact we have seen a lot of innovation as bob mentioned a lot of the organization has done away with processes that require human human human to perform and they've automated that and and they have reduced that the kind of labor dependent the dependence to do work processes and and the automation is really really exciting so i thought we when we look at the post-covid uh race industry across industry rescaling we should always have that uh beyond recovery to the old to a more transformative future and to seize the opportunity to make sure that whatever we we rescale is to is for the future future the economy where the there is sustainable growth so i thought that is a very important point for me to put across not to go back to the old but to really support the rescaling for the future and to do that to rescale rescaling for the future economy i think we really need to think through what are the kind of where are the feasible and reasonable jobs allow people to pivot from a sunset industry to sunrise industry and that that requires a lot of coordination and planning um from with that in the industry with the businesses we treat those as a association chamber and with a university polytechnic all the education is still coming together and and some of the workforce intermediary and that part is really important because we cannot have good policy without good implementation so i think that is key and i think that Lee is really to think through the kind of support provision support provision we need to put in place be it financial support to help people tie over during the rescaling period or the car incentive would have put on the table to nudge the enterprises to move towards a sustainable future yeah thanks um could you just explain in Singapore how your organisation works i presume you work with government i know you've worked in the Singaporean government in the past so how how does the collaboration work and how long has you know the skills future how long has that been going on for yeah skills such as Singapore we are in government agency under the ministry education so we are um if we put it that way we are a skilled a skills authority of Singapore so we identify the emerging skills and future skills need of the economy and then we translate it into training programs we work with organisations like cosera we work with organisations like generations to as an intermediary to see how can programs and and be available to the citizens for for transitions or to help organised to help enterprises identify talent and skills needs so we do do this ongoing these with or without covid but during covid i think there was a time that we need to quickly ramp up training and training ships to help to hold um a fresh grab from the market because last year the class of 2019 was badly hit i think class of 2020 is slightly better so i think we have a think through how to help 2020 is badly hit as well so i think we need to think through how to create job opportunity very quickly over over over a short period of time and we also use big data to look into where are the what are the in-demand jobs that we can transit people over including creating skills profiling tools to profile people so that they can understand these are the nearest adjacent job that they can go into very quickly and we still have to employ to see where where else can they find uh sometimes to land land the staff out if they have access uh resources and manpower how to land the people out to other industry very quickly so these are kind of some of the things that we do on B scaling efforts yeah okay and and how long have you know have you there existed as an organisation working with government specifically looking at skills like this i mean how many years have you been operating um as as skill futures Singapore uh since 2016 but if you look back the history uh with the the the forebody of skill futures involves workforce development agency that was in 2003 and if you look at the history of Singapore we've been we have been looking at workforce rescaling since the day we the nation is created so it's about 50 over a year really it's quite incredible and unusual i mean can you give examples of other governments around the world that have something similar in place i would say that uh we are quite unique in the way that because we see our Singapore citizens as valuable assets that every one of the citizens must have a fulfilling career and to help them have a fulfilling career um in various uh life stages therefore if we invest a lot of a substantive amount of uh resources to make sure that we have free educations from primary secondary to tertiary so tertiary are highly funded uh by universities at least 70 percent and then they are bursary um so i think that's a front-end part of the pre-education and training but the the lifelong learning part is even um causing us more resources because everybody as a Singaporean for example for 25 year old and above you have skill future credits that you can defray our pocket expenses for the lifelong learning and the curated causes which is uh which is based on what the the future economy will need are highly subsidized as well from 70 percent to 90 percent depends on your depend on the profile of the workforce i think at the end of the day we want to ensure that economic growth does cascade down to individuals citizens of career success and also supporting a competitive economy okay thank you that's really a really good illustration of collaboration between government between business between society dan give us your take on this i mean you not only run check which is specifically supporting students providing services for students which is the future workforce but also you invest in lots of silicon valley companies you've got your you know you've got your eye on a lot of organizations so from your perspective what are the promising approaches the question i've put to the other two you know for post pandemic upskilling across industry yeah first of all thank you sally and and i appreciate all the comments that have been made already i think they're spot on and very constructive and laying out sort of the giant framework the thing that we see is this the the pandemic just accelerated the inevitable it didn't cause this problem um what what hasn't been said explicitly and i'm just going to say it is all of the economies around the world are becoming tech and that doesn't mean everybody has to be an engineer it just means everybody has to understand and utilize technology in whatever role that they happen to be playing so if you're in sales and you can't use sales force you're not likely to be able to be successful in the role of sales going forward if you're in the creative world and you can't use adobe then you're not likely going to be successful and so i think we have to first acknowledge a couple of things that we need that the system of education is no longer aligned with its primary constituents which are the students who 80 percent of them if they choose to go on to higher education are going on for the purposes of getting a better career so we have to look at the cost of education we have to look at the way education is delivered in-person education in a world where the overwhelming majority of people have families and have jobs while they're learning no longer can serve the constituency that it needs to to serve at scale so we have to look at the cost of education the way education is delivered the curriculum that's delivered the length of time it takes to get a so-called degree the fact of the matter is if you just look at the united states as an example of the first world country that people think are doing extraordinarily well 50 percent of high school students go on to higher education and almost half of them never get a degree so 75 percent of the u.s. population doesn't even have a college degree so the question is what should we be learning how should we be learning it how long should it take and how do we realign the learner with the ultimate consumer of that learning which are businesses and so institutions whether they're government institutions or educational institutions or businesses need to realign with the future of work we don't really need big data to tell us what jobs are growing we can see it we can see what companies are opening up we can see they're all tech-enabled in nature and again you don't have to be an engineer you don't have to learn to code you don't have to do those things in fact software is being built so you never have to learn to code but if you're not able to utilize the tools of the modern workforce you're not going to be able to be skilled up skilled or reskilled and we have you know people running the panels later who do all of those things extraordinarily well and so you see the majority of growth of where learners are going is either direct to learn it themselves because government institutions are not really creating the right curriculum or they're going into the workforce so 60 percent of the people have jobs they can work with the great companies like Coursera, Udacity and others to get skilled in the workplace but for the people that don't have jobs or don't have companies that provide that it needs to be low cost on demand and it needs to have actual support that can scale with them so that when they get stuck they can get unstuck the two primary reasons people drop out of learning is because they can't afford it or they get stuck and there's nobody to get them unstuck and so we just what we see from the students and Chegg now is global we weren't domestic us for a long time but you know we've we've been discussing the fact that we'll have well over a million subscribers for Chegg help outside the US and we have our thing for organization which focuses on upskilling, not so much rescale. Reskilling is for the people that are being displaced now upskilling is for people who are in jobs but the skills are evolving and then there's just skilling which is K through 12 early learning should be skilling you in job and job capabilities and I'm amazed that the curriculum of the institutions and the government don't focus on that it's easier to learn it while you're young than to get re-skilled when you're old what we do know is technology will displace jobs faster than they've ever displaced them before and that is tragic and I agree that we need to find financial support for those people and education for those people but the fact is over the last 25 years technology has actually created more jobs than existed before they're just different kinds of jobs and so we need to understand that skills that were appropriate 25 years ago five years ago may not be appropriate to be teaching now and institutions including the government including education institutions need to realign with the students needs and businesses goals. Okay and and whilst you've all been talking we've been getting some questions through which is great so we'll start to bring those through so Bob if I throw this one at you and then to a degree down you've already touched on this actually so you've already answered it to a degree but one watching us at the moment has asked the question you know who is responsible for developing skills employer or individual Bob and actually it's everyone isn't it it's employer individual business community etc but the but when it's everyone it's hard to to get in get stuck in isn't it because everyone's looking to everyone else aren't they I think that's right but let's go back to what it takes to actually do this do this well and do it in scale as Dan was talking about first let's get a taxonomy created so we understand what kind of skills we're talking about how to talk about them we have the right nomenclature and the weft has done a lot of good work in this regard second you've got to have accessibility to those credentialing capabilities whether they come from a government or whether they come from a business organization whether they come from an employer or a business that focuses on this as a specialization and that's important in terms of as Dan said the quality of the curriculum and the effectiveness and efficiency in terms of the cost and the ease of which people can tap into that resource so there's not only a mandate for them to do that they're willing to actually jump into it themselves on a self-motivated basis which comes to the other piece you need which is you got to actually deal with the incentives and this comes in two ways incentives for people to lean into these opportunities incentives for businesses to do it now I will tell you the business community should be self-incentives otherwise you're not going to have the employees or the talent you need to actually do the work of the future that is going to be required of you but you also have to need to find people the time to do this I'll share with you even when we did it for ourselves the number one issue was I have my day job I want to reskill I want to upskill but the real is I don't have time to do it so you have to actually think about that as well as you look forward and last but not least you talked about who's who's responsible well let's go to the topic of accountability this is where government should be really clear in terms of what they're planning on doing and are they accountable and have they delivered against those results likewise business being accountable in terms of not only what they may do to help the skills but the impact they are having from availing themselves or letting people to be available to the actually tap into those skills so reporting is an equal amount of a tool that actually could be actually helping us get to that accountability and specifically that point selling who's responsible who's doing it and who's actually demonstrating the progress in a positive way and you're starting to see that country by country and business by business in terms of the impact that are looking at yeah absolutely and Dan you've already touched on the fact that quite a few who will be leading discussions later I mean they're involved in in businesses that are trying to help educators and organizations in terms of technology provision but don't you think that I certainly my experience of the pandemic has been I've got three children who are all at different schools at different ages what COVID-19 did was it forced schools certainly across the UK and I'm sure in many other countries to suddenly get on board with technology because all the kids are at home and that's caused huge you know stress at the time but but massive progress in a very short period of time would you say yeah look there has been progress and as I said check has been built to bet on the inevitable there's a reason that we now have nearly you know approaching 10 million customers around the world and a company that most people haven't heard of and it's because there are a lot of self-motivated people that need help and will seek help employers are incentive to have an educated workforce students and parents and governments are incentive it's the educational institutions that have never actually been held accountable for producing employable people there's no accountability on the price there's no accountability on the curriculum so even though yes now they are using technology they didn't evolve the curriculum they didn't evolve the speed in which they can teach the curriculum they didn't start utilizing the tools in which to support students they still haven't arranged it so that it can be on demand I mean just look at the United States as a singular example 26 percent of all students already have children we're choosing we're forcing people to choose between learning and earning so it's not just that they use technology they used it at least in higher education so that they can continue to collect the money as opposed to understanding what the technology can actually enable people to do which is to learn for less learn on demand learn on scale get personalized help and so it's not just that they appreciate what technology can do and just just to give you a couple of quick quick statistics 75 of all students now that go to higher education say that they would prefer a hybrid environment where only about 40 percent said that before COVID so COVID did accelerate that and nearly half of professors now agree that technology can be used to educate however the overwhelming majority of them are at vocational or two-year schools and not four-year schools because four-year schools still would prefer to be four years not commit to full-time teaching not make it on demand and so there's still a lot of work to go so yes progress has been made but i think we need to understand the alignment is between the learner the employer and the institutions need to be in the middle to allow for those people to have the right curriculum at the right speed with the right credentials to be employable in the modern workforce and that there needs to be an affirmative ROI on the cost whoever pays it check happens to believe employers should pay we pay off all of our employees student debt we pay for continuing education but there are many people that pay and and so whoever pays is going to want to see a return on it okay absolutely i'm sure for sure before we go to part two soon do i just want to get one more comment from you because we've had a a question in from from someone who's who's with us on this discussion saying how do you actually encourage people to want to reskill and i mean that that is a big issue isn't it hmm thanks for the question selly uh yes this is it is a challenge i would i would say that even when we started to issue out in 2016 every 25 year old and above Singaporean get 500 dollars give you your credits and in fact last year we just had another top power 500 dollars and for for citizens 40 and above we have another extra 500 so people like myself have $1,500 to spend so having having that um um credit in the pockets is kind of um giving them baby empowerment to make decisions about what skills what kind of training they want to go for and i thought it somehow has has moved the needle a bit i would say moved a needle a bit because people felt that hey i have the money i have to spend within five years and have to think carefully uh where should i invest my time and and with this money what can i do in my career this is number one number two i thought uh we we use the term sign posting to us sign posting is quite important because it's not about just giving giving out the money but how do they know what is the skills in demand how do they know uh where do they want to go how do they know what kind of options they have so i think the sign posting from us is very important to explain to them that these are the various options in the care economy in the digital economy in the green economy and you can you can make certain decisions about where you want to go and then how much it's going to cost you how much time it's going to involve so at least you can see that with an investment how far you can go with the next S curve for your career so i would say that incentive is important a sign posting is important and equally important will be the kind of support not just online that they can self navigate on on the portal that we have called my ski Witcher portal but make available face to face over the over they can they can make appointment to talk to a career coach to talk to a skills ambassador is available in Singapore so we make all this available throughout the whole Singapore people can just walk into a counter make appointment and and have someone to talk to i think that will allow us to to encourage people to want to come forth to to participate in rescaling on their own on the other hand is to encourage employer to continue to rescale their workforce because i think that's quite important employer play the role of identifying skills develop skills and use the skills and and more importantly pay for the skill as well so i think we need to we need to be able to mobilize both the citizen individual and also the employers okay all right soon Ju thank you so much so that brings to a close part one of of this session so i just want to explain how the next part work so where we have been live streaming this so far will be directed all of us into breakout rooms next so this next part is a private discussion it's very interactive so just to remind you all that Chatham house rules will apply in this next session it'd be lovely for those of you whilst you're in the breakout rooms do turn your cameras on so we can all see each other and of course remember to be muted or unmuting depending on what's going on and your discussion leader in your breakout rooms will guide you through the next exercise so let me introduce to you who the discussion leaders are we've got Andrew Beard who's chief executive for education sorry the chief executive of education for employment we've got Gabriel Dal Porto who's chief executive of Udacity we've got Jeff Maggio and Calder who's CEO of Coursera company's already been mentioned many of these companies have been mentioned already and we've got Dr. Mona Moshad who's chief executive of Generation so do enjoy a part to get very involved make the most of this time we will reconvene all of us a little later to just share what's been discussed in the breakout rooms but for now just wait as we pause for five minutes as we allow for the transition to take place


Well, after losing to them last time and over time, this was obviously a big game for us and to clench the playoff spot and senior night. So it was a loaded game and I'm really, really glad we came out on top. Also seniority is something that we, you kind of look forward to after your four years, like when your hard work pays off and you kind of get thrown out into a world war. So of course, Christian, I'm sure we both wanted to play well, especially with all of our family here, teammates cheering us on. So it definitely added an element to the game. It certainly added to our energy and excitement coming out.  That was great. It just shows how great of a team we are, how intense we can get each other now. We can hype each other up. So that's just a testament to our team and our energy, I think. And like Coach always says, it's a game of run. So we knew we came out strong, they were going to come back fighting too. So we knew that once we got up, it wasn't just going to be, that's the game. So we knew that they were going to come back and fight and we're just going to have to fight back. It's an honor to be part of a program like that. That's come from nothing, didn't even have a gym and to build up like that. So honestly, it's just an honor for us and hopefully we can finish it out with something else for this program to be proud of. Also just gives our other teammates something to look forward to, to know that if you keep working hard, it'll pay off in the end. Great, thank you so much guys. Thank you.