Hello everybody Okay, obviously you may hear me, but I'll try to adjust it a little bit Is it okay if I speak that way? I don't need to be closer to the microphone Okay Again, hello everybody. My name is Alexi Broadkina and today we are going to talk about how a Zephyr RTOS might be helpful to leverage all the benefits of your modern multicore design and and So let me start First a couple of words about myself. You may read something here Basically, I've been doing embedded software development for a couple of years well more than 10 years already And mostly these are implemented things on modern 32-bit microprocessors or micropontrollers if you will and so I've been doing a lot of open source as well And so lately I started to deal with Zephyr RTOS So what are we going to talk about today? First? We'll see I'll try to convince you that so there is actually a demand on of multicore deeply embedded or basically embedded systems and so hopefully You'll see what is a real need for that and then we'll go to a discussion of about two fundamental fundamentally different Approaches with multicore design and so then we'll see how those are mapped to the Zephyr RTOS how it could be used there and so then we'll spend a little bit more time with SMP because it is From one point of view it is more standard And so that's why applicable to a wider variety of different hardware But so then it is also quite a tricky one because it requires you to deal with a couple of interesting things So let me continue then with what we have here. So Why actually we might want to use multicore in embedded systems? It sounds quite strange today, but we are getting there. So What happens we there is no such thing as enough performance because whenever we have More performance. We are trying to do more funky stuff And so that's why at some point we end up having way too many work to be done And so what we do we try to achieve more So what what we need to do? We need to execute more instructions per second, for example That's how we achieve that if we are not talking about improvements in CPU architecture So we are trying to execute instructions faster. So we Try to make our clock Be high and higher and at some points we end up with a couple of things so either together or separately So we may have a problem because we cannot scale our Frequency any longer because our tech process doesn't allow us to do so or we may see that so we are already dissipating So much power that our packages cannot resist that so we cannot increase our Frequency any longer, but then we may have another challenges. So for example, what if we have a critical task? We cannot afford switching off and Let another Task another application to be running. So then we want that particular third of execution to be always to always have a Real hardware to work on so we may immediately start it or we may not even stop it And so in other very interesting topic, we may have a very specific task like convolution neural network or DSP of some kinds, which if implemented on a normal general purpose CPU It will ruin all the performance because it will require so much compute time that you won't be able to do anything else while doing even not that many of DSP or CNN So what then we may do we may use just more CPUs and so then these CPU cores were different CPUs itself with that we have a scaling of megahertz. So we used to have one CPU and now we have two so we used to have Megahertz budget like one thousand two megahertz and now we have two or three or four whatever So we may obviously do more or we may keep one core for execution of for something and so all the rest for anything else That's we need And that's why we gain real not viewed about real parallel execution, which also helps Or we may want to use a special accelerator course which will do something very efficiently like that CNN or DSP or something So what that's what we are getting and so here are a couple of real-life examples. So for example LTE modems They are interesting because computational Amount of commutations we need to do to implement LTE stack is tremendous and it is not only a controls stack We have a lot of DSP calculations. So typical designs They consist of a couple of DSPs or even ASIPs and so also we have a general purpose CPU as well Because we need to do all these calculations and why we need multi-core because we may even have a telephone call like a voice call And we want to process that as well and not being interrupted because we are transferring data one other Good example is audio video DSP because they want to have your cell phone playing music but not consuming all your battery in an hour or As I mentioned already AI or a video recognition Video processors you want to have a separate core which may have like a couple of thousands max So which will do multiplication and accumulation in one cycle Compared to you to what you have like one or two or max on your normal CPU And so that might be very efficient as well And another thing you may have like user interface which consumes a lot of compute resources and still you want to be To be smooth and do something else as well And so that's a typical design which we used to have for lately So we have probably we used to have only one core, but then we went with multiple cores And so still that looks quite simple But so that example that's just your cell phone or something and then you want so to play music on the go and Again, keep your batteries safe and not so drained in an hour So you add to DSP core which does only one thing it decodes something and feeds your deck for example And so that thing communicates with your CPU through a special mailbox for example It's not obligatory so but so let's assume that so to display complexity which we may face And then you want so something else you want your phone to consume again No power running standby mode, but so then you want it to react on something when you for example When you walk and it will count your steps or for example, if you talk to that hello, my device It also wakes up so we have a separate very downscale TPU core Which only talks with sensors and send interrupt to the main core whenever it is whenever it thinks it's the right time and so then you have Desire also to recognize object with your camera on your smartphone And so that's how you end up with a vision processor Which again had have a couple of thousand multiplication units and may do that recognition in a snap without actually consuming a lot of power and so what so we may see here actually the first part is A imp cluster which an imp stands for a symmetric multiprocessor cluster Which means we have two completely different CPUs here And so we have to deal somehow with that and we have something more generic, which is smp cluster Which means we have which is which stands for Symmetric multiprocessing which means we have exactly the same CPUs here And you may see you that's an entire picture is a quite a good example of modern heterogeneous So see and most of the so sees these they they look like that So you see they're quite complex because you use different processors You use different means of communications between them and now let's take a deeper look at so those different types of Multiprocessing implementation the first is a imp and the first because that's the simplest in some sense because you may take Completely different CPUs which will differ even in instruction set architecture They may have access to different peripherals different memories and all that and silly have it into Same one design into same into same so see and so that will work They may use different communication channels or they may not have any communication channels as well You have a lot of flexibility here, but for that you have to pay It's hard to implement something which works for any design and so it's hard to add yet another core because You will need so to think about so software partitioning before you actually deploy that on your so see on your device and It's hard to update it later. You need to update either the entire firmware or if you have fbj as one of the Members here you have even harder time So it's not scalable and you need to think and advance a lot But that's simple another thing you have smp which stands for symmetric multiprocessing that is easier and harder at the same time it's easier because You may for example run the same software Which you need to either recompile or even use it in non recompilable form because it may accommodate from one to say Four cores and it will scale automatically on the on those execution units that you have with help of its built-in scheduler for example But what is more complex because it really it has quite a strong requirements even you want to run the same Binary the same software on all the cores you need to have obviously the same memory You wish with it which they share and see if you have caches you need to even to have That those caches coherence which itself adds even hardware problems But what else here you need to think about scheduling in a runtime that's good and that's bad That's good because you don't need to think about that in advance before you actually Deploy that but then you need to implement a scheduler in such a good way So that it may actually allow you to use your performance of your hardware in the best way and not spending Wasting time on doing something useless So yeah, and you need to think about load balancing ability to probably pin your tasks to some core So there are quite a lot of things you need to think about So why we are talking about that's in conjunction with zephyr artos Operating system allows us to simplify development quite a lot because it allows us to use already implemented abstractions And especially talking about multicore designs if you do if you want to do it from scratch and entirely yourself You need to think about scheduling Interfaces for communications and so drivers and all that but when you use already Existing operating system, which at least provides you drivers and some subsystems. This is completely Different situation that's much easier and seen in the best case when you are When your board is already supported what you need to do. Yeah, just you just need to basically Create a simple application which will print hello world. And so it will be printed on your console So all that's a benefit and that's why we are implementing a special support of Either amp or smp in zephyr as well So what we have for amp is in zephyr from this from the very first commit amp was already there And so there was a platform which is now discontinued which is called Arduino or genuino 101 which was produced by intel and so there we had two different cores intel x86 and arc EMP or and they were working together. They were on the same so see and so They used only shared memory and some control systems control signals for communication with each other Well, in fact, only x86 core was able to tell something to Signal something to our core, but no the other way around but they shared memory. So they had a channel for data exchange But now we have more of them. We have an xp Board we have st and so some other sense. I think in future we'll see more And here you may see how that's Actually communication between core used to work on x86 core on power on we just Put some value in a control register which Then generated the signal to actually start arc core, which then signal to k if it was able to start or not So it was that simple and we didn't need to implement some other funky stuff still It was true multicore system Also in zephyr, we have something called open amp that's a de facto standard for a amp system So it allows a lot of flexibility. It uses verge.io for as a transport interface So it could be used for completely different situations for different designs and I recommend if you have any interest about that to take a look at that Presentation which was done on linaro connect Last year I think So you have a link here download my slides and so you'll be able to get much more information about that But in zephyr, we have open amp Also, we have Sort of a sub version of open amp which only use rpm messages So you cannot with that control execution or a life cycle of your software But so you may basically exchange data between cores It is very tiny It is so small and nice and very suitable for really deeply embedded things And again, if you want so to get more details, you have another link for another presentation Which covers that in much more details and so now Talking about smp in zephyr, uh, it's started to appear much later and so probably you'll understand why So, uh, it's first was implemented in february 2018th for esp boards and so That was interesting because that boards That so c has actually two cores But so the only way of communication between two cores is shared memory. They don't even cross core interrupts, which I will Touch a little bit later and so then One year later exactly exactly, uh, there was so support for uh, smp for x86 In qmu and so one of the reasons for that's actually a 64 bit version x86 to be supported was to leverage smp in Simulation because before that you had to use that particular boards Which you may not have on your desk and now with qmu you may actually play with smp on any computer So that that's quite convenient And then finally a couple of months ago. We introduced smp support for architecture and That's interesting because that's the real first real hardware, which is Fully supported for smp because we have not only shared memory, but we have cross core interrupts and That really helps to implement smp in a very efficient way And we support as well simulation platform and real board as well Now speaking about smp in a little bit more details Uh So still there are a couple of things we might improve because so these are still early days Uh, but anyways, uh, you know at these points we use Again shared memory we use cross core interrupts to inform another core that's uh, that core needs to drop all that task Which being used which being executed and switched to something More important for example, uh, we use so cluster wise. So close. So every core might, uh, get some Feeling of if it's the time to do something else for example to run a scheduler again and so We use Atomic instructions because otherwise it's hard to implement synchronization primitives here as well Uh, another interesting feature which was introduced not a long ago is ability to pin your task for a particular cpu core as I mentioned Sometimes we want to do that and so the reason we want to do that because actually Migration of a task from one cpu core to another might be quite costly because It might not be seen to the software developer, but internally we have a lot of our cache states Like obviously we have instruction caches. We have data caches. We have multiple level of caches, but it's not tall We have branch predictor caches. We have Uh, if we use mmu, which we don't use in zephyr so far We have mmu and for mmu we have tlb cache and so all of that When we go from one core to another we lose all that's Cache information and that means we need to get it first Before we can go full steam and that's important integration, especially thinking about zephyr, which is Therefore very deeply embedded things and every cycle is very important for us. We cannot so spend 1000 cycles just for task switching But anyways, there is a way to pin a task even though only With one type of scheduler, which is called dump scheduler, which just a normal queue of Threats and so why don't we have it for other type of schedulers because For others you may have for example prior higher priority and task of higher priority in our task by definition won't be Scheduled to wait it will execute until it is done So if we have some task which has higher priority and it is always executed It will occupy that core infinitely. So it's not a problem So what are we going to do else? Obviously, we need to add more platform because so far we have as I mentioned extents and we have x86 Which makes not much sense in a deeply embedded world and arc. Obviously, we need to add arm there risk 5 And whatever meeps probably if it is still a life of any interest Then we want to add more benchmarks and Tests so you may get a feeling how your simply implementation really works and there are quite some quirks We have a very basic test so far and I used it personally for development But again, we need more and so we'll get to that a little bit later as well Well at some point we may want to add more cores to the cluster And so there is no real technical limitation of supporting four cores so far But just because we never used any more and That's why we were happy and it's easier to add more and so obviously we want to think about so more complicated And more you know smart scheduler mechanism, which will take into account exactly those Things we need so to care about like scheduling penalty and peculiarities of this particular cpu or this particular design Now speaking about things that we had to do in In zephyr to support smp We had to do quite a lot of things and so still what's interesting Most of these things they were architecture independent, which means whenever we get that done All the architectures already may benefit from that. They may just be used as a force and only implement one tiny thing which is Functionality which actually threat switches threat That's pretty much the one thing that is required from the architecture So what we had to do we had to add any civilization of Slave cores because previously when we had only one core and one execution one execution unit Essentially, we had to initialize that but now we need to initialize those cores Which might even start halted or they might start running and we need to hold them initialize And to let them run once again executing already useful stuff Also, we need we had to rework All locking primitives because when you have only one execution you need the only Problem you may face is interrupt because that's how you may get to execution of the same codes Which you used to execute before interrupt But in case of multiple cores you may get to execution of the same core of the same code Just by another core and now we need to think about spin locks So we may have a critical section which is not entered by anybody else While one executor is already using that and that's that obviously adds complexity and We pay for that because whenever two cores want to access the same Critical code path Some of them will wait just wasting time which is not good, but we have to do that Also, we had to improve scheduler In such a way so we know that we have a couple of execution units again before we had just one execution unit We have a long list of threads for example, and we just executed one by one now We have multiple execution units and we need to think about how to schedule those Multiple tasks on different CPUs simultaneously or like one by one So while there were quite a few complexities and in the end we had to implement a little bit different scheduling not scheduling but task switching mechanism because before we had a couple of logs there in the code and Given that code is being executed being implemented in low-level assembly now We didn't want to have any logs implemented in assembly. So that's why we Moved most of the code to generic parts and only left a very minimal amount of Implementation which is architecture specific and obviously is reading an assembly So quite a lot of things were done and so it worked quite well now Now speaking about so harder peculiarities, we need to think about when we are talking about a true smp system And so it it has to do not only with zephyr, but any other operating system or no operating system as well So here you see a block diagram of again quite more than soc which consists of two cores and some other things So what is important when we are talking about smp again? We need to have exactly the same instruction set architecture so that we may use exactly the same binary On all execute the same binary by all execution units And we need to have shared memory and with shared memory. It's not that easy I mentioned already that if you have cash today have to be coherent But so there is another thing most of or at least a lot of embedded systems What they have they have Very fast on board on cheap memory, which is nice because instead of a couple of hundred cycles latency You have like one or two cycles, which is nice But as it turned out since we came from single core designs a lot of those memories Might be so-called private which means they are accept access only from one core And in our case it doesn't work because given we use the same variable Which is supposed to be mapped to address x we can access it from one core and write something But in other core won't read whatever previous core the first core Rolled there. So then we need to use only memory Which is shared between all the cpus and visible exactly in the same way So it might be a situation when you may access that private memory from another core through some debug interface For example, but it won't work. You need to access exactly the same variable at exactly the same address and read the same value Which was written before by now by another core. So you have to be careful with that Also, it's important to have ability to To to you to implement interrupt between course. So that's one core may signal another because otherwise what happens if we have We if we don't have interrupts between course One course start to execute a task and to execute that Until we decide it needs to stop execution And only then it starts scheduler and may pick up another thread another execution another application But what if we We know so far that we need to drop the execution of that thing because we have something of higher priority and Since we don't have any way to To inform that core from outside We'll just need to wait until it gets interrupt from the timer For example run scheduler and then understand. Okay, I need to do something else But if we have that ability to inform it like to force Do it something or at least trigger execution of the scheduler. It helps to lower latencies Significantly. So that's a really hard requirement And so cluster clock as I mentioned to us is also important because we It's much easier to track time and to know whenever I need to do something And so that's how it really works now speaking about Challenges we may face develop and software for smp system We need to think about scheduling because we do it in runtime and so if we don't don't do it right then we may lose our performance for nothing And we need to think about migration costs for between cpu's and so we need to do it for benchmarking otherwise, so it's hard to To understand what's really going on and we have to take care about shared resources because we cannot use The same peripheral simultaneously by two cores and so then we need to implement all those locking and That's how we may lose some performance as well And so now I Wanted to show that how easy it is So if your platform and your board is supported things after configuration utility We just say okay. I want to use smp. I have a couple of cores and you reboot and get it executed So that that's that it is that simple and so speaking about tests, which we are not so having of enough quantity To actually measure how we may use what kind of scaling we may get with multiple cores I had to implement my own application which is yet to be accepted even though there are no more comments And probably it will be pulled in like any day now. So what the application does it Creates multiple threads and in which of the threads. It's just come computes p in certain With a certain amount of four symbols with a certain precision and so so when I Compiled it and executed and used a two different precision. So one of us 120 digits and another was twice more. So you may see here How performance actually scales and that's really nice to see that when you have Task which consumes quite a lot of time. I mean it is not interrupted quite rapidly You may actually get almost three and a half times Performance bump, which is good. It means you have four cores. You get almost four times More Stuff to be done. But when you start decreasing the amount of work you do in one in one task You may see how Significantly your performance may drop. So even you have four cores. You barely get to two and a four X but that's not all so if I get back to all stuff we run on linux And so that's one of the tests of embc benchmark embc multi bench In that benchmark you may see that even execution on four cores Doesn't give us even Two times of improvement. So in that basically means dependent on you on your use case You may either get quite a nice improvement of performance or you may get pretty much nothing. So it's important to really make your Good profiling not even estimation, but preferably profiling and figure out what is your workload and how you may improve on that So getting to the end of that quite a short talk So what I wanted to highlight here So zephyr provides you with enough capabilities to leverage multiple designs of different types be it Simple and ordinary smp or it is heterogeneous system because together with smp You may have as I showed on my blog diagram before you may have different cpu So you have really smp plus amp as well it is also possible And so that's what we typically have and so that's always good to have in sync You are Harder team and software team so that you have harder which is already Probably supported in your software and from software standpoint you have all the required hardware interfaces and mechanisms that you'd like to actually use in your software and so then I Invite you to participate in zephyr development. So that's a quite nice community with all the development on github You are welcome with your bug reports pull requests and So I'll be happy to see more people contributing All thanks. So that's pretty much it from my side. I'll be happy to answer questions if you have any we have about five minutes for that Sure, uh, are we going to provide a microphone or something? Do I need to turn it on the cake? But it won't be captured on the record Okay So, uh, I noticed in your code example for calculating pie that you were using cooperative threats Um, doesn't using cooperative threats and smp and running them in multiple course break the cooperative Excuse me. Could I please repeat this again? Yeah, so in your in your code example You were using cooperative threats unless I'm mistaken because you're using the macro to create a Threads of cooperative priority And cooperative threats by definition they execute sequentially if you execute them in in multiple course that means they're executing at the same time so shouldn't In parallel. Yeah, but that's the point So the the point of a cooperative threat the theory is that you you know that you're not going to be preempted by another Cooperative threat at the very least or by only by an isr really. Yes by doing that and you're breaking the cooperative threat contract Well here intentionally where I did I just made priority of those threats first Priority is the same for all those extra threads and it is even higher than your main thread So that's all the computational power that you have will be used by your threads and given they have the same priority They will be scheduled to as many CPUs as you as you have and then whenever one task ends Another one gets scheduled to these CPU and that's why I used here 16 threads and given I run it on tour for core configuration. It means we have an enough of reruns of the pretty much the same threat on different CPUs Yeah, I do understand that but I wonder if Zephyr should rethink whether a cooperative threat Or two cooperative threat should be Allowed to run concurrently on two cores because if you did that for certain subsystems that we have now that rely on The fact that cooperative threads cannot be preempted by a or cannot run Concurrently with another cooperative threat that's going to break. So some of the subsystems. So You know what I mean? Well, probably we'd better discuss it offline because I don't quite understand and I like to Figure out what I just wanted to raise it because we saw that and then immediately thought of some subsystems that rely on that fact If neither does you are going to compile that for an s&p system and those cooperative threads were actually scheduled to run a multiple CPUs That would break today. Yeah, that's okay anybody else Yes, I have one question I seen in slides that you are introducing the global s&p lock and about 12 years ago There was huge work in our big operating system like linux bsd and so on to basically get rid of that concept because It slows down whole kernel This is perceived as temporal solution until per subsystems locks will appear or Because of simplicity of the Zephyr we are going to have gandlock I think we'll go in the same way as linux development goes. We are not so planning that far in advance So as long as it works, so that's good. I understand there are quite a few limitations of that But see if there is any better Solution and somebody is willing to fix that because it really hits him on performance side I'm pretty sure that will be done. But so so far Again, what I mentioned we are quite in early days here And so I don't think there are any real Products which use that right so whenever we start seeing people implementing That in real products essentially will get that fixed I think that on the very beginning The the gandlock is something which is perceived as easy to use and solving the problem. The question is Could we basically avoid the mistake made by the others well, probably so I don't have any ready enter like I don't Probably anas may correct me, but we don't have anything in the issues filed on that Like we want to get rid of that Okay, I will file it back. Sure. That's good Just a question about open up last year, there was a big step in open home release That should improve open up this Please talk a little bit louder. I barely make So last year there was a an open home release that should fix a part of the consumption I would like to to know if you You compare Rpmc elite on open up based on the old release or the I would say the release which now integrating in the Oh, yeah, sorry. I I cannot sexually understand Your creation may make sense very bad area between our power French and so In october 2018 Open ont have been released With what? NIMP, sorry, NIMP has been released with some improvements in terms of footprint in terms of api decoupling of remote property usage And I would like to know if your status you show here was based on this new release Or was based on the the previous release Well, personally, I Haven't been dealing with open amp quite a lot. I think I see marine there. So probably she knows a little bit better What is the status on that? I just want to say that that And nor did we've created the benchmark to compare open amp and rp message light and we've actually made it public on a branch so The if that's sort of where you're going We and yes, zephyr integrates the latest version of open amp minus some commits in the head So, uh, so I don't know where those numbers came from. But if you're talking about benchmarking open amp in the context of zephyr Yes, we do have the latest Version and yes, we've run benchmarks to compare it to other amp systems And if you're interested, there's a branch there to actually run it on an um on the expresso a pc 50 I can't remember the number but that one Which was mentioned in the slides. So Okay, thank you Do you have any more time or we need to conclude on that? Okay, so thanks a lot. So I'll be happy to answer any other questions


So there I was, I was trying to take down the New York Stock Exchange using a polymorphic multi-headed hydra, and I had just gotten in and I was about to take down the entire financial industry. When it happened, BAM, Windows Automatic Update and a reboot. That was when I decided enough is enough. When you're trying to bring down trillion-dollar corporations or in some cases entire nations, you demand stability in your operating system. Linux gave me the power to do whatever I want. In a minute, I'm playing SuperTux Card Online with a friend in North Korea. The next minute, I'm back during my way into the IRS database. It's all about the four freedoms. Linux is compatible with pretty much any computer hardware. Heck, it doesn't even have to be computer hardware. There was a team of hackers in the Netherlands a few years back. They installed Linux on a Shetland pony, and later they installed Linux on a potato. A potato. It was such an amazing feat that a Norwegian hacking group later installed Linux on a saltine cracker. Open source, opened my eyes. I can't believe I wasted all of those years on proprietary platforms. I have more friends now, and the women. Linux is a real chick magnet.  I view operating systems kind of like dairy products. I see Windows as skim, Mac as 2%, and Linux as whole milk. There's this misconception out there that Linux is hard to install and use. It's actually not. It's actually pretty easy. Actually, it's real easy. All you have to do. You have to go and find a distribution, go pick one of the hundreds of Linux distributions out there, and then download an ISO of that distribution, burn it to a USB stick, and then go ahead and partition your drives, configure fstab, go ahead and create a new user. Make sure you add that user to the sudoers file. Of course, that's if you're using sudo. You may prefer to use do as, and then go ahead and compile your Linux kernel. For me, for my super hacking, I prefer to use the Zen kernel. Many people prefer the real time kernel or the Ligerix kernel. For those of you that prefer the generic kernel, that's fine too. Then you're going to need to install all of your programs. Most of them are going to be available using app, or DNF, or Pacman, whatever native package manager for the distribution you chose. Of course, you can always install other package formats, such as snap packages, flat packs, app images, and of course, always you can build it from source using configure make sudo make install. Create a hostname for your computer. Be sure to set the language and the locale, oh, and enable your system D startup services. That's very important. Be sure to regularly update your system, clean out the cache, and delete the old log files. I'd probably just write a script to do that. I'd probably write a bash script, or maybe Python, and I'd automate that script by setting up a crime job. It's so easy, I don't understand why everyone doesn't use Linux. But I'm glad they don't, otherwise the world would be a much more dangerous place with all those super hackers. I'm Derek, and I'm a super hacker.


Perhaps Matt Carpenter will be an X-Factor as the series unfolds. He appeared off the bench a couple of times in the ALDS, and now he's in the starting lineup tonight. Meredith caught up with him a little while ago. Matt, you're in the starting lineup, D.H.'ing today. What's the biggest key when you're going against a guy like Justin Verlander?  Obviously, been doing it for a long time. So I know, and we all know, he's an aggressive guy. He's going to come after us.   Just a couple of at-bats in the DS. Overall, how do you feel at the plate? I feel good. You know, I mean, obviously the results haven't been there in those two at-bats. But as far as, like, the way I feel physically, I feel good, excited about getting a chance to play today and getting some more at-bats underneath me. And hopefully I can do some things to help us win again. What's the mentality like in that clubhouse right now? Game one, ALCS, very, very soon to start. We're really excited. I mean, we worked hard to get here. We had a really hard-fought battle in the DS. And, you know, we're confident in the group we have.  What do you like about Tyione on the mound for game one? He's had a great year. He's fished really well for us all season. I think he led our team and wins. And just really, you know, gave us a chance to win every time he stepped on the mound. And we expect him to do the same thing tonight. I mean, this is where he's from. You know, hometown, he'll have some family here. I know he's going to go out there and give us a chance to win. That's the luck tonight. All right, thank you.


Thank you for the introduction. So my name is Shu, and this is a joint work with Rio Nishimaki, Shota Yamada, Takashi Yamaka from NTT and ICE. Thanks, everybody, for sticking around until the last session. So as the title suggests, this is going to be a talk about compact NIZKs from various assumptions. So our results can be broken up in four pieces. They're all based on NIZKs, and it's about getting compact notions of NIZKs. So the first three is going to be about short proofs. And the last one is going to be about efficient provers. And for this talk, I'll use probably 85 through 90% of my time to talk about the first two results regarding short proofs. And the last 15% of the time, I'll use it to explain what an efficient prover NIZK is. So as a background on this, I'm sure that everybody saw this at some point during this crypto conferences.  So here, a prover wants to prove to the verifier that she knows a witness corresponding to the statement X in this language. So completeness tells you that, well, this proof pie should verify correctly. And for soundness, what we have is for a cheating prover. So if she has a statement, which is not in the language, then it should not verify. And for zero knowledge, we just say that the proof pie does not leak any information on this witness, other than the fact that this statement is really in this language or not. So when you have these three properties, then you get an NIZK. So we'll be considering various types of NIZKs. And this is, I think, the one that's the most standard one, which is called the CRS NIZK. So the trusted setup here will construct a public common reference string. And in this model, any prover or any verifier can participate using this CRS. And we can consider a relaxation of this, where the trusted setup is now going to provide a private verification key for this particular verifier. And that's why it's got a designated verifier zero knowledge. So in this world, anybody can be a prover if she has a witness. But the person who can verify this proof pie is only going to be this designated verifier in hold of this KV, the verification key. And obviously, you can consider the opposite flavor of this, which is now the private proving key setting, which is the designated prover NIZK. And finally, you can also consider this relaxation where both of them, now the prover and the verifier both has private information. And this is called the pre-processing NIZK. So when you think about it, let's say you're in the pre-processing NIZK and you find a way to get rid of this KP and you were able to make this public, then you could upgrade that into a DV NIZK. And from a DV NIZK, a designated verifier NIZK, if you get rid of this verifier secret information, then you get a CRS NIZK. So you could build up your scheme if you can get rid of these components. OK, so that's the very basic background. And I'll be talking about NIZK with short proofs now. And this is part one of this part one. And I'll be talking about CRS NIZKs with short proofs. So the motivation for this part is that so far, so CRS NIZK that we know all have like proof size that are, so the proof size that has independent of the circuit size C-computer-NP relation requires unlike strong tools. So if you want this proof size to be very small, then we require IO, FHG, knowledge assumptions or compact homomorphic trapdoor functions where these require LWU assumptions. So the thing is that without using these strong tools, what we know is that the famous, let's say, the growth of CRS NIZK, it has proof size that is lambda times the circuit size. And the shortest one we know that doesn't use these kind of assumption is the one based on growth 10 at an Asia Crip. And this requires a polylog lambda time circuit size, proof size. So when you look at this, everything requires a multiplicative overhead in the circuit size. So the question we wanted to ask is that can we bring this down to an additive overhead? So can we make it into a circuit size C plus polylambda? And that's what we did in this first part of this work. So we construct the first CRS NIZK based on a falsifiable pairing group assumption with proof size, which is C plus polylambda. So the starting point of this work is that we consider this DP NIZK that we proposed at EuroCrip this year. So it's going to be based on this KNYY19 construction of DP NIZK with short proof size based on the CDHR assumption. And this is just a non-static Diffie-Hellman type assumption, which is secure in the generic group model. So this is a falsifiable assumption. And our approach will be, as I explained, it's going to be from trying to convert this DP NIZK into a CRS NIZK by trying to get rid of this designated prover like private key here. So this is a very, very general high-level idea that what we want to do here. So I want to make a quick review on our work at EuroCrip. So our approach was using Kimu's conversion from Crypto18, which allows you to convert any compact moment signature scheme into a designated prover NIZK. So the main contribution of this work was that they created a new compact HS from the CDHR assumption. So following this path, they were able to get DP NIZK from this assumption, the CDHR assumption. And in retrospect, what we kind of observed from this construction was that there seemed to be a lot of nice properties that weren't used exactly in this DP NIZK conversion. So a natural thought was that can we use these nice properties and add it to this homomorphic signature and maybe construct a CRS NIZK? And I want to tell you that this path is a little bit kind of difficult. So even if you have a homomorphic signature with extra great properties, it doesn't seem to be applicable to the CRS NIZK setting. And for that, I want to explain why this Kimu conversion is only very limited to the designated prover setting. So I won't get into detail, but what the Kimu conversion does is that you have, as a trusted setup, it's going to sample a secret key from the secret key encryption key space. And it's going to run this homomorphic signature setup scheme. So it's going to sample a verification key and a signing key. And it's going to sign on this secret key SKE and get this signature. So the CRS is now going to be this verification key and the prover key is going to be this SKE key and this signature sigma. And it's really not that important. But after this, Kimu technique allows you to get a DP NIZK using this as the CRS and this as the proving key. So now I want to explain why this is quite difficult to make it into a CRS setting. So to make this in the CRS setting, what we have to do is that the prover somehow has to sample this on her home. But obviously when you look at this, that's going to be pretty hard because if she samples this on her home, that means that she has to run this morphic setup homomorphic sign on her home too. So it seems that we can't use the security notion for this HS scheme anymore. So we don't get soundness. And even if there was a way to kind of get around this issue, it will still be difficult.  And the actual verification key that we constructed in this KNYY19 work has size that is lambda time circuit size. So we have to plug this into the proof now. So we kind of lose compactness at the same time. So it seems kind of difficult to get a CRS nizk from this approach. So what we asked in this work is that is there like an alternative notion to homomorphic signatures to overcome this issue? And that's what we basically did. So in our work, we formalized the notion of homomorphic equivocal commitment, which is kind of similar to homomorphic signature, but it requires to go around this problem that I just mentioned. So the main syntax is very easy. You can commit to a key or a bit string with this random sr is the opening. And what you can do is that you have this homomorphic property. So you can homomorphically convert this commitment into this evaluated message C of k. So you have this k here and plugging this circuit C inside, you get a homomorphic evaluated commitment C. Now this is going to be a commitment to the Ck. And also you can create a homomorphic opening for this commitment C, taking this original random sr and this circuit C here. And the informal guarantees we want from this scheme is that for soundness, when we use it for the nizk, we want this binding and hiding property, which is a very standard thing to require for a commitment scheme. So we want this to be binding and these guys to be binding too, the evaluated commitment to. And for the compactness notion, what we require is that we want the verification complexity of this commitment C to be independent of the circuit size C. So informally what that means is that this commitment C and this opening randomness C, the evaluated version of these, are going to be much, much smaller than the circuit size C. And in particular in our construction, this will be only constant numbers of group elements. And using this HEC, it's really easy to get CRS nizk via this Kimu conversion now. It's a little bit different, but the main idea is the same. So the red part is going to be the part that's different from the original one. So for the CRS, it's just going to be this evaluation key. And the prover now is going to sample this SKE secret key on her own and she's going to commit to it. Then she's going to encrypt this. So this part's the same as the original Kimu conversion. So she's just going to encrypt this witness with her secret key and she's going to construct a circuit which on input this secret key, it was just going to compute this guy. So it's going to first decrypt this ciphertext and get this witness back and check this relation. So if this is equals to 1, then this circuit is going to equal to 1, too. So what that means is that if you homomorphically evaluate this commitment on this circuit, it's going to be a commitment on 1 now. So finally what you do is that you just use a non-compact CRS NISC to prove that this commitment opens to 1 again. And here we can use a non-compact, so not a short CRS NISC proof, because the compactness allows you to kind of prove this, which is independent of this original circuit size. And you just output this. So this is going to be the main construction. And in a nutshell, what happened is that we obtained an HEC from this CDHR-based HS of our previous work. And at a high level, what this provides you is that using an HEC homomorphic equivocal commitment, you can convert any non-compact CRS NISC into a compact CRS NISC. So you can view it as a generic conversion using this HEC. So I don't have enough time, but I'll go into the next part now, part two. It's about DV NISC. So this has a different motivation now. So recently at EuroCorp, last year, Korto, Hofheinz, and us, and Quach, Rother and Wicks, they all presented the first DV NISC based on the CDH assumption. However, they relied on this FLS NISC, which uses the graph Hamiltonian problem. So the proof size becomes very large when you try to construct a concrete NICK from this. And essentially, it's going to be polynomial in this lambda in this circuit size. So the same question again. Can we make this into a circuit size C plus polylambda? And that's what we did this in work. So we're going to base it on the same CDH assumption, but we're going to be able to get it down to C plus polylambda. And the starting point, again, so at a high level, it's the same thing. So we're going to base it on this preprocessing NISC that we constructed at EuroCorp last year. I mean, this year, I guess. And we want to get rid of this prover key somehow. So what we did last time was that we constructed a context hiding homomorphic MAC. And using this Kimu compiler, we compiled this homomorphic MAC into a preprocessing NISC. So now the natural question is, it's the same thing. So can we bootstrap this preprocessing NISC into a DVNISC by getting rid of this prover's secret information? And you might think that we can just use the homomorphic equivocal commitment here and just do that. But the thing is, we don't have that from the CDH assumption right now. So we have to go through some different approaches now. So this part of this work is trying to bootstrap this ppNISC into a dvNISC just by using CDH. So let me just kind of get into detail what we did in the previous work for ppNISC. So it's really not important, but we have this verification key. This is going to be the homomorphic MAC key, which is going to be a finite field element like this. And for the proving key, it's just going to sample the secret key again. And this is going to be the signature. It's really not important why it looks like this, but it's just the way it is. And after that, using this kv and kp, we just do the Kimu conversion. So now a first attempt at getting rid of this proving key is that we could sample this on our own. We just sample this k on our own and sample the sigma on our own. But you kind of see that if you do this uniquely, define this object r vector here when s is fixed. So this r really can't be programmed in advance. So when the prover samples this, then at that point r is defined. So we have to have a mechanism to send this r to the verifier now. Because the verifier needs this r in the verification key to kind of verify this whole thing. But the problem is that the prover doesn't even know what this r is because she doesn't know s. So r is uniquely defined at this point, but there seems to be no way to transfer this r to the verifier. And to solve this problem, we use interproduct functional encryption schemes. And so we use IPFE to implicitly transmit this vector r without leaking this prover key. So what we do is that in the verification key, we're just going to include this secret key SKS for vector 1s. What the prover is going to do is that she's going to sample this key on her own, the proving key. And she's going to encrypt this case sigma with the IPFE scheme. And then after that, using this KP, she's going to just do the proofs. And for the verifier, what he's going to do is that first he's going to decrypt this ciphertext using this SKS and recover r. And he's going to run this verification algorithm after that. And the main observation here is that since it's an IPFE scheme, when you take the inner product between this case sigma, which is encrypted in ciphertext with this 1s, you get r back. And when you work out the equation, this is the r that we really wanted to transmit to the verifier. So this idea allows you to get around that sending r implicitly. And as I remarked, this one key IPFE is implied by public encryption schemes in general. So this kind of allows you to get a public key encryption scheme with, well, I didn't tell you about this part, but we need another additional layer of non-compact DVNISC to prove well-formed this. But this allows you to tell you that if you have this non-compact DVNISC, and if you plug in a PKE there, you can generically convert it into compact DVNISC. And finally, I don't have enough time, but I'll try to walk you through this last section about efficient provers. So this part is quite different from the previous ones, so it's a completely different motivation again. So there are many papers regarding the efficiencies of verifiers, which are basically like snarks or snarks. And what we kind of consider in this work is that, well, as far as our knowledge goes, there seems to be no paper investigating the efficiency of provers. So all NIZKs has prover running time, which is going to be circuit-sized times polylamda. And when you think about it, the prover can always just send the witness. So it seems a little bit of an overkill to require the prover to have this much computation. And so the question is, can we do better than this? And in this work, we show that we can do better than this. We can make this prover running time, which is sublinear in circuit-sized time polylamda. And this part is very easy. So the main idea is that we're just going to use laconic functional encryption, which is a tool recently proposed by Quach, We, and Wix. So people who don't know what this is, it's a very strong and nice primitive that you can base on the LWU assumption. But what it allows you to do is that when you have a circuit C, you can compress this into a digest C, where this digest C is going to encode this information on the C, but it's going to be strictly smaller than the circuit size. And using this digest C, anybody can encrypt and message M for this digest C and get an encryption. And the thing is that this running time of this encryption algorithm is going to be strictly smaller than the circuit size now. And the only requirement is that this encryption hides the message M. And here, anybody can decrypt this ciphertext with this circuit C. So there is no notion of secret keys now. Anybody can do this. And you will get this C of M back, only C of M back. And with this, it's very easy to get a prover efficient N-I-Z-K. So what we do is that in the end, so we're first going to define C as this NP relation R. And we're just going to compress this circuit C and put it in the digest. And for the prover, what she's going to do is that she's just going to encrypt her statement X and her witness W with this digest C. And LFE tells you that this is going to be strictly smaller than the running time. It's going to be strictly smaller than computing the circuit C. And also, this is going to decrypt to 1. So anybody can decrypt this to see that it's going to equal to 1. But the thing is, we also have to append with well-formedness proof with a prover N-efficientness. So this could be any N-I-Z-K. And this is because this encryption is going to be strictly, the running time is going to be strictly smaller than the circuit size. So we don't have to have a compact or prover efficient N-I-Z-K here. We can just plug it in any, let's say, growth also of ski-sci N-I-Z-K here. And this is it. So the verifier is just going to check this proof. And he's going to decrypt this. And if it equals to 1, then he knows that it was a valid proof. And yet again, so this can be viewed as a generic compiler again. So if you have a prover non-efficient N-I-Z-K, then you could add an LFE there and get a prover efficient N-I-Z-K. OK, so this is our conclusion slide. Thank you for listening. Questions? OK, let's thank the speaker again.


It's time for Blinka what's going on in the news of Circuit Python absolutely nothing happened this week Yeah, tons of happy way too much happens headlines kind of write themselves. So Okay Circuit Python snakes this way to new Raspberry Pi Pika board. So we have a build But I think the bigger story Aside from just circuit Python Being on this board is the fact that out of all the choices out of all the things What is Raspberry Pi going with? Python on hard work that's what shift with not Arduino support. Although that is coming Yeah, Arduino notes are gonna do some support But there is a big shift and this is what you know, this is that way what we wanted to catch And also where where everyone was saying like oh, this is what's gonna happen with the processor speeds the capabilities and Just being able to take your code and move it around If you think about it's kind of neat you can run the same code on a Raspberry Pi Linux computer as you can on a Pico. That's right And you know, you could take our circuit Python stuff point and run it in both places correct and it just works I did even a demo of that. I tried a sensor worked both ways. Of course. It's just a Wi-Fi and Linux But it is cool. It's a new chip from the Pi Foundation They also released a board the chip isn't quite available in raw quantities yet, but you can get these boards We had some in stock. We had a couple thousand. We've been selling them over the last week I think we're out now Sign up to get notified if you want more. So why don't you keep scrolling and we'll see what else happens Yeah, so that's the big news and if this was a another week Well, I'll get to the other new story that I thought was pretty big But the circuit Python beta just came out. So if you're looking for support for those RP 2040 boards specifically like if you want to run a Pico, we got it Also for the ESP 32 s2, there's some new things that you can check out A lot of bug fixes and tweaks, you know, we're going through and fixing stuff But yeah, the RP 2040 is big and then if you're you know, we're adding more boards as well Yeah, we also got a guide. We have a guide getting started with Raspberry Pi Pico and circuit Python and then a few other odds and ends You can Check out some of the feedback that we got people are you know instantly downloading stuff trying it out The Pimeroni Pico keyboard running LEDs with Adafruit.star circuit Python library. Yep Works immediately yeah with MIDI and HID of course micro Python got you know was released. That's the main Programming language for this board just like Python is the main language for the Raspberry Pi There's a book will even show off the book that book just came out and people are starting to use it They're like trying it out. We designed an itsy bitsy Sorry, we designed itsy bitsy a feather a cutie pie and a zero Scott did a deep dive and Blinka is in space. Yeah, I wanted to spend a little bit of time on this So this has been going on for a while and this is actually from the NASA site So there is circuit Python in space now we could say for sure this is happening check out the press release Check out the news from NASA The VRX mission uses a swarm of these little satellites To demonstrate new technologies for radio networking and navigation. They're known as CubeSats and it'll be launched They they launched sorry this past Sunday board a space X Falcon 9 and so now we can say Circuit Python snakes its way to space Circuit Python snakes its way to space X And even saw it go off because it launched from my coming news. That's kind of cool Yeah, and you can check out the Pi Cube board You can check out the space X right here program kind of funny and you can check out the satellite information from NASA You can check out all the other stuff Yeah, I think if you look here, this is Anne's photo and saw this launch on Sunday morning So cool, and that's kind of neat Inside there is circuit Python So you can check out the other projects This is neat. This was a neat fiber optic Paraboloid made with teensy and circuit Python Here's the state vaccinations Other samd boards. They all run circuit Python the build your own mechanical keyboard that includes Love these custom keyboards. Yeah, that includes a itsy-vitsy This is a Kickstarter that already the person was on our Kickstarter, and they already got funded. Yay Here's a wireless keyboard that runs circuit Python. Here's joey's project with the yeah, so that last week Yeah, there's a lot of stuff this week. There is a lot going on and you can kind of see Here's another neat example definitive guide attaching sensors Raspberry Pi Uses compatibility layer called Blinka for circuit Python. You did your Blinka talk with The Linux linux Australia. Oh my god. Yeah. No wonder this week felt like a year. This has been a long week And you can check out the rest of the libraries on learn guides. We are now up to 200 And 92 we're almost up to 300 libraries All that and more check out what our team is doing upcoming events And that is our Python on hardware news for the week. Whoo Blinka keeps bringing it. Yeah Okay


The impact of COVID-19 has surely brought awareness around the importance of one's quality of life. Today we discuss immigration towards smaller towns and how it has proven to be a better choice lifestyle wise. This is Hybrid Property Podcast, I'm Dumie, let's unpack. Today we are joined by a doctor. He holds a B.S.C. from the Statenbosch University as well as a M.B.C. H.B. from the University of Cape Town with an honest degree in sports medicine. He's the chief executive of Pam Golding Properties and he's internationally acclaimed for promoting South Africa as an investment destination. Ladies and gentlemen, here's a conversation I had with Andrew Golding and this is how it went. It's always a pleasure and having a man of your stature on our podcast is truly a feat for us and we are talking about immigration, something that's so popular in the property market now. It's something a lot of people are doing so let's jump into it and say if somebody doesn't know what immigration is, let's go into detail and tell them what it's about. So it really is a derivation of immigration except that it's not to leave the country, it's just to relocate from one part of the country to another. It's actually been around for a long time. I think the term was first coined about 20 years ago when there was the first wave of potential purchases leaving the northern parts of the country and moving down to the south and the trend has really continued but has obviously accelerated with COVID and has been a central feature of a number of the characteristics of the property market that have changed as a result of COVID and the so-called new normal. Yeah and talking about the new normal and COVID, what kind of effect has immigration had on it? Has it been a positive one? Are we seeing some disadvantages because of COVID or things that are happening in the market now that could be attributed to immigration that could either be positive or negative? So I think with the lockdown and the post lockdown environment there were a number of systemic changes that potentially happened in the market, so in other words permanent changes and one of those was definitely a move from the inland provinces to the coastal areas and that was pretty much the entire coast, so the west coast of the country and the east coast and it coincided with I think all of the characteristics of the new normal around working from home, remote working, people making lifestyle choices as opposed to having to live and work close to where their offices were and so a number of those changes have taken place and they've had significant effects on all of the coastal areas of the country and certainly positive effects in terms of those markets. The inland provinces have perhaps taken a bit of a disadvantage in that there has been a significant move from the inland provinces to the coast but certainly the coastal towns and cities have definitely benefited. Sure and you know you spoke about people moving from the north mostly to the south and you know moving into the coastal areas, can you just take us through some of the hot spots that you guys have been seeing in the industry in terms of where people are moving to and maybe some of the reasons why you think this is the case? Yeah it's very difficult to sort of pick out any specific hot spots because the entire coast of the country has benefited from Quasarino Natale all the way down through the eastern Cape Garden Route and obviously the western Cape. The western Cape was certainly the sort of prime spot of the original immigration but really the whole coastal part of the country has benefited and the reasons have been very varied. So people who've decided that they're able to live in a coastal area and still work from there so that's either remote working or in fact commuting from a coastal area which has an airport close to it has been another reason. People have moved for lifestyle reasons that's certainly been a very significant factor. Education has played a big role so families are looking to educate their children at the coast and not to now work from there and then access to medical facilities has also been an important reason why people have chosen either a city or a town which happens to have adequate medical facilities. So the reasons have been varied and obviously against the backdrop of affordability being a key driver of what people feel they could afford has also been a factor in terms of determining where they were looking to move to. Sure and in your expert opinion I mean this trend is gaining steam and a lot of people are now doing it and they're doing it for various reasons as you mentioned. What in your opinion would you say is likely to happen in the next coming years? Are we likely to see maybe people moving back to the city because you know COVID is now phasing out slowly and I'm saying this you know with a little pinch of salt in terms of things are slowly going back to pre-COVID era. So what do you think is going to happen in the next two three years? What should we expect to see in the industry? Yes I think it's an interesting question and one that I don't think we can give a definitive answer to because while I think many people felt that their move to the coast was going to be permanent and be able to work from there I think there's an increasing sense that people might be having to return to work wherever that was and so we'll have to see I think we're going to probably see a hybrid where some people are going to be able to continue to operate from their so-called zoomed towns which have have certainly benefited significantly. The small holiday towns along the east coast of the country in particular have been enormous beneficiaries of this immigration trend and our sense is that many of those homeowners would like to continue to live and effectively work from those small towns because of the lifestyle benefits of those towns afford them but I think a lot depends on what happens in the so-called hybrid workspace whether employers are going to demand that employees return to work in the northern parts of the country if that's where they came from and so I think the jury's art as to exactly whether that trend is going to reverse certainly in terms of I think what people would like to continue with that certainly like to continue to live along the coast and enjoy those and lifestyle and other benefits. Sure thank you so much for that and if you just joined us we are talking semi-gration so send remember to engage with us on the comment section so that if if there's any stories that you have around semi-gration or even comments about tonight's topic do engage with us remember 500 grand is up for grabs so make sure that you engage with us. You know as an expert in your field Dr. Andrew this these trends that come and go in the industry you know how can one prepare for such and this goes for all categories of players in in the industry in terms of how can rental agents people who are landlords people who are property investors tenants you know every single person who is in the the space how can they prepare for such trends to make sure that if you have an investment it keeps on being lucrative if you're an estate agent you keep on leasing you keep on making sure that you are just selling those houses what what advice do you have for for the property players right now? Yes I think one's just got to keep one's ear to the ground one's got to read the information that's available in terms of the property media and try and get a sense of whether a trend is transient or is going to be there for a while and I think there's been a lot of information that's been distributed around the systemic changes that have taken place not only in our market but I think markets across the world and where where the view is that those trends are certainly medium term and and potentially also long term and that gives a good indication around whether that trend is to be taken seriously or in fact it's likely to be a transient as I said. Sure and before I let you go I would just like to quickly ask you this question if you were to demigrate anywhere in South Africa apart from where you are currently where would you go? Well I think first of all I do my homework so I think it's very important to to make sure that you have as complete an understanding of a market what's happening in that market what the costs associated with moving are what are the the features that one must be aware of that are driving you so if it's education you know do your homework around the education environment if it's lifestyle make sure that you understand that and and really just take your time around the purchasing decision because it's obviously a big one probably the biggest one in most people's lives and one needs to have as as full a set of knowledge as possible before one jumps into a certain direction. Sure no definitely and you know one of the biggest stumbling blocks in property spaces affordability a lot of people sometimes bite off more than they can chew and then they don't really afford so research and making sure that they know what they're getting themselves into is one of the most important things. Any last words about immigration before I let you go? So I think there's a there's an opportunity to do a lot of desktop research before before sort of looking at a particular area and then I think it's just really important to consult as many credible people as possible to get as full a picture as possible of the particular area and that you're looking to potentially invest into and then just recognize that that property is a very hyper local environment and that values can differ from street to street values can differ even within a street and therefore it's really really important to get as much detailed information as you can and have as informed an opinion as possible before taking the plunge. Thank you so much and I think after tonight's episode and tonight's conversation people will definitely have an informed opinion thank you so much for joining us we really appreciate you taking our time in your busy schedule to join us tonight have a great night. Great pleasure thanks for you thank you. A very insightful conversation there we had with Mr Andrew Golding I'm talking same immigration so if you're considering same migrating but aren't really sure let's take a look at Brian's story and maybe this will give you that little inspiration to immigrate. Brian is 36 year old and formerly worked as a financial advisor for one of South Africa's big banks prior to the big move away from Pretoria East he had been somewhat in a dull routine he'd go to work head home play with the kids a little bit before falling asleep. Brian used to go to the office every day before COVID he liked it since it allowed him to get away from the rigors of the home life. Brian's company had to close for for two weeks due to COVID and as a result his regular routine was disrupted I've always been a routine person he says but because of COVID-19 that had to change. Brian despised the couple of weeks the first couple of weeks in lockdown since he had to work remotely he would usually complete his tasks before 2 p.m this helped because he then started spending more time with the kids going to the gym more often and even taking up cooking he was still frustrated however and he felt that there was something missing. While watching the news one day a reporter claimed that individuals were relocating after COVID in order to change their lifestyles. Brian recognised this as a change that he could need he told this he told his wife and luckily she agreed they packed their stuff and headed for Cape Town. Brian now resides in the western Cape and works from home him and his family are more happier now they enjoy their new place because of the beautiful sunset and the sunrise views the house is considerably larger than the one they had which means the kids have their own playroom upstairs where he can finally have a little bit of peace and quiet to do some work the moral of the story tonight really is that you can be like Brian and allow that change to come into your life and if you want to move do so the most important thing about it is to know what you are letting yourself into and that's it for today thank you so much for showing us love on facebook and interacting with us and sharing the post and i'm sure that you had a very good time tonight learning about immigration it is time right now to announce the winner of that 500 grand cash prize and it goes to none other than okay wait i'm reading for that drum roll all right the name is there hope mutt yeah me thank you so much hope for sharing and engaging with us we will see everyone else tomorrow right here seven p.m have a great night


Playton Sports Cards Ripping 2022, Panini Downers Elite Football, Hobby Six Box, Half Case Break, Number 12, Random Teams. Here's another look at those random results. Here we go, let's do it. Select football, 2021, three boxers up after this. Still some room for personals. If anybody wants something, grab it up. If not, Kinsey will be doing personals in the morning. Good either way, I'm down to rip. Romeo Dobbs, Rookie to 99. I actually almost picked him up as a free agent after my fantasy draft. Sounds like he might become Roger's favorite target. It was Aidan Hutchison, Rookie on deck. Oh nice, that's awesome, Patrick. Snoop Connor, Rookie to 99. And Chiefs, that is Rookie, Pen Pals Otto Skymore. Here you go, Casey. Here's Sean Watson, to 96. That's Derek Henry, 399, Cooper Cobb. Yeah, Ryan waited to move his shop to St. Peter's until right after I moved down here, the borough. It was like 25, 30 minutes away, and then he moved like three minutes away. That is Keontae Ingram, Rookie to 399, Micah Parsons. Isaiah Spiller, Rookie to 999. Oh, is it, what part do you live in again? Micah Parsons, 349. Probably told me like five times, but. Chris Alave, Rookie elitist. Oh, you're over on the Illinois side. So it was probably easier to get to when they were in a fluorescent then, right? It's Rookie to 999, Brian Asamoa. That is Montrell Washington, Rookie to 49. This is Broncos, Epic Materials patched to 49. Jerry Judy, you go Denver, any sad? Yeah, I get that. Patrick Mahomes, what's the other shop you go to in the area? Isaiah Spiller, Mark Andrews. This is Texans, Back to the Future auto to 149, Davis Mills. You go Texans, there's the Sean Watson to 75. Spellbound to 99, Justin Herbert. I'm excited to see what Mills is gonna do. I'm actually, my son and I have been talking about maybe going and seeing the Texans and Jags game. There's Jonathan Taylor, 399. Stefan Diggs to 99. And I'm thinking about coming up that way Christmas time. It's Najee Harris. And Steelers, turn of the century. Rookie auto to 75, Kenny Pickett. There you go, Pittsburgh. Ty Chandler, 399. And there's Sam Howell Rookie to 999. Washington, that's how Sam says it, great country. Three card pack there, weird pack out there. Kyler to 75. Yeah. There's Cowboys, patch to 49, DeMarcus Lawrence. Go Dallas. Which one? Raiders. Nice, there's Jamar Chaseliest. Fireworks, David Montgomery to 25.  Dak, that is Chris Aledokan. Aledokan, 999. Yeah, that's really cool. Najee Harris. Yeah, St. Louis was, I mean, even before things really blew up over the last few years, it was kind of an anomaly as far as cities go with card shops. I mean, they had like eight shops at the time. There's Joe Burrow, 349. Like within an hour of each other, at the time, there were still like big cities that didn't have a single shop. Desmond Ritter. Kyler to 399. This is Packers. Rookie, Pen Pals Otto, Romeo Dobbs. Go Green Bay. There's Matt Corral. Alec Pierce, Rookie to 999. My only thing is if I would have to sit up high, I'd rather just stay home and watch it. Like, I don't need anything that's like on the field. About second level is about as high as I want to go. I got tickets one time for Cardinals game. There's Tyreon Davis Price, Rookie to 399. And it was like second to top row. Really? There was one row behind us at the very top of stadium. I didn't enjoy it at all. This is Cowboys, Pen Pals, Rookie Otto, Jalen Tolbert. There you go, Dallas from our chase. Rookie to 999, Matt Corral. So we have select football, three box up after this, and then we'll close out the group race. There's Derek Henry with IMAX football, tiered random teams. I'll be doing some personals after that. Last I checked, we still had some room. It's Tyquan Thornton, Rookie to 99. Oh yeah, it feels like you're gonna fall on to the field, man, it's crazy. Justin Fields. Really? This is Vikings, turn of the century, Rookie Otto to 75, Lewis Sine, Logan Hall, Rookie to 399. I've never been to an NFL game. The only game I've ever been to is a Notre Dame football game. Really? Yeah, I went and watched them post-Ruggers back in 2002. Chris Alabe, Rookie on deck. Yeah, yeah, I wouldn't do that again. Derek Young, Rookie to 999. The last one I went to, I was just like three rows back down the third baseline. Yonte Johnson. And I didn't realize when I bought the tickets, but it was like, you got like the service in that area, you know, like server cone, bring your drinks and stuff.  This is Colts, Jersey, Jonathan Taylor. Ronnie Lott, there's Justin Fields, 399. I actually sat, it wasn't the green seeds, but it was like eight rows behind the green seeds, behind home plate, one time, there's Debo. And that would have been awesome. But there was this really, like it was this drunk person behind us and she had a really high pitched voice. And she was like, she was super annoying. Jamison Williams, Rookie to 82. Yeah, Patrick, I've been to Fenway quite a few times. Yeah, I'd love to go to Fenway. Arrowhead would be awesome. I actually really liked going to Coppin Stadium. That was a good time. Calvin Austin, Rookie to 999. It's Kenneth Walker.  Justin Herbert, 349. Figure if I can keep him for like seven, eight weeks. Oh, you got to see the socks and yanks, that's awesome.  Mariners Royals, yeah, that'd be a cool one to go to. The one I went to was back in probably 0304, probably 04, and like the Royals game, they were playing the White Sox and there's Trevor Lawrence, spellbound 349. Was it, well, I don't think it was Jose Abrego. I think there was maybe one or one or eBay. Hit three homers. This is Eagles, Pen Pals, Rookie Otto, Carson Strong. Go Philly. Crystal Lavey, Rookie to 98.  Chris Godwin, 399. Najee Harris, this'll be fun. Eric Izucanma, Rookie to 999. Nailed it. Did I? There he is. Here's Kenny Pickett, Rookie to 399. That is Vikings, Jersey to 299, Chris Carter. Oh, that's who you guys were referring to, okay. Steve Hop, Tom Brady, elitist as a patriot. Forgot he played for them. Oh, he signs it easy-e. Does Zeke still sign it that way? There's Kenan Allen. What is this one called? I think that's a case here, right? Is that the Frozl Dezl or the Frozl Dodger? There you go, Chargers. Mr. Marr Chase, Jaila Naylor, Rookie to 999. It's Desmond Ritter. Hey, what's up, Andrew? Thank you, I appreciate it. Happy to be back. There's Matt Corral, Rookie, elitist. And Rams, back to the future Otto, to 149, Cam Acres. Lambjack to 92. Yeah, I see those. Let's see the parallel. 349, DJ Moore. Kinsey does a good job of writing down, like what the case hits are and stuff. There's Aiden Hutchinson. Rookie to 24. Low number, nice one. I don't think we've seen any of those, have we? I think that might be it. Breece Hall to 999, Rookie. Razzle Dazzle, yeah. Mod Gardner, there's Isaiah Spiller to 999. D-Hop, yeah. Cool, thank you. Seyquant to 399. And Chiefs again, that is Green Ink, Pen Pals, Rookie Otto, Skymore. There you go, Casey. There's Kill me. Oh yeah. Kill for zero. A lot of people are, yeah. Kidding me? Easy, it's 999. Maji, 399, Darren Waller. This is Dolphins. Jersey, Tula, Tanga Bailoa. Tom Brady Alidist, has a Patriot. Jamal Adams, 75. Jamal Chase, Kwanu. Rookie, 399. Yeah, I'm curious to see if they get in sync. I don't think Tyreek's gonna have a superstar season. Oh, I do. I think Jaylen Waddle's a better receiver than he is. Snoop. 999? Tyreek's gonna help Waddle, pulling all that attention in. Yeah, yeah, I think that it's gonna be Waddle that benefits, I don't think Tyreek's gonna have this. Like he's gonna probably have like eight to 10 touchdowns, but I think he's also gonna have like 65 catches. I think the program had to control it. Stafford, 99. 70 yards. Yeah. So, Matt Corral, Rookie Alidist. I hope he has a great season. But, there's Tua, Dicut the 24. Exactly. Aaron Donald. This is Eagles, turn of the century. Rookie Otto to 49, Nakobi Dean. TJ Hodgkinson to 99. All right, last box. We'll do a hit recap after this. We have select football up next. I will need to step away for just a couple of minutes, take a quick break after this break. And this is Bengals, Impact Impressions. Otto to 149, Trey Hendrickson. Fresh off his seven and a half sack game on Madden this morning for me. Kenneth Walker, Rookie to 24. That should really spike his card values. Oh, for sure. Matthew Stafford, 349. The Algrave Breakthrough filled up for the night. Just two to go after this one. Tibetone. And, those personals after that. Still had some room last I checked. There's Garrett Wilson, Rookie to 999. No, I play it on Pro, or all Pro, depending. There's Josh Allen, but I mess with the sliders. Like I don't, I don't try to make it competitive at all. I like to just destroy the computer, run my stats up, see how many, how many receivers I can, like I totally cheese on Madden. There's Typhon Thornton, Rookie to 99. Trevor Lawrence. The way I look at it, life is enough of a challenge. So when I play video games, I like to, it should be the opposite, it should be a breeze.  There's Dak to 10, Playmakers. Nice card, Dolphins. Or Dolphins, Dolphins is behind the Cowboys. Yeah, you create yourself and make yourself the greatest player of all time, you know? There's Debo Samuel. Yeah, I just, I don't know. I'm just not equipped to handle the rigors of a competitive game. There's Matt Corral, Rookie to 999. I was playing my brother one time and then he was driving down, getting ready to like try to score the winning touchdown. I was like, oh, dang it. I was like, hit R2 really fast. And he did, and he showed his play art. He thought it was like the worst. Like I was just a horrible person for it. Jamar Chase. Me and my brothers have been playing Madden for ever.  Yeah. I think it's brutal. Contrary Washington, Rookie to 999. I had my brother and I had like, our best friends were also brothers. Derek Henry, Rookie to 399. Those two would get into fistfights over Tecmo Bowl. Yeah. Actually Tecmo Superbowl, they get into fights over. Silly. Rams, that is Jersey. Camakers. Yeah, that stands for sideways talking. Jameson Williams, Justin Ross, Rookie to 999. But yeah, here lately, my kid's been, man, he just, you can't throw Hail Marys all the time. And he's like, wonder why I'm, I picked, he played, he had Brady. I think I picked off Brady 11 times in a game. That's Falcons, Pen Pals, Rookie Otto, Drake London. Mar Chase, that is Keontae Ingram, Rookie to 999 or to 399. We had Rams Jersey, Camakers, Dolphins Jersey, Tua, Vikings Jersey to 299, Chris Carter, Colts Jersey, Jonathan Taylor, Cowboys patch to 49, DeMarcus Lawrence, Broncos patch to 49, Jerry Judy. Autos, we had Falcons, Pen Pals, Drake London, Bengals to 149, Trey Hendrickson, Eagles to 49, and Kobe Dean, that is Chiefs, Green Inks, Skye Moore, Rams, Camaker, that's to 149. And then there's a Keenan Allen, Razzle Dazzle, Eagles, Carson Strong, Vikings to 75, Lewis Sein, Cowboys, Jalen Tolbert, Packers, Romeo Dobbs, Texans to 149, Davis Mills, Chiefs, Skye Moore, and Steelers, Rookie, turn of the century, Otto to 75, Kenny Pickett, that'll do it for the break. Thank you everybody, appreciate it, select football is coming up.


Yeah, we on boss talk one-on-one. You know. Let me ask you this. I seen you on a picture with Dre. How did, how did, how was you in his relationship?  How did that end up happening? We don't have a relationship, you know? It ain't like me and him cool or, I mean, we cool us, but I had to give rough props. Okay. You did what I'm saying? When he made the deal with Apple and he became the first black billionaire by the city of Compton, right? So, before this, I had asked the new mayor had came in. Kendrick was on, problem was on, DJ quick. We got some amazing dudes out of our 10 square miles. You know, we had more blacks going to the Olympics at a time than any state. You know what I'm saying? It's great things happen out of Compton, California. You know what I'm saying? So I approached the mayor, it was Asia Brown at the time and asked him like, man, we need to, you know, give something for the rappers. You know, NWA made gangster rap.  So, we don't want Compton to go in that direction. We trying to change. We don't want to get rid of the gangster. So when Dre got the money, they start asking Dre. Dre wasn't accepting no calls. So I went on myself with my own money and I made June 19th. You know, most kids don't know what June 10th is. So I made June 10th in the city of Compton, Dre Day. Wow. So I put on a festival, I gave him a hood pass and it's got a plaque with all the freeways on the side and all the original OGs from Compton, California give him a pass. I had some scrolls made and everybody from all the schools signed them and gave them to him, had some shirts made. You understand me? Dre Day, Dr. Dre.  I mean, why you do that?  You know what I'm saying? And he's doing things, you know, that's why I have why I'm here because it's a lot of people say stuff about California that have no relevance. Okay. You're just looking over here, you don't know what we didn't really did. Okay, let me ask you this. Like when you, you spoke earlier and you had, you mentioned Shug Knight being in California long as you've been, did you ever have any actions with Shug Knight? I was there when Shug ran over Terry. Okay. I was, I've been very involved with Shug, you know, even before when I got out of prison in 95, we did the original security for Tupac. Okay. And when he did gridlock. Mm-hmm, I remember that. And we worked with him in the nation of Islam, worked with Poc until Shug made the disastrous decision to hire the police. Yeah, okay. Why do you say disastrous decision? Because everything went bad after that. What went good?  Poc didn't deal with no police. Okay. And he didn't like police. So if you listen to interviews, the only two people that really dealt with Poc, one-on-one, was Frank Alexander and Michael Moore. Michael Moore is a fireman out along beach. Frank was an ex-CEO or dissonance and this and that. So after the disaster that happened in Las Vegas, the only two that opposed anything that the common story was, the truth wasn't told. But the only people that were telling the truth, both of them ended up dead. How'd that happen? Wow. You know what I'm saying? But you got all the rest of these suckers that's telling the story, they're alive. They kicking it, but that ain't the truth. Now that's just my little bitty opinion, but I was there.


So I need to say right off the top, I'm getting ready to go do something, and I'm not stepping on the stage as anybody's client, I'm my own man. You know, when I step on the stage, I'm not stepping on the stage as an ex-offender.  So it's like, you know, at a certain point, we need to start with an even scale. If you grant me my rights, I will fight you as hard as I can to obtain them.


The River State Police Command has paraded two suspected manufacturers of fake drinks. They were arrested at Elibolo Community in Abu Apmur Local Government Area. The two suspects, Akiah Yaira Collins and Kristen John, were arrested on the 22nd of October 2021 by operatives of PAFADA led by Nobu Uwo. Uwo, who acted on credible information stormed the hideout and arrested a syndicate that engaged in the manufacturing of fake drinks. Parading the suspects at the police headquarters, Spokesman of the Command, Nnamdi Omoni, told journalists how they were arrested at their hideout. They were charged to court as soon as the investigation was concluded. They got to your hideouts where they were producing this liquid you're seeing here, the illicit genes, and then they are even making it worse by mixing it with what anything they can lay hand on and then said to unsuspecting public. So, look at that, and then when our men stormed there, we were able to arrest them. The mothers took to flight on Saturday police. We were able to arrest these two. Kristen has opened up to tell us how he can cause them and produces them, and where he also says them. He has told us sometimes he takes them to death estate, and he has a stand at the oil main market. He has a stand over there. This one I have a problem of where I was working before, so I'm not short of money. I couldn't do the things I've been doing before, so he now called me that look at what is on now, that if I would come and be looking for delivery there, I should come because I have a problem during that time. I buy order low quality drink to turn for the high quality one. I order for the bottle from Abade, we'll send it down from here. Like the Campari, now they fill it with that kalihari. That kalihari that is there. I don't miss it. When I buy kalihari, then I turn it to the Campari bottle. The focus, I use the Donsaymo to do it. I buy Donsaymo to turn it inside the focus. See, I miss the Chessie. I don't know. Yes, I use the red train to turn Jamesie. So you get notified about fresh news updates.


Good morning, and we're happy to stay. Roger, we know you're all flying high, and have one more day to go. And we're ready to give you a good day's work out of it. Roger that. This is Mission Control Houston, the shift of flight controllers here on duty in Mission Control, awakening the crew on board Columbia this morning to the Electric Light Orchestra's Don't Bring Me Down. This is scheduled to be the final full day on orbit for the crew members of Columbia, in anticipation of a Sunday morning landing at the Kennedy Space Center, and setting a new record for the length of a shuttle mission. Go ahead. Be with the data, or do you need some data? Data looks good. This is Mission Control Houston, this television now coming from the Space Lab Science Module aboard Columbia, showing the astronauts in the final phase of their exercise and scientific research work in the module itself. At the rear of the picture is payload commander and flight engineer Susan Helms. Bob Thursk, without the shirt on, is the Canadian payload specialist on board. In the foreground, pumping away in the bicycle ergometer is pilot Kevin Kriegel. French payload specialist Jean-Jacques Favier is working with a lung function experiment on the right side of the picture. Again, all of this coming from the Space Lab Science Module, where research has gone on for the past 17 days, and is continuing now in the final hours of that work before payload and experiment hardware, and finally the Space Lab systems are deactivated later this morning, wrapping up the science phase of this mission as the astronauts transition to the pre-landing preparations, which began earlier this morning with the reaction control system hot-fire test and the flight control system checkout. All of that activity by the flight controllers here in Mission Control successfully completed several hours ago. This is Mission Control Houston in the center of your view from the Space Lab module is Canadian payload specialist Bob Thursk wearing the hockey jersey of National Hockey League Hall of Famer Bobby Orr, a Boston Bruins All-Star for many years in the National Hockey League. Thursk wearing that in tribute of the game that he loves in the National Sport of Canada. Again, that jersey belonging to National Hockey League great Bobby Orr, carried on board Columbia by Bob Thursk in tribute to the game of hockey in the National Hockey League. Payload Commander Susan Helms is right above Thursk, pulling out some gear from an overhead locker. Kevin Kriegel at the bottom of the picture continuing to pedal along on the bicycle ergometer, while French payload specialist Jean-Jacques Favier continues to operate at the Lung Function Experiment on the right side of your picture. At the rear of the picture coming into view is Mission Specialist Chuck Brady. He'll be holding the camcorder on the flight deck tomorrow for the first in-cabin views aboard Columbia about 11 or 12 minutes before landing while the orbiter is traveling at about 11 times the speed of sound in the final minutes before touchdown at the Kennedy Space Center. Mission Specialist Rick Linehan is at the rear of the picture near the tunnel that connects the Space Lab Science Module to the flight deck and the mid-deck of the orbiter. Payload Specialist Bob Thursk is performing a final calibration on the astronaut Lung Function Experiment, and he'll use a syringe containing a known volume of air to calibrate the instrument. In here it says we miss you and we know this is your last shift, but you've just done an outstanding job for the five of us and the payload crew and we just wanted to let you know how much we appreciate it and how we wish you were with us because we really missed you. Thanks a lot, very heartfelt. Thank you. See you tomorrow. Here, Pedro laughing in the background there. We may not have video by the time he goes off shift, so Pedro, notice your name is on this note too and if you can't read it, it says we miss you Pedro and Luca and the same applies to your state. Okay, yes, I'm here. I was not laughing, but I'm laughing now and thank you very much for everything and we really didn't think that you were going to make 100% but you did 110%, so it's a lot of joy here. Okay, the best part about this mission has been the fact we've done so well, getting to science and there's only one thing wrong with this flight and that's that you two guys went with us. So we know you did good work down there and we really appreciate the great job you did, but it would have been a perfect flight if it had been a flight of nine. Yes, I think we can only agree to that and we will make a proposal to install two more seats for next time. I know you both will get your chance. We just hope we get to fly with you. Okay, then see you tomorrow somewhere in Earth. The payload crew saying they're on orbit farewells to Italian space agency alternate payload specialist Dr. Luca Urbani and for later from a perspective of not having a video from on orbit, they've also said they're on orbit farewells to ESA payload specialist Dr. Pedro Duque, of course the alternate payload specialists do train alongside the payload crew during all the pre-mission preparation for the space lab mission and support the on orbit operations from here in the space lab mission operations control. The life in microgravity space lab now in flight day 17, the final day of payload operations, which are drawing to a close as the crew of the shuttle Columbia prepares for its return to Earth tomorrow.


Hi everyone, my name is Zana from Product School and in this video we're talking about user flows, why they're important and how to create your own using the Product School template. Now essentially user flows are visual representations and diagrams that showcase a path a user takes in order to complete a desired task on your product. It is a great way for PMs to involve UX designers in the product process and make sure that the final user experience is optimized. Now in this template you will find in the second slide resources that you can tap into about user flows and if you have any questions you can always ask the product school community. Now before mapping you need to identify who your users are, the objective, the traffic source and the what and when your users are receiving certain pieces of information. In this template you can use two variations of user flows, one that only represents one user and another that represents multiple users. It is up to you to decide which one you'd like to use. While you're filling out your user flows make sure not to get too caught up in the user's emotions and mindset. You need to focus more on their actions and what they're and how they're moving from one step to the other. We've also provided two samples for each time for each variation that you can look at and get inspired by. In the last slide you have extra resources that you can tap into and I hope you found this tutorial helpful. Thank you.


The study aimed to explore the experiences of healthcare professionals with a cinematic VR, CNAVR, training program focused on role-playing and clinical encounters addressing social determinants of health, appellation culture, and diabetes. The results revealed five themes, immersed in the virtual world, facilitated knowledge acquisition, empathized with multiple perspectives, perceived ease of use of CNAVR, and perceived utility of CNAVR as a teaching tool. Participants emphasized the realism of the CNAVR training program and attributed its utility to visual learning in conjunction with the emotional connection to the VR characters. The study suggests that more research is needed to confirm an association between the level of immersion and empathy in CNAVR training for healthcare professionals. This article was authored by Elizabeth Beverly, Brooke Rigott, Carrie Love, and others.


Happy 121st birthday to the Chief Petty Officers. April 1st celebrates the Chief's service and what it means to be a Chief in the United States Navy. The Chief Petty Officer rank was established in 1893 and Senior Chief and Master Chief Petty Officers were established in 1958. Since the beginning, Chiefs have been charged with the responsibility of leading sailors to be their best, ready to carry out the Navy's mission when called upon. The gold-filed anchor represents a culture and a way of life for the Chief Petty Officer. For more information, visit the Naval History and Heritage Command website. From the Defense Media Activity, I'm Petty Officer Brandi Wills.