Hi, everyone. Thanks for coming to my talk. Today, I'll be talking about the CordUP subsystem. My name is Eric Johnson. I'm a firmware solutions engineer with MemFaults. And what I'd like to talk about is the CordUP subsystem in Zephyr and how you can add it into your debugging workflow to augment your abilities to diagnose faults and errors in your system. So a little bit about myself. Again, my name is Eric Johnson. I'm a firmware solutions engineer at MemFaults. I help our customers integrate our SDK and then also spend time maintaining our MCU SDK. Previously, I worked at Walgreens Health, Athos, Acuity Brands. And while I was at Athos, I attended the ZDS component of Open Source Summit in 2018. That's where I got my first exposure to Zephyr and my main goal attending that conference was to evaluate Zephyr and see if it was ready for us to use. And I've brought it to every single place that I've worked since then. I met our founder, one of our founders, Tyler, at ZDS in 2022. And then as to my contributions to Zephyr, a handful of just some humble bug fixes to the BLE kernel and shell subsystems that I've encountered while developing devices. So brief agenda on what I want to talk about today. First, I'll give an overview of what is a core dump, what's contained in it, and then I'll move on to how do core dumps fit in with Zephyr, go over how are they triggered through the Zephyr cert handling and the fault handling that you get out of the box with Zephyr. I'll cover some of the components of the core dump subsystem and then move on to the host tooling that's used and some scripting that you can do to start to build up tooling around processing core dumps. I'll finish with a demo and some comments on some future work that I hope to contribute. So Zephyr comes with a really great logging subsystem built into it, but logging can only take you so far in some cases. We've all been there where you've got a component that produces a really spammy log message or you just collected a bunch of logs over a long period of time and it's hard to sift through this. The built-in panic message to Zephyr is also great. It's most Rtopsys that I've worked with don't give you one. And so being able to understand when there's a fatal error versus, and getting some insight into that versus just your device rebooting is really great. But the problem here is that it's a static picture. It gives you a lot of the details but you have to piece the picture together yourself. So this is where core dumps come in. These are triggered by faults, kernel panics and assertions in your code. And what a core dump will do is it's gonna capture information from your device on what caused the crash specifically. There are different back ends that you can use and I'll go over those in a little bit. But the key thing is that we either want to stream it out immediately or store it to some non-volatile memory because in this state the device needs to reboot. So some basic data components of a core dump itself. What we're doing is we're capturing different regions in RAM and saving them into a binary format. In order to decode your threads, you're gonna want the kernel structure that your application is running. This will give you insight into the state of each threads when the fault happens. We can also, from this data structure, determine the stack use for each of the threads. You can also capture any other data that's important to you. Maybe you have a sensor running and you've got some sort of ring buffer or you're using some memory slabs and you wanna capture the state of that data structure. You can include that in your core dump for later analysis. Maybe you are wanting to know how exhausted was the BLE stack memory components that are being used so you can understand if you need to increase the size of those buffers. Maybe you've got some dynamic memory that you've allocated to the heap for lists or other data structures. Those can all be included as part of your core dump. So how do we get started? How do we move into collecting a core dump? So I'm starting off here showing the call graph that Zephyr uses when an assertion is triggered. So there are assert macros. They all start with double underscore assert. And when that is called, it calls into this assert post action function which eventually calls some arch specific code that will then trigger your fault handler on your device. The example I'm showing here is for Cortex-M device. So Zephyr uses the SVC interrupt to trigger this. And one thing to note here is that the assert post action will, when we look at the back trace generated from an assertion, the assert post action will be at the top of the call stack. So frame zero will be assert post action and then frame one will actually be where the assert was called from. In the case of faults, these are a little bit simpler. The essentially the fault happens, it triggers the fault handler and then begins running Zephyr's several functions within Zephyr that do some arch specific things and then eventually call into the Cortex-M subsystem. And the key thing here is that frame zero will be the site of the fault in your code. So this diagram outlines a few components of the Cortex-M subsystem. You can think of the front end as the component that's responsible for formatting the memory regions into a core dump. And the front end then drives the back end which is doing the IO to either stream out the core dump in the case of using the logging back end or flash or your custom one that it'll write it to your storage medium. The back end is configured through a Kconfig debug core dump back end. And then as I said, there's a logging back end that can stream out of your logging console. The flash back end can use partitions defined in device tree for this function. And then there is also the option to implement your own. In terms of what sort of data sources are we capturing? We're gonna capture arch specific regions and these are things like the core registers of your MCU, the fault handling registers, anything that's really specific to your architecture. We'll capture the stacks of each thread. And then there are some newer features where you can define nodes in device tree to capture device specific data. And then you can also at runtime define different memory regions that you would like collected as part of your core dump. So the example that I'm showing here is a device tree node that I've defined to capture the GPIO block of the the Kimu Cortex M3 target. And this is based on a TI Stellaris chip. So I pulled the memory region information from that data sheet and actually from the device tree board file for that target. There's two things to note here. The core dump type and you'll see that it says mem copy. This is because we're capturing a core dump region that that is memory mapped. So it's safe for us to perform a copy across, starting at that first address shown in the memory regions property and then use the second piece of that, the length. There's a different type of device memory region that you can capture where you implement a callback and that is for cases where you can't simply just copy RAM. So this is an example of the output collected using the core dump logging backend. You can see it's encoded as ASCII text. We still get the panic print, so that gets printed off and we're gonna use this output, save it into a file and then that will become input when we start up our GDB server to load up the core dump itself. So as I was mentioning, we take that text output from the logging subsystem and we use a log converter that Zephyr provides as part of some built-in scripts and we'll convert it into a binary format. Zephyr's GDB server uses a couple different parsers. One is the ELF parser and what that does is it uses your symbol file from your applications build to load your text and read only memory regions and this is used to correlate the PC values to a specific function call and it allows you to move up and down the call stack. The log parser then collects all that memory that we collected from SRAM and builds up memory regions that GDB can query as we use our scripting or just run our normal GDB commands that you're used to. The GDB server is provided by Zephyr and this implements the GDB remote protocol and what that allows is a client can connect to the server and then the remote protocol queries those memory regions that we've built up from our core dump and our ELF file. The GDB server uses what's called the GDB stub and that implements some basic commands that are part of the GDB remote protocol and there are some arch specific code that is required and so Zephyr has support for different architectures through that. The final piece in this chain is the GDB client and that's what you typically load up as part of your normal debugging workflow. So as part of GDB it does have this Python extension support. You can create Python scripts that you can use to run commands in GDB and it really helps you automate a lot of different tasks that you might want to do as you're examining a core dump. A few things to note is that Zephyr defaults, the Zephyr GDB executable defaults to the no Python version. So when you're trying to use your, examine your core dumps and using some of your scripting extensions you'll want to add on the dash py suffix. The other thing to note is that when GDB is built it sort of hardcodes an expected system Python location and so you may run into errors when you're first starting out where it says it can't find the Python energy system and so you'll want to install it into kind of the typical system setup for Python. One thing that we really recommend to use is a virtual environment for all of your GDB scripts. This just helps keep the rest of your system isolated for many dependencies those scripts might have and then we have a package that is called GDB bundle and it helps automatically detect GDB scripts that you've written in Python in your virtual environment and brings them and imports them so that when you're running GDB those are just picked up automatically. There's a lot of annoying and tricky things to set up to get this process started and GDB bundle helps you do that in a much more manageable fashion. So I will show a brief demo, let me switch over. So in this first tab here I'm just, I've collected that output that I showed on a previous slide into a log file and I'm gonna use the built-in log parser that Zephyr provides to convert this into a binary file that GDB server can load. So I'll go ahead and run that. What I ran that with is the Python script. The first argument is the log itself that we collected and the second is just where it's gonna be output to. So now we have our core.bin. In the second window here I'm going to start up GDB server and the two arguments I'm providing are the symbol file that we've built, so that's zephyr.elf and then the core.bin file that we just generated in the previous step. When I run this, this script is going to sit there and wait until a GDB client connects to it. Now, before I run the GDB client, I'm gonna show a GDB init script that I've written. This uses a snippet of code that we use to initialize GDB bundle and that's kind of the first half here. And in GDB, these are all essentially the commands in yellow are GDB commands, so we start off by Python and then we write some Python code. This will import GDB bundle and then initialize GDB bundle to set up our Python path to collect all of the GDB extension scripts that we've created. And then finally I've just added a command to automatically connect to that GDB server that I started in the other tab and it's waiting for the client to connect. So I'll exit out of here. So here I'm using the zephyr tool chains GDB, again with that dash py suffix. I'm passing in a command option to specify where my GDB init script is and then finally we're gonna load the L file that we've built with. Excellent, I know what the issue is at least. Did not have my virtual environment, it activated. Okay, so great. At this point what we've done behind the scenes is load our build, load the core dump and GDB has jumped to the location where we hit our error in our application. So you can see, and I'll make this a little bit bigger, and see at the bottom that we've stopped at calculate transformed reading. This is sort of a toy application that I created for the session here today and we've paused here. And the great part now is that we can run most of the GDB commands that you know and love when you're doing regular step debugging. So we can backtrace to see where in our code we came from. In this case I have a thread called processing thread and we hit an error at calculate transformed reading. To show off those extensions that I was talking about we have a couple little demo. I first created one to parse through the GPIO peripheral on this target. And so this is just called GPIO. And what it's doing is it's going through one of the GPIO peripherals and walking through each of those pins and kind of spitting out some processed output there. So I'm converting the memory that we collected in our core dump and kind of parsing it to understand whether or not the pins were enabled, what directions they're set to, their current values, the state of their interrupts. Another kind of simple script that I'll demo is we can print out the state of the other threads in our system. So here we can see that we have our processing thread as we saw that's where the core dump occurred. But then we can also see the state of the rest of our system. We can see the system work queue, shell UART, what our logging system was doing. And these are very simple examples but my hope is that it gives you ideas on how you can really expand your debugging capabilities. So I'm gonna jump back to the presentation. So what is some future work that we can do to the core dump subsystem in Zephyr? So as part of my research for this presentation, I found kind of a serious issue with the flashback end and that's that it is not totally ISR safe to use. And this is important because when we hit a core dump, we're in a fault handling context. So we cannot use interrupts to, we can't use interrupts. There's no context switching. The core dump subsystem is just running until the system reboots. So that will need to be reworked because the flashback end uses the flash, Zephyr's built-in flash API and there are different semaphores that are used there. So as soon as we take a semaphore, if we have assertions enabled, which is a powerful feature for using core dumps, we go into a lockup and so this isn't really a suitable backend at the moment. A few other improvements that I hope to make are allowing the application to override a linker memory region that is specified as part of the core dump subsystem. So right now you can enable a Kconfig and it will use some linker defined symbols to capture essentially all of RAM. And a lot of times it's not practical. You don't have enough space in your storage medium for that. So allowing kind of a more application defined region I think would be pretty useful. I think what we can do to help triage and diagnose issues that users are reporting to Zephyr is to teach users to submit core dumps with each of their bugs and issues. Then a maintainer can load up the core dump and get additional context onto what caused the falter error. I'd like to add an example using the flash simulation region as a backend. And what this can do is give you a simple way to have your device not connected at your desk but still collect a core dump. As I said, the flash backend has a few issues that need to be worked out, especially when assertions are enabled. So we could use the flash simulation region to store to a no init region of RAM and that way the device can reboot and the core dump is still in that section of RAM. And then finally, I think there are some West extensions that I'd like to write to kind of take a few of those manual steps that I was doing and automate them. So a little bit on where to find me, LinkedIn, GitHub. We, Memfalts, the company that I work for, we write a blog called The Interrupt and we put out a lot of different embedded systems topics. Highly encourage you to check those out. We have a lot of information on scripting and GDB. We also, I just put up a post on the RingBuffer API and Zephyr and how best to use it and how it's used in practice. A little bit about what we do at Memfalts. We obviously, core dumps is one of our key features but this is what a core dump looks like in Memfalts. So we do a lot of additional work to add in different details, things like state of threads, detecting stack overflows and then also, this is just a peek into the different memory regions that we collect and how we process them. Just a few quick acknowledgments. I'd like to thank everybody that does maintain the core dump subsystem. I hope to start contributing a lot more to it in the near future. And then also to Daniel Leung, who gave a talk a few years ago on more on the guts and the internals of the core dump subsystem. And then just included with these slides the links to GDB bundle. Please go check that out. We'd love feedback on it and then the GPIO command that I implemented as part of the demo. Thanks. He's right there. Amazing stuff. Thank you very much. It was very interesting and fun stuff to be doing. I can guess a few answers to this question but I'd like to hear your answer. So why did you go with the GDB server approach instead of writing ELF based core dump file and then loading that in GDB using normal means? So in this case for the demo I was using the login subsystem output and so that kind of requires that intermediate step but you certainly could collect the standard ELF format and then have that same GDB server provided by Zephyr, load that in. But like, I mean on Host Linux I would just take a core dump file and I would say GDB ELF core dump and GDB would load that. So I was talking about that approach so without the GDB server. In that case, I think that there are some, I'll be honest, I'm not completely sure of the technical differences there. If I had to guess, it's because we're, I think the typical GDB server might not know of some of the memory regions that we're loading as part of the Zephyr specific GDB server script. Okay, okay, fair enough. Thanks a lot. There was a talk yesterday about tracing in Zephyr and they used retained RAM for storing the triggers. Could you imagine also storing your core dump in to a retained RAM? I think Linux can also store, I don't know if it stores the core dumps but it can store lock into ECC protected memory that you can read out on the second boot. Did you consider doing something like that? Yeah, definitely. I might have touched on that indirectly in the future work slide. So I think the way to do that right now in Zephyr would be to use the flash simulator functions that are built in now. At least I was kind of perusing GitHub to see if anybody else had done this in the past. And that was actually suggested and a feature request was closed because you can use the flash simulation region to mark off that section of RAM. So as long as you define the address of the RAM region that you're referring to, you should be able to use that there. But you would still go through the flash layer and have the problem with the semaphores or why is it called a flash simulation? Yes, that is true. So I think then the second piece there was, and I didn't mention this. So this is great. Thank you for pointing that out. The other piece of work that I'd like to do is just adding in another backend specifically for that. Okay, thank you. Any last questions? Great, thank you, everyone.


Hey guys, how are you today? All right, so I'm here with a new project. I didn't really need to start a new project, but I did anyway. All right, so I got this idea from Shannon Green and she posted a video about these little black patent leather, fake leather cases a while back. She got that, I got them and she did too from American Science and Surplus. I'll put a link in the description below. And she got hers and she turned it into a little journal. And for a long time, I thought I have those parts. I'm going to do the same thing and I just never did. So this is what I did. And if you want to see exactly how I did this and want me to show the assembly of it on camera, leave a comment in the description below. I have made two of these and the other one I made into a little travel bag. I'm going to show you in a different video. So leave a comment on either video if you want to see me actually assemble the bag. Because I have more parts so I can do more. All right, so it comes playing the case. And then I took some of these Tim Holtz binder rings that I had and I put them in the center part here. These binder rings come with brads. I wasn't going to use the brads. I wasn't sure about doing that. But what I did was I took some thick thread and the binder rings come all the way to the very edge of this center flat part. In fact, it hangs over just like a millimeter on each side. So what I did was I stitched through the hole in the binder rings and the case with some thick thread. I also put some E6000 on the back of the binder ring so I glued it to the case in the center. And then I also put some white glue on the threads on the inside and the outside to just really keep it really sturdy and strong so it's really not gonna go anywhere. These cases come with two inner pockets on the left side. Hey, this little flappy zipper little pouch on the right and then another pocket with a snap on it over here.  I had these index divider tabs from something that I bought. I forget what exactly now. And these are like a Manila folder paper and I've got a huge stack of them. So I thought, I wonder if those fit in there. They do. So Tim Holtz makes and Ranger make a punch to go with these binder rings and I use that punch to punch the holes. You don't have to do it that way but it's a little easier if you're gonna do a lot of them. And then I put those in here and it zips up and fits just nice. There's plenty of room in here. If I wanted to take this out with me to fit some pens and pencils, a glue stick, images, whatever. And I'll show you more about that when I share in the other video, the other one. For this one, this is gonna be a little glue book basically, a little collage journal. So I have some images here on my right and some, a few quotes and a glue stick and some scissors and stuff. And so I'm going to work on a collage journal page. I'm gonna speed forward through the process. I'll be back at the end. Punch and come in from the backside and there's enough room in this book for me to take these quotes that I pulled that I know I'm gonna wanna use in here and put them in here in this little pouch. And any of these images that I know I'm probably gonna wanna use in here. There's room to put at least the smaller ones in here and you could put them and your glue stick and pencil, water brush, all in here and take your glue book to go basically. All right, that's it for right now. Don't forget the most important thing. Go out and have a great day. Do something nice for yourself because you deserve it and I'll see you later. Bye.


The TinyMCE text editor has a new look in Moodle 2.6. It has new icons, it works better on different devices and you can toggle between one and three rows you can expand or collapse the toolbar menu. Here we are in a course with the editing turned on and if we click a summary, you see that we have one row of buttons we can choose from and clicking on the left allows us to see two more rows. Clicking again toggles it back to one. There is also a new TinyMCE plugin for managing embedded files which allows us to delete or override or otherwise manage files which have been previously embedded as here.


Hey what's up guys welcome to a trending reviews. So today I'm bringing you some fitness product reviews And I'd like to go to the gym possibly around four or five times a week And sometimes when you're weightlifting you do get some aches and pains some strains and so on and you do pick up Injuries from time to time So today I'm reviewing the top five fitness products on Amazon that are under 15 pounds that can help you rehab All of your injuries and strength and get you back to full health. So let's have a look at what we have here So the first product here. I have something. It's called a kinesiology tape Now you may have seen this tape being used on athletes runners bodybuilders so on It helps to keep the muscles contracted by using the tape to stick and spread some of the muscles that are aching That are feeling tight in certain areas now Just to show you what it looks like It's very simple You can use scissors to cut into any lengths and different strips and here's some examples I'll show you some pictures now But essentially you can use it to loosen up and spread the tension away from tight areas Maybe you have some knots in your shoulders upper back pain Even on your thighs quads calves and so on so pretty much you can use this anywhere It's pretty easy to use you just peel off tape from the Plastic sheet that's connected to it You put it onto your skin and then you you stretch out the area that's hurting and then that will Be put on there for about three or four days and it does come off quite easily. It doesn't tend to Pull your hair off if you've got hairy arms or something But I do recommend it if you want to loosen up some muscles when you're training So do check that out link is in the description below Product number two is this spiky looking massage ball.  Now. This is really useful. It's to be used anywhere on your body You can just basically use it to Massage yourself by rubbing into it like black. So you can do it on shoulders back you can lean on the chair and Target different parts of your back and help release some of the tension Trigger point massages have always been really useful. It's been around for hundreds of years this type of strategy And this has got really good reviews. I've used it on lower back pain upper back pain When I'm using my computer a lot, I do get some strain in my wrist. So Repetitive strain injury is quite common for me And I use this to even iron out some of the pain on my wrist by just rolling it around And it does alleviate the pain quite quickly, but this is roughly around seven pounds linking the description So you check that out Number three I have these stretch bands or resistant bands. They come in a set of five Let me just quickly show you what they look like So you have various different colors and each color represents the resistance on the band So the black one is the strongest resistance. So it's harder to pull now if you do physiotherapy for Problems with your back shoulders neck arms rotator cuffs that kind of stuff They will always recommend that you do some resistance training and some rehab exercises This was also recommended to me by my physiotherapist a while ago and I use it to do mid-level back pulls Even face pulls as well and the good thing about this is you can do this anywhere at your home It comes with this red strap that you can use to stand on and use as side lateral raises Now it also comes with a door stop. So if you hang this over your door You'll be able to close the door It will clip on there and then from the other side you get to pull it and and do various different exercises using that as well Now I come in five different strengths and yellow being the easiest to pull is very light now depending on the severity of your injury This is very useful You can use this even if you wanted to do just bicep kills just as exercises in your own home It's multi-purpose. This comes in around 14 pounds. So it's really useful. I would definitely recommend this one Number four, I really recommend this is one of my favorites. It's a massage stick now. It's pretty simple It's solid it's got two handles on each side and you use this to massage out any pains or eggs that you have in your legs You can use it even on your arms if you need someone else's help you can do it on your back as well This retails around about between 10 and 15 pounds. I'll give you a link in the description below for a couple of these So here's a couple of pictures of this being used in different body areas Now I've used it a few times and I think the pain has gone away possibly just the next day So it's really highly rated if you do check out the reviews There's almost thousands of reviews of this pretty much everyone has just ranked this five stars It's so simple, but it's so effective as well So do check this out as well and last but not least I have this back support Now the back is the center of your entire body and when you're doing weightlifting running swimming your back is Needed for everything and without a good posture without strong back muscles You're gonna basically struggle a little bit now if you do have an office job day to day You're just over a computer all the time chances are that you probably have bad posture without even realizing So when you go to do your training you've probably start getting back aches and that's because your posture has not been great Now this actually helps correct your posture as well by keeping your back straight Now just to quickly show you what this looks like. It's very simple It's like putting on a backpack. It's adjustable with a velcro strap Now this is all it is. It's like this So if I quickly show you how to put it on basically this bit will be at the upper part of your back You put it on like a backpack as so like that And then all you have to do is take the velcro Pull it out and then Strap it as tight as you'd like to and you can do the same on the other side if you want it a little bit tighter Like this. So now when I'm trying to bend over and arch my back It's preventing me a little bit and it's forcing me to stay upright Now I find this is really useful to have in the office. You can wear it underneath your clothes It's quite soft on your skin as well. So there's no issues there and I found a very big benefit of using this when I'm training in the gym So when I'm doing weightlifting even when I'm doing deadlifts for example This forces you to keep your back straight if you've got a very bad posture and your back is arched The chances are that you're going to be injuring yourself and you're going to get strained lower back pain upper back pain and so on So this is the best way to avoid it. I really recommend this product It's so simple is very easy to use if you use this for a day You just keep it on underneath your clothes Maybe four five six seven hours a day then you're going to see your posture being corrected automatically because you get used To that position of being upright now this retails about 12 pounds I'll put a link in the description below where you can check it out on there as well. All right guys Thanks for watching. Those are my top five rehab products relating to health and fitness. There are others on Amazon I do like to use a foam roller all the time as well to help in that situation where you've got back pain leg pain You just want to loosen up your muscles, but they're also available in gyms as well So a lot of these products are aimed for things that you buy for your home to help you with rehab So that's why I've left out some of the other gym-related fitness products that you can also see on Amazon If there's any others that you recommend do drop me a comment below I'd like to hear from you and if there's any other questions you want related to buy any injuries you have then do Please ask me. I'll try and help as much as possible, but I hope you found out a video useful Thanks for watching guys. Do subscribe. I've got some other cool videos coming up and I will catch you guys next time


The next time you encounter a difficult situation, a difficult emotion, an unexpected disappointment, or an unexpected hardship, I invite you to try this. I call this my OAR method. O stands for Openness. So be open to the experience. Stay open to the experience of what you're feeling. And I invite you to imagine that the experience you're having, even the difficult emotions, are incredibly valuable information for your future, and also for, if you want to imagine this, it's incredibly valuable for the divine. That somehow the divine is living through you, and that information that's coming through you with even the most difficult emotions if you're willing to take a perspective outside of yourself and see that, wow, somehow I am a representative of the divine and I'm experiencing. And a Google car is about to go by. It's pretty cool. There you go. Wow, or a self-driving car, something. It's almost like you're an emissary. You're sending information back to the divine to make the divine smarter. Now, I know this may sound crazy to some of you, but it's part of my, I guess, my faith. But even if you just think that you're keeping valuable information for your future, so that's the first part is, oh, openness to the experience and even being grateful for that experience. And if you can take a step back and imagine that, it's much easier to deal with the emotion when you aren't only in it, but that you're also looking from outside knowing that it's incredibly valuable what you're going through right now, whatever emotion you're going through. Okay, so the second part is A. Remember it's O-A-R, right? A stands for action in a positive direction. So even as you're feeling badly, ask yourself, what is one small, maybe tiny action I can take in a positive direction? So maybe it's simply as small as taking a deep breath. Now, that's positive action. Maybe it's bringing a smile to your face even if you don't feel like it. Remember, the action in a positive direction is regardless of the circumstance you're going through, okay? So take that positive action. Or maybe it's saying a mantra or it's writing, it's doing some journaling about the things that are good in your life and the things that you hope for and the vision that you have. So take some action in the positive, or if you're in a challenging conversation and you're feeling badly, remember stay open, stay open to the experience. Take action in a positive direction. So think a good thought about that person. What's one good thing about that person that you admire, that you respect, that you appreciate? All right, send some positive energy to that person. Okay, so that's the A part. The R, so O-A-R, O is openness, A is action in a positive direction. And R is reflection. Now, reflection is not, notice that it comes after action. So what I mean is when you're in a difficult situation or a challenging emotion, it's not a good idea to be reflecting on life right now. And why is this happening to me? And how can I repair the situation? I mean, it's not... So what I recommend is that you reflect on the situation after the emotional charge has dissolved. Okay, so O-A-R, openness to the experience, knowing that you're sending incredibly valuable information into your future or even into the divine source. A is action in a positive direction, no matter how small, even if it's taking five seconds to send a positive energy or think a good thought about the person that's challenging you or the situation that's challenging you. I have another video called, Bless Anything That Annoyed You and Get Positive Energy Back. I'll put the link in the notes of this video. And then R is to reflect after the emotional charge has gone. And the reflection can be done through journaling. Once you're not feeling so emotional about it, you can journal and say, oh, okay, what was the cause of that challenging situation? Is there anything I could do differently in the future to prevent the suffering that I had to go through or is there something of benefit that came out of that? Because if you are creative enough, you can always find benefit or find something you can do differently to make your life better as a result of that situation. There's always learning and there's always a blessing in disguise. So I hope that's encouraging to you. O-A-R, by the way, is pronounced, or which is like having an or to help you row through life in a more gracious way. I hope that's helpful. Always open to your comments and any questions. Be well.


Intercepted, picked off by Jesse Bates. Watch as his vision is right here. Bates tracks him the entire time. See how he sneaks down, he sees where Renfro is. He cuts around the other defender.


Former President Donald Trump is attending the penalty phase of a New York civil defamation trial stemming from a columnist's claims he sexually attacked her in a department store dressing room in the 1990s.A May trial found Trump sexually abused E. Gene Carroll, awarding her $5 million for sex abuse and defamation for 2022 remarks. Trump is expected to attend the new trial Tuesday.A jury will determine how much Trump owes Carroll for denying the assault and mocking her while he was president in 2019.Trump is appealing the findings of last year's jury and says Carroll made up her claims to sell a book.Trump leads all Republicans in the 2024 presidential race.


Product management is the hardest job in the tech industry because it's super rewarding and it's the leadership position But it is also the hardest to get especially for people with no prior product management experience And lots of job openings saying that oh you need at least three years of product management experience with computer science degree And we hope you also come from Stanford University And all of this makes it feel like impossible for people to break into product management But I personally believe that it is definitely possible to break into product management with no prior experience and no computer science degree In this video, I'm gonna share with you how I land 3 p.m. Job offers within three months with no experience and no coding background Make sure to stay until the end of this video where I'm gonna share with you the free resources to get you started on your product management job journey right away Hey guys, this is Dr. Nancy Lee a director product and featured in Forbes I have helped hundreds people lend their dream p.m. Job offer in fan companies and unicorn startup and continue to get promoted as a Part leader if you want to achieve the same kind of success and go to p.m Accelerator.io to learn more if you want to learn the most effective way to become part manager Please make sure to hit the like button subscribe to his channel so that you'll be notified every time I post a new video every Wednesday Make sure to check out Instagram stories and inspirations and from people with very similar background just like you before we get started I want to remind everybody to go to this website and download the free product manager resume template to get your resume ready for your dream p.m. Job I started my product management career outside my PhD program And that was years ago when I became one of the youngest engineering PhD from Boston University My major was in material science and that was also during the 2008 recession It was so stressful because at the time Nobody was able to land a job because of recession and especially I was on H1B I felt very very stressed out, but I was like I was lucky. I was able to land a job and The systems engineer working for Shell Oil and I was saying wow I was so lucky it also sponsored my H1B But I literally hated my job because at the time I had no customer interaction And as someone who is frequently the only woman in the meeting room in the oil gas industry People really do not respect me and I tried to change my outfit, change how I talk, change how I look Change how I interact with other people. I almost tried everything else I just felt like I wasn't respected in the industry Something need to be changed and on top of that, I really like customer interactions But I was frequently being perceived as worker bee. People always be like oh Nancy you got a PhD Why don't you crunch some data? And I hate it. I totally hate it So I was very determined to change my career completely outside of oil gas industry And also do not want to be a systems engineer anymore And then all of a sudden somebody introduced a new term to me That was my boyfriend at the time and also now husband and he was like Nancy, have you heard of product management? I was like ding the libel moments. What is product management sounds so cool Then I started learning about what is product management. I was so Fascinating it was so amazing and I discovered that product management is a combination between business leader creating product impacting people's life and still working on technology product It is so fantastic. So I immediately fell in love with product management So the first thing I started to learn about product management is by looking up on YouTube videos and see what the day-to-day look like as a product manager and what did they do and this really Assured me that this is the totally the right career path for me And I also film the video to show you what does the product manager do in fan companies and unicorn startup You can watch this video right here and knowing the day-to-day is going to help you to decide if the right career path for you or not And after made decision, this is a career for me I immediately start to conquer my number one challenge, which is I do not have any product management experience But as I said all the drops were like one people with minimum three years experience become product manager in a company This is like impossible But I cool down and actually I studied those drop description and realized that There's a lot of roles and responsibilities are quite similar to what I did at the systems engineer for example those drops as for product requirements writing experience and Interact with customers on a send the pain point of customers and being able to work in the cross-functional team and interfacing with engineering team and All of this actually I did I did all of this, but I just didn't know I had those experience I was very Transferrable into product management So it was very excited to continue to dive deeper to understand how exactly I can talk about my experience to show them I did something quite similar and another very important resources I recommend everybody to study is the definition of good product manager versus bad product manager and there is a YouTube video where I'm going to link in the Description down below where people discuss in-depth regarding good versus the bad product manager after I have high level Understanding of what is product management? What is good PM and bad PM? I start to take some classes dive deeper into product management and all the hands-on skills I need to do better in my job and guess what I got very lucky and even before I discovered product management and I already took some courses from MIT where they teach me how to do systems design How to write requirement and how to do project management how to work in a cross-functional team and those like courses in MIT Actually is so useful and that can directly be used for me to train myself to become a product manager And lots of people ask me this question Nancy, do I need MBA to become a PM? I personally believe that you do not need to get MBA But you need to take different kind of classes to help you to gain PM skills For example for students inside a PM accelerator 95% of our students do not have MBA and 70% of our students do not know how to code They do not have computer science degree at all and 99% of them do not go to Stanford or Harvard to go to get any degree or use the alumni network at all but All of them are able to land amazing offers and some of the many offers from like fan companies like Google Met up Amazon and Tesla and also from unicorn startup. So therefore I personally believe that do not Waste this 200,000 dollars per year for the purpose of becoming a product manager. I personally Never come from a place with luxury I was actually very poor when I grew up and literally do not have the $200,000 to actually go to MBA school So that's why I decided to take several different classes at MIT that will help me to gain experience To speed up my success much faster But if you want to get MBA for the purpose growing your network of people and yes, you can take MBA After gaining product management skills, the next thing I did was conquer the technical challenge I was quite confused for lots of job description. They said, oh, we prefer someone with computer science degree But at the time my PhD was in material science and engineering I literally do not know how to code and I do not want to go back to school to get another degree in computer science Because it's just too much education for me. Just Not at the moment, but I did a shortcut and it starts to talk to current product managers and ask them How did you become product manager? Do you have a computer science degree? Why people want to talk about coding technical background in general and and I realize a majority of the product managers I talked to they said you don't need a computer science degree at all instead You just need to know how to communicate with engineers and the more they talk to them the more I realized that the better way to demonstrate your technical skills is by showing off your skills of designing system architecture diagram and being able to use the system engineering methodology to understand the entire system being able to communicate with Software engineers, even if I was building oil gas product knowing how the system design work for software Architecture is it would help me to show up my communication skills and knowledge in the tech space So therefore I highly recommend anybody to take any systems architecture classes instead of PMX editor We teach system design and free YouTube videos. I recommend everybody to check it out I'm going to link in the description to show you all different kind of free system design classes You need to take right away I filmed the sacred training and teaching you how exactly do you need a tech degree or not And what kind of companies definitely require a tech degree. You should watch this video in-depth and learn different types of product management positions and their relationship was with tech degree as well now Comment on the chat and let me know what's your background when you think about transitioning into product management I love to learn from all of you guys comment below and let's talk The next thing I did is to create a product portfolio at the time a couple years ago There are not like standard way for you to become a product manager But I was so determined to show them that I have relevant experience and I'm able to do a kick-ass job in this new domain I Invented my own product portfolio where I highlight my end-to-end product management skills and experience For example in my portfolio, I have the old like PR news of the product I have launched to demonstrate my impact I also have examples of requirement written before and Also different kind of roadmap that I see how I build my product and everything inside my portfolio show others I'm able to do the job starting from day one when I try to show off my business skills. I told them, oh, I started a SC store I started the e-commerce store and trying to do marketing try to promote myself Here are different kind of strategies. I've used and different kind of go-to market strategies and marketing skills and bills through my SC store and Those it's also very relevant to show off that I have the end-to-end product management skills And even after I started my new job, my boss was like, hey Nancy, you are you still running your store? I was like, no, you're reality I didn't make money through my SC store at all. It was just like very hard to sell juries online But if you know how to do it, let me know but that experience and actually helped me To advance my career and put them together into a portfolio And I have a separate video teaching you guys how to use portfolio to break into product management Even if you don't have prior experience, you should definitely study this video right here to show off your raw talent This must do and which is a core principle of how we help our students inside a PMX character as well And I believe that everyone's resume should have two main sessions under your experience Achievement and roles and responsibilities Achievement is something to show off your raw talent and your impact to the business because The reason how you as a product manager is try to grow the revenue and grow users for the business So it's important to highlight your achievement to the company And then the second session is your roles and the responsibilities that's relevant for management I recommend everyone do not list all possible things as irrelevant Describe things as relevant product management on your resume under the roles and the responsibilities session And I filmed a free training teaching everybody how to write your product management resume and give you specific examples of What you need to say on your resume and what type of keywords you need to put on your resume So please make sure check out these two free trainings and go to this website to download your product management resume template and this has been used by over seven thousand product managers and Won't you use the same template then your interview immediately. Lots of people heard of the framework But the biggest challenge for all the candidates is that they don't know how to use the framework effectively and Create really outstanding design outstanding solutions For example when you apply the modified circles framework to design Uber app for blind people. Did you think about two-sided marketplace? Do you think about very broad in terms of their needs? And I have a free training and demonstrate how would I answer those kind of interview questions in product design interviews? You should check out this free training right now and on top of that I also invented my own framework when I went into an interview because I realized a lot of questions are not applicable using the circles framework So I invented my own my computer science PhD framework, which is very special for product execution interview So this is also the first time I gave away all my framework for free You can go to this free training right here I broke down my computer science PhD framework for product execution interview go here to study the product metrics and Using the same framework and our student was able to lend offers from meta Google Amazon those kind of big tech companies And so also make sure to share the free training with others and invent your own framework as well It will help you to stand out from all your competition significantly after my framework ready I started to do mock interview massively. I start to mock interview with Like existing product managers and some who spare them me and also find my peers and I was very selective regarding my peers I really is one someone who's very driven very motivated as me said I go really high and we both start work hard and Help each other to improve. So through those different types of mock interviews I had I quickly improved myself and I became a player and also my peers also became a player And then we all joined top companies together So I found out this like network and ecosystem is very important for people to continue push yourself to the next level So I land three offers in total and one from Verizon as the IOT smart cities product manager and the other one is from a B2C consumer product and the other one is Working for a startup and I joined Verizon because I love the product and also Verizon is very good foundation for me to quickly To speed up my green card and HMB sponsorship as well. Here are three tips I recommend everybody with no prior PM experience become a product manager to break in with the most efficient way It's a tip number one You need to start to build your product immediately and turn it into a product portfolio So that you're able to show that you already gain relevant experience tip number two is to learn how to write requirement how to manage roadmap ahead of time by taking some product management courses and training and If you're interested in PM accelerator You can go to this website and and go to our master class to get started right away Tip number three is master's product leadership mindset So it's important to think as if you are product manager before you even become one and in this influential product leadership podcast series I interviewed Niquel from Microsoft as a product manager He talked in depth regarding how he leveraged the thinking as if he's a product leader before he went into Interview with Microsoft and that land he spent offered within 40 days So you can learn more from this video right here and start to build your own product leadership mindset starting from today I also highly recommend different kind of free resources. You guys can get started On your PM job journey and first of all is the podcast from guy rise and named how I build it And I definitely love it and it is about how entrepreneurs and startups try to build their product And the real-life experience building product is so valuable for product managers So recommend everybody to listen to this podcast and really enjoy it free resource number two is that you're able to get Free mark interview from me and free coaching from me every Wednesday And during my YouTube live and you can find out the free mark interview Descriptions and requirement in the description of this video filling a Google form and request to do free mark With me every Wednesday and resource number three is that you go to different YouTube channels to start learning for free That's a lot of free resources I'm for example I have a playlist of how to nail product management interview and how to gain product management Experience you go to my playlist right here and you also go to different kind of like YouTube channel start learning for free If you like any of the free tips I share with you guys today or you have a different way to break into product management With no prior experience, please comment below and really love to learn from all of you guys Make sure to share this video hit the like button and I'm gonna see you next time This is Dr. Nancy Lee from PM accelerator. Bye


This paper proposes a conceptual framework for creating a digital workspace for teachers using common software and hardware products. The authors studied the experiences of both domestic and international educators and their own experience with operating systems and cloud services to develop a system that can easily be set up, learned, and applied by teachers without extensive experience in remote education. This system can serve as an initial step towards more advanced remote education systems and can be further enhanced by integrating additional objects and increasing the level of integration with external subjects. This article was authored by Lizia V. Bulatetska, Vitaly V. Bulatetsky, Tatyana Ohryshinovich and others.


Hi there. I'm Anthony Chung and I'm the head of market analysis here at Amplify Trading. Every weekday morning I'll deliver a fundamental rundown ahead of the European Open. But if you subscribe to the channel, you'll also get content from the rest of the team. So, let's begin. All right. Very good morning. Hope everyone had a fantastic weekend. It's Monday, the 16th of November. Just going to have a look around the markets, not only just a review of what's happened over the weekend and used to be aware of, but also an outlook for the week ahead from a fundamental point of view. So, I'm not going to spend too much time looking at the charts directly. I'll save that for the guys on the live stream on Amplify Live. But just to give you a general overview of sentiment at the European market open and equity index futures up quite sharply again in the overnight session, a combination really underpinned by a few different things. Obviously, a lot of people still looking out for further vaccine updates, which we're going to talk about in a moment. We've also had Joe Biden's team talking about the fact that they want to avert any type of national US wide shutdown. And there's been some news overnight out of Asia about the largest regional free trade agreement that we've pretty much ever seen. So, equity index futures higher Asia indices following suit. So, just having a look around the markets I just wanted to start with the Nasdaq first of all actually, because just looking on a technical perspective, not only have we broken out of what was kind of the top end of a range of which we're trading in the futures last Thursday going into the overnight Friday session. So, a kind of gap up and break out above that in the recommencement of trade. We kind of stuck around that point during the Asia Pacific session and drifted perhaps just slightly lower down to the bottom end of that band of price activity as UK and Europe have come back in. But interestingly, I've just got a fib retracement on from the initial spike high that we had on the Pfizer. This was following on from around the timings of when the market was just before the Pfizer news was breaking, which was this volatility here. So, just prior to that the start really this time last week from down to the low that we hit the day after the Pfizer news on that kind of very short-term rotational play that was touted for hurting the tech stocks at the time, although a lot of that's been kind of taken back. That's given us a framework then for up and around the 618 on the retracement, which is pretty much to the tick of what's just restricted some of this price activity on this recovery here. You can see on three occasions and so that's the NASDAQ 100. Just going to have a look at the S&P as well, if I just move this back in. So, the S&P got to put it on the daily really to look in context. There's the big Pfizer jump you can see just here on the left hand side, but on the daily that was that huge extension on that wick when that vaccine news came out last week and here we are again now managing to open up. On the daily chart quite a significant technical level we found some resistance back at the end of last week on Friday at the previous all-time high which was seen at around the 35, 86, 87 type area. We opened above that and we've just pushed on and so that initial Pfizer blip high was seen at 36, 68. We're currently trading up around 29, 28 points at the moment at 36, 10. So, firmly through 36, 100 once again for the spools. Quite a look in the other asset classes then. T-notes are pretty flat overall. Oil just been grinding up to the top end of what was a bit of a range of restrictive price action that we saw towards the back end of last week around 40, 80 but has moved high in the overnight Asia-Pacific session just with some of the stuff I've just been talking about from a fundamental perspective in play. The currency markets then in step the dollar weakening overnight. We were down about two tenths of 1% in the dollar index. So, most major pairs are elevated in euro dollar 16 and cable 30 pips. Cable is seeing a bit of a rejection from technically an area of resistance that we saw. This would have been Wednesday going into Thursday overnight session. You've also got overlaying that the R1 on the daily pivot levels in the futures and the market just rejected and they're up and around those highs and drifting back down now as European players come back into the market. We'll talk about a few things on Brexit. Boris Johnson also self isolating after being exposed according to the track and trace system to someone with COVID-19. Perhaps a bit of a hindrance to what otherwise has been quite a shake up in government with coming this obviously being asked to leave rather than see through his kind of term through to the end of the year was what was originally planned. Elsewhere Gold just giving up some of the overnight gains here more recently just as the dollar has come off its lowest level but relatively just looking at it at the moment going to look for an area of kind of a support zone really at around 82 to 85. This was the previous kind of areas we were looking at the end of last week. We've obviously broken above there on Friday now that might provide a bit of a platform to help support the price if we continue to pull back but we're back to flat in Gold futures essentially now just coming up to 7am here in London. All right let's get stuck into the news then. I really want to give you guys a kind of an update what's going on and one of the main things to look out for this week and this was one of the first things was why is the market up this morning. Now one of the things I was looking at at the weekend was a lot of people anticipating what approach is Joe Biden and his administration when they come in going to take particularly on the issue of COVID-19 and subsequently the impact that that could have on the economy and what this article was basically suggesting is that two of the president-elect Joe Biden's coronavirus advisors said that they were in favor of targeted local measures to stem the pandemic as opposed to a nationwide US lockdown which they saw as too blunt an approach. So remember a lot of people were a bit apprehensive about Biden. He had said before and remember when a lot of those televised debates were happening about the fact that he would just lock down the entire country. As I said at the time I always thought that that was very much a political statement something which he wouldn't follow through with given the impact that that would have on the economy and this is kind of what these press reports this morning are suggesting but the market taking for sure probably a degree of relief on the back of that because as we know any type of national wide lockdown would have severe repercussions in terms of the economic recovery and would enhance that prospect of a double dip kind of recession idea. So that's definitely one thing. The other side of things has been this coming out of Asia so Asia Pacific nation is including China, Japan, South Korea overnight basically have signed the world's largest regional free trade agreement encompassing nearly a third of the world's population and GDP. So a bit further context then supporters of the trade pact it covers around 2.2 billion people with a combined GDP of over 26 trillion US dollars so that it would bolster pandemic weakened economies by reducing tariffs and strengthening supply chains with common rules of origin and codifying new e-commerce rules. So yeah quite substantial news there coming out of Asia and as mentioned and that's another reason for why we've had quite a positive movement in markets across asset in the overnight session. Separately overnight and was well over the weekend in China some economic data industrial production came out year on year 6.9 percent expectations were for 6.5 percent their retail sales number a touch soft but overall still fairly consistent in that respect and picking up on prior readings. We talk quite positive though there certainly is something which is a more negative that needs to be monitored at this point and it's something we talked about a lot last week and that is the developing situation of COVID in America so at the moment the market is kind of in this short-term state of positivity on the things I mentioned but still the biggest risk to this on a sentiment basis and therefore price is going to be the kind of rate of which then death counts start to rise in America as a byproduct of the increased matter cases that we've seen and then ultimately what type of measures do get adopted by the US. So over the past week in the US there've been an average of 145,712 cases per day that's an increase of 80% from the average just two weeks ago case numbers a case numbers up 80% comparative to two weeks ago there's been more than 1200 deaths reported as of Saturday at the weekend pushing the seven-day average to more than 1120 a day that's a 38% increase from two weeks ago but remember that as we were talking about some of the science and mathematics being run last week there's approximate three-week lag between deaths then behind that of the case count if the case count is still accelerating as it has been well then we can anticipate and then this death rate is likely and this bottom chart here not only going to supersede where we were during the Sun Belt breakout in the summer but it's going to get back up towards this initial first wave peak which was in excess of 2000 at the time. Other things then to be aware of on the the Covid side globally in terms of on the East Coast New York City schools will remain open on Monday remember that was a bit of a talking point at the end of last week about if it got to a certain level that closed down but it hasn't quite got there yet and that's so positive tests of Covid-19 haven't risen above that threshold for closing down. New Jersey reported a record number of infections for a second straight day at the weekend just over four and a half thousand meanwhile stepping across the pond and over into mainland Europe Germany have said they must live with considerable restrictions against the spread of Covid-19 for at least four to six months according to the Economy Minister and Austria's government has ordered one of the strictest lockdowns in Europe and around the clock curfew will apply from Tuesday with people only allowed to leave their homes to buy groceries travel to essential work or provide urgent care so the most strict that we've seen basically adopted then since the initial outbreak that we had back in back in March as far as the UK is concerned the case numbers on Sunday around 25 000 relatively in line with the seven-day kind of average however they do tend to be undercounted at the weekend so numbers still fairly high in the case of the UK. That being said as I mentioned Bojo somewhat ironic he's now self-isolating once again remember he already had contracted Covid-19 what would have been a few months ago now but given his exposure to someone he's now having to self-isolate which comes at quite a pressing time for him politically of course quite significant restructuring in terms of some of his key strategic advisors given Cummings exit that we saw at the end of last week so it'd be interesting to see how that plays out as the week continues. Talking of then the virus we've got to talk about the vaccine and there's a couple of things I'm looking out for this week that I think could be important and first off is going to be Moderna they're likely to release their first interim results on their late stage trials of its Covid-19 vaccine candidate experts have said Moderna's candidate which uses a similar type of technology to Pfizer will also likely to be or prove to be highly effective the one thing I would say though is just given how markets have been moving of late and also it coming second to the initial surprise announcement press statement coming out of Pfizer I'd say that the Moderna update probably has largely been priced in at this point some other things to be aware of though Johnson & Johnson they're launching a UK trial of its experimental Covid-19 vaccine it's the third experimental vaccine to enter late stage trials in the UK following the ones that have been done by US company Novavax and the joint one between University of Oxford and AstraZeneca on Sunday as well the French pharmaceutical Sinovya Ventus their French chief came out and said that coronavirus vaccine developed by the company will not need to be super called and a normal refrigerator would suffice according to AFP news obviously that's quite an important point being explicitly made there by the Sinovya chief given that's one of the biggest issues perhaps then to the logistics of the Pfizer shop giving it has to be stored in ultra cold temperatures moving on then to other order of play so we're going to talk about Brexit we've obviously moved through what was supposed to have been a deadline self-imposed somewhat yesterday there's obviously no dealers yet so people looking further forward now as talks resume in Brussels today ministers UK has hinted that Brexit talks could stretch out beyond this week citing the environmental secretary so they've already said going into a fresh new week actually nothing might happen this week and it comes after David Frost the UK Brexit negotiator has basically said that he was heading back to Brussels and UK would not be changing its position in the coming talks and obviously state aid and fisheries still the main stumbling box at the moment I still stand by my view I don't think they're going to get anything done this week I don't in fact think they're going to get anything done for a number of weeks not until we get down to around mid-December to late December when there is some of the final parliamentary EU gatherings happening there was even an EU Parliament official over the weekend talking about doesn't really see a deal happening until around that time mid-December so it's almost like the fact that they're saying that if I was a part of the UK team I'd be like right well if they're willing to do that let's take it all the way up to the end I mean this is just the general nature of negotiation so the exiting of Cummings I think does help certainly if I was thinking about the UK kind of strategy I certainly would use that as a bit of leverage in these talks saying that you know Dominic is gone now so therefore look we can let's start to move this forward a little bit good faith kind of talks on the back of getting rid of what is the chief architect of the overall idea of Brexit in the first place I think that could be done as quite positive I still think a deal will inevitably get done it's just the fact that we need some kind of more definitive legal end date like the end of transition to really I think get this over the line so I think you'll probably get some more updates as we go through the week but again I start this week as we started last week with pretty low expectations about the real outcome of how far these talks will progress as soon as by Friday. Other thing I noticed in the weekend news probably worth mentioning is about OPEC ministers to focus on a postponement of three to six months according to delegates familiar with the talks who are asked not to be identified and that's in regards to eyeing and delaying a delayment in the supply boost which we remember was supposed to come in in a staggered fashion but with things like Covid 19 kind of picking up pretty much globally and then that going to result in various different lockdowns and restrictions the demand still looking pretty scant at the moment means that then this supply deal is probably just going to stay as it is for the time being with a further extension the reason why this is important why I'm pointing it out is the OPEC plus they'll be having an interim meeting on Tuesday to review the market a final decision there on whether they're going to go for three to six months it's not going to happen for a further two weeks then they meet right at the end of the month essentially going to the first of December looking at the calendar then for this week what have we got and just going to give you a very broad summary so as far as today is concerned it's pretty quiet in terms of major economic data you've got the US empire manufacturing number at 130 the one thing I would like to draw your attention to right from the beginning though the central bank speakers you've got Christine Lagarde speaking today at 1 p.m. London time you've got Lagarde speaks on Tuesday she has a rest on Wednesday she then speaks in European Parliament on Thursday and then comes back at the European Banking Congress on Friday so Christine Lagarde is speaking from the ECB president pretty much every day this week barring Wednesday the Bank of England speakers really start to ramp up as well so today you can see you've got Haskell I've got a list here so Haskell's on Monday the governor Bailey and Ramston are speaking on Tuesday and Chief Economist Andy Houda speaking on Wednesday and then you've got some Fed speakers as well listed in amongst them but no Jerome Powell at least at this point so quite a few central bank speakers to account for I think with these speeches at this present point in time no one's expecting anything kind of groundbreaking to come out here the stall is already kind of set for perhaps the ECB then to commit to a fairly sizeable 500 billion increase to their their PEP program coming in December the Bank of England meetings and the Fed meetings were all so recent that there's no real reason for them to move the needle a great deal but obviously these are the main people in markets who can really influence price so it's definitely worth bearing in mind when you're going through and you're taking on any position just the timings of these particular speeches so Monday's pretty quiet overall we're then going to Tuesday we get US retail sales figures they are expected to show that month-on-month growth slowed in October the headlines expected a plus 0.5 percent the prior reading was 1.9 percent and this comes ahead of the key holiday shopping season as the effects of fiscal stimulus fade in coronavirus pandemic continues to worsen at this point in time it will include amazon prime day numbers so it'd be quite interesting to see how the overall number performs if you were to X that figure out because obviously that is a particular popular day for online retailing but overall I'm not sure how important really US retail sales are because quite frankly this is October numbers and going forward now people are inherently forward-looking things will deteriorate probably going into November December particularly given the COVID situation as I said and the lack of further fiscal stimulus as we've seen in the US moving on then going through the rest of the week you start to then see some UK data coming in you've got UK CPI on Wednesday you've also got UK retail sales and it's coming out on Friday again that retail sales figure in the UK is for October I think that is pretty much redundant at this point because if you remember the UK since has now gone into the latest state of nationwide restrictions due to COVID-19 so regardless of what this figure comes out with it's going to get worse probably most likely at this point in time given that fact so in terms of inflation pretty similar I don't really see that as a market moving event otherwise what what classically would be a tier one piece of information going through then to Thursday as I said you've got Lagarde speaking again even twice in one day at the beginning and afternoon you've got some other things your weekly jobless claims fully fed business outlook existing home sales coming out of the States and then on Friday as I said you get UK retail sales number public finance data as well so and that's it so overall data-wise I'd say fairly quiet but mainly because anything that is big like retail sales in UK and US a lot of that I think is it is quite backward looking by nature giving it's hard data and the market a little bit more sensitive about trying to manage the ongoing kind of perception of the near-term outlook with that being said then any of these virus updates are going to be quite quite key of course the market is back up around these quite elevated levels Joe Biden is I believe due to give a speech later on today with Camilla Harris I think it's happening I've seen conflicting reports some saying 4 45 p.m. London time some saying 6 45 p.m. London time I did think when I initially heard that that perhaps that could be quite an interesting speech given how is he going to he plans to tackle the situation with COVID-19 because that's going to have implications of course for the economic outlook but seemingly that's already come out in regards to these two COVID advisors that he has who have said they want to go for localized approach which obviously has net is a benefit in terms of how markets tend to react so that company with the Asian news overnight with this new free trade agreement has seen things off to a positive start but obviously some significant risks as discussed still on the table for the week ahead all right that is it going to leave it at that if anyone has any questions at all obviously if you're watching this on YouTube feel free to just leave a comment I'm absolutely happy to help but have a great week ahead thanks so much


All right. Good morning. Thanks for coming. My name is Andrzej Piotrasiewicz. I work for a collaborator. And today you will hear about modern USB gadgets with custom USB functions and its integration with system D. I guess in this room there are at least some people who own this kind of a Linux machine. And from time to time you connect it to a PC to for example transfer your pictures. And then your machine acts as a USB device. While you most probably consider yourselves users of such devices today I will show you how you can actually become creators of similar USB devices. To illustrate the covered topics I will show you a live demo. So by the end of this presentation you will understand how to create USB gadgets and integrate the creation with system D if needed. Of course you need to follow some rules. The set of available components for creating your gadgets is limited but I will tell you what to do if you want your custom USB function. You need to use some tools and want your gadget creation integrated with system D if it happens to be running on your device. You can treat this slide as a roadmap of today's presentation which will take about 25 minutes and then a short demo will follow. So in USB there are two distinct roles. A host and a device. Today our focus is on a device. Speaking precisely on a device implemented as a machine running Linux. Such a machine must be equipped with a piece of hardware called UDC, a USB device controller. You can also come across the term OTG on the go device which can act either as a host or a device but for the purpose of this talk we will be using the term UDC. Such a machine can be called a gadget. Before we move on to composing such gadgets let's learn about some rules about composing them. Knowing about USB endpoints is important to you because ultimately all USB communication happens through endpoints of which there are four kinds. Control, bulk, interrupt and isochronos. You can compare USB endpoints to ports in TCP IP transmission. So in a host there can be a number of ports open each providing a different service. Similarly in a USB device there can be a number of endpoints each providing a different flavor of data connectivity. Control endpoints are for transmitting control information such as the selection of the target endpoint to the device. USB is a serial bus after all so before any transfer the controlling logic must specify the target endpoint of the next transfer. Bulk endpoints are for transmitting potentially large amounts of data with data correctness guarantee but without timing guarantees. Interrupt endpoints are for transmitting information about asynchronous events and they provide both data correctness and timing guarantees. The name is misleading though because in USB all the bus activity is controlled and decided by the host which pulls the device at regular intervals in interrupt transmission. Isochronos endpoints are for transmitting potentially large amounts of data without correctness guarantee but with timing guarantee and are primarily useful for multimedia streams where an occasional loss of a data frame doesn't hurt as much as varying latency does. Sometimes you might need more than one or more than one kind of endpoint which brings the next topic an interface of a USB device. Why am I telling you about interfaces? Because later on we will refer many times to those interfaces implementations. An interface of a USB device is a collection of endpoints meant for a particular purpose. For example a mass storage device contains two bulk endpoints, one for each transmission direction. While an MTP device contains two bulk endpoints, one for each transmission direction and an interrupt endpoint for transmitting information about events to the host. In the Linux kernel we refer to implementations of those interfaces as USB functions. The Linux kernel provides about 20 different functions and in fact a device can provide more than one such an interface at a time so let's see how this is organized. A configuration of a USB device is a collection of one or more interfaces. The standard allows more than one configuration in a device but in practice multiple configurations are rarely seen. So to recap this time in a top-down fashion. USB device logical view is a collection of configurations each of which is a collection of interfaces, each of which is a collection of endpoints. Now let's see what to do if we want a USB function not provided by the Linux kernel. There is a special USB function which you can use as a component of your gadgets. It is called function FS and as its name implies apart from being a USB function it is also a file system. A pseudofil system to be precise. And it is used to delegate actual USB function implementation to user space. When an instance of function FS is made available and mounted it contains only a single file called EP0. Its name is an allusion to the endpoint 0 all USB devices must provide. The user space must then write to this EP0 file binary description of interfaces, endpoints and strings provided by the Eurocustom USB function. Strings are human readable descriptions of your function and they can be presented to the user. After that the kernel instantiates appropriate interfaces, endpoints and strings. And from that moment on a user space program can read, write or poll the EP files to implement your own custom USB function by transferring data to and from the host using regular file operations. Now let's get back to the question of composing a gadget from available components be it kernel provided or user space implemented. The traditional way of composing USB gadgets was to write a kernel module for each combination of configurations and functions. You need to know that even if we limit ourselves to only one configuration. And we choose any number of available kernel provided functions. And we only use one instance, a single instance of each chosen function. We end up with quite a large number of theoretical possibilities. Even though many of them make little sense, that still makes it impractical to provide all precomposed configurations. And that is why since about the end of 2012 you have the option to compose your gadget at runtime using a dedicated interface. And so now that you know about logical structure of USB gadgets, let's see how to use the dedicated interface. The interface chosen by the community to manipulate USB gadgets is ConfigFS. ConfigFS is another pseudo file system. Internally it is similar to CISFS, but while CISFS is primarily a window through which you can see the internal state of the system. ConfigFS is meant for creating and destroying kernel objects whose lifetime is decided by the user, that is by you. So let's see, we use simple shell commands to manipulate our gadgets. So let's see an example Ethernet over USB gadgets created with the ConfigFS interface. Don't worry we will go through it step by step. So even though simple shell commands are used, you need to know where to look for ConfigFS, what to look for, what kind of things to create and what parameters to specify. An example here indicated in reds, we specify USB device IDs. We create some strings, we create a configuration and a function. We associate a function to a configuration and then make the gadgets available. To ease this process you can use an open source tool called GT, a gadget tool. It allows creating your gadgets from command line step by step or by reading declarative config files called gadget schemes. Let's see such a scheme file for the equivalent of Ethernet over USB gadgets we've just seen. The scheme file is shown in two columns. Thanks to such a scheme file all we care about is what we want created rather than how to poke around ConfigFS. For example, here we declare USB device IDs, we declare strings, we declare the functions we want in our gadgets, we declare our configurations and we declare the association of a function to a configuration. Even though the already covered topics are enough to easily create your USB gadget, for example with GT, now you can have your gadget creation integrated with SystemD. SystemD has been with us for a while and is becoming a de facto standard in many systems. The components of a system are described with so-called units, for example service units, mount units, target units, socket units and so on. These can be managed in a uniform way. SystemD also tracks dependencies between the units and thanks to that it offers high parallelization. Combined with lazy initialization which should result in shorter booting times of our machines. The lazy initialization is possible because many clients are interested only in being past open file descriptors and they don't care about the process behind those descriptors. We will come back to this concept when talking about FunctionFS in the context of SystemD. Now let's discuss the recent additions to SystemD. You need to know that in the beginning of this year two small but important additions were upstreamed in SystemD, from version 243 I guess. The first one is a USB gadget target. It is a target other units can depend on, for example to create your USB gadgets with GT using a gadget scheme. The other one is a UDF rule which fires when a UDC chip becomes available in our Linux machine acting as a USB gadget. The combination of these two with a service unit creates our USB gadgets at UDC's appearance. So let's see such an example service unit. This service unit composes the equivalent of the Ethernet of over USB gadgets we've seen before. It requires configFS, the lines indicated in right. And upon start it uses GT to load and activate our Ethernet over USB gadgets. It must not inherit default dependencies, otherwise a dependency cycle is formed. And it does have an install section, thanks to which you as a system administrator, you still remember that we are talking about USB gadgets implemented as machines running Linux, don't you? So you as a system administrator of such a machine can then use system CTL to enable or disable your gadget creation at UDC's appearance. In fact, you can make the gadget name, again indicated in red, a template parameter, and then have many gadgets to choose from for enabling or disabling using just a single template unit. If you are interested only in functions provided by the Linux kernel, this kind of a service unit is all you need. However, if you want your own USB function implemented on top of function FS, we need some more, and this case is a little bit more complicated. We need a gadget scheme as before. We also need a service unit. This service unit is almost the same as in the previous case. The difference is that we cannot activate and load and activate the gadget at the same time, because activating it at this stage would fail, as the user space demon has not been started yet. So the only difference is the minus O switch to GT load, which does just that, load without activating. This service unit must be enabled as before, and we won't be analyzing its contents again. Since we use function FS, we need a mount unit to have it mounted. And we can use a socket unit to lazily start our demon, and with a socket unit always comes its associated service unit. Before we move on to analyzing the unit's contents, let's see the gadget scheme we will be using. It is very similar to the Ethernet over USB scheme we've seen before. The difference is, the most important difference is that we use FFS as function type instead of ECM. FFS for function FS. The instance name, here MTP, is very important, because later on this will become the name of a device when mounting this function FS instance. Speaking of mounting, we need a mount unit. By definition any mount unit cannot be templatized, this one is no exception. This particular mount unit automates mounting a device called MTP, remember function FS instance name, under run ffs underscore MTP mount point. There is no install section in this unit. It will be activated based only on dependencies after our first service unit, but before the socket unit. So let's see the socket unit. This socket unit is the most important unit from the point of view of activating our user space implemented USB function. It pulls in the mount unit as a dependency, and it does have its install section, which means it has to be system CTL enabled. It must not inherit default dependencies, otherwise a dependency cycle is formed, and it listens for traffic under our function FS mount point, and if some traffic happens, it starts our service unit. So let's see the service unit. Oh, but after the service unit fully starts, it uses GT to finally enable our gadget. Remember that in the first service unit, we only loaded the gadget without activating it. So once the second service unit fully starts, we can then enable the gadget, because the user space demon has already been started. And now the last service unit. This service unit is where you finally reference your USB function implementation, user space implementation of your USB function. So it specifies the demon binary to be launched, and the USB function descriptors and USB function strings for function FS. These are binary blobs, whose format is specified in include UAPI Linux USB function FS.h. They are written to the EP0 file by system D, and the demon binary is launched when it is actually needed. You might have noticed that you need binary blobs containing USB descriptors and strings, and I have something for you. There is a pull request pending, which adds support for creating such descriptors and string blobs with gadget tool. You may find it interesting when creating your own USB functions on top of function FS, because it allows creating the set blobs based on declarative config files. At this moment there are limitations, though, of what kind of descriptors can be created this way. But for basic use cases this extension is already a useful tool. And now is ready more time. You will see a USB gadget composed upon UDC's appearance. It will consist of a single instance of function FS, and the user space implemented USB function will be an MTP responder, called CMTP responder. It is available on GitHub. I will run the demo on this Android U2 board, but any board with UDC available can be used. The physical setup is pretty straightforward. The UART of the board is connected to my laptop with UART to USB converter, and the board's micro USB port is connected to the laptop as well, and that latter connection will be the connection our USB device uses. So here's the console of the board. The board has already booted. Now let's see the ingredients of our gadgets. So the first thing that triggers the whole process is the UDAF rule. So let's see it. On this development board I'm using a Dibian release, which uses system D's release, which predates the addition of the rule and the gadget target. That's why I'm using administrator directories for the files. So let's go to HCUDAF rules D, and let's see the rule. So the rule is exactly the same as in the slides. So basically when UDC appears, it's tagged with system D, and our USB gadget target is referenced. Now let's see the target itself. It's also exactly the same as it was in the slides, a typo, once again. Okay, nothing special, just a target, other units can depend on. Now the first service unit, which loads the gadget without activating it. It's a template unit, exactly the same as in the slides. So the exact start entry in the service section is where we specify the command to be run. So we run gadget tool to load our gadget without activating it. We will be using ffs underscore mtp as the template parameter. The mount units. So we mount our function fs instance in run ffs underscore mtp, so we are looking for a mount unit called run ffs underscore mtp, and it is exactly the same as in the slides. And then our socket unit, it pulls in the mount unit as a dependency, and then our last service unit, which references the demon binder and the string descriptors and the descriptor blobs and the USB function descriptor blobs. Ok, so now let me enable the first service unit and the socket unit, and now I will reboot the board and the gadget should appear. So let's see. The kernel is booting. SystemD has taken over, and in a while we should see, there we go. Ok, we have our, sorry, we have our gadget. It's empty. Let's create a directory, maybe some documents, some more directories. Let's copy a picture to this device. Ok, there we go. It's me attending a conference called Linux Vacation Eastern Europe in the woods near Grodno Belarus. Ok, let's copy the picture back to the desktop. Yeah, so it's the same picture. So there you go, an open source implementation of an MTP device. Ok, so to summarize. Now you know about logical structure of USB gadgets. You know how to compose your gadgets with open source tools. You know how to implement your own custom USB function. And you know how to integrate all that with SystemD. And that concludes my presentation. Are there any questions? Yes. Who did the implementation of the MTP daemon, that SystemD was starting to actually handle the... Can you repeat the beginning of the question? Who wrote the MTP daemon that starts, that handles... Ok, so it's licensed under Apache license. It was originally written by Samsung as part of Tizen. And I stripped it off all Tizen dependencies. I made it available as a standalone MTP implementation. Thank you. Any more questions? Do you have any vision or any ideas how a support for multiple UDC could be implemented? For multiple UDCs. Because now it seems that the target for SystemD it is started whenever a UDC appears. Right. The UDF rule fires whenever any UDC becomes available. Can we start a SystemD target multiple times? Well, I think in that case we might want to further customize our rule to be more specific so that it fires when the UDC wants becomes available. Yeah, yeah. That's a good discussion, actually, because... Yeah. This one of the purposes of this talk to look for maybe better alternatives. Yeah, so thanks for this question. I don't have any good ideas how to solve that, but it's something which came to my mind during your talk. Yeah, yeah. Thanks. No questions. Thank you for your attention.


You're going to die so make sure that you live the best life you can live That's definitely what I've been telling myself. Well, I'm here in Vilnius in Lithuania in the Baltics It's a beautiful view here So much history in this city and in this country. I was amazed to learn earlier that the Nazis occupied this region In World War two and then the Soviets came in and occupied it and the KGB set up here And I'm about to actually go to the former KGB headquarters in that building over there and check it out And these Lithuanians You know have been occupied for you know, we've occupied most of the of the last century and only now have they or recently Since 1991 with the fall of the Soviet Union were they able to declare independence again, and it's making me realize just how You know how much for granted I take my own freedom in my own life, and you know grew up in Australia obviously where everything's seemingly safe and We've never really been invaded with Japanese bombast in Darwin like one day in World War two That was about it. I grew up in a pretty Free lifestyle if you like and I take it for granted when you come here, and you just learn the history About you know countries like this and you you see photos People being led out to extermination camps and the Nazis came in and they took all of the Lithuanian Jews out outside of town and Perform this mass genocide And it makes you just realize well, man How lucky have I had it and how lucky do we have it in today's modern world? So I'm recording this. It's now to 2016. We just you know the world at the moment is pretty safe generally speaking We don't have the fear of mass extermination Looming over our heads. We don't really have fear of countries invading us Sometimes we might feel that depending on you know the current state of war politics But for the most part certainly in my life everything's been pretty okay And then you come to this place and you learn the history and just go wow life is short People have endured such hardship Um You really got to make life Like just live at the best best you can because you never know when something's gonna happen It's just gonna be taken from you or someone's gonna be taken from you. So you're going to die And when you sort of like say that to yourself as dark as that sounds It kind of you kind of realize it kind of inspires you to just Travel do what you want to do Hang out with who you want to hang out with You want to write a book then write a book if you want to start a business start a business if you want a certain type of romantic partner that Make it happen get that certain type of romantic partner Choose how you want to live your life because as the history of this great country will tell us there are times when people come in when they invade you and They either kill you or they force their way of life on you Of course, that's the way of the world in many cases Even Australia where I grew up from you know the English came and settled it in the late in late 1700s and we kind of You know killed out the Aborigines there. So it's not like I'm coming from a I'm so innocent, you know, my ancestors were so innocent either Whatever your politics, whatever your worldview It still doesn't change the fact that we have to just the best life we can now So for me, I love to travel that's why I'm here. I'm traveling Sinky for a work event and then I looked at the map and I saw talent said I'm going I'm just gonna spend seven to ten days and go through Just because I can just because I want to because what am I ever gonna be here again? And so now here I am Showing you the view so you can see it's a pretty magical place So life is short live life the best way that you can let me just grab my scarf here I'm gonna leave you with this last view So what do you want to do? What's on your bucket list?  I hope you get the positive message out of that Dark statement that you're going to die. All right, so from the news in Lithuania Leave a comment down below right now and share this video share it with someone who you think might be inspired by the message