The molecular mass of a compound is found by adding up the atomic masses of all the elements that make it, multiplied by the number of times each atom appears. For sodium chloride, NaCl, this is one each, so the molecular mass is one times the Ar of sodium, 23, plus one times the Ar of chlorine, 35.5. What is the molecular mass of sodium chloride? Pause the video whilst you work it out. The molecular mass of sodium chloride is 58.5 grams per mole. Did you get that right? Don't forget your units. Moles say only how many particles there are, not how much is in them. If one mole of chlorine molecules and two moles of sodium atoms react, they make two moles of sodium chloride atoms. Like this. 2 add 2 really does equal 2, at least when two atoms are combining, to make two-end molecules. Similarly, two molecules of magnesium and one mole of oxygen react to create only two moles of magnesium oxide. If this seems hard, watch our video, Balancing Equations. We can use molecular mass of a substance to calculate the number of moles in a given mass. Let's say we have 1.5 grams of sodium iodide, NaI. How many moles is that? The relative atomic mass, or Ar of sodium, is 23 grams per mole. The relative atomic mass, or Ar of iodine, is 127 grams per mole. Thus, the molecular mass of sodium iodide is 23 grams per mole, plus 127 grams per mole, which is 150 grams per mole. You may notice the molecular mass units are grams per mole. We can work out how many moles we have by putting in the mass and rearranging. This is also known as a triangular equation. You can write it like this. To find any one quantity, cover it up with your finger to give the rearranged equations. We want to find moles. There are 0.01 moles of sodium iodide. In chemistry, we use moles to work out how much of each reaction to weigh out. This means we can make sure we get enough product and none of the reactants are wasted. It also makes it easier to get the product pure. Let's say you need 0.3 moles of silicon dioxide. The relative atomic masses of silicon and oxygen are 28 and 16 grams per mole. What mass do you need? Pause the video whilst you do your calculation. Ready for the answer? The M.R. of silicon dioxide is 28 plus 16 plus 16, which is 60 grams per mole. You will need 18 grams of silicon dioxide to get 0.3 moles.


And welcome to Death Gladiator. Hey everybody, welcome to Death Gladiator. Brought to you by Clorox Disinfecting Wipes, which I'm going to put away now. I clean my desk. So we've got an exciting half an hour of some goodies from my desk. It's me, Lady Aida. This is my desk.  We've got some trinkets to show off, some designs. We've got a great search at the end. But I thought we would kick it off with a preview of a new feature that's coming to learn, or at least at learn. And you can check out. It's called Bundle Fly. Yeah, that's right. So I'm going to go to the computer. And we're still working on this. So please try it out and let us know how it works. But basically, and Lady Aida will talk about this in a minute, all the things on how it works. We'll have a fun little helper. Right now it's Project Bundler, Project Bundle, Project Bundling. We say Project Zip right now because it's the old way we used to refer to it. But we'll have a little character called Bundle Fly. And Bundle Fly will help you out. No one's ever heard of insect politics.  That's Bundle Fly. So Lady Aida, what exactly does this do? What is this nightmare? OK, so you love Circuit Python. It's so easy to write code for and adapt and modifying to really fast develop. I've been told it's too easy. Too easy. But there's one thing that is a little annoying is dealing with all the libraries. Because here at Adafruit, we're computer scientists in MIT. We're computer scientists and we believe in this computer science concept of dividing up your code into small modules that you can then reuse code as much as possible and share it among all of our drivers, all of our board support packages, et cetera. So we have one library just for Neopixels. And we have one library for Neopixel animations. And we have one library for every sensor. We have a library for touch screens. We have a library for dealing with S-quared C devices and SPI devices. Each one has its own library, which means you only import the things you need. But then when you end up with a complex project like this Touch Deck, which is an RP2040 display touchscreen, so you've got libraries for the touchscreen, for the display, for the buttons, the icon, to loading bitmaps, et cetera, et cetera. And for stuff like Arduino, you use the library manager in Arduino and you install the libraries once and then they're linked and compiled in so that you have one firmware file. But with interpreted languages, it doesn't quite work like that. Yes, we could, in theory, make one circuit Python build that has all the libraries built in for every project, but that would be overkill and complicated. Instead, we use the file system. We have all the files on the file system. But that means that every time you build a project, you have to go to the bundle and extract the files and the MPYs, put them in. And I hear you. It's a little annoying. I just do it in the back of my consciousness while I'm zoning out. But if you're starting out, it's like, why do I need all these files?  And you didn't even read the dependency because it's inside the library. So the project bundler solves this problem from within learn by automatically giving you a bundle for the embedded code in a project that includes every library and every library dependency. So let's check it out. So this is the project code. So this code here actually lives on GitHub. This is actually embedded inside. And we do that so we can have one place where code lives. And it's a place where we can do continuous integration and we can quickly grep through every example if there's a change or a bug that we copy and paste it a lot of. If the code lived in learn, there would be no way to automatically check it. So the code itself, if you click on code.py, actually, sorry. If you go to the bottom of this very, very long thing, no, it's not here. Sorry, it's under, oh no, we changed it. Or maybe it isn't under learn. No, it is under learn. Sorry, it's under GitHub, but I don't know why. Anyways, I'll figure that out. I think we've changed this. But there's code in GitHub anyways. So to download the entire bundle, click download project zip. And we're going to change this to say project bundle. It'll be a nice big button. And then when you click that, the web server will create a zip file for you. And inside the zip file is the code and anything that went in with it. In this case, it comes with also a bunch of bitmap images for every icon and everything. And then it also includes all the libraries. And so you can see there's a lot of libraries. And it does this by there's actually a little tool that can search a Python script and find all the imports, which is a little bit better than grep maybe, but maybe not. Like you basically grep for the imports. And then you're like, OK, well, that will give you the libraries, but then they all have dependencies. How do you figure out what the dependency tree is? When you include trying to think like a different feather wing, a different feather wing actually has a bunch of other dependencies. It depends on the IOLI 9341 library. And maybe it depends on the touchscreen library. There's a lot of libraries that are hidden here. They're not literally shown here, but they're in the dependency tree of these libraries. So that project is called the dynamic bundler. Well, it's actually a couple of things. So let's just back up. So for every library we have, there is a requirements.text. And the requirements.text, it's always there. And it always has all the dependencies for the library. So in this case, it's a Blinka display I.O. and Bitmap font. Every library makes, when the person makes a library, they put in all the dependencies. And then what's nice is if you pip on a Raspberry Pi or a Windows computer, you'll get all the dependencies automatically because this is a standard Python thing. This was invented in 2005 or something. The people are used to requirements.text. So then we have in our bundle, which is done every night, which looks for all the new circuit Python libraries that have been released, we have a new file called the JSON file. And the JSON file is like what it sounds like. It's a gigantic JSON file with, and I'm not going to, I guess I could open up a JSON parser. There is every library and every dependency that is on it. So for every library, it's like this is the first library. And it says, is it a package? What's the PyPI name? What's the version? What's the repo? And then it'll also say what all the dependencies are. So this depends on bus device, for example. And so instead of having to go to every single repo and ask it for the requirements of text, this basically takes all the requirements of text and sort of flattens it into one JSON file. And we'll have this also for the contributor bundle as well. But this runs every night. And then if you want to basically get the same thing but without the back end, I don't think the back end literally uses this code. I think the code for the back end of learn is in Rails. And so it's not using this JavaScript. But if you want to implement this on your own or use this on your own, you can use this example. So if you click on the dynamic bundler URLs down here, it'll automatically in JavaScript create you a similar zip file with all the libraries and all the dependencies in them. So basically this is the start of having IDE support for managing your libraries and automatically installing all the dependencies. And this is something that we thought about from the minute we first wrote libraries because having lived through Arduino libraries and it took many, many years for there to be a library manager. And it wasn't until last year that there was a dependency manager. We wanted to make sure that it was all ready to go. So when we wrote this code to do the bundling and the JSON and the dependency mapping, we would have all the data there. We wouldn't have to go back and maintain it. So we're taking advantage of the existing Python dependency system that uses request.text. We're just making, maybe it's the caching that data once a night so that learn doesn't have to hit all 400 libraries to ask each one of them and then do a depth-first search for every single dependency. So if you want to check out that JSON file, you can then use it. And then we're going to probably have IDE plug-ins for like VS Code and Adam and all those that can look at your code and say, hey, you're importing something. You need to install that. I'll get it for you because I've got that JSON file that tells me all the dependencies. All right, well, first up, before I talk about a couple of things, thanks, Greg, for donating $4.99. Yeah, $4.99. That helps fund some server time. So one of the things. It's like one happy meal. So pre-COVID last year, I was a Circuit Python power user. And I built a lot of projects. I did a lot of things, found a lot of bugs, fixed a lot of bugs, did all these things that were really important. I don't give as much time now because I've been running Adafruit in a financial and global health pandemic. So one of the things I used to do, and I think what you have to do is look at folks what they do when they're in a hurry or they don't have a lot of time because they get very efficient. I would freeze my projects. I would take all the files off my Circuit Python drive. And I would move them to a folder on my computer. And I would zip them or I would just call them the time date and the whatever it is. And I would have code.py, all the libraries and all the dependencies. And I knew if I had to in the future, I would just zap my Circuit Python device and I would just toss it back on there. And those are all the working project files. That's really neat. So there's two things I suggest. So one, always make sure you get the latest version of Circuit Python. Double click your Circuit Py, drag the new UF2 over, and then go to the Project Bundle and use our friend, Bundlefly. Bundlefly. Bundlefly will eat all of it, digest it, and then drop it in your browser. And just like that. And you won't have to do what I was doing, which is keeping all of your projects in an archive. Because they already are. And if you look at what a lot of people do, they want to do a project. And then they start to mess around with some code. So you can easily get all of your project before it was just like just drag these things. That was easy, perhaps too easy, according to some. And then now it's even easier, which is you just get a chunk of files, and then drag them over and you're set. Yeah, and having it all in one zip. And another nice thing is that when we update lots of libraries, instead of having to go back and update each one, first, if you could use the ID plugins that will eventually develop, or you can just go back to the Learn Guide, click Download Zip, and it'll download whatever is the latest. You'll always get the latest. Because we also saw people, sometimes, they'd have their libraries desynced. Like, they'd update some but not the others. And there'd be enough change that we would have, one would be updated, one wouldn't be, and it would have a desynchronization and data expectations. So this way, every night, the bundle gets created by Adabot. The JSON gets created with all the version numbers. And then when you start up your IDE, it'll download that JSON file and it'll check. Also, by the way, every MPY file has a version inside of it that's automatically generated on the release tag of the library itself. And we, again, worked really hard on this two, three years ago to make sure that in the future, if we had an MPY file, you can ask it, what version is it? And it will, you can figure that out by doing some funky searching stuff. Or you can load it and query it. So the goal is to make automatic library management within whatever IDE or from learn, either way. OK. Do you see this as augmenting SirCup or a replacement? I think SirCup is going to be the command line version of this. And it's absolutely still going to be supported and used because there's some people who just really want to do it for the command line. But it will probably end up using this JSON if it doesn't already. I think we've done some PRs to it recently. If it doesn't use this JSON already, it should. It'll really speed things up quite a bit. All right. So try this out now. That's basically the same code. Try it out now. Break it. Break it. Do everything because we're going to be adding this to all the IDEs.  It's so easy. And if there's someone who's coming into this new, they're not going to get frustrated by all the things you need to do with all computers and all downloads and all IDEs and all code and all libraries and all dependencies. I think we solved a really big problem, especially for the people that don't even know that this is solvable yet. Like they haven't even got to like, man, this is hard. They're not even starting their journey. But now when they want to do a project, they can just hit up Bundlefly. Bundlefly. Bundlefly. OK. What's next? OK. So that's Bundlefly. Thank you, Bundlefly, for your helpful things. So yeah, this is just I want to show really fast. Can you go to the computer? This is the back end URL. So this is when I edit code. So this is where the code actually lives from code.py file. So the goal is to make it so people just have code. They don't have to know what the dependencies are. As long as the code works for them, we'll generate that dependency tree. So cool stuff. OK, next up, it's Trinky Trinky Trinky time. So we have the NeoPix, the Neo Trinky guide went live. There's more to come with it. But we have at least the beginning of the Neo Trinky guide. People are digging the Neo Trinky. And so I thought we would, learning from the Neo Trinky, I've learned a couple things. We designed a couple more Trinkies. And I thought I'd show them off the overhead. And I can also do little demos for each one. So maybe I'll show them all off. And then I'll do a demo for each. OK, so do you want to talk about the little characters? You want to do that afterwards? Let's show these off. And then you can show the characters because it'll be matchy-matchy. OK, so this one is NeoKey Trinky. I'm getting really close because these are pretty small. OK, great. So this is NeoKey. So NeoKey Trinky, as you might expect, is a mechanical key that you can put in any MX-compatible key. It has a capacitive touchpad and a little NeoPixel that goes through and can light it up. So this actually works. But the only thing I did is I moved it 180 because the LED was a little bright out here. So I made it so it's like when you plug it in, it's kind of glowing from the USB port sort of itself. So it's the NeoKey. Then I also have the Rotary Trinky, which I think we've shown on a previous desk of Lady Eda. So it's one rotary encoder that has also a clicky switch. So this can be used. All these are CircuitPython or Arduino. It's all SAMD21 on the bottom. And it's just like nothing is going to be that small and have USB and broad support. Like for something this tiny, it does a pretty good job of being as small as the rotary encoder. So I didn't want something big. I wanted these to be cute. We made Slide Trinky. We weren't sure this was going to work out because if you pull it, is it going to yank out of the USB port? But it turns out it doesn't, actually. When you pull it, even if you're kind of being a little rough, you have to really yank at it to pull it out. That said, it's best if you hold on to it. But I think that there's still value in something like this. And you can see there's two reverse mount LEDs as well for glowing the Slide Potentialer. And then there's Proximity Trinky. So Proximity Trinky uses a APDS9960, which is this sensor here. It's actually a couple of things. It's an IRO Proximity sensor. It's also a light sensor and a color sensor. It also does gestures. Although I'm always disappointed by the gesture sensing capability. It's also too capacitive touch and then to neopixels. And this was actually inspired. I was thinking about this. And I remembered that Kano, a long time ago, made this motion sensor. So I thought I'd show this off. So this is from Kano. I believe that this is a discontinued part because I actually got this sort of on a clearance site for $10. It's a really good deal, by the way. I'll do a quick, back in the day, when I would try to be a maker journalist, I would write about maker startups. So Kano, they are a UK startup. I think they were up to like $40 million in funding. And I remember that because it was about the same as little bits at the time. And they were doing Raspberry Pi and or single board computing kid laptops, essentially. And they have since done some brand stuff with Disney. I think there was a Star Wars thing. And then we saw the Pi stuff and some of the Star Wars stuff on sale at Target. And then they pivoted, I guess, to more non-Razorberry Pi laptop computers for kids. Yeah, I think they're doing X86 now, right? Yeah. And then their blog recently. Actually, I really love their camera. We stopped their little camera. And it's great. This thing is so cool. And so I also saw on their blog, they were talking about blockchain and NFTs and all sorts of stuff. So I think as a startup, they have the ability to work on some of these things, even if they discontinue it. They have cushion where it's like, well, here's a proximity thing or here's a camera thing. And whether it's something that is going to be part of the core product line or some of the past products, they can continue to do product development. Eventually, they've got to probably. They've got great product design. I mean, this camera, by the way, we saw hundreds of these cameras. So they have retail packaging and all that stuff. So anyways, we saw this camera. We stopped in the store because it was a really good camera. And then we wanted to play around with this proximity sensor because we have a proximity trinket. Yeah, so I actually got one of these and it came in. So they're really nice packaging. So this is magnetic. It's got the little magnetic-y flap. And then they've got this huge manual where it's really beautiful art that they go through how this works. And then it snaps in. So they've got projects that are built into their system. So you can pick these up if you search for the Canon Motion Sensor. You can pick it up for $12. It's a great deal for $12. I think originally it was more. And then it also comes with stickers and stuff. So this is pretty neat. And I'll actually show you the output. But basically, it comes with, so this is just a USB extension cord. And this is like wound around the foam. This is kind of intense. So let me put this away. I'm going to throw in some questions. Yeah, tell us some questions. This is a USB cable. One is related ones up. Are we going to have a reverse-mounted megapixels in the interface store? Yeah, they haven't come in yet. I don't know why they're taking so long. How about an IR Trinkie, both transmitted and received plus touch pads? Yeah, I tried to make an IR Trinkie a long time ago, the PIR key. And it was always such a nightmare. It never really worked very well. So I might look again at it as part of this. But on the SAMD21, it was such a challenge to get it to the IR library was so big. Maybe I could do it with an RP2040. New chips? Yeah, new chips. Time for you to visit. So this is a little suction cup thingy. And then you can attach this extender to it. Maybe the Lego compatible? I don't know. I don't think so. It looks a little bit too wide for Lego. So but then you can. This is kind of a cute suction this year. So this is actually, so I took it apart. It doesn't normally come in three pieces. Obviously, I want to take it apart to show you guys. Yeah, it doesn't need a thing. Lady, I'll talk about this. And we're probably going to use this idea. The way it spits out data. Yeah. So this is, if you pop it, this thing is a little, this doesn't really do anything, I don't think. So this is just a little protector. And I pulled it off. I also kind of cut this down the side and realized that that was not essential. Like you just pulled this off instead. So you've got your SWD pads here. It's a very classic two by five. Here is your APDS9960. It looks just like an APDS9960. That's how I know what it is. I've seen this many, many times, a sensor. And then underneath here, if you pull this up, it's a, they use my favorite AP2212 regulator, which is totally overkill. So they probably used it because I use it. And then here is an AT-SAMD21E16. So this is running Arduino code. I know it's running Arduino code because the VID is Arduino, so they didn't change it. So they either used, they may have used the Trinky Core or they might have created their own core. I don't know. There's a SAMD21E18. It's inexpensive, so it makes sense. And then connected to an APDS9960 over I squared C. And then I can plug this into my computer. I've got a non-cano extender. Let me see, even though I broke it a little bit. I think if you see the, this camera, you can see the infrared transmitter, that thing light up. So then if you, let's go to the computer and I can show what it looks like. So on the other side, you get this, which is, you know, it's JSON data. Whoa, hold on. I can't zoom in. Be able to believe me. So this is JSON data coming out. Hold on, there's too many, too many ports. One second, let me unplug this and re-plug it. Okay, great. So it spits up JSON data and as I move my hand, it sends it out. Interesting, when you get close, it stops sending data, I don't know why. But yeah, you know, proximity data and it's JSON formatted. I'm assuming that it also can receive JSON commands because you have to change the APDS if you want to put into gesture mode or light set. Like the modes have to be set. Like it's default proximity, but you have to tell it what mode you want it to be in. So it probably has some JSON commands that it can take. So that's kind of interesting. So it's good. I'll probably use this kind of formatting because actually I'd rather like it. You know, it's simple to parse. You could parse it Arduino with Arduino JSON. We do everything in JSON now, so we may as well. Yeah, and even in CircuitPython, even if you don't have the JSON library, this is a very easy string to parse. You know, you could even eval it. Even that's a bad idea you could. Okay. I think it would evaluate as a dictionary. So those are all the trinkets? So that's the trinkets. So you decided to work with Bruce to come up with some cool graphics for you. So each one's gonna have a little character that goes along with it.  Our community will name them, who knows. And then here's a proximity Trinky because it's a bat, you know?  And then here's the rotary Trinky, kind of like an L. Yeah. Like it's head can move around. So this is start. These are sketches, work in progress. And those are the Trinkys. Yeah. So then I thought I'd show, do we have, how are we gonna, whoa, it's okay. Yeah, keep going. You wanna quickly do a quick demo of a couple of these. So I have, let's start with the slide Trinkys. The slide Trinky goes in this way. So this demo, the code I wrote, actually it's, this is spitting out the slider data. And then on my computer, I have it hooked up to my hue light here. So as I dim the bulb, so you can see the bulb got brighter and got dimmer. It's kind of hard to maybe see the bulb itself. Yeah, you can. If I point it out. Okay. So this is bright and then this is dim. Yeah, you can kind of see it. All right, there we are. Dimming, brighting, dimming, brightening, dimming. So that's the slide Trinky project example. Okay, so that's slide Trinky. So I'm gonna make this bright again. Thank you. And then rotary Trinky I thought would be, what's needed is actually for the Arduino HID. I found that there's this thing called surface dial and this can mimic a surface dial. So when you press it and rotate it, it can actually perform things on Windows 10 as like a native device. So can you go to my computer real fast and I'll, I'll show if you hold down the button, it, your Windows 10 pops up this thing. And for example, you can select, you know, volume or you can select scroll or zoom. So let's do zoom. You select it by clicking again and then you can use this to zoom in. Oh, can you? Yeah, I'm gonna bounce between two. Yeah. You can use this for zooming. And then if I click again and I select scroll, I can then use this to scroll as a scroll wheel, but it's the same rotary encoder. So they already kind of like figured out the UI for this. That's kind of neat. I thought this was a cool demo. Zoom, scrolling style. Yeah, this is scrolling. That's kind of neat idea. So that's the rotary Trinkie. And then the key Trinkie, the Neo Key Trinkie, we, hold on. For the Neo Key Trinkie, I actually wrote some like a quick code to turn it into like a rubber ducky. So when you press the button, it opens up on notepad and like types and you've been hacked. So let's go to the computer and we'll see, we'll see if this works. Yeah, this extension cable is not very good. All right, so let's press this button. Weird, I don't know why this, this one's not acting so great. I don't know, this one's a little flaky. All right, so I'll demo this next time. I don't know why this Neo Key is acting weird. And then finally, proximity, which I actually already did show off a little bit. What do you use? Nothing's working. Hold on. Okay, so this one, it's weirdly sensitive. I wonder if that's cause there's so much more light here. There's a lot of light. So for this one, I turned it into like windows of proximity. When the proximity of your hand is close enough to the sensor, it'll send a space bar. So for this one, I made it so you can play the, well, you can be very bad at playing the dino game. Okay, so let's try again. Go, go, go, go, go, go. Dino, dino. Yeah, that's proximity. Do it underneath here so I can also show you. Okay. You're going like that? Yeah, but it's weirdly, I have to fix the sensitivity cause I think I set the proximity before all these lights were on and so now it's a little bit more sensitive. Okay, cool. So I'm going to ask some more questions, right? Yeah. Slight trinkets can be a turtle with the next to get out, yeah. So once that they enjoy using the Neo trinkets, seems like a cool way to add status lights to a small Raspberry Pi OT device. Cool way to take touch input, to acknowledge events, yep. Next up, someone said the bat looks like Leforte. Yes, I'm going to fly it over to Jeopardy. They better get Levar Burton on there. Next up, was that an Arduino library to make the windows think it was a surface dial? Yeah, that's the Arduino HID library. We don't have that support in Circuit Python for surface dial yet. Yeah, why is this even weird? Okay. I don't like this extension port. Let me get another extension port. Someone wants to, they want classic enclosures for trinkets, yeah, I know one page where we'll probably make those. You can totally 3D print classic enclosures. Next up, as you do more devices where you can find, do you know where to find compatible key caps with traditional labeling, delete, halt, et cetera? Any MX key will do the job. Okay, do you have one favorite besides CherryMX it? KL switches are pretty good, but really anything that's MX compatible. Okay, this is really flanking. Oh, there you go. Cool, all right, there's a vote for a tricky form factor with Wi-Fi, VLE, that way you can power within a USB port and a new power strip that has a couple USB ports. That's, yeah, that's kind of like an ESP32 S2 feather though. Like I don't, they would be like so big. I mean, this is for like, it's connected to a computer. Like these are not designed to be powered from a USB port and doesn't, it doesn't make sense. The whole point is that you're sending data to a computer and then the computer can act on it. Yeah, we'll probably do a little, you know, like power adapter, specific, pluggable Wi-Fi thing at some point. It might not be the same, it might not be tricky, might be something a little different, next up. Could one make some sort of stream control setup with different trinkets doing different things? Yes. You could, at some point, you would make like a custom build project. This is for like, there's times where it's like, you just want one key, or you just want one rotary encoder, and instead of having to like get an Arduino and plug this in and so on or whatever, it's all in one, you sort of like plug and go. All right, and Yuga mentioned that there's WASDI keyboards that does CAPS custom, et cetera. Absolutely, there's key CAPS companies. Anyway, so when I use the Kano extension cord, which seems to be, these three meter cords. Did you make a joystick trinket? I don't know. I mean, the thing is that that's tough about a joystick is that there's a lot of torque on it. A lot of these things, I'm trying to pick things that don't have high torque, because you'll just yank it out of the port, or you'll like, you'll bang the port back and forth. So, you know, joysticks are like that. Joysticks are not sensitive. They're very abused compared to rotary encoders. You just can't, you don't have torque on the rotary encoder, you're twisting it. Scroll wheel, the track balls. There's a couple things that we might experiment with, but stay tuned. Yeah, okay. Okay, so next up, hold on this keys. Definitely being naughty. I don't know if you're aware of why this one looks like you. Okay, so that was my little ducky demo. And so then I was thinking of making, you were like, oh, well, how about we make like this kind of trinket and that kind of trinket. Oh, let's go to the computer. Like all these different kinds of trinkets. I was like, well, I don't want to make like every, I don't want to make like 300 trinkets, like one for every sensor. So we thought like, let's make, you know, a trinket, like something that plugs right into a USB port that has a stomach UT connector. And then, you know, you can add any of our stomach UT boards on top. You just attach it on top.  And I was like, yeah, I think if you're gonna do that, you just plug it in over stomach UT and then you could run whatever. But you can't do that with a SAMD 21. The SAMD 21 just doesn't have enough memory to guarantee one every sensor that we have over I squared C well, because it just has a limited RAM. And like, once you start to, if you start to do some of our more advanced sensors or you start to, like you try to do a little bit too much and it quickly can run out of RAM. And so I thought like, also for like displays and stuff, like you can't really run one of our OLED displays very well in the SAMD 21. You kind of can, but like, not that well. So I thought this would be a good opportunity to make some chips using the RP2040 instead of the SAMD 21, which is not as compact, like it wouldn't work on the rotary trinky because it really needs to be small and the 2040 needs too much stuff. But if you're gonna, you know, if you have a little bit more space, the price is comparable, right? For the RP2040 plus all the extras. So, you know, I kind of came up with this on the afternoon, which is an RP, let's see, turn on, 2.q. So this is a RP2040 with a STEMIQT port on the end and it plugs into USB. And then this is the same size as our standard STEMIQT, like one inch by 0.7 inch. So you could just like pop the sensor on top and then you would like attach it somehow, like using the four mounting holes. And you would, you know, it doesn't make sense for every device, but like, let's say you wanted a, you know, a gas sensor, you would take an SGP40, plug this in and then you could get data out. For a lot of people, I would recommend using something like the MCP2221, which would actually convert it to something that Python can read. But I can see some situations where folks are like, no, I really wanted to spit out serial data or like the JSON data. Or they just, you know, they want, they want it to come in directly into something like processing or unity, right? Where you don't have a Python, you don't want to have a Python interpreter feeding data into it, you just want it to read. You can open up a serial port and read the data, but anything where you call a Python interpreter from it, gets complicated. And I get that, it's like there's people who, they want to, you know, integrate it into some C code or they want to maybe integrate it with web serial Java, right? All these things, it would not, it would not work well to do it over Python, see Python running on the computer. So this would be, you know, a circuit Python or now even Arduino supporting board and it just has a QT on the end. And it's really simple, it has like two megabytes of flash and you don't need that much. And then the boot and reset buttons are on the outside so you can kind of squeeze it if you need to, because it's going to have the sensor on top. So question? When do you think boards to convert a rotary encoder to I2C is coming? I don't give ETAs. Okay. I think someone's asking, is that a QT pie? No, it looks like it, but it's not. It's not a QT pie, but it's, it took a QT pie and it kind of tore it apart. It's single sided, which will make it a lot easier to make to fabricate and use a 603s, which I really like instead of a 402, so it's a single sided. Suggestion, maybe question. Ooh, you could do a Tricky with male SH connector and a little bit of spacing, which you could plug most of the STEM or QT boards in, the one. There's no such thing as a male SH connector. Okay, there's no such thing. That's right. Yeah. So you use this and a cable because you'd have to plug it into the top anyways. Okay. Okay, so let me show, let's show what I want and then we'll go into the great search. Okay, so let's go. So this is, this is, this is my Mimic, right? This is not the board I just designed, but this is like what, you know, it's similar to size. So the idea is that I would have a, you know, if you have like this VCNL 4040, actually I wanted my MCP 2221 and I forgot to grab it. Grab it. Hold on, sorry. There's so much on my desk. All right, while you're doing this, I'm gonna ask a question at the same time. Yeah, ask a question. What do you think, what do you think the most elegant way to parse Jason's serial data on a microcontroller is? On Arduino use, Arduino Jason and on something with CircuitPython, you can just use a string parse and capability or a valid, it's a dictionary. Okay.  Can you see the TVBGON project? I don't have a Jason Parsons, it'll fit in a SAMD 21. So I just, it valid the file that contains the Jason and it's fine, like you can do that. Like nobody's going to root your chip. So who cares? Cause it's like you wrote the code. So this is the MCP 2221, which is that same, you know, like you could theoretically do this. You would have a board on top, right? And you could attach it and then have a little connector. And honestly, I don't, I mean, the MCP 2221 is popular. I think it could be more popular. I think it does solve a lot of problems because we have all this Python code. So, you know, maybe I'd make a QT version of that, just, you know, a tricky version of that as well. But this is, you know, it's inexpensive. And then, you know, this could, could mount on top cause it's the same, it's the same size. And the question is how do you mount these boards on top and then you can use this little cable to connect them? Cause again, there is no direct pluggy. There's no such thing. Everyone's always like, oh, how, there, it doesn't exist. Believe me, if it existed, I would absolutely buy it, it does not exist. So instead you have to use a little cable. And then, you know, you could use something like these, these standoffs, right? To connect between the boards like that. I mean, I'd want a shorter one. And then it would snap it together and then this would be one physical shape. So that's what we're doing on the Great Search. I wanna find these because I actually got these in a kit and I don't know what they are. All right, we're gonna do the Great Search in a sec. Would you, I have ideas on how we're gonna do some of these requests, but would you do a Trinkie with the NFC reader? No, because the antenna would be huge. You'd bump into it and you'd probably break your USB port. Okay, so let's hop on to the Great Search, ready? Okay. Where? The Great Search is brought to you by Digikey and Adafruit. Lady Adafruit uses her powers of engineering to find things on the Digikey site. So you can find things on the Digikey site. So let us know when you find things or you can't find things. I can't find things. Well, a lot of people say I finally found the stuff I was looking for and now I can go to production or now I can go to manufacturing because before I couldn't figure out all the parts, leads times, all the things that I needed to get done for this giant project. So Lady Adafruit, what is this week's Great Search? Okay, for this week's Great Search, let's go to the overhead. I want to find something that will let me take a board like this, which has four mounting holes in the corner. And then I have a separate board and they're gonna be connected together through this cable. Ta-da, like so. And then I want them to, instead of this kind of jangling off here, I want this to be able to mechanically be stable, connected here.   This would plug in together and it would be one physical shape. So this is, I actually got these from a kit. Maybe it was a primary kit, I don't remember. And like, you know, these snap into here. Oh, and they don't come in easily. This might actually be the wrong size. Hold on, let me get the, yeah. All my pliers, we'll see. If not, I'll find the ones that are the right size, for sure. So, let's see, this is fit. I should have tried this before the video, but there you go. Okay, so this is one and let's do the other one.  Also quite challenging. So maybe I'll get ones that are a little easier to fit in. Hold on, I'll do one at a time. Okay, so there's one, the other. Okay, so it looks like squeezing it is the best way to do it. But this is, you know, mechanically a strong way to hold these, and of course, you know, I only have two, but I would have all four. And then this would be, like, a very strong mechanical connection. I also want them to be shorter. Like, these ones that I have in my tool bin, they're quite long. I think these are like a quarter inch or so, let's see. These are, well, they're quite long. So they're 0.32 inches. So I want something that's more like, yeah, like a quarter inch would be plenty. So that would be that far. So you came up with this, you're thinking about it, and then... But what are these? And you're gonna do exactly what you would normally do. You just have, we happen to, like, broadcast this and work with Digikey on these. So now you're gonna find these. I'm gonna find them. Okay, so I've shown you what I'm looking for, right? And here's the thing. I thought that these were called board standoffs, but they're like actually not called board standoff. So this is the thing. Knowing the name of the thing is part of the hardest part of the search. So let's go to the Digikey site. Okay, so we're ready to search. So I actually originally looked for PCB standoffs. So I was like, oh, this is a nylon PCB standoff, right? So there's almost like nothing that came up, and there was like LED spacer standoffs and terminal blocks. I was like, okay, well, that's not the thing. So then I thought like, maybe it's under standoff. And it turns out that you can go to board spacers standoffs. But when I looked here, I found like a lot of screws and hex thingies and like a lot of hex standoffs. And so I was like, well, you know, let's look for active, you know, and they're not threaded, right? Cause they have the little thing. So I was like, well, it's not threaded. So I searched for this. So I spent a lot of time here, but all I could find was like these hex things.  I was like, well, it's kind of like a number two, you know, maybe. So I searched and searched and searched, but I actually, and I was a little bit like, what are these, you know, I couldn't find them because it turns out that these things are not, even though they are standoffs, they're not called standoffs. They're called PCB spacers, different, different things. So, sorry, they're not called PCB spacers. They're called board supports, PCB supports. So it's a different, it's a different thing. So if you go to board supports, you're like, ah, that looks like the right thing. So even though they perform the same purpose as a standoff or spacer, they're called supports. So this was kind of what I learned. So it's like, oh yeah, look, that's a thing. It's like, this is what I want. So let's find the exact one I'm looking for. So let's look for active and in stock. And then there's a couple different, you know, there's a lot of options, but I think the most important thing is the board hole diameter, right? You saw like, you have to really like fit it in. So let's make sure that we have one that's really, ours is, our holes are, if you look at the PCB, this is a 2.5 millimeter, which is, you know, 0.1 inch. So I'm gonna basically select all four of these options or all three of these options. You definitely don't wanna go to two, too small. You don't wanna go to three, too large. Okay, so yeah, like these are starting looking good. Yeah, that's what I want. Okay, so then, it's like, well, how tall do we want it between board height? And remember I said, I want, you know, I want it to be higher than the USB-C port, for example.  But maybe I'd be able, we'll need to go up to a quarter, you know, just, I mean, in case like one, you know, one size is much more common or much more available.  So there's like now, okay, there's like these adhesives. These are kind of cool, but this isn't what we want. So I'm going to get the snap lock, not adhesive type. And then it's mostly a matter of like, okay, well, let's look at all the ones. And this one is kind of the closest to what I've got here. And it's also, you know, what I like about all of these is that there's tons in stock. So it looks like a Centra makes some and Keystone makes some, which is cool. And they're not too expensive, Worf makes them as well. But I like that this one, you know, Keystone, like I've heard of them, looks like they have a lot of options. They have one in the eighth inch. So let's look for eighth inch. And maybe like a little bit more, 3.5 millimeters. Yeah, I mean, there are not a lot of options for this. So of all of these, you know, the Keystone has a low price and has the most in stock. So what I did is first off, you can, you can check out this cool 360. Always like the 360, you can zoom in. You can like rotate. Hey, rotate. And then I looked at the data sheet, which I downloaded. And whenever I find a part that I like, especially mechanical one, I look at the data sheet to see the catalog options because, you know, there's sometimes more info. Like for example, you know, there's tension fit, easy lock in and lock in. And like I was like, well, this is the easy version. So it doesn't get any easier than this. These look like much harder to fit, perhaps. But these are pretty easy, I guess. And then, yeah, they come in different lengths. They also have a tension fit. I guess I might get a couple of each of one of these to try them out. So it looks like one is permanent and one is tension fit. And this is permanent. So this one might be interesting because with this tension fit, I could have to tell people like, oh, you know, attach the permanent side to the STEMA QT board, sorry, to the trinket. And then the tension fit part goes above to the QT board. So I think I like 7789, sorry, so 8879 and 8888. So I think I'm gonna get both of those. So this one, and then keystone. Also, these are called board supports. So I think I'll pick up like 20 of each and then I'll try them out and I'll see which physically feels easiest to use. Because with these, you really have to try them out. As you saw, this one can be a little tough to use. Hopefully the tension fit ones are perhaps a little bit easier. But I think this is a good solution. This will let people mechanically attach boards on top without any soldering at all. And I can include like a bag of 10 with each kit and then you can make your own custom trinket, basically. So it's a custom trinket land. And that's the great search. Okay, so let's do another question. Okay. Yeah, folks wanna know about the calipers. We have them on our website.  Calipers, or you can get mid-tutorials. Sure, I've had four. Not a poor question, but if you're looking for one, the NRF 52840 Feather Express has the space in the center as a debug port. The Sense uses it for sensors, which is great, but at its cost, any chance to update the Express or another version replaces the debug with a STEMI QT. No, no plans right now. I don't know if, yeah, maybe. Got it. I don't know. I got a lot of stuff on my plate. All right. Added the long list. Tricky naming, thanks for the secrets. Are there any stackable supports? I can make it like three pie. For those, I would use Hex. They're called male-female standoffs, and then you can have them stack up on top of each other. Tricky tower. Tricky, you can make a tricky tower. Someone will make a tricky tower. And you can use this in this, you know, you can get Hex standoffs, it'll fit. The problem is that you need Hex nuts and screws. What I like about these is they're all in ones, right? You just snap them on and it's like, ooh, I got the mechanical connection. You don't need anything else. Yeah. And then as we work on these, so these are, you know, just three of the five that we're kicking off Trinkies with. One thing that we've noticed is there might be like some really unique, interesting, weird, and maybe discontinued or not long life parts as far as like manufacturing and making them. Might do some limited runs of not forever Trinkies, also called NFTs. And we might have, you know, hey, there's only 200 of these. And it's like some weird like Sony scroll wheel that was inside cameras and we got a lot of 200 of them and they're limited edition, not forever Trinkies. So we might do something like that. Okay. All right. Well, it's been a long one hour show. So we got lots of content. Thanks everybody for coming by. I think we, I think we blasted them with Trinkies with bundle flies. Go try the bundle fly. Yeah. All right. See you next week. Slurp, slurp.


Since 1970, April 22 has been designated as Earth Day to help raise awareness of the impacts mankind's activities have on the planet and the environment. The theme for Earth Day 2021 is Restore Our Earth, and is intended to serve as a call to action for people across the globe to do what they can to restore the world's ecosystems. As the Marine Corps' premier Fleet Marine Force training base on the West Coast, Camp Pendleton covers approximately 125,000 acres, with more than 17 miles of coastline. Camp Pendleton's Environmental Security Office is responsible for ensuring Marines can train to win the nation's battles while protecting the environment and safeguarding the natural beauty of the base. From beach cleanups to water quality improvement, Camp Pendleton has some of the most robust environmental and wildlife conservation programs in the Department of Defense. Stay tuned over the next few weeks as we highlight the various programs of Board Camp Pendleton designed to protect and restore the environment.


and this is joint work with Dr. Krithi Gowel and Professor Adrenal Sengupta. By an affine semi-group, we mean a finally generated additive sub monoid of ND for some positive integers D. The cardinality of minimal generating set of an affine semi-group is known as the embedding dimension of S and it is denoted by E S. So, let S be a semi-group minimally generated by A1 up to An which are vectors in ND. The semi-group ring S is a case of algebra of the polynomial ring generated by the monomials T to the power A i where T A i is defined like this. Set R equals to polynomial ring and define a map pi from R to K S given by pi x i equals to T to the power A i and set degree x i is A i. Then this is a multigraded ring and pi is degree preserving subjective K algebra homomorphism and let kernel of pi is I S, then I S is a homogenous ideal and generated by binomials and it is called the defining ideal of S. Now, consider the cone of S in the rationales which is defined as the rational linear combinations of generators of the semi-group and set this at H S which are the cone S minus S and intersect with ND. An element from H S is called pseudofovenous elements if F plus S belongs to S for all non-zero S from the semi-group and this set is denoted by PFS and we call the cardinality of this set the Betty type of S. Remark the pseudofovenous elements may not exist. For example, let S is the semi-group generated by 2 0 1 1 0 2 then this S is the subset of points in N2 whose sum of coordinates is even. It means the H S is the subset of points in N2 whose sum of coordinates is odd and if we add S in H S then we will again lend into H S. Therefore, PFS is empty but when H S is finite and non-empty then this set PFS is always non-empty. Now, consider the partial order on ND defined as x is less than equals to y if y minus x in S. With this partial order PFS is the maximals of H S. For example, let this semi-group S. So, here this big green points are generators and the green points and the points under the shaded region are the points of semi-group and red points are the set of H S and you see these the points this one and this one these are the maximum of H S and these are the pseudofovenous elements. Now, we define the maximal projective dimension semi-group. So, semi-group S has maximal projective dimension if its projective dimension is N minus 1 where N is the number of generators equivalently depth of K S is 1. In Garcia et al. in 2020 proved that S is MPD if and only if the set of pseudofovenous elements is non-empty. Also they proved that if S is a MPD semi-group then A in S is the S degree of N minus 2th minimal Cgc if and only if A belongs to this set and this cardinality of this set is equal to the last betty number of K S over R. For example, let S is generated by 2 11 3 0 5 9 7 4. Then by Macaulay 2 we have this resolution minimal free resolution and the graded betty numbers of 2nd Ciszi modular 81 93 and 94 82. Then by the previous theorem of Garcia we see the PFS is 81 93 minus sum of the generators and 94 82 minus sum of generators and this set. So, here see the H S is not finite. So, it is difficult to find PFS from an infinite set. So, we can find PFS with the help of minimal free resolution. Now, we define symmetric semi-groups. Let press be a tau mod of N D and F S is the maximum of H S with respect to this order if it exists is called the Frobenous element of S. So, Frobenous element may not exist, but if H S is finite then they always exist. Fix a tau model and suppose F S exist. If PFS is F S only then it is called symmetric semi-group and if F S and F S by 2 then it is called pseudo symmetric semi-group. So, when H S is non-empty finite then it is called a C semi-group. We have C denotes the cone of semi-group and for C semi-group and when semi-group is symmetric and pseudo symmetric we give a characterization of this semi-group. Let us see a C semi-group and F S denotes the Frobenous element with respect to an order then S is symmetric semi-group. If and only if for each G in cone S intersects an N D we have G in S if and only if F S minus G not in S and it is similar characterization for pseudo symmetric. Now, we define extended Wilsk conjecture. The Wilsk conjecture is defined for numerical semi-group by Wilsk in 1978 and it is in since C semi-groups are natural generalizations of numerical semi-group in the sense that complement of natural numbers of numerical semi-group is finite and here complement of C semi-groups in the cone is finite. So, every numerical semi-group is also a C semi-group. So, in the C semi-group we define the Frobenous number like this and F S is cardinality of H S plus cardinality of the set G in S such that G is less than F S with respect to a tau model. So, Garcia et al extended the Wilsk conjecture to the C semi-groups like this. The Frobenous number plus 1 is always less than equals to the product of embedding dimension and the product of and the cardinality of this set. So, for numerical semi-groups in natural numbers this is just that Frobenous number the largest which is not the semi-group and this is just the elements which are not gap, but less than equal to the Frobenous L. So, less than equals to C is the usual relation on ND. Usual relations means G is less than equals to F if the all the components are less than equals to. So, for the C semi-groups with full cone we proved that S is symmetric if and only if the cardinality of these two sets are equal H is pseudo symmetric if and only if cardinality of these two sets are equal. With the help of previous characterizations we prove that for sigma symmetric or sigma pseudo symmetric semi-groups the extended Wilsk conjecture holds. For example, let look at this example. Let S be the semi-group defined by generated by 3 0 5 0 0 0 1 1 3 and 2 3. Then here we can see 7 2 this is the maximum with respect to the degree lexicographic order and we see H s is these elements which are not pointed. So, cardinality of H s is 12 and the cardinality of this set G in S G is less than equals to C F s is also 12 this one and we see emerging dimension is 5 and N F s is the sum of cardinality of H s 12 and those elements which are less than equals to F s with respect to that order degree lexicographic and that is 41. Then the Frobenius number is 53 and product of E S and this is 60 then 53 is less than 60. Then it is also less than the product of this is also less than the product of this and this because this is the bigger set. So, less than equals to C order is also is a smaller one. Now, we define the gluing of semi-groups.  Let S I be the submodents of N D generated by AIs. Then S is S 1 plus S 2 we say S is the gluing of S 1 and S 2 by S if S is in the intersection of S 1 and S 2 and the intersection of groups generated by S 1 and S 2 equals to the S z means generated by S only. So, for the gluing of semi-groups we proved that S is MPD if and only if S 1, S 2 are MPD and this is the description of pseudo Frobenius elements of gluing. So, the pseudo Frobenius elements of gluing are look like this. So, the question arises this set is PFS is always finite this set PFS is always finite, but the question is whether this is bounded in terms of embedding dimension. So, the answer is no we prove by an example that where the embedding dimension is always 4, but the cardinality of this set is increasing. So, let A is greater than equals to 3 an odd natural number and let P be a positive integer define this semi-group SAP generated by 4 elements and define this z delta which is the cardinality of this set is dependent on A and P. Then we prove that SAP is an MPD semi-group and this z delta is contained in the pseudo Frobenius elements and by the technique of gluing we prove that for each E greater than equals to 4 there exists a class of MPD semi-groups of embedding dimension E and N2 where there is no upper bound on the body type in terms of embedding dimension E.


Hey guys, this is the functions to lab and I'll be going over question one So for question one, we were given a piece of code and we are asked to Analyze the code and see what the variable foo will be when the code is executed So when analyzing code, I like to make heaps of comments in so I kind of know what's going on so we'll start just Putting in comments for these top two variables. So we know that these are going to be our global variables And we know that a is being equal to five and foo is being equal to zero So now we can jump in here to the setup And we can see that a is now being set to 10 so our global a is now equal to 10 So now we can jump into draw and we're calling bar of a so we know that This is going to be using it's got no local instance, right? So we have to use that global instance And we know that that global instance a is equal to 10. So we're going to be doing Bar of 10 now we come down here in the bar And it's initializing a local instance of a So this variable a is its local instance and that means that this variable can only be used within the function No other function can use that variable So we know that now we have a global instance a and a local instance a so we have to differentiate between those two So I'll just make a note saying we've got this global that's equal to 10 Now we've got this local a that's being Called with the global variable a So it's just being equal to the same thing as the global a so that means our local a is being equal to 10 And then we come into here and we're saying a is equal to 15 So a function is always going to use its local instances before it uses a global instance So this function goes in and checks do I have a local instance of a and we do So that's the variable it's referring to So now the local a isn't 10 anymore now. It's 15 and Then it's not returning anything to us as we can see here with the void And you can see when we come into here it says the value of parameter a is not actually really used So that's just saying that it's not returning anything It's not actually really changing anything because once we get to the end of this function This local instance We're no longer using it. It's like it's not even there So it's just change it's just creating this local instance changing it and then it's done So this function doesn't really do anything So let's make a note here and say nothing really happens So now we can come down here into this next line and Now we can see Again, we've got this Referring to this variable a and there's no local instance of a so we're using the global a And it's going to be equal to that of a so that of 10 So now we can come into here into our that function And again, it's creating this local instance of a So when we call it it's going to say, okay, I'm going to create this local variable. I'm going to call it a So now let's differentiate and say we've got a global a Which is still equal to 10 and then we have a local a Which is being equal to whatever the global a is So this local a is being created and it's going to be set to 10 And then we can come down here and now we know Or we're referring to a again and we're going to update a so a is equal to a plus one So again functions always use their local instances before the global instance So it says, okay, do I have a local instance of a we do so now A is going to be 11 and then this or this function is actually returning something to us So it's returning the value of 11 to us So now we know That a is going to be equal to 11 Now we come down here into this Next line of code and we can see that foo is going to be equal to a So there's no local instance of a within draw So we're going to use our global instance, which is now equal to 11 So I know this gets like a little bit confusing So if you guys have any trouble kind of figuring out what's going on you can always use the debugger So I'll just come in here and I'll put breakpoints on All of our main lines Right and then I can run this And it starts up here at this first line and we'll say go to the next step So now we've created this variable a we've created this variable foo a is equal to five foo is equal to zero Come into here now a is going to be equal to 10 and we can see up here it changed Now we come down here. We're going to call Bar of 10 jump into that and now we can see again just like I said before we've got two instances of a We've got a which is our local instance and this dot a Which is our global instance You can see that that variable a is just kind of created It's set to 15 and then we step out of it and then it's gone So again, nothing happens. We still have a our global a which is 10 and foo which is zero And then we went to call bat a stepped into the function bat Now we've got a which is 10 and this dot a our global instance, which is also 10 Run through that it returned to us a plus one So that was a or that would have returned 11 to us. So now we jump back up into here And if we step to the next line, we can see a gets changed to 11 And now we have foo which is going to be equal to a So now if we run through this We can see that a is just going to be updated again and again every time draws run To whatever its value is plus one and then foo is going to equal that as well So every time we go through to be 11 12 and then we'll go through to 13 14 so on so forth So hopefully this helped And just keep practicing with it if you're a little bit confused


You have 30 players who got their first playoff experience last night, getting it in that atmosphere against that franchise. How much can that help this team as you move forward in these playoffs? If it helps us play well on the road and prepare for another opponent, a tough opponent, then it'll be advantageous. But I'm just proud of the way the guys handle the environment, how the way they handle the preparation. Thought they were focused and ready to go. And we'll need more of that this week. Be emotionally and physically exhausted. What's the challenge in recovering from that then? Well, there is some challenge there, I think. When you put a lot into something like our players did and our coaches did, all guys are going to get some rest and we'll have to get them back in here, treat and lift and decide what we can do in practice on Tuesday, which will be a normal Wednesday for us and then work our way through the week. So you'll be open to changing your plan then when you see the players in here on Tuesday? Sure, yeah. Having met with Todd, I'm in of an idea where we are at this point in the season. I'm always open to doing those things and doing what's always best for the team. How's Janna? Sore, I like a lot of guys. How far is his David Long come in your eyes when he's the first guy of the bench? We only have so many guys at every position. And so our job as coaches is to get everybody ready that goes to the game, those 46 players. And some of them have starting roles. Some of them have special teams roles. Some of them have backup roles at one position or at multiple positions. And David has worked his way in there and tried to understand what to do. There's some things that showed up yesterday that were good and some things that you don't have to continue to be coached on, and he'll have to continue to improve on.  But if they come down and kick the field goal, obviously, then you would have liked to have the 140. How do you make that decision? See how we're playing defensively, how the game's going, how Brett's puntin' the ball, how we feel we can pin them down there, or just a lot of situations as it relates to, do we think that we can stop them? Do we think that that's the right decision in that instance? How do you make it feel that Bill, when he did it, was all grins and Bill, when you did it, was serious? I can only concentrate on one team. Just trying to do what's best for us each and every week. Sometimes that's the case, and then sometimes I have to do a better job. Again, I just try to understand what the rules are and play by them, use them to our advantage where we can. Do you feel like you guys had a little bit of an issue set in the edge last night? Set in the edge?  That's one of the phases to stop in the run. Is to be able to set the edge. And they found it a few times, but I thought, all in all, they ran a few toss cracks that they tried to get out there on the edge. I thought we played them well. I think going back to pre-season, that was a play that they had run against us in the game. In general, I think in the first quarter, Jan and Rashawn were out there. Later on in the game, I can recall Kenny triggering, and Logan to stop the toss crack. So it wasn't all just on the edge. There were some other plays, and again, it was competitive. It could have been better in the run game, but I thought it was good enough to allow us to win. How would you think they're kind of welcomes, touches, welcomes 32, 33 carries a game, and how much do you need him to be successful doing that even moving forward? I mean, I think we understand how important his performance and the offensive line's performance and the receivers that go in there and get the support players, how important that is to us and especially in the playoffs. I think Derek trains and prepares to be able to handle that load, to carry that load. He's got a certain skill set that's size and strength and speed, durability. These are all great qualities for a running back in January. So he'll do everything that he has to to get ready and to do whatever it is that we ask him to do in the game plan. You've talked about those little details and some things since you've been in this job. Do you think that he is still developing in that way? Are you seeing him see things better even? I think everybody continues to develop so that he's not just a one style back. He's very unique. There's not that many players or running backs in the league like Derek because there's not that many players in college that are like Derek. And by that, I just mean a bigger tailback going back to guys I played with or against where it was Jerome Betis. And again, it was a different body type but the size and Eddie George. Now when you watch college, there's just a different style of back. And so I do think that he's continuing to develop and in those multiple run packages or run schemes that we wanna run.  How valuable can that be as you move forward? Well, I mean, it's always bad. It's like on third down, if you can drop back and protect when the other team knows that you're throwing the football, that's a good thing to be able to protect. But also when you're in the late game situations and what we'd call four minute, if you can hand the ball off and cover them up and block them and guys can get those first downs that pretty much ice the football game, that's always really positive. It just, to be able to get the first down when we did with FERC and then to come back and get the first down, we knew there was gonna be 15 to 20 seconds left by doing anything. It's early at night. Just the challenge facing the Ravens from what you know and maybe what you've done so far. Number one in most statistical categories, offensively, near the top in almost all statistical categories, defensively. They're long in a secondary physical. Judan's playing at a high level. Defensive line is disruptive. They play with their hands. They're hard to move. Offensively, they have a best player in the league. It was impossible to tackle. Great scheme. It's almost, I think on any other day, it'd be fun to watch, but not when you're trying to prepare for them and stop them. Greg does a fantastic job. They're well-coached, they're physical. That's what the Baltimore Ravens have always been, especially with John. Fundamentally sound and they're good in the kicking game. Offensively, they're so different than everybody else. What are the challenges to getting ready for something that's not like anything you've really seen? We see it in doses, but not as consistently as they'll run the quarterback.  And there's an extra gap in there. There's an extra guy carrying the football. So you don't have to block them all. You can read one of them. They'll read the four technique. They'll read the five technique. They'll read the end or the outside linebacker. It just is a challenge to make sure that when you're playing option football, that based on what your call is, that everybody has responsibilities. And when somebody leaves that responsibility, that's where you give up big plays. What numbers for you guys were Robbie's little down yesterday? How much of that is, you guys were focused on the running game so much? Or how much of it was just a tough day at the office for the passing? Probably a little bit of both. What about in the passing game? You want to follow that up with something I don't mind? Well, maybe, you know, Tandale hadn't had a whole lot of what you might consider updates for you guys. Is that a challenge for him? Do we kind of be able to bounce back from that as well? We'll try to do everything we can to win a football game this week. And if that's throw it better, and we'll have to throw it better. And if it's just to run it better, we'll have to run it better. You know, it's a good defense that we played. Derek was having a lot of success. Our offensive line was moving guys off the ball.  We'd also like to win a football game. In the passing game, defending the Ravens with Lamar Jackson, it's kind of 11 on 11 football. How much does that change like how you have to approach passing? Well, you know, sometimes you pull the safety out of the middle of the field, which then, you know, cover four is basically blitz zero without the blitz. And, you know, he's athletic enough to buy time when he has to, to move around. He throws the ball from different arm angles. So it's been impressive just in the few games that I've watched today, you know, because you kind of hear about what he's doing, but you've never really, you know, watched it. You've watched it a little bit just in the crossover games, but then to be able to sit there and watch him, just improvise and make plays when there's guys there. Not sure that that's how they drew up the play, but that's what this league's about.  Good, you know, tight coverage, you know, late in the game there. They had to have it. And I thought he was in good, tight coverage that didn't foul, it was contested catch. And, you know, he got a PBU. So we'll need everybody available that we can have moving towards Saturday night. You've been a part of a two minute drill like that on either side where basically one guy and all runs in one screen, you got, you know, moving down the field that quickly in that part of the game. You know, every two minute drill is different.  That could be different, you know, going forward. But each game is different. You know, I thought our guys did a nice job and even when we threw the screen to Derek, was well blocked. He made a good cut and guys were finishing down the field.  What are the risks of doing that and what's the benefit of dropping 11? Well, you're trying to figure out if, you know, maybe they're trying to get 10 yards and try a long kick or 15 yards and try a long kick and that's where you get into situational football.  But there, you know, you kind of play that. Sometimes you play that game.  You know, you kind of go back and forth but figuring out what you're going to do, making sure that the players can execute it in the most critical time of the game.  I just think right now that the Titans, I think everybody that played in that game contributed. You know, Rashawn was very active as physical Kenny. I thought Kenny, you know, played safety, how I envisioned safety being played. He was physical, threw his body around for his team. You know, offensively we got a lot of great efforts up front, came off the football. You know, certainly Derrick played very well but you could kind of feel the line of scrimmage moving in the direction that we wanted it to go. Dane played well on special teams. I thought we punted the ball for the most part. Caught the punts clean. So again, there was a lot of great efforts. Field position in the second half was heavily in our favor. So that's a testament to all three phases. Surprised to, I guess, get an understanding of Tom Brady's Instagram video on Sunday. And I guess, did you reference that after the game? I referenced a lot of things. I meant, you know, just trying to focus on the Ravens. You know, Tom's active on social media. I'm not quite as active on it. I can never, he won't ever ask, answer me if he does it or if he has somebody else do it. So I'm not really sure. But I'm not as involved in social media as maybe my wife or my son or Paul would be. I guess for last year's win, have you returned for that when you see him next? Or bigger things at hand? You're in this league a long time playing and coaching. You know, it's unique to be able to compete or coach against players that you played with or coaches that coached you. I'm sure it'll come up again. But I'm going to keep the trophy that Tom gave me. What kind of an impact has that remained, Brock made, especially the last few weeks? Sure. You know, I mean, he's a veteran corner that's seen a lot of routes, that's seen a lot of different receivers. And I don't think it's an easy thing coming maybe here in the middle of the season. We run a lot of coverages. I'm probably different than head coaches that he's played for. And I think he's kind of gotten up to speed pretty quickly. And I appreciate his efforts. I appreciate his willingness to try to do it, how we're coaching it to do. So we're going to need a lot more of that on Saturday night. But I mean, you play for two different organizations and then you come to a new one. And so I think there's probably some apprehension. But I think he's bought in and has tried to help us. And he has. Did you have, when you looked back at last night, were there any running plays where you basically everything was blocked exactly as it's drawn up? Or maybe even more plays like that than an average game? I mean, there were some well-blocked plays. Usually the ones that are well-blocked is you see them into the second level untouched. There was a few of those. Again, I thought Keith and Arthur and Sully and Tony Dews put together a good plan for the run game. I thought our players understood it. You could tell by how they played and how they came off the football that they were confident in the plan. And they knew what to do, which allowed them to play fast and aggressive. So it's hard to run in this league, especially against that defense, multiple looks. So every week's a new challenge. We'll have another huge challenge on Saturday to try to find ways to move the football and be good in the red zone against the defense that's very good in the red zone. Top four, I think. What's the week like as far as recovery and preparation for another Saturday game? Well, Tuesday will be a Wednesday. Wednesday will be a Thursday. Thursday will be a Friday. And then we'll kind of travel on Friday. And it'll be nice that we just come off of a late game with an 8-15 game. So we'll stick to kind of the schedule that we had with getting them up, meeting a little bit, walking through, and giving them some time to get in their routine. Thank you, guys.