Right, welcome everyone, we're about to kick off. We're gonna be conducting today, for your very eyes, a competition in golf, a round of golf, you might say, that will also be formally verified. So, we're writing smart contracts, and whatever language you prefer, and you'll submit your contract to our CEIs, which will run a suite of formal verification proofs against that byte code. And if you do manage to pass our specs, we have approved the correct contract, then there's a competition for making the most gas-efficient such contract. And in particular, we'll be doing it today within the RC20 since this is the one with the most straightforward specification. So, of course, there's some caveats on what the specification actually looks like, we'll make a little bit of an opinionated choice here, we'll go with that in due time. So, when I said that we'll be doing a competition, I actually meant we'll be doing two competitions at the same time. Namely, there's this EVM Golf competition that I just described, making the most provably correct RC20 implementation. But there's actually a second contest going on behind the scenes, and if you're feeling like the first one might not be too much of a challenge for you, or if you're thinking that formal verification is just a sham, then you can participate in the second competition, which asks you to submit byte code that has some sort of bug in it, but it still passes the specs somehow. If you believe that the specs and the methods that we have created with the formal verification process that has been set up, then you can try to fool it, and you can try to submit byte code that passes those specs, but otherwise faulty in some way. I mean, it's hard to define what there's no more respect to talk about, but I'm sure we'll be able to figure something out. So, you'll be able to compete in both of these competitions, and we'll get to the details soon enough. First, I'm not going to be talking too much about the theory behind what we're doing today because we need to have time to actually do some hacking, but let me just mention that the proving methods that we're using here for this workshop are going to be using the K framework, and we'll be writing our specs and then looking at our specs written in the Act Smart Contract specification language. We'll get into it. Okay, so let's get deeper into the specification. I'll come over to the other side, too. So, sometimes people say that an ERC-20, the ERC-20 specification has a specific sort of specification. It's really not. It's more of an interface that really just tells you what the methods should look like in your contract. It doesn't actually say anything about the behavior, of course. I mean, we have some intuition around what this should be, but there's actually a whole range of different kinds of behavior of different ERC-20 tokens, and it gets kind of annoying when you start dealing with them, and then you have to check whether this particular ERC-20 actually did return a Boolean at the end of its transfer function or what's happening in the case where you're sending to the zero at this and stuff like this. So, in order to actually have the specification, we need to make a choice on all these decisions. And let me present our choices, but before I do that, I'm gonna show you the language in which we're presenting these choices. So, this is our specification format that we have developed in order to be a literate language that should intuitively make sense, uses common mathematical words, and we have created it in such a way that from a small specification like this, we should be able to generate a suite of reachability claims, so proof obligations, essentially, that you can port to right now on the cable, there are more backends that we're planning. And so, let me show you how this works. We have, on the left-hand side, we have the specification in the ACT language, and on the right-hand side, we have a simple transfer function. A simple transfer function for the term contract. So, what we do is, well, actually, let me go back and just say, the main claim of this specification is in this storage header. So, under this storage header, we're saying how the balances of the people involved are being updated. So, we're saying that whatever their initial balances were from valid to valid, they're gonna be updated with a corresponding value as a result of calling the transfer function. Okay, but this doesn't always happen because there are some scenarios where you do call the transfer function and your balances aren't updated, namely, if you don't have enough money to send, or if there's an overflow when you're trying to add the value to the receiver. And so, this should be reflected in the spec. And here it is. We see that there are actually four conditions associated with this particular ACT. And the first three are associated with an if and only if header versus IFF. And that means that in the two specs that are gonna be generated, or the two reachability claims, or two proof obligations that are gonna be generated from this ACT, we are going to assume all of the conditions in the if and only if header. To be true in the past case, and to be false in the failed case. So, what the nature of that claim is, is that it amounts to saying that only if in the case where you are still within range of a Uint256 bit word, then these storage updates should be performed. And when any of these conditions are not met, then we should be in the failed case, and the failed case asserts that everything must revert. No storage updates are to be performed. But there's another type of condition that we can make in an ACT. And that's the if header. And the if header, the conditions in the if header are assumed in both the fail and the past cases. So, obviously this restricts the nature of your claim and makes it slightly weaker by assuming additional assumptions. And so if you have an if header like this, you must have a corresponding next spec that assumes the negation of that if header. So, in this particular spec, we're saying that the caller ID should be different from the two, meaning that the sender should be different from the receiver because we have to treat this case somewhat differently. I mean, actually that would only be referring to a single entry in the storage rather than two separate ones. So, we need to write that spec a little bit differently. And so then during the course of this competition we'll be making, we have a suite of these specs that we'll go over soon enough.  And after they have been run, if all of your specs are passing if all of the proof obligations have been proven, then we will be taking the execution traces. So, the method by which we're proving things is through a symbolic execution and that gives you a complete exploration of the possible things that could happen through the execution of this method. And through this execution trace, we're able to walk down all of the branches and look at the final result in the gas. The final gas results, so the final gas consumed by this method in each branch. And when we do this gas extraction, we take the maximum values of the worst case scenario calling this function. And this is going to be your value that you're competing with. So, we get a symbolic expression like this. If you know your EVM, then you know that whenever you do a storage update, what actually determines the cost of that has to do with whether the storage that you're updating was zero or whether you're putting it to zero. And so we'll see conditions on this forum when they are the most general, but of course you can take the worst case scenario of this and this is what we'll be using. Okay, so with that, let me just say how this will all go down. As I said, all proofs will be running on our service. You don't actually need to do much yourself. Of course, if you're interested, you can come and chat to us and we can talk about it. But for the purposes of this competition, the only thing that you need to do is to write an implementation, get the bytecode of that implementation, the runtime bytecode. And make a PR to a repo that we'll be showing you soon. And everything that is proved to be correct will be analyzed for gas. Okay, so I think it's time to go over the specs. They can be found at this repo, which is the repo we'll be working with. It's kit-opt.com slash applet slash year C20 dash golf. And there's, as I mentioned, there were some opinionated choices we made while making the spec. Well, the first one, the most important ones that are listed on this page will not be caring about logs, so you can forget about logs for your implementation for the purposes of this contest. Everything must revert if call value is greater than zero. So this is following the convention of both vibrant and solidity. And well, this is actually true for the minor caveat. The storage location, so if you know the way that the EVM deals with the storage under the hood is a simple key value mapping of integers to integers. And so in order to translate the variables that are being used in year C20, like balances and total supply and allowances, you need to place these at a particular location of these integer to integer mapping in the EVM. And there's a convention for how you do this. And the most crucial thing to know here is how do you make sure that the, you need to encode basically the balances and the allowances of mappings in a particular way. And this is a particular hashing scheme that solidity uses in order to make sure that whenever you look up the balance of a particular address, you won't have any collisions with any other address in the balance of mapping. So we can go over those details if you want to. But you can actually also use the vibrant convention, which is extremely similar. It hashes the arguments in the same way, but only in a reverse order. But if you're using solidity or vibrator to write your contracts, this will be, of course, not for you. And it's a final opinionated choice. If the allowance of a particular person with respect to some executor is the max possible event, then transfer from should not decrease the allowance of the spender. Okay, and all the submissions are due at 12.25. Let's go over the specs. Hey, sir. So I'll demo now the specs for you and also how the CI server works and I'll cover in detail everything you need to know to participate. Can you see the screen? Yes. Yep. Is the size okay? I think it's a bit bigger. So first, I want to show you the structure of this repo. Has everyone been able to find it, first of all? So we're looking for this repo and I'd get up to ever hopefully hasn't. And I'm gonna show you first just the structure of this. So we've got, we've got in here a readme and configuration file that you don't need to worry about. And the most important stuff is in the source directory. And here, first thing we have are specs, which is in spec.md. And this is the specs that Martin was referring to. This is written as a markdown file and it's got these specs that will be tangled out of it. You do not need to edit this because this is the part that's given to you for target. But you do need to read these if you want to write limitations that will actually pass to make sure that you understand all the nuances. Hopefully not too many nuances, but there are some. So Martin was already covering how these specs look but I'll maybe just pick another one and quickly go over any other features. But the idea is you want to read these and these interface lines correspond to the familiar DRC-20 interfaces. And we use the solidity where you have to be there in contract ABI for competing interface selectors from the call data, which is, I guess, I assume, but basically what that means is that if you're writing the total supply function, that means that the force for bytes of the call data have to be the shot three of this string. So that has to be something like this. So just keep that in mind in case you were wondering how to write this. Of course, if you're writing in solidity or vibra, then this is done for you. So I think hopefully these are pretty readable and the best way to address any difficulties would be when we get to the practical part if you raise your hand or just say something and we can discuss the meaning of these specs if I'm clear.  So you can see, for example, the convention with the return values here at this last line. The bottom means you return one when this thing is successful. So now I want to show you actually how to run this with your own implementation. So if you go back to the source directory, you'll see some other files. And the most important one for you to edit is this file of data runtime, which contains the runtime bytecode of your submission. And you see that there's already one in here, which is the sample one that's provided. This is coming from a basic solidity implementation, the source of which is available or not. Where is it available? It's in the repo in the main directory. So if you go up a little, yeah, that's okay. So this is like the par that you can compare yourself against in the competition. And it also assists you if you find these specs hard to read then you can simply read the solidity and get a handle on what's going on. Yes, so to be clear, this solidity that's in the root of this git repo passes the specs. So your thing needs to be behaviorally equivalent to this. So this is one way to check. And except for the constructor, which we will not be verifying, you don't need to worry about how this contract is deployed. You don't need to worry about how this data is issued once it's deployed. Right, so going back to this, what you need to do is put your bytecode into this file. So you can delete this file and put your bytecode into it. And I think you're actually allowed to, because you'll see in the repo that this is in the, in the read main, this repo, here's how you do that with cell C. So you're with cell C, which you can also use cell C to output, output UL to consume UL and output UL bytecode. And these are the instructions for Viper maybe you have your own funny tools that you want to try. So it actually, apparently it's allowed to have this header, but it's not necessary. So, you know, just specifically having the hex in here as ASCII is fine. I don't know what it, what passes. How cell C will output it. So now I'll show you how this gets processed. And this is enough for the repo structure. So what's going to happen when you submit a pull request where you've edited this in runtime file is our CI server will automatically pick up the pull request and it's going to run the K-frame work groomer using the specs generated from the root of the act language against your, against your bytecode. And then after that execution is done, you know, here's an example of where the CI is running. When this execution is done, if you get a successful proof of the, all the specs, all the reachability that you were successfully proved, you will, it will actually do a symbolic analysis of the gas of all these execution traces and it will calculate as far as what it said the maximum gas consumed. And then there will be a report produced. So here, once you want to track your progress, you can go to dap.ci slash erc20 hyphen golf. And here for every pull request of this repo, there will be a, which is your entry. As you can see here, the last one was 1042. And if you look on the right-hand side, you'll see that there are 16 specs in total and 16 of them were accepted, and you'll see that this is the correct implementation that's been formed in the verified. And now if you click on this link, well, you'll be able to see an overview of how everything passed, but also, very importantly, you'll see next to every passing behavior. You'll see here on the right, you'll see gas and gas analysis. So I want to show you these. So gas is a bit technical, but this is the K term that we extracted from the symbolic execution that represents the state of the gas at the end of every execution of this. This function, the reason it's been complicated is because there's going to be branching in here and it's going to depend on the state of the call data. But that's a little bit hard to read, but the thing that the submission will look at, that the contest will look at is this gas analysis. So if you click that link, you'll see that we have actually said that. Can you guys see this? So basically, what this is showing is that this balance of function is actually going to consume 530 gas in every case. So this is actually a very simple example. But now if we move on to something a little bit more complicated, like this transfer function, and we look at the gas analysis for that, it's a little bit more complicated. So here you can see the first thing is the tree, so that's actually the gas in all the cases. You can see that it's conditional on the starting balance and the ending balance. And then we also compute the minimum the maximum gas used in your contest entry is going to be the maximum gas used. And we will completely ignore what happens in cases where your execution is supposed to revert. So if someone is over-underflowing or they're non-cruel or something like that, we don't care how much gas it used because the user made an error and we're not trying to try to save any gas. So you can do whatever you want in those cases, providing your revert. So I think this probably gives you everything you need to get started. So we're encouraging you to get started as soon as possible because it will take about 15 to 20 minutes for these executions to run in the CI. We can run a few in parallel, of course, but to increase the chances that your submission executes by the end of the workshop, please submit it as soon as possible and don't worry about getting the absolutely best implementation you can because I think simply getting something that makes some improvements over the validity will already give you a good shot. And the goal is to have fun and learn something and, of course, we can continue playing for the next couple of weeks or months if you want to continue to get it down. So just to make this workflow completely clear what you need to do, I'm going to just quickly make a submission to this thing to show you. So here I'm in the ERC-20 Golf repo and let's say I want to make an optimization to the bytecode. And in particular, I'm going to use a tool. I'm going to use a tool that's very nice called SED which stands for Solidity Enhanced Diploma. And what's really nice about it is it actually comes with most unit systems. And Solidity actually uses this to implement these compiler optimizations. In fact, most of the compilers have mentioned this this is the state of the art way to work with optimized bytecode. And I'm going to apply a trick. The syntax is a little bit arcane but it's a really powerful tool. So, for example, if you do a push zero in the EVM what that does is it puts zero on the stack and that costs you three gas. But in this particular case, Pismaric we're in this non-payable regime where he's not supposed to set any value and otherwise it's going to revert. We can actually make sure that most of the time the call value is going to be zero but the call value opcode only costs two gas. So we can actually, every time we need to push zero which would be quite a few times because that's quite a useful number to have. We can actually replace every occurrence of push zero with call value opcode which I'm going to look up here in my little cheat sheet is actually 34 in hex. So if we do this to the fight code that should actually implement this one of the pretty sophisticated compiler optimization. So now you'll see that we've actually, you know, we actually changed the fight code in some way. And I can actually, I'm actually going to commit this and make it pluralized. So now you just go up here and now of course you'll make the pull request on your own fork or whatever. So once I click create full request here it's going to get hopefully picked up by the CI straight away and then we can start verifying and see how much gas we save from implementing this solidity enhanced deployment optimization. Great, it's already running. And if I go to this website which again is dap.ci slash erc20-golf which is a nice dashboard for viewing these builds. You'll see that there's a new one. There's a new one at the top because he's running 16. So none of them have been accepted yet. It's going to take a little while. Form of verification is expensive and slow. And then you'll, but you'll see these, you'll see these gas analysis coming in as these as these groups happen in the next, you know, two minutes probably the first one will come in and also coming in so you can see how you're doing. And you know, hopefully it'll take under around 15 minutes to complete all of them. And then this will be the first, it'll be the first mission and I challenge you to see if you can, if you can beat this one using any tools of your choice. You know, even in an easy way places start is to apply some of these manual kinds of bytecode optimizations. You can also try writing sol-c with the optimized flag because the included submission was not compiled with that. So that should already give you some, some pretty good savings. And then of course, you know, rain and raw Indiana or Yule or whatever, whatever you like will probably give you even more. So I think that's it. And I think it's a good time to start working. And please, this is a little workshop. The idea is you're supposed to ask questions and we might help you understand the spec language or this tooling. So please, please don't hesitate to engage with us and your neighbors. Are there any immediate questions? Yes. Is there a gas at the time function starts or is it a dispatch or all that? Yeah, the dispatch and all that is included. None of the deployment is included. So, you know, the length of the bytecode doesn't matter, but everything that happens from PC counter one until a return is accounted for. You've got to assume that the value is four. Yeah, so exactly, like storage could be anything. But I mean, the storage locations that you'll likely be working with are the ones that come from the mapping of the balances and allowances. So, yeah. Sorry, there's one really important thing that I missed which is to do with storage and thanks for bringing that up. So, I mean, one of the ways that generally you can try to optimize storage is by like packing things together to try to use a storage or something like that. And regardless of whether that would be a good idea for a nearest pony token, that isn't really compatible with our approach here because what we're formally horrifying actually needs to specify exactly where the storage lives firstly and secondly, the semantics of your contract actually change if you start to reduce the size of the integers that you're using because you'll start to overflow in situations where you otherwise wouldn't have. So, that's not really going to work. And in particular, you actually need to look at one more file in this repo potentially depending on how crazy your approach is which is the storage.md, this is the storage specification. And if you're just using Solidity to Viper then all you need to do is follow the order of the storage layout that we gave as an example which is balances total supply and allowances. So, as long as the variables are declared in that order they'll be put in the right places. But formally what's actually going on and if you're using a more low level approach then it's actually mapped out in this file. So, I mean, I hope that probably if you're going to do something like this then you'll already know how Solidity places its variables otherwise it's going to be a few things to learn. But for simple variables that are mappings like total supply, they're just going into the slot number that corresponds to the starting from zero the order that the variable is declared. So, total supply, for example, it lives in slot one. So, if you want to store the total supply you just do s store one in the supply. While mappings like balances and the 2D mappings like allowances are a bit more complicated they're computed using hashes and there's actually two different conventions as Martin said, they're Solidity and Viper and they hash things in the opposite order and by default this file is going to be configured to use a Solidity order. So, this is why it says Solidity here. And if I wanted to use Viper instead what I would do is I would, you need to actually replace this with Viper and then we're going to hash things in the opposite order. For the details of how it's actually hashed I think the best thing would be that if you're interested in experimenting with this is that you raise your hand and one of us could come and show you to make sure that it's correct just because maybe most people aren't interested in that it's not worth spending five minutes explaining it right now. Allowances like, yeah, I think the easiest way to remember source destination, so owner and spender is also correct. Okay, so then let's get started. If you have a question please raise your hand or just ask one interesting piece of information. So, one that I tried with the set to replace six zero zero zero with 34 it actually corrupted something and the formal verification just came back negative, very bad, very bad results. Don't try this one, you will be wasting a time. So, I don't think this is such a success for formal verification. Maybe a bad day for a set. Did it all of them fail or? No, actually just one. Well, the way we set it up is the first failure causes it all to stop, so it doesn't waste time, so it looks like the transfer function failed. So, nothing actually passed before that, it all failed pretty quickly. Again, if that's your kind of, if that's your cup of tea, you know another thing to investigate would be to figure out why this optimization is on stage and maybe how to make it safe. I haven't taken, I only took a small break to get this. So, I don't know what I'm supposed to take watch. I can ask for someone to cover. Okay. I should, do you have a slot? Yeah, I'll type in. I could search for my username. RJ, I don't know what's that. 4-1-5? I don't know what I have right there. Uh-huh, mm-hmm. Yeah, I'll be there for the party, mm-hmm. Okay. But you're supposed to take a look at what you're doing at the party, and that's going to be the end of the session. Okay. What? It's not going to be, it's not going to be an hour, it's going to be 30 hours. See, I don't know, it's not going to be 30 hours. I just want to go by. Okay. I'm just going to start with the debt, that's what I'm going to do. Okay. I'm just going to start with the debt, well, we need to, I'm just going to start with the debt, I'm just going to get it to itsleri. I'm just going to keep it as my debt and see what it actually requires. So I just want to start with the debt, OK. So which one's, let me just, minus M4 to the fourth side line. Why you calls, I'm going to, If you have any questions or comments, feel free to leave them in the comments. It's okay to leave them in the comments. It's okay to leave them in the comments. It's okay to leave them in the comments. It's okay to leave them in the comments. We got a new submission which is a solid D-run with an optimizer flag which comes in clocks in at exactly the same amount of gas as the solid D-run without the optimizer flag. So this literally didn't actually run any optimizations here but we do see that the meta data is different so this can change something but it didn't actually change any of the relevance amount of code. Should try with more optimizer runs. The default means you run it as soon as you like to get this 200 times so it probably just tries to reduce the size of your bytecode to reduce the deployment cost. That's how it works. The bytecode is identical to the very last one. The first one. Yeah, I guess the case here. Again, hard to... Efforts.


Bizarre facts about being an amputee that you didn't really need to know, but now you're going to. So they sewed my calf muscle right back here when they did the amputation, meaning that I can still flex my little leg. It looks weird, doesn't it? I love it. But this comes with one major drawback. I have no way of stretching this out.  This is no way of being stretched. So if I flex it too much, if I'm doing something active, it can get crazy bad cramps that I have no way of solving aside from waiting them out. It's kind of bizarre, but I do get to do that and it weirds people out. So I'd say it's worth it.


Good morning. My name is Suresh Singh and I have prepared this video to give you the information of the project that I have prepared for the National Science Concourse 2015. I have made an amplifier using a matchbox. The materials required for making this amplifier would be an old matchbox, 3 pieces of lead, 3 pieces of wire, a battery and then your phone so that you can hear this out. So I started off by taking my matchbox and making 2 holes at each end at a regular distance. Then I took my lead and inserted it through the matchbox leaving a gap of about 1 cm in each end. After putting in both my leads, I have flattened out one part of it so that I can make my other lead stable on these 2 leads. So this amplifier is now complete. So the only part which is left is now to connect the wires. So take the first wire, connect it from one lead to one terminal of the battery. The second wire from the other terminal of the battery to one the tip of your headphone. And the last wire you have to connect it from the other end of the headphone to the other end. And now the circuit is totally complete. I have to try this out and I'll check if it's actually working. And yes, I can actually hear the sound of me tapping the lead on the other 2 leads. You can't hear the sound right? So to make you prove that it's actually working, I'm going to take help of the Morse code. Morse code was a secretly designed language in the earlier days which the United States of American soldiers and the headquarters used to send messages to and through without letting anyone else know. Now I've changed my small wires with a long length of wire and my friend Aditya is sitting in the other loop. Now he'll try to send me messages and I'll try to decode it and I'll write the message on this chart paper. As the sentence he sent was, science is fun. I hope you enjoyed my video. Thank you.


Welcome to the presentation of the STM32WB Direct Memory Access Controller, or DMA. It covers the main features of the DMA controller module, enhanced by the new DMA Request Multiplexer, or DMAMux module. The main application benefit of the DMA is to offload the CPU for data transfers from any memory map source towards any memory map destination. STM32WB DMA features two DMA controllers. For each DMA controller, it is possible to do programmable block transfers with seven concurrent channels, each of which is independently configurable, programmable channel-based priorities, and data transfers via the AHB master port connected to the bus matrix. There is also a DMA Request Router, or DMAMux, with programmable request source selection, either from a peripheral in DMA mode or from a trigger and then internally generated. Synchronization mode from a synchronization input or hardware event with a DMAMux request counter. Request chaining with the DMAMux request counter to generate an event that is an input trigger or synchronization to another request or channel. There are 36 peripheral requests and four DMAMux request generators. There are 20 triggers and synchronization inputs. There are 14 DMA channels or requests. Let's focus on the STM32WB DMA controller. Each channel of the DMA controller is independently configurable. A channel can be assigned to a DMA hardware request from a peripheral in peripheral to memory or memory to peripheral data transfers. Alternatively, a channel is assigned to a software request in memory to memory data transfers. A channel is programmed with a priority level and a channel is programmed for a number of data transfers at a block level. The software can control a channel via the separated interrupts and or flags upon programmable events such as a block transfer complete and or a half block transfer complete and or a transfer error. A faulty channel is automatically disabled in case of a bus access error. A channel is programmed for a number of data transfers at a block level with independent source and destination data size. Independent source and destination start address. Independent source and destination address increment, either contiguously incremented or at a fixed address. Programmable amount of data to be transferred within a block, up to 65,535 source data, automatically decremented by hardware. In circular buffer mode, continuous data transfer from or to a peripheral when a block transfer is completed. The programmed amount of data to be transferred within a block is automatically reloaded by hardware as well as the source and destination start addresses. In memory to memory mode, a block transfer starts as soon as the channel is enabled. There is no hardware request. Whereas in peripheral to memory and memory to peripheral modes, a block transfer starts as soon as both the channel is enabled and the peripheral sends a DMA hardware request. A DMA hardware request identifies a single DMA data transfer. Each DMA hardware request is paced and granted by the DMA when each data is successfully transferred to the destination. In any mode, channels arbitration is reassessed between every data transfer. Each DMA channel can notify software with an interrupt triggered by any of four possible events. Half block transfer completion. Block transfer completion. Transfer error. Any of the three above events. In other words, global. The DMA MUX has two main sub blocks, the request multiplexer and the request generator. The DMA MUX request multiplexer enables routing a DMA request from the peripherals to the DMA controllers. The routing function is insured by the programmable multi-channel DMA request multiplexer. Each channel selects a unique DMA request unconditionally or synchronously with events from its DMA MUX synchronization inputs. The DMA MUX may also be used as a DMA request generator from programmable events on its input trigger signals. A DMA request multiplexer channel generates both a request to the DMA controller and an event that can be used as a synchronization input as well as a trigger input. Do not confuse DMA request generator channels 0 to 3 with DMA request multiplexer channels 0 to 13. For each multiplexer channel, there is a configuration register. DMA MUX CXCR with programmable input request selection via DMA REQ ID field. For each request from a peripheral working in DMA mode, a DMA REQ ID is assigned. DMA REQ ID equals 0X00 corresponds to no DMA request selected. After having configured this channel and the DMA controller channel to which it is routed, the DMA channel can be enabled. It is not allowed to configure two different channels with the same DMA request input. For each multiplexer channel, a built-in DMA request counter is programmable via the NBREQ field. A served DMA request decrements the program DMA request counter. At its underrun, the DMA request counter is automatically reloaded with the programmed value in the NBREQ field. At its underrun, a DMA MUX event can be generated if enabled via EGE field. Two DMA MUX events from channel 0 and 1 are looped back and connected to the DMA MUX as trigger inputs and synchronization inputs. This allows request chaining for another different DMA channel via synchronization and or trigger. For each multiplexer channel, there are two operating modes, as programmed via the SE field. Unconditional mode, input request is output as is. Synchronized mode, a number of requests is grouped and delayed or synchronized. When the request multiplexer channel is configured unconditionally, SE equals 0, the DMA request is transmitted as is and as paced by the DMA controller. When the DMA controller is served a day to transfer, the DMA request is de-asserted and the built-in DMA request counter is decremented. At the counter underrun, if enabled via the EGE field, an event can be generated. In synchronous mode, additionally, the request is conditioned with a programmable synchronization input selection via sync ID field, a programmable synchronization event, none, rising, falling, or either edge via SPOL field, or the single built-in request counter via NBREQ field that may be also used for event generation. After the synchronization event, output DMA request is connected to the pending input request. At the counter underrun, DMA output request is disconnected from the multiplexer channel input. Finally, a synchronization overrun flag, or SOFX in DMAMux CSR is reported if a new synchronization event occurs before the counter underrun, or an interrupt is then generated if enabled via SOIE field. When the DMAMux channel is configured in synchronous mode, its behavior is as follows. The request multiplexer input, or DMA request from the peripheral, can be pending, and it will not be forwarded on the DMAMux request multiplexer output until the synchronization event is received. Then the request multiplexer connects its input and output, and all the peripheral requests will be forwarded. Each forwarded and granted DMA request decrements the requested multiplexer counter set at a defined programmed value. When the counter reaches zero, the connection between the DMA controller and the peripheral is cut, waiting for a new synchronization event. For each underrun of the counter, a request multiplexer can generate an optional event to synchronize and or trigger a second DMAMux request multiplexer channel. The same event can be used in some low-power scenarios to switch the system back to stop mode without CPU intervention. Synchronization mode can be used to automatically synchronize data transfers with a timer, for example, or to condition transfers from any peripheral event that is mapped as a synchronization input. Additionally, a synchronization overflow can notify the software if a programmed number of DMA requests has not been completed between two synchronization events. For each request generator channel, a DMA request can be generated following a trigger event and selected as input of a DMA request multiplexer channel via the DMA-REQID field of the DMA-Mux-CX-CR. The request is generated via the configuration registered DMA-Mux-RGX-CR if enabled by GE Field with Programmable Trigger Input Selection via SIG ID field, Programmable Trigger Event, None, Rising, Falling, or Either Edge via GPOL field or a built-in request counter via GNB-REQ field. A served DMA request decrements the programmed request counter. At its underrun, request counter is automatically reloaded with the programmed value in the GNB-REQ field and the request generator stops generating a request. A trigger overrun flag or OFX in DMA-Mux-RGS-R is reported if a new trigger event occurs before the counter underrun or an interrupt is then generated if enabled via OIE field. On a trigger event, a programmed number of DMA requests, GNB-REQ plus one is generated. There may be a trigger overflow if two trigger events occur before GNB-REQ plus one requests and data transfers are completed. The table shows the STM32 WB mapping of the DMA-Mux request multiplexer inputs for any channel. Assigning a request input is programmed by the DMA-REQID for any DMA-Mux request multiplexer channel or DMA-Mux CXCR register. The same request input must not be mapped to two different channels. This table shows the STM32 WB mapping of the trigger inputs and the synchronization inputs for any channel. Assigning a trigger input is programmed by the CIG-ID field of any DMA-Mux request generator or DMA-Mux RGXCR register. Assigning a synchronization input is programmed by the CIG-ID field of any DMA-Mux request multiplexer channel or DMA-Mux CXCR register. Each DMA-Mux request generator channel can notify software of a trigger overrun. Each DMA-REQUEST multiplexer channel can notify software of a synchronization overrun. This table indicates the state of the DMA controller and DMA-Mux according to the power mode. In sleep and low power sleep modes, the DMA controller and the DMA-Mux remain active and can be used, for example, to transfer UART or I2C received characters to memory and afterwards to wake up the CPU. Thank you for watching.


Live from Las Vegas, it's theCUBE. Covering VMworld 2017. Brought to you by VMware and its ecosystem partner. Hi, I'm Stu Miniman here with my co-host Keith Townsend. Happy to welcome to the program first time guest, Paul Hodge, who's the global marketing manager of Honeywell Process Solutions. Thanks so much for joining us. Thank you Stu. All right, so Paul, you have to tell us, you know, so Honeywell is a company, I think many people are. The Process Solutions, maybe you tell us a little bit about that part of the organization and what your role there. Sure, sure. So yeah, Honeywell, multinational conglomerate, 130,000 people, sort of $40 billion. Honeywell Process Solutions is then a subdivision within Honeywell that serves the manufacturing industry. So we go through and provide goods and services that allow people to go through and automate their plants, whether those pharmaceuticals or refining and those types of things. Yeah. All right, and your role here coming to the show, you're actually a partner of VMware. Yes, we are. Sometimes we've got tons of practitioners here. So tell us a little bit, you know, manufacturing, I think I know a few places where, you know, that makes a lot of sense for VMware, but tell us a little bit about the history of the partnership and your role there. So we've been partners with VMware since 2010. So it's been a long, long time partnership and we've been bringing virtualization into the manufacturing industry because we're typically quite conservative as a company in terms of adopting technology. So it really takes an automation leader like Honeywell to go through and drive a new technology into the industry. So we've been doing that since, yeah, since 2010. And yeah, this week where we've been going through and talking about our new HCI, hyperconversion infrastructure sort of solution that we've been doing sort of with VMware and along with Dell EMC, yeah, that goes through and takes that a step further into our industry. Wow, so that's pretty interesting. From a, you know, I've worked in pharmaceuticals, manufacturing organization, and automation of IT is pretty difficult because of regulatory issues, et cetera, safety. What are some of the challenges that Honeywell is addressing in automation, specifically around VMware products? Sure, sure. I think the number one thing for our industry is purely simplicity. That people in our industry, they're not IT geeks. They don't have all of this knowledge. They don't have a storage administrator out there. So we have to go through and do all of that for them and take all of the complexity sort of out of the product. So it needs to be simple, but it just needs to be reliable as well. Like, I mean, we're dealing with your refineries and pharmaceutical plants and things like that. So the things just cannot stop. So you need the simplicity with the reliability and availability and have both of them in a sort of a package that's ready to go. And the other complexity is that we need about to deliver this anywhere around the world. And that's the other reason why it needs to be simple because it's not just going to North America. It's going to Europe. It's going to the Middle East. It's going to all different places. Yeah. All right, well, you say simplicity and anytime we've been talking about hyperconverged infrastructure, simplicity is usually the top thing. It's one of the big benefits. It seems like a natural fit there. Maybe take a look, you know, what is the solution? What's made up of it? You said Dell EMC is part of it. Of course, VMware is part of it. How is it different from say, you know, the VX rail that Joe's been offering, you know, VSAN hit 10,000 customers. What differentiates this compared to everything else that's available? So we're taking the VSAN, which is absolutely, as you were saying, 10,000 customers out there, very mature, very reliable. And we're taking it and sort of marrying it with the Dell EMC FX2 solution there, which is an extremely powerful platform and flexible platform for going through and running sort of VSAN on top of it. So we've taken those two best in breed products there and we've gone through and built a reference configuration that's customized and optimized for the manufacturing industry. Yeah, it's interesting. Keith, I mean, I remember in the FX2 launch, everybody's like, wait, is this an HCI solution? Will it be there? Will this be a platform for it? I don't know that, is there anybody else leveraging that for this type of solution yet or? So VSAN is a very, very popular sort of platform for, yes, oh, sorry, FX2, thank you. Yeah, I know VSAN is, but the marrying of those two together, is that a standard offering that was out there or is this something that you thought of? Yeah, it certainly is. I think there might be a VSAN-ready sort of version of that as well. But the reason why it's quite popular is because I can go through and have four VSAN nodes in the one FX2 chassis. So I can have a VSAN in a box with the FX2 solution, which just makes it quite a nice fit. But it's really, the hardware platform aside, the value add that Honeywell's providing is just really the integration of those products, building a reference design that's optimized for our industry and testing out all of the stack and delivering that for our market. So talking about building out the stack specifically for a manufacturing, can you talk through who's the end customer, who's actually buying the solution? As you say, someone may not have a storage administrator, are you guys selling to IT or manufacturing operations? Mainly to the manufacturing part of the business, which is why it needs to be so simple. It's because those IT resources that you would normally have in the IT side of the business, they're just not there. And so we go through and sell to our customers there, refiners, pharmaceutical plants and things like that. And typically Honeywell is the one that's then engineering the overall solution to solve their manufacturing problem. So we deliver it to our own engineers and our own engineers then customize that to go through and solve a manufacturing problem. But in our industry, there's typically quite a big separation between the IT part of the organization and the OT, if you will, part, and which is why the simplicity is such a big part of what we do. Yeah, Paul, can you expand on that at all? Something we've, from the research side, been looking at kind of the IT, OT. Sure. You know, what you're hearing from customers. Sure. So I think the main reason, traditionally why that separation has been there is just on the OT side, there's very, very different needs in terms of reliability and availability and criticality and what happens if certain things just go wrong. And traditionally those skills have been in a separate part of the organization to the IT part of the organization. So in some companies, those two worlds are absolutely converging and IoT is certainly a big thing that's driving that convergence. But in other organizations, they are still remaining separate. It's just the cultural way that that company has gone through and run itself. So I think whether they are merging those worlds or whether they're staying separate is really changes on a corporation by corporation basis. So let's talk a little bit more about that OT customer. One of the things that's been my experience, you walk into a manufacturing floor, you'll see a system that's 15 years old easily. They treat these things, this is a tool. And that tool is just there to do a function within the manufacturing process. But with all of the malware and the encrypted and shutting down entire operations perspective, how are you helping OT get to a point where they accept I guess the flexibility that's needed in operations to support something like a FX2 on their data center floor with running VCN? Sure, sure. I think first of all, it is that simplicity. I mean, if it's too complicated, then it just will not be accepted for something like that. So that simplicity and the reliability as we've already spoken about there. But I think Honeywell there is there as well, helping that OT side of the business to be able to go through and deploy a system of that level of complexity. Because as you're saying there, it is very different in terms of the 15 year old sort of thing that they might be upgrading from. But it delivers just so many benefits from them. I mean, going from a hundred servers, which is what I say some plants typically might go through and have, and you're just going to maybe two FX2-based clusters of our systems there, it's just a massive reduction in terms of hardware. And with each piece of hardware, we remove that space and power and cooling and maintenance and everything like that that goes away with it. All right, Paul, talking about different architectures, you mentioned IoT, so have to imagine that's having significant impact on your industry. It is. Walk us through that. What are you seeing? What's Honeywell's role there? You know, what are your customers doing? It's actually an interesting area for Honeywell process solutions because, I mean, first of all, we've been doing IoT for 30 years in terms of really from a Honeywell process solution. You were the hipster IoT guy. Really? Oh, that's good. That's a compliment. You were doing IoT before it was cool, I guess. Yeah, exactly. So yeah, we've been out there doing that. I mean, our job in Honeywell process solutions is to take field data, marry it with an edge device, create value there, and sometimes just make that available on the internet. Now, but getting back to your question though, is that the IoT wave though is changing how we go through and do things. I mean, first of all, is that there's data that's out there that previously people wouldn't have considered valuable. Okay, so that data, they're trying to extract that data out there, and so we're, I guess there's a wave, if you will, of trying to get that previously non-vailable data out of the field. So that's one part there. Sometimes as well, projects are very, very geographically dispersed. So traditionally you would have had like a plant infrastructure and it would have been a self-contained area, but now it can be over a very wide geographical area. So you've got to have a controller, which potentially is on the internet, and have that be highly secure all the way back to then the sources that need to go through and consume that. So that's a difference and how it's going through and impacting us. But I think as well, there's a, it's I guess building an awareness out there in the market of trying to go through and extract more information and more intelligence out of the data that people are already getting and driving new waves there as well. So what are some of the lessons you're helping, especially OT understand when they move from this isolated manufacturing network to this distributed network that they're extracting value from, but they're also exposing security risks and just, you know, control risks. They're not used to operating at this multi-manufacturing facility perspective from a IT perspective. They're in essence becoming IT. What are some of the pitfalls you're helping them to avoid? Sure. I think security is a great one that you've just gone through and mentioned there is that anything that we're data that's running the plant by first and foremost needs to be secure in terms of going through and doing that. So I think that's one of the first things is how you go through and design that system and make it secure. And so I think that's one of the areas there. But also to extract data and value out of it requires infrastructure to be able to store the data, to be able to go through and allow third parties to do analytics and other types of things on top of that infrastructure. So Honeywell's doing a lot to provide that back-end infrastructure that people can go through and do data mining and do analytics and solving those new problems on that infrastructure. So this power of FX to the Dell EMC reference architecture the VMware vSAN gives a awful lot of compute. I think competitors like AWS will come and say, you know what, AWS snowball edge is designed for this big data use case where we can ingest IoT data at the edge, do some light processing on it. What are you running from a practical perspective that you're seeing users say, you know what, that just isn't enough. We need this power of the FX to this Dell EMC reference architecture and vSAN. Sure, sure. So I think it's serving a different market segment. So absolutely there's a market segment out there that says, I'm prepared to take my data and put it into one edge device and send it to a cloud into AWS or to wherever, okay? And that is absolutely a market segment that's out there. But there's another segment of market and it is quite large for manufacturing that says, no, the data that I'm ingesting needs to stay within my corporate control, okay? Within the boundaries of the corporation, okay? And it's those types of customers there that need that on-premise compute capacity to be able to ingest that data, to be able to display it to operators, to be able to go through and do other, solve other problems sort of with that data. It needs to be local. And that couldn't just be because they just don't trust it, it's sort of, because remember we lag in terms of our adoption. We're sort of laggards as an industry in general. So yeah, so I think it's a lot of those types of reasons there. Yeah. So I'm kind of curious about a practical sales process. You know, again, these OT folks don't look at their traditional 100 racks and say, we need to do something with this. We need to change it. If it works, why change it? There's no need in manufacturing. Sure. What's the catalyst for change? Sure, absolutely. I think in a lot of these industries, they're losing people in terms of the people that sort of run those types of plants there. So I think the first catalyst for change is I had all of this equipment that was taking me all of these people to go through and maintain it. I just don't have those people anymore. I need to do more with less. So by removing those pieces of equipment there, I make myself sort of more efficient, not only in terms of the maintenance, if those pieces of equipment there, but there's always ongoing changes that need to be made to these environments as well. So you need to be able to go through and deploy new virtual machines in a far more agile environment. And when you are dealing with, say, physical pieces of equipment, if I wanted to deploy a new node, I would need to order that node from a supplier. I would then need to go through and commission it, install the software and rack it and then do all that.  With a virtual machine, I just go through and deploy it and I'm done. Yeah. Paul, just want to get your final take. VMworld, the show itself, kind of the experience as a partner, what's your takeaway from it? It's been fantastic. I mean, for me, VMworld is just always about the relationships and the conversations that go through and take place, whether that be with partners like VMware or whether it be with sort of other suppliers that I go through and do business with. And everyone's here. Okay, I mean, it's just one of the events where it's just you're only limited by your ability to get your calendar organized and see all the people that you want to do. That's the only limit of what you can achieve here. But it's just been a fantastic event this year and Honeywell's been glad to be here. Paul Hodge, Honeywell Process Solutions. Really appreciate you joining us and absolutely agree a thousand percent. I'm sure Keith would attest to this also. If you're not at this show, you need to be here next year. If you're in the European one, you should go over there. So many conversations. We're happy to bring you a number of them, give you just a taste or a flavor of what's been happening at VMworld 2017. Thank you for joining us for three days of program. We're going to be wrapping up shortly, but all that goes on the website and check it all out. Thank you so much for watching theCUBE.


Hello everybody, it's Eva from Zebitec here again First I'm so sorry for my voice. I've been on Concert in London last weekend and I've been singing so much so My voice is still lost somewhere. I'm so sorry for that and D Betsy Doodle was asking me why she didn't hear my jiggling on that concert. It's because this one I've been totally totally speechless voiceless So today I would like to show show you my junk journal. I made I made this junk journal for my friend She's going to travel to Slovakia before Christmas and She purchased for me paper collection This amazing paper collection kind of vintage this one And I decided to make Christmas gift for her for the travel I made for her junk journal and I made it like Handbag like this one it's kind of handbag and I use that paper collection she purchased for me and here I made like traveling traveling What is it chain? It is small globe And This I'm not sure if you if you call it that ocularus But but you know what is it this one? So it's like and this junk journal is closing on those buttons They are so strong and it's open like this one and it's look like this one because it's I hope she will use it for traveling When she will go to Slovakia and I made three How you call it this one three?  I like it. I like that And I use those kind of folders To separate those three signatures And I used inside I use as well Tim Holtz paper To cover those folders. So this is my first first folder and Here is envelope for keeping some notes or photos from that That trip to Slovakia and one pocket is behind this envelope So she can put many different Things inside here is kind of pocket From this side, sorry From which side here is one pocket behind this picture and she loves everything about see and here is one pocket behind that Lad pocket here. I made small pockets for keeping tags and this is This I embossed with my Ah Tim Holtz Tim Holtz this embossing folders I purchased those And this is What I used and it's Big like this and it's awesome. I like it and this is that first signature. I made in my junk journal. I Used some laces, which I coffee died as well and I use this I'm sorry this graphic 45 paper and I cover it from that other side with this Coffee die paper So this is first signature and here is Second folder and I used again that paper from this amazing amazing Paper collection and this paper collection. She purchased I think in a Work craft or something like this is in town very nice shop with craft supplies And here is another pocket And as you can see in this paper collection are really amazing pictures very nice very vintage And here I made it's not pocket. It's like space where I can put some things behind Yeah, and this one it's from that Tim Holtz Embossing embossing holder is that other one this bingo card and Here is my second signature And I include this signature I'm not sure how you call it that English this one She can write down letters and here will be result of that poof this one I don't know how to say that English sorry for that Again, I download few Vintage papers and she been She been a bookkeeper bookkeeper So I tried to found something what will remind her Her previous job, and I hope that she will like it and I again I include lace those Coffee die papers, and I really hope she will like it and here is my last signature And on one side One Internet site I found those lovely amazing. It's like Newp newspapers vintage newspapers pages, and they are really beautiful and it's many there I will try to find link for this page because there's so many beautiful vintage Freebies there really beautiful papers, and here is another bookkeeper bookkeeper page So this is my last signature again. I used Paper doily not lace paper doily and here I made two pockets One will will be used for chocolate because I found This it's about chocolate milk chocolate This one. I hope the ops sorry Zooming a little bit. Yeah, here is a boot clad So I made pocket for chocolate and it's closing on magnet and here This one is about face. So I'm going to include inside those napkins those Those one Because she will travel in so she will need to use something to refresh her face So I made another pocket here and here I will include those napkins I hope she will like it and I hope that she will write down something While she will traveling to Slovakia So this is my junk journal like this. I Really enjoyed that and sorry for that my voice It was amazing to go to London. I saw Madame to some museum. It's awesome It's awesome, and I've got a picture with Sherlock Holmes with statue of Sherlock Holmes Not with Sherlock Holmes, and I'm so happy of that. I'm really so happy It was brilliant brilliant trip to London. London is so nice city So this is my kind of first junk journal I really hope my friend will like it, and I hope you like it as well. I really enjoyed to do this Thank you so much for watching and see you next time. Bye


In order for G to be isomorphic to H, the cardinalities of the two groups have to be the same. G and H are either both abelian, or both non-abelian, and if G has element of order K, H does as well, and conversely. So, let's start by seeing if we can classify abelian groups. The simplest abelian groups are cyclic groups, so let's start with them. Suppose G has generator A and H has generator B. We can find an isomorphism, F from G to H, where F of A is equal to B. And in general, if G and H are cyclic groups of the same size, they're isomorphic, with one isomorphism, F from G to H, mapping a generator of G to a generator of H. Now, if G is abelian with order equal to a product of distinct primes, it's cyclic, that's something we proved earlier. And consequently, if G and H are abelian groups, where the order of G is the order of H, and the order is a product of distinct primes, then G is isomorphic to H. And so we now know everything there is to know about all cyclic groups. So the question you've got to ask yourself is, could we have an abelian group that is not cyclic? This would require its order include a repeated prime factor. So let's consider the smallest possible group. Let's consider groups G and H with four elements. So let G and H be groups with four elements. Will G be isomorphic to H? Now, since four is equal to two times two, then Cayley's theorem guarantees there is an element of order two. And so the question we might ask is, could all elements have order two? So there's four elements, but the group must have an identity E. So let's throw down an element A with order two, and so we can complete a row and column of our Cayley table. We also have another element, and we'll assume that also has order two. So we can complete the row and column that has the identity, and B times B is also the identity. Now we have to figure out what's ab. Now ab can't be the identity since A and B are already their own inverses. So ab has to be equal to C, another element, and you'll notice that's actually the fourth element of the group. So we fill out the row with the identity and the column. Now, while we've figured out what ab is, what's ba? Well, ba can't be E since A and B are their own inverses. Ba can't be B since A would be the identity, and similarly ba can't be A, and so that means ba must be C, the fourth element. What's that? Question from the back? Isn't the group a billion? Oh, yeah, that would make this a lot easier, wouldn't it? Well, remember Gauss's comment, we should try to prove things any way that we can, and then later on find another proof. In this case, since we're assuming G is abelian, we'd also know that ab is equal to ba, which is equal to C. And since G is a group, its Cayley table will satisfy the Latin square property. So we can complete the Cayley table, and we see that a squared equals b squared equals c squared equals the identity, so every element has order two. Now, we also know there's a cyclic group of order four, namely the integers mod four under addition. Since this group is cyclic, this group has an element of order four, and so this group G cannot be isomorphic to H. And so there are at least two distinct abelian groups of order four. And in fact, there are only two ways we can complete a Cayley table on four elements, so there are only two groups of order four. And in fact, if you go back to the way we computed ba, that also takes care of the case if our group is not assumed to be abelian, we find out that it must in fact be abelian at that point. Which is a good example of why Gauss made the suggestion try to prove things as many ways as you can, because sometimes you find things that you weren't expecting. In this case, all groups of order four must be abelian. Now, we can make similar arguments for abelian groups of order, say, 12, which is two to the second times three, but how do we know such a group can be non-cyclic? We'll need to introduce a new idea.


Are you a fan of Game of Thrones? Do you need something to fill that void in your life since season 7 ended, and we just never got more of Game of Thrones? Well, then I'm going to recommend The Witcher on Netflix. I'm going to get into more thoughts on why I don't think this is a direct analog to Game of Thrones. The comparisons are somewhat, but they're not a ton, so it's not the same show. No, it's not Netflix's Game of Thrones, though you could potentially call it that. But I'll get into that later. The Witcher is an adaptation of the book series The Witcher Saga, written by... Yeah, I'm not trying to pronounce that name.  Specifically, this season is based on the first two books, which are really more a collection of short stories rather than full novels. And I say the first two, because I've since watching the show read the first two books, and it feels like it's based more on the first one, but there are definitely stories from the second one in there, so I have to say it's based on both. Another thing I do want to point out, this is an adaptation of the books, not the games. So if you think that it's going to be the story of the games, you're wrong. Just throwing that out there. The story of the show is not told in a continuous fashion. That meaning there are three separate storylines following our three leads. Geralt, Yennefer, and Ciri. Now, each of these stories takes place within a set timeline, but they're told interweavingly, making the first season slightly confusing on the first time watching it through. Short version. Yennefer's story takes first, then Geralt's story, then Ciri's story. If that helps you keep them straight, great. If not, not much I can do for you. All three stories do converge at the end of the season, but leading up to that point is still slightly confusing on when exactly each of the stories takes place within the timeline. Luckily, Netflix is releasing an interactive map and a timeline to show you exactly when they take place. So I would suggest looking those up. I will probably link those at the end of this video. And back to characters. I'm going to go through what I'm going to call the main cast because they're the characters we spend the most time with. First, we have Geralt, the witcher of the show. He claims that he doesn't really care about others that much, especially those that aren't going to pay him, though he really does care, and he has this heart of gold.  Secondly, we have Ciri, who is on the run after her homeland gets attacked and almost destroyed by the Nof guardians. She is bound to Geralt because Geralt saved her father and law of surprise, yada, yada, yada. And the final main character that we have is Yennefer. Yennefer is a sorceress who literally had her womb cut out so that she could become hot.  Yennefer is honestly one of my favorite female characters of all time because she gradually goes from doing anything to get power to realizing that she's willing to sacrifice herself for others. Each of the main characters has an amazing arc. Like I just mentioned, Yennefer is as her going from I'll do anything to get power to I want to be happy, I want to have kids.  Ciri goes from effectively thinking that everyone that she has ever loved is this Paragon effect basically to realizing that people can be awful and not everyone's good just because of where they were born. They each have an amazing arc and it's so much fun to watch how they each grow and change over the season. I'm also going to bring up Yaskier who you may know as Dandelion if you've played the games or read the books. I could not speak as to why they decided to go with Yaskier for the show as opposed to Dandelion but every time I ever speak about Dandelion I'm going to call him Dandelion because Dandelion is much more fun to say. Other secondary characters of the show include Calanthe, Ciri's grandmother who she appears multiple times throughout Mausack the Druid, he also appears a few times Dara, he travels with Ciri for a bit before leaving her because he's like you're going to get me killed and you're like your grandmother so screw you. There's also Tris Marigold, she appears in a few episodes she also looks a bit different from her in-game model oh wait I see it, it's the hair only thing that's different from her at all. Other secondary characters that are slightly important to include East I think I'm pronouncing that right now positive Ciri's grandfather Tizia, the woman that taught Yennefer Stregobor, a wizard who I absolutely despise because he's a bit of a bastard Renfri, she only appears in one episode sadly but she's fairly important because she effectively kicks off Gerrit's whole destiny-plot thing Istrid, a former lover of Yennefer who's fairly important overall Kahir, I think I'm pronouncing that one right? Not positive, he's the king of Nilfgaard the one that invades Centra at the beginning and last one that I'm going to name because this is the only one that I can remember with it on my head Frangilla, the mage for Nilfgaard You remember at the beginning how I said the show had some similarities to Thrones? The number of characters is why Now earlier I said that this was based on the books not the show or games so like the books, this doesn't have a fight every five minutes, unlike the games so this show is told mostly through dialogue and that's not a bad thing so honestly if you're expecting the show to be like ah, I die monster every five minutes that's not what happens there are actually relatively few monsters within the scope of the show he fights more humans than he does monsters in fact there's even an episode where he defends a dragon from other hunters so because the show is actually more dialogue less fight heavy every fight scene with an exception of one or two is really really really well done the only one that I can remember being really wonky was the first one that we see this massive battle that is a battlefield it's a lot of shaky cam and whip pans and so it felt really awkward for me to watch but at the same time it also emulates the chaos that is a battlefield I'm a bit of an amateur swordsman so I've been in massive battle type scenarios a few times and I can very much confirm that that is pretty much what it felt like just a lot of chaos not really knowing what's going on, who's friend or foe but it does feel really wonky to me to watch so that is something to keep in mind last thing I want to talk about is the show's soundtrack that is phenomenal the instrumentals are freaking great they're so much fun I've listened to the soundtrack a number of times since finishing it and I can guarantee you've heard at least one song off of this soundtrack even if you haven't seen the show Toss the Coin to your Witcher which is a great song in and of its own right I very much enjoy it but there's another song on this that if you haven't listened to I highly recommend it's her sweet kiss sung at the end of episode 5 or episode 6 can't remember which one it's another dandelion song which it's pretty much Geralt and Yennefer's relationship kind of kind of like how Geralt feels like he keeps getting screwed by this it's a great song, highly recommend it and if you somehow haven't heard Toss the Coin to your Witcher highly recommend that as well it's a lot of fun it's greatly enjoyable to just listen to and you will get it stuck in your head and sing it all the time like I do also I apologize if you have seen the show and do know Toss the Coin it is stuck in your head now I apologize it's also stuck in mine and with all that I've talked about I want to get back to the question that I posed in the title of this video and kind of at the beginning is this show the next Game of Thrones I would argue that no it's not now if you're a fan of Game of Thrones you are most likely going to enjoy the Witcher that's just a fact of these two shows having similar type plots with similar characters and just the fact that medieval fantasy if you're into that you're probably going to like the show but these shows are not direct analogs I don't think that they can actually be compared to each other in terms of pure they are basically different companies versions of the same show the Witcher is much more one on one and while it does have three main characters it tends to focus on a single character and doesn't it isn't so massive that you almost need to like look up a wiki to follow it outside of the confusion of the first season I had no trouble following who what character was doing what and when now if Game of Thrones when I watched that I actually had a lot of trouble especially my first time through and I don't know if that's a product of me being who I am or what so I wouldn't say that the Witcher and the Game of Thrones can be directly compared but if you like one you're probably going to like the other that's honestly all I have to say I highly recommend that you go watch the Witcher right now if I have to give it a score I'm going to say that it easily rolls at 18 so much fun super enjoyable a few wonky things about it but overall just highly enjoyable show great fun I hope you guys enjoyed that video sorry it took me so long to get this out it was just hard for me to make this video feel like it ever felt right I hope that you guys enjoyed the video if you want to follow me on twitter and instagram links are going to be in the description as always and I hope that you guys had a great day and as always peace out


Hey everybody, welcome to another installment of A Week in Geekdom. Today we're going to be talking about Fragtime. Welcome back to the channel, Geo here. And yeah, Fragtime. The original video animation adaptation of the Japanese Yurimanga series by Sato. This was done by Tier Studio. I don't know if it's Tier or Tier, it's probably Tier. Either way, you're probably going to correct me in the comment section down below. But regardless, this was the former studio. They recently went bankrupt and they're no longer in business, unfortunately. They never did a whole ton, just one or two series. And this OVA, which is adapting a manga, like I said, the story centers around the character of Mizuzu Moritani. She has this uncanny ability to stop time for three minutes per day. At the start of the series, she is extremely shy, introverted and just timid overall. And she's confronted by a classmate, Yukari Kobayashi, who's asking her to participate with her on a school club and all that stuff. The story takes place in high school. So, yeah, that's the thing that they do over there with the club activities. And Mizuzu being such an introverted and scared timid character freezes up, doesn't really know how to confront the situation. She doesn't really know how to talk to people or what happens when you're in a scenario like that. She doesn't know how to deal with that stuff and the stress of, you know, being in public and talking to people, I guess. So she stops time and runs away. And in her curiosity, she meets the character of Haruka Murakami, who happens to be the second protagonist of the story. Now, here is the part that was actually pretty funny, but I know a lot of people will probably not dig this part so much. But Mizuzu, being a teenager, being curious, she takes a peek at Murakami's underwear. And at that precise moment, because you got to remember, she's using her ability to stop time. And there is this underlying perverse nature to having superpowers. And I'm not talking about frag time itself. I'm talking about in manga, comics and fiction in general. A lot of people I know for a fact would probably use certain powers for not so safe for work activities, whether it's flying or invisibility or stopping time. It's just a fact that is in the nature of humans.  And then you could make a case for all of that. But I'm only here to review the movie based on a manga, which was, I think, was only two volumes. It's a very short story and it gets stretched out to its limit, I think, with this movie. I think it's only an hour and some minutes, something like that. Going back to the plot, she, of course, is a teenager. She's curious and she wants to take a sneak peek, I guess. But in a cool twist, Murakami turns out she's not affected by Moritani's time stopping abilities. In fact, she's the only one who's not affected and is clearly seeing what this girl is doing. Murakami happens to be one of the popular girls or the popular girl in high school. A lot of people know her and she's very sociable, which contrasts with Moritani's personality, like I mentioned earlier. However, there's more to the character of Murakami than meets the eye. She's actually holding back some secrets of her own. I'm not necessarily going to spoil the plot for you guys. I'm just telling you an overall impression. But as the story progresses, we basically see the friendship turn into a potential romance between these two characters that have this secret, this alone time, if you will, where they can stop time and really be true to themselves and not feel judged and just let loose in the world. So it's a very metaphorical thing for growing up and finding your own voice and all that stuff. Throughout the course of the film, a lot of interesting things develop and eventually the two characters butt heads, one because of jealousy and the other because, well, they're just starting to know each other. And they're probably using the excuse of this incredible, mysterious power that one of the protagonists has to form this romance, but they don't really know if that's going to actually work in real life, if you will. But as the story progresses, Mauritani starts to further her feelings for Murakami and starts using her time stopping ability in selfish ways because now that she sees a love interest, she feels a certain jealousy and ownership over Murakami. And you do get some of the classic tropes when you get stories like this, where it's more wish fulfillment of characters suddenly being struck with weird abilities that they can't really explain, nor does the story try to explain. There's just a thing that happens. It's a little Deus Ex Machina, if you will, to progress things forward and to sort of connect the characters together. The whole time stopping thing, it never gets explored. We don't really know the origin of it. We don't really know the hows and whens and why's and all that stuff. We just know that the character has this really golden opportunity to use this ability. And in the process, she learns more about who she is and about trusting others and getting to know other people. Murakami, on the other hand, has this secret where she doesn't really relate to a lot of people. And she is very methodical in how sociable she is and how she presents herself to others and what she lets others know about her. But in regards, she knows about everybody so that she can respond accordingly to the situation. Aside from the whole sci-fi aspect, these are things that happen in real life throughout the world with different people. So it can be really relatable for a lot of us watching this, who remember growing up with these feelings or even young people now who are watching this and can sort of sympathize with what is happening with our two main characters. I feel that one of the issues with this movie, it's a little bit too short. Maybe if you would have given it a few more minutes of even if it's not in the original story, just a few more minutes of daily, live shenanigans that are occurring for the characters, it would deepen that bond and that relationship for when the final act of the story comes out or plays out and you feel the emotional impact of what happens to the characters. Overall, I enjoyed it. It's not the most dramatic, amazing thing in the world, but it is a nicely packaged, sci-fi inspired romance, if you will, about these two characters coming out of the shell and realizing who they are as people and finding trust in others just so happens that time warping abilities are involved. But yeah, clean animation, loving the backgrounds and character designs. It's a nicely drawn movie that I do recommend if you want to watch something a little bit different. I enjoy a good drama and if you start mixing in a sci-fi elements, I'm all over it. So I was excited to check it out. It didn't really disappoint, but then again, it didn't like super blow me away. I just thought it was pretty serviceable and OK. But regardless, what did you guys think of Fragtime? Have you read the original manga? If you haven't, have you watched the movie? Let me know regardless in the comment section down below. That's about it, guys. As always, thank you so much for being a part of a Week in Geek. If you're new here, be sure to subscribe and hit the bell icon so you know when new videos pop up. And if you want to follow me on social media, all those links are down in the description below. I've got to go, guys. I will catch all of you on our next review.


Three months ago, President Trump pulled out of peace talks between the United States and the Afghan Taliban, which seemed to be on the verge of a major breakthrough. But this month, those talks have restarted, and there's again great hope in Afghanistan that peace might be possible. This is the latest. I'm Johnny Walsh. Why have the talks restarted now? The real reason for that is that every side has a huge incentive to find peace. It is the only positive outcome that is remotely plausible. And there's appetite for peace that is unmistakable everywhere in the Afghan population, and really in the U.S. policy community too. And so that drives every party, even when they hit a roadblock, to try something new and see if they can get through to a political settlement. What issues must be negotiated? So the first phase is President Trump has sent Salme Khalilzad, his special envoy, to Qatar to negotiate a U.S. Taliban deal. The crux of that deal would be that the U.S. agrees to a timetable to withdraw its troops, and the Taliban agree not to host a terrorist group again the way they did before 9-11, and they agree to start talks with their fellow Afghans for the first time after years of refusing to do so. That's the breakthrough that was very close in early September and might well still be upon us. If that happens, there will be a very complex intra-Afghan negotiation where Afghans of every political persuasion will have to work through whether to revise the constitution, how to share power, what to do with tens of thousands of fighters and prisoners. Really tough stuff, but things that they might actually have the opportunity for the first time to negotiate seriously. What comes next and what are the prospects for success? So first, we'll see what comes out of these talks in Doha, might well lead to a U.S. Taliban agreement, which in turn would trigger what I consider the much more important process of all the Afghan groups negotiating with each other about the political future of the country. And really, we'll have to see all sides recommit to the process in earnest. We'll see if President Trump is in fact willing to sign an agreement with the Taliban. If the Taliban not only join talks with their fellow Afghans, but commit to them seriously. And in Kabul, there's a presidential election that hasn't been resolved. One of two candidates will have to win and then show their own commitment to the process and naming an inclusive negotiating team that represents the whole country. But ultimately, it's a rare moment of opportunity to resolve what has become the world's most violent war. And this is the responsible exit strategy, possibly the only one to what's become the longest war the U.S. has ever been involved in.


Hey, psychedogores, would you consider yourself a workaholic? Do you have a tendency to push yourself to your limits? Have you been feeling lately like it's hard to keep up with yourself? For high achievers, burnout is one of the speed bumps in life that you should be wary of. Burnout is a term coined by psychologist Herbert Freudenberger in the 1970s and is described as a severe stress condition that leads to severe physical, mental, and emotional exhaustion. To help better understand this condition, in this video, we'll be looking at seven signs you're dealing with burnout. Number one, you are emotionally exhausted. Have you ever felt that you're at your limit, that it's extremely hard to keep on working, even in small amounts? According to Scott and Gans in 2020, burnout can lead to lethargic feelings, an inability to cope with stress, and an overall feeling that you are emotionally drained. When you're emotionally exhausted, you may feel powerless and have no control over what happens in your life. You may feel that you're stuck in a situation and have little energy to keep going or get out of it. Number two, you are isolated from others. Have you noticed that you're turning down invitations to events that you'd normally be excited about, or perhaps you're not returning messages as quickly as you normally would? This can be a sign of burnout. Dr. Carter in 2013 states that in the early stages of burnout, you might isolate yourself more and find social interactions are more difficult. You might find that people get on your nerves more than usual, and that you find ways to avoid interacting with others at work or school. Number three, you have escape fantasies. When you're at work or school, do you find yourself wishing that you were somewhere else, preferably away from your job or school? Dealing with high amounts of stress for an extended period of time can make it hard to concentrate on the task at hand. It can be easier and more fun to think about going on vacation or even going back to bed. At worst, some people dealing with burnout may desire drugs or alcohol to escape their negative feelings, which can lead to abuse issues. In any case, doing anything else can seem more exciting than working. Number four, your performance is suffering. Dealing with burnout can also affect the quality of your work. Do you find that your letting mistakes slip through the cracks more so than normal? Is it hard to care if something is perfect or not? Is it hard just to start something, let alone finish it? Having stressors in your life, like taking care of an ill family member or working long hours, can make it hard to put a lot of effort into your work. When you have little time for self-care or to focus on other things, it can make it harder over time to keep up with your usual performance. Similar to how athletes need to rest after practice, you need to rest as well to recuperate. Number five, you don't feel well. Have you ever wondered why you still feel tired despite sleeping well or having a day off? Do you experience stomach problems or other types of unexplained pain?  Dealing with high amounts of stress can weaken your immune system, so it's easier to get sick. Additionally, stress can affect other aspects of your physical health, causing you to feel pain and tiredness that can't be explained by anything else. Fraga and Leg in 2019 stated that burnout can deplete your energy and in turn weaken your immune system, making you more susceptible to infection. Apart from that, burnout can increase feelings of depression and anxiety, along with other mental health issues. As burnout progresses, small stressors may become much bigger problems and affect your ability to perform. Number six, you're more pessimistic. Burnout may lead to a pessimistic attitude in which you may adopt a glass half empty mindset. Are you finding yourself feeling more down on the world?  One may be so engrossed with negative thinking that at its later stages, the pessimism may advance beyond how you feel about yourself, causing you to mistrust people that are close to you. You may feel that you can't count on anyone, even yourself. And number seven, you're more irritable. Are you finding yourself more on edge with other people? Do others seem to constantly get on your nerves? Dr. Carter in 2013 states that irritability often originates from feeling worthless, unproductive, and a growing perception that you're not able to do things as productively or effectively as you once did. At first, your personal and professional relationships may be affected. However, in its later stages, it can severely interfere with people in your life. Stress may be inevitable, but burnout is preventable, making lifestyle choices to help manage stress like exercising, eating a balanced diet, working on your self-care routine, et cetera, can go a long way in balancing your lifestyle. If you find that you are struggling beyond this, it's important to check in with a mental health professional or a healthcare provider for advice. Let us know your thoughts on the topic. What are some other signs of burnout that you've noticed? How do you combat these feelings? Let us know down below. Remember to subscribe to Psych2Go and to turn on the notifications to keep updated with our uploads. All of our references used in this video can be found in the description below. And as always, take care.


What's up guys, my name is Glassfoot, and once again we are back at the Henry Stickmin Collection. The collection of the Henry Stickmin games that was just recently released on Steam. Today we're going to be getting into and playing Stealing the Diamond, the third game in the Henry Stickmin series. So, let's go! I love the, like, that they went back and voice acted, all this stuff. It's really really cool. Let's bust in! Jump! Well that didn't work. Retreat! Ram? Yay! That's awesome. That actually worked! Basket! Oh sweet, magic. Yeah, of course that wouldn't work. Maybe it's ramming from, what the hell? I just got to time out to see what happens then. Wait, why does that not work? Okay, apparently that's what happens. That's awesome. Retry. Good thing the janitor's got done buffing the floors. Could you imagine all the germs you'd be rolling into now if they hadn't? Alright. Apparently.  These games are freaking awesome. Tokyo! That's logical. And after that, they just up and arrested him. Whoa, really? Yeah, that's when I decided I should probably get a different job. I figured Nightgarden did much less dangerous than driving.  I can see all these hours of playing video games have really sharpened your reflexes. Oh wait.   Breach. Yeah! Wait. Ah, damn it. Didn't really think that one through, did you? No! Time crunches me. I want to go do the thing. Rock. Mommy just yells no, Johnny! Wait, that was the right choice? Here, place your hands where I can see them.  You leave me no choice, sir. Oh my gosh! Dude! Do something! Oh no, let's go back. This one. I'm just going to let time out really quickly. Wave good body ahead, waker! Why sniper from TF2? It's like that. Sticking grenade!  I always wondered how those things work. Alright, let's... Sir, place your hands where I can see them. Why did it blow up? I think it's getting very far that way. Wait, what? Sir, place your hands where I can see them. If you do not comply, I will be... Birdie. Eh? Bribery is a federal fence, sir. Strange, that usually works. Oh, damn it. Retry. Sir, place your hands where I can see them. Push it off. Ha, you missed.  I'm going to be completely honest. One of the things I love about these games are the fact that it's a branching path, but not only that it's a branching path, the music and the sound design of these games is really, really good. It makes you want to keep playing, to keep coming back to these games, to get all the endings, to find all the versions. Yes, the teleport of that. It's always worked for me in the past. Am I in the middle of space? But wait. It actually worked for me? Invisibility pill. What happened? I lost track of you. Ah, that's awesome. Yes, the Falcon Punch. Falcon... What? Only one man is capable of that punch. Tranquilizer. Knock him out. This feels like a very similar situation to the rocket. Whoa, what are the odds of that? I'd say very low, if not in this game. Well, now I know what the friggin' right one is, so... Anti-gravity cap. I'm pretty sure you need to design a way to... turn it off. Yes, I always wanted to go to space, too, but I'd rather live through the experience if I did. The Jumper Hoopers.  Two points deducted. Sweet flip, bro. I'm gonna go get through this. A penny! I don't know. I love that. That seems like it would work, so... just the theme of this game is that... Really? Well, no, I have to see the other two. How... This is the one that, like, would work in my brain. Oh. That's why it doesn't work. Come on, in portal! Wait, what the... Click here. I have been lied to! Just dropping in. I set off in a lot. Do you really think that was going to work? No? But in this game, yes. Laser cutter. You get cut while you no-bleed. Eh... The laser carterized it. That's awesome. Let me use the katana. No, no. Geez. What? Why? Seriously? This game is so weird. I thought that might actually work. Canon seems like the obvious choice, so... Yup. That seems about right. You almost saved it. You saved it. You saved it. You almost saved it. Almost. Plank. And after that, they just up and arrested him. Whoa. I love that. That's awesome. Snap the neck. Apparently my own neck. Told you, man. I told you about the stairs. No, you didn't. I heard nothing about the stairs. Why? Why would you do that? Man, those first minute shooters make it look easy. Diamond? Oh, damn it, that was the right one. Unseen burger. Hell! Alright, come on. The music of these games is the best thing. Map. I got one more fail to finish up here. Jumping. What did I think was gonna happen? I'm surprised you made it that far with that heavy diamond. Alright. Now, one final path to go. And that is sticking in. Let's make things liquid. Let's see what happens. Liquidif, liquidificator. What? Was this thing named by Dr. Frickin Doofensperts? Turn yourself into a liquid and bend your molecules around and through any object. Oh. What do you think was going to happen? I don't know. After my reaction with the opacitor, I don't know what I was expecting. Let's try to shrink ready. No, it's so slippery. Apparently not. I'm smaller than a worm. I don't like that. Man, worms are so much more fish-yps up close. Yeah, you'd think that. Right? Alright, let's pick. Yellow Minecraft. Hello, bomb. Yeah, so apparently there's something in that cake and you used it to escape. And then I got fired. Yeah, see ya.  Quick, pretend you were joking. Good one, right guys? Yeah, totally a joke. I wasn't trying to shoot you or anything. I'm just going to let it run out. I want to see what happens. Also, again, one thing that I really love the guy, the one guy from who's talking at the very beginning of this is the conversation can't be that interesting. I love the one guy at the beginning who's like, yeah, and then they just up and arrested him. He got out of the whole bank guarding business and then the last guy who was talking about how he was the security guy at the prison I just broke out of. Shit, that's cool. Damn it, it was right. Retro room? Ah, damn it.  Well, I'm going to have to go back. Hold up, we're going to go back. I want to see what the bomb did. I don't know. What happens if I try and run through here? We're about to find out. I apparently become frozen with this. Must be a light sleeper. Alright, let's come here.  Hell of a bomb apparently. Wait, was this the right one or not? Oh my god, the animations are awesome. Subway in the southwest, center for chaos containment. Whoops. Uh, sir, you might want to come look at this. I'm getting chaos readings at 10.6. This is bad. It's coming from the museum. My god, it's over nine. Uh, yes. I love the 9000 joke. Just hit one of those buttons to deal with this pressing situation.  Hold up. Oh. Oh god. Divide by zero. What does it do? I love the look of horror on its face. And it just wipes out the world. You can't divide by zero. Sorry, I was in the bathroom. Where is everyone? Hold up. Apparently, I chose the right one of the first try. Alien. My mind's gonna get in, isn't it? Yep. Looks like you took kindly to orders. Good ball. Yay, Pokemon battle.  Nightguard, Tim and Joe would like to battle. Nightguard, Tim and Joe. You don't know how much I love the missing no joke. Robo.  Let's go. Is it the nuke? Is nuking the right option?  That's a cool nuke. I'm fucked. Goodbye, cool world. Hey, I was right. Don't feel too bad. He probably camped for the 25 kills he needed to get that nuke. Uh, two options. Gears. Oh, damn it. That was right, wasn't it? I summoned a murder robot. This is bad. I summoned a murder robot. Well, I guess I'm running away from the murder robot. There's the end. There's the fail. I actually don't remember a number of things from the later games. Just so many more options to what you can do. Oh, crit. Oh, I have one more fail. Just plain epic. Plain epic. All right, all right, all right, all right, all right. I got one more fail to do. That's a satellite. Laser collection joke. All right, but yeah, that was everything. All right, but that was all of stealing the diamond. All right. I'm going to leave that video here. I will get back to infiltrating the airship in the next video of this gameplay series. But that is but with that, that's all the time I have for now, guys. I hope that y'all have a fantastic day and as always, peace out.