All right. Good afternoon, everyone. Let's do things set here. Let's do that. I could not get the YouTube chat to show up in OBS for whatever reason, so unfortunately we don't have the YouTube chat on the screen today, but I can see it once I shuffle my windows back around a bit here. It's just not in OBS, and I guess what I'll do is just make the Discord one a bit bigger, make up the space, and yeah I don't know. What's up with the YouTube one? I'll have to try messing with it next time. It just doesn't show up in the list of sources. Side OBS, which is odd. Yeah, there's a whole bunch of stuff in there. Just not that for some reason. All right, let's get this a little bit. Good afternoon, DJ Devin. How's it going? Thanks for dropping that link in the chat. Appreciate it. Okay, yeah, there it is. How's it going, Tyeth and Viada over in the YouTube? So yeah, I can just as another heads-up reminder for anybody that maybe just tuned in within the last minute or so before I started rambling about it. Normally we put the YouTube chat on the screen. It's not there today. It wasn't shown up in OBS for me. I didn't really have time to try and troubleshoot it, so I can see the YouTube chat. If you ask me questions or leave comments in there, I will eventually see them, but they're not on the screen today. The one that's on the screen is the Discord as usual, which you can always find at ADAFRU.IT slash Discord, as it says down below. In the live broadcast chat is where we are at during the live streams, including this one. And speaking of this one, let me do the introduction while we're here. So good afternoon. Welcome. Happy Friday. Thank you to everyone for tuning in. My name is Tim. I go by FOMIGuy on GitHub and Discord. This is the Deep Dive live stream, which is a weekly live stream where it is typically either myself or Scott Shawcroft, the lead developer of Circuit Python. This week, Scott's out, so I'm filling in. And the Deep Dive typically is going to be working on something related to Circuit Python. When Scott's there, being the lead developer inside the core, he tends to be working a little bit lower level than I am. I tend to be working either on libraries or projects. Occasionally, we venture into the core, but definitely not quite as cutting-edge stuff as Scott does most typically. But we're always working on something in the universe of Circuit Python, whether it's projects or libraries or core or infrastructure or just surrounding, you know, utilities or whatever. We're always kind of in the universe of Circuit Python. If you're new and you don't know what Circuit Python is, you can learn more on the main website for the project, which is here, circuitpython.org. This is basically an implementation of Python that can run on tiny computers called microcontrollers.   On that drive will be a code.py file with Python code inside of it. You can edit that code. You can add Python code inside of there. And then when you save it, the computer, these tiny computers on these little external boards, they will, you know, interpret and execute that Python code for you. So that's kind of the like 50,000 foot view of what we're doing. Thanks as always to Adafruit. This is their website, Adafruit.com. Adafruit is the company who is primarily sponsoring the Circuit Python project. So they pay a couple of folks who work on the project full time like Scott and Jeff and Dan. Adafruit pays them to do so. Adafruit pays some other folks such as myself to work on the project part time. Thank you as always to them for doing that. And if you want to help support Circuit Python and Adafruit, the way you can do that is just head over to their website, Adafruit.com and purchase hardware from them. They manufacture and design hardware out of the sort of Adafruit home base over in New York. You can find not only the microcontroller devices that run Circuit Python, as well as Arduino and all sorts of other kinds of code. You can also find all sorts of peripherals that you can plug into your microcontrollers to add extra capabilities, whether it's screens or LEDs or buttons or buzzers or beepers or lights or sensors or motors or servos or any kind of little electronic widget you could imagine. You can typically hook that up to a microcontroller, interact with it. And if you purchase that kind of stuff over at Adafruit, then thank you to you for helping support the project. How's it going, Tyeth? As well as DJ Devon, I'll be in and out. I have to get some gardening done before sunset. Yep. No worries. Hope you have a nice time with that. I've got some stuff to take care of outside over the weekend. So I can definitely relate to that. How's it going, Sea Grover? Good afternoon, my friend. Mark, we still have a few inches of, oh, a few inches of snow on the ground. My goodness. Yeah, we're luckily where I'm at. We're no snow, knock on wood for a little while. We haven't had any snow, but we are to the point where it's warmed up enough to where we've got the grass growing and got to get out there and get it cut, cut a couple of the other things down. So I'm going to pull up the camera here. What I've got loaded up to work on today is, drum roll please, a very blurry high portal. We will try to make a little bit less blurry. 82 degrees Fahrenheit here. Yeah, I'm like in between you two. I'm probably closer to DJ Devon it sounds like in terms of the weather. It's not quite 82 here. I think it's probably 60 or 64 or something like that today here. We have not had snow for quite a while. I mean, like we got a couple of flurries, like two weeks ago or something. All right. So what I have planned to work on today is something that I actually started a while back and kind of set aside to work on some other stuff and then kind of forgot to go back to it. So we're going back to it now, which is the outlined label. So a while back, probably a month or two or three ago, I was working on this originally. And I ended up needing to make a tweak inside the core, I think, inside of bitmap tools in order to make this work. And then I kind of went and did that tweak and it eventually got merged. I came back and started working on the outlined label class, but never really finished it up and never submitted the PR for it. So outlined label is going to be a version of bitmap label that will allow you to have, as the name suggests, a little outline or a border around the text. And first thing we're going to do is just load it up and see what state it's in, because frankly, it has been a while since I messed with it. I have no idea it's working. If it's broken, anything really, I don't know what state it's in. So we got to figure that out. So we are going to take that new, well, it's not new yet, but that development version of display text. So right here, I've got the real display text, and this is on my Pi portal. I am, I think just going to delete this stuff. I'm pretty sure this would just be real regular display text. But you know what, in case we want to switch back to it in a few minutes, I think what I'm going to do is just pop in here and go display text, real. Then we're going to paste the, what will become the PR one, sort of instead of decide describe to every project I've ever done. Yep, I am with you there, including all the ones that have eventually gotten finished. A lot of them always going to be ended up. I kind of, I'm like a puppy a little bit, right? Like I'm always like, want to play with the new thing.  After like, usually like three to five sittings on a thing. So if I don't finish it in that, then my brain jumps. And it just depends on what it is. Sometimes I'm quicker about going back to it. Sometimes I'm better about actually just toughen it out and finishing it. Sometimes though, it gets set aside. Okay. So there is an example. So I basically have a branch for this. I don't know if I ever did push the branch. Outline label is what that is. There is an example in that branch. Let me check the name of it is those we're just going to compare that to main display text outline label simple test. I'm going to grab that code. Let's send our code pie on the pie portal, I wonder. Oh, actually, I mean, we don't have to wonder because I pulled up a little bit ago. It's this. I know where this came from, though. progress bar test. I need it. I don't think so. I can't think of any reason why I would need it really. Well, I don't have auto reload on. This is a stroke outline for text. Yep, that's exactly what it is. Love to have the looked for it once couldn't find it. Yep, does not a well didn't really exist. Didn't really exist before. You can like do it with bitmap tools. Like with a lot of graphics and circuit Python really what it boils down to is like if you're willing to do some bitmap manipulation, you can get it done. There's just not a like easy to use wrapper for it. Oh, you know what? I need to paste this. I need to paste this not inside a lib, but actually in the root because the pipe portal has display text frozen in. This one's kind of weird. This one must be much older. It doesn't even have like scrolling label. I wonder how long I've been using this very old display text on here. Okay, I'm gonna. Can I cut? Oh, that's gonna that's trying to like refactor. I shouldn't have done that. I will say this is one of my like, one of the few pet page I have with PyCharm. Whenever you just copy paste a thing, it tries to like go refactor it for you. And I rarely like it's added this like it just broke our code. I could be blunt about what it did. I need to figure out if there's a way you can like paste without that or whatever I want like non smart paste or something, specifically the one you're working on. I'm an outline display style demo do it manually. I got you. Oh, that's right. I remember your I do remember you sharing that now yours has like a galaxy or something. In the background now that you say that I got a picture in my mind from the one that you showed me even had like I think multicolor if I recall correctly you had like some what's the right word for that like another right word for it but like not quite shadow effect but it's like I know like a shadow that gives it 3D embossed maybe that's the word I'm trying to think of I think. Okay, so first place where it's broken is that split. It looks like moved. So one thing bitmap label reset text. Yeah, one thing actually I need to do is probably merge main. Yeah, I think let's delete this again. Let's delete that outlined label I need to merge main into this I'm gonna mean I should be able to just do it right let's let me see that difference again. Our changes no contents are identical. Okay, I don't know why these show us changes. Okay, so I mean, at least here it looks like we didn't actually touch bitmap label or label or knit. So the merge should be pretty painless. Yeah, I want to keep a backup branch just in case I'm kind of like, I mean, I guess I can always just check back out to here. Am I actually pushed let's check that out. Studio but it works. Control shift fee. I'll try it. Yeah, thank you for the for the suggestion thing to test. I'll try it. We'll shift fee. I'll try to remember to try it next time I need to paste a file out line to label you okay. So I can always check back out here. So I don't need to make a backup branch. Okay, so then we're just going to merge main, which main into outline label okay, all of that I do for nothing is it was painless. In that case, I might as well go ahead and push. Can't think of any reason not to and I've already done it now. So okay, now we're going to take this and we're going to drop it on the device. The problems I have with my method is use I have to make five levels for every one text you want. And we go through the roof quickly. Yeah, you figure out a way to avoid that it'll be awesome. Yeah, the good news I will save on that front is this way does avoid that it's going to use a little bit more memory than a regular label but it's not that bad. It's not as bad as four labels it shouldn't be, because it's basically just adding pixels around the outside using blit. Okay, we're inside we are actually inside an outlined label. So I think there's a there's a change we're gonna have to make inside of there so it's weird that this is going back to here though but I guess it's just since the parent I suppose add outline that's going to be 108. Okay, yeah, so that is a tool split. Why would that not exist? Maybe I'm on a too old. Is that too old? It's kind of old, I guess doesn't feel like it's that old though. You can definitely do an update. I have a pie portal, Titanium 210. I mean, we're not that I do think we need nine dot x though, I guess, because I think I don't know the exact timeline one of the problems I will say with like, always working on new stuff. I never really know when stuff is in the stable one, necessarily, I tend to think of the absolute newest as the current even though that's not actually the truth. Oh, that sounds awesome. I want it. Yeah, this should work for you. I mean, it's broken right now. But hopefully by the time I am done with the stream, it will be usable and pushed into a PR. So you'll be able to try it out if you want. It basically does like I will one thing I will say is it's not going to be probably very fast. One thing about my way is I do think it's slow because pretty much what it's doing is for every pixel in the bitmap that represents your text, it's like blitting, like three by three pixels around it or five by five pixels around it, you can set the size in order to determine your outline. So yeah, it's kind of just like looping over pixels, which is not the fastest thing in the world. But it depends on how big your text is, if he is relatively small font. And I think it's still instant, basically. But if you have huge font and you change it a lot, I do not know. You don't know how slow it might look. There's a possibility it may look kind of slow. But it should not use very much memory, because the memory is down to just one bitmap. The same bitmap that it would use. If it was a regular bitmap label, just like maybe a couple of pixels bigger, so that there's enough room to actually put the border depends on what size you set the border, because it already leaves itself a little bit of room. But okay, now we're on RC one show is removed group group equals that's one that's something we should update. Let me put that in the repo. Probably all the rest of those should be updated to treat for them guessing. Maybe they already were. Whoops. Yeah. Okay, hasn't crashed. Did it actually work? Yes. Okay, so it's probably, yeah, it's kind of difficult to see here. We have the age old problem that we're pretty much always going to have of glare. So like if I turn the light on, then it will focus better. But then there will be glare. So see if we can point it away. But all right, one thing we could do, we should be able to just make it bigger still. Yeah, I mean, it's already at scale to we could put up to scale for. I mean, that's still pretty fast. I didn't, that still looked instant. So we will need to move it further inward now since we made it bigger. Should use anchor point and anchor position. So this is why I tend to always use those anyway. But I'm a zero zero fan, just say 1010. Okay, let me take the changes we've made so far. I'll line label, let's drop those back in the repo. Did nothing actually change? I guess only in here something changed. How did we fix the blit? Just installing a different circuit Python, I guess. So let's saying blit was not found. I guess that must have been a 9.0 change where it moved blit from bitmap tool from bitmap class over to bitmap tools. I think actually happened in the PR when I added the skip index, which I use for this. I was going to Alabama Cajun over on YouTube, a post it note or a white bit of tape hanging off the side of the board might work for focusing without light in the future. That's a good tip. Try that stick a little stick a little post it on there for it to kind of focus on. Yeah, my screen was very dirty today. Okay, so that's working. We're set to purple and green on this one. And that's working out all right. So surprisingly, this is not just like completely wrecked, which is nice. Let's take a look in the actual code, try to see like where we're at as far as what else would it need to be ready to kind of submit PR. Okay, so we need comments for this. Well, it's a setter, I guess. We should have comment for this one, I think. Let's do in this one. We're missing some arguments here. I guess those do I guess those get passed through though. Yeah, maybe we're not. Those aren't actually missing because those come from those come from the parent class, I'm pretty sure read the docs will include them. I mean, maybe we should put them here too. I don't know. I kind of like the idea of keeping it on the parent though, personally. So I'm going to go with that unless we come across a different reason. Why is this plus two? Oh, I think that's just the default way the padding works on the bottom. What is that for stamp source? Oh, that's the okay, yeah, yeah, that's the right, right, right, right. Yeah. So the way this works basically is like if you imagine every single pixel of the bitmap that represents our text, if we went around to every single pixel and we added a three by three of a different color, but skipping the original color. So the original font in this one is pink. So for each of those pink pixels, we're going to go and put like paste on top of it a three by three green, but our paste algorithm will ignore any pink. So it won't cover up the pinks, but it will add green around the outside. And then the stamp source is that three by three bitmap that were, you know, in my mind stamping, but it doesn't have to be three by three. You can actually set it to other things by changing the outline size. Theoretically, you could also actually change it to other shapes like right now, it's just a square. Theoretically, you could make it a rectangle or you could even make it like a circle with kind of rounded edges if you wanted to. But for now, I'm going to keep it simple on just the square. Okay. So if we have a stamp source, then we're going to loop over the height, we're going to loop over the width, we are going to, if the current pixel is the foreground color, which is pink in our case, then we are going to try to blit into the bitmap from our stamp source at the location of X, Y in our loop minus outline size to scoot it back so that we're centered on that pixel skipping the destination index of one, which again is our pink pixels. Value error, padding must be big enough to fit outline size all the way around the text. Try using a larger padding size or a smaller outline size. This looks like old code that could be cut. Okay. Yeah, this is the same logic. This is the same kind of algorithm as this. This must have been before I dived into the core and added it in there. So the skip desk index, that skip desk index is basically this if statement right here, but now it's an argument on blit. Okay. So this is going to blit the outline into, let the outline into the labels bitmap will stamp self dot stamp source for each pixel of the foreground color, but skip the foreground color. It does not return anything place text. Why would this be different? Oh, just because it's doing add outline. Realistically, I mean place text, I think is internal, right? Doesn't this exist elsewhere? Does exist here, but it's not commented anyway. So place text, what it does is basically take your string and loop over it and then copy in your glyphs one at a time. Place text, I think would probably, or I mean bitmap would probably just be self honestly. I'm going to copy skip index. I don't really understand this comment. I don't think I've ever tried to use a slanted font though. So Mizzier zero on the left side of the screen. Otherwise, I'll change the anchor point working with ATEC crypto. I've seen you've been doing a lot of work on that ATEC thing. I've got one of those things, but I did not manage to get nearly as much interesting stuff out of it as you did. I learned a lot about setters and getters of the properties. Things get complicated quick. I'll definitely agree with you there. That's how you're doing. I'm surprised it performs as fast as it does than impressive. Yeah, I agree. Actually, I was kind of surprised how fast it went. I found squares work the best. That's the method I use for the five level outline. I tried too many variations. I tried many variations. Square sounds basic, but works the best. Do we have anti aliasing? So skip index. It's basically a color that will get skipped. I don't really know why you would ever use it here, but this actually, I don't think it doesn't return anything. Oh, it says tuple. So x, y with height returns a, so I mean it's basically bounding box, tuple, bounding box, tuple with x, y with height values of the bitmap. I don't know, why does that get returned? I guess can it make a new bitmap inside of there? I think it can make a new one inside of there, in which case it would need to update the size somewhere else potentially. It doesn't say self.bitmap, which is a bit odd. Blit bitmap. It doesn't look like it creates a new one. Anyway, yeah, I don't know why it's returning that, but it's a bitmap label thing, not an outlines label thing. Place text, okay, that's looking good. Outline color, the color of the outline to draw, stroke size of the outline to draw. That looks all good. Bitmap label subclass that includes argument properties for specifying an outline size and outline color. Get drawn as a stroke around the text. Let me, oh, I've actually been in the repo this whole time, so let me copy this to the device. Didn't really change the functionality. Oh, should have done, control should be, I think in this case it wouldn't have mattered actually though, because it's not like renaming something this time, it was overwriting it. All right, quick sanity chess, quick sanity check. Let's make sure that still works. Yeah, okay, very good. We might be there, honestly. I guess I got this a little further than I thought. There were some fixes to do in the example, but I mean, there was a couple other documentation things, but then we're pretty much there now. I guess I shouldn't maybe talk before I run pre-commit. Maybe there's a lot of pre-commit issues. Pre-commit run A, we'll run it again too, since black just ran. How will it scale with the font of, how well will it scale with the font of scale two? How's it going to Shippu over on YouTube? Nice to see you my friend. It should scale fine. Right now we're on scale four, in fact. I scale it up to four to make it a bit bigger, and it should work fine with scale. As far as I know, scaling should be no problem. We could scale it up to eight. That's probably too big for the screen, I'm guessing. It's still pretty much instant, though, which is again kind of impressive. Yeah, should be, I believe we'll scale one, mess it up, I don't think so. I'm pretty sure any scale should work. This one's going to be too small to see on the camera, but yeah, any scale should work fine. Any integer scale, of course. Can we try larger text and larger border, double width, border, border three? Yeah, try anything we want. Let's see, so there's that outline. Right now, outline size. One thing I will say, the bigger your outline size, you start to lose these indentions or whatever. I don't know the proper term, but where this goes in, the bigger your outline size, the more closer to a rectangle around your text it's going to look, if that makes any sense. So like this was outline size, what was it, one? So let's do two. All right, see here how we don't have inside the H's anymore, that part?  So like this one's probably going to be almost a full rectangle. Yeah, almost. There's a couple little differences, a couple little cutouts, but once you get bigger, you're like full on just a big rectangle. Guesses you'd have to increase supporter size are outline size independent of font size. Yes, yeah, so you can declare the scale separately from the outside outline size. Yeah, so like right now we're on scale six, outline size four, but if we wanted to drop it all the way back to like super small, we can totally do scale two, but outline size four. Like we still have that same effect of it's, you know, the bigger outline size basically is going to make it into a rectangle, but you can change them independently and they should both like do the thing that makes sense as far as what makes sense in my head at least. Scale one on a big font size doesn't look that good. Not sure if there's a way to make it smaller because the text gets blocky the bigger it gets. Well, so if you have a custom font, then you can have a bigger font where it won't get as blocky. I mean the thing that gets the thing that gets blocky in my mind is the the stock font, but that's because the stock font is literally like a pixel font that's seven pixels by five pixels or something. It's very small for each glyph, so they just are blocky by their nature. If you scale them up, then that blockiness becomes like easier to see kind of, if that makes sense, but if you find, if you go and get a fancier font like, let's use a, let's do a custom font. Bitmap, no, what is it? Bitmap font, bitmap font, circuit Python. If you use a custom font, it can be curvier. I mean, our stamp source is a square right now as well, so it's, the outline is still going to be kind of square, but I don't know if I have these fonts. I tend to delete fonts because they're kind of big. Actually, I have quite a few. He says, as he's talking about deleting fonts, League Spartan, I'm pretty sure this one is kind of blocky anyway, but we'll see. I'm going to comment. I'm not going to keep this. Said size 16. Let's do scale one to start with an outline size one to start with. Doesn't restart automatically, of course. Didn't work. Get descendant. Get glyph. No, eight. Object. String object. Get ascent. Descent. String object has no get glyph. 311. I don't even think, I'm going to go back and try this, I guess, with the stock one. I don't even think this is an outlined label problem, though. Feels like this would be broken for the normal labels. 311 is on that get glyph. Ordinal char. And that says string. I am being so silly, aren't I? I totally set the font to the file. I need to load the font, obviously. Let us load the font. So yeah, we passed it a string, which obviously doesn't have get glyph. It's not a font. There we go. 40 pixel font. Times regular. All right, one thing I will say is I got to run to the restroom real quick. I will be right back. Okay, did this... All right, we didn't actually restart, though. Taste mode. Okay, so we did get that error this time. A reminder, removed everything, except Alpha and America on that one. Since it's for weather display. Same in and running out of light. Got to get some stuff done in the next 30 minutes. Yeah, take it easy. Scale one on the big... Oh yeah, this is blocky. Okay, yeah. Okay, that did work. Eventually got there. This font is still fairly blocky, though, as far as fonts go. This font is actually not all that dissimilar from the built-in font. It's bigger, I will say, but it's not that different as far as a style or anything. Um, let's try... Do we have... Well, if... I mean, if this is... Let me just regular 40. If it's got Alpha numeric, I mean, that's all we're using right now. So that should be fine. I don't want Scale 2, I guess. It might be a missing space, so it didn't render a space, but that's fine. If you thought space, maybe I'm thinking a regular label instead of bitmap label. I don't know. But yeah, that one works out as well. And so we could still... And that one is a much bigger font. That's size 40. It says in the name there. So what you can see is like the outline relative to text looks like a lot smaller on this one because the font itself is much bigger. That makes any sense. Feels kind of kind of intuitive off the top, but makes sense in my head, at least if you think about it, because that base font is just bigger. It's got more pixels. It's got more dark space in the middle. It's got more everything. This one actually looks pretty cool. There's not enough room for the Scale 2 to fit, though. Do I have Junction? I happen to know Junction is more curvy. I don't have that one. Okay. Is it in the repo? I think it's in the... Well, but it's in the bitmap font repo. 24. We'll do the PCF.  My bird that's no large. I don't have enough room, honestly. Looks like we made it. We got hit by the padding again. We are still on outline size one, so we pretty much have to bump up the padding. I wish we could like... That would be a nice improvement, I guess, as if it could somehow pick the smallest padding that would work. I don't really know... I don't really know how it would do that, though. Just truthfully, I don't really understand why it's out of bounds sometimes.  You know, like the D is very circular. The R is very curvy. The O, obviously. The outline still ends up looking blocky, though, due to the fact that it's a square, the stamp source, like we talked about before. What did our pre-commit end up saying? I haven't changed any code again. Have I? Only in the example. Which is fine. We don't really need... I think we really need to put the custom fonts into the example. Maybe we should be setting padding in the example, though, since it does seem like once you start changing fonts, it can affect that not work. Let's do it as like two to start with. We're just going to run that again since black made some changes last time. That's actually passing all the way. Nice, okay. Copy this one and call it test outlined label custom font. Paste the stock one back in, just to double check. I'll scale it up again. Let's go bigger again. Well, we want to make sure that we fit on some smaller screens, too. Let's try scale four. That's too big. Maybe scale three is where it's at. Oh, this one doesn't have the anchor point, actually, as well. I do want to steal that from the other one. Okay. Let me make sure it fits on that size screen also. And if it does, then this is the one I'll roll with. If it doesn't, then I'll take it down to scale two. Let me copy that. That's very old. The price of that's so old. There are S3. We're getting close. RC1 right now for 9.0. So we're getting close on 9.0. I couldn't save. It might be on. Yeah, it's on read only. Set up for web workflow. Whoa, whoa, whoa. Comment that out, restart it. It doesn't really matter, I suppose. We fixed this code. We don't even really need to keep this code. This is what's wrong with it, though. Sure, why was our simple test? This will fail the first time, obviously, because we don't have outlined labels. So we'll also take the library. On this one, we can actually put it in lib because I don't think it's frozen in. I don't know if the feather TFTs have anything frozen in. There we go. And that does fit. So I think we just, yeah, I think we just roll with that. This screen is like 135 by 240 or something like that, maybe. I know there's some screens that are 240 by 240. So the fact that we fit in this means we should fit on the 240 by 240s. I'm sure there are devices with a screen small enough that this might not fit, but the majority of them, this should fit. I don't know about PyGamer. Like 128 by something might be 240, I remember for sure. Anyway, I think we'll call that good. So what else can we commit? What are we looking here? We got some comments, delete that, add a comment. Like that's it. Add the padding, fix the root group, use anchor point and position instead of x, y, and then I bumped the scale to three. All good stuff. 9.x API, anchor, positioning, figure, scale, set paddings in example. Break the space into new line. If the screen width is less than 150. Oh, I see what you're saying. I think at least. So like, to be honest with you, I haven't tested new lines. I guess it should work fine. I'm just going to cheat. Yeah, good idea. Thank you. There's a wrap text inside of label, inside of a display text library that you could use to do that automatically. But this is also a simple test. Or the one thing, which is like supposed to show just the one thing. I do like this though, so it fits on more screens. Kind of a lot of these open. Why are these here? This file is not empty, first of all. Oh, we should try to build the docs. I don't know why those changed. Are they, what are they in main? Weird thing to be different. So RWRWR for all of these. An outlined label. If I check out main, should have updated main earlier probably. Okay, it is. And this again, they're executable in main. But that's just my main? Are they executable in everybody's main? Yeah, it doesn't matter. Honestly, I'm a little, I don't even really understand why Git tracks this for you. They are executable in main when you clone. Okay, so I need to go back to outline label and chmod them back to executable. Love wrapping. Also a phantom trunk eight plus ellipses. Yeah, that'd be cool if we had a helper for that. I don't think we do for the ellipses. We do have wrapping though. Yeah, permissions. I knew what changed. I just don't understand why really that would have happened. Can you do multiple? I'm just going to do them one at a time. I don't know. It doesn't matter. Oh, but it doesn't want to add that either, I think, because it doesn't recognize it as a change. Absolutely like add it manually. I'm pretty sure. Or go inside of here. Like I charm gets a little confused by that.  Okay, I don't know why we were getting that pop up, but that pop up was like when you hover on the clickable thing, it was showing a pop up, which then was not clickable. So it was just like preventing you from clicking the thing that spawned the hover. But it stopped doing it. It's nice. Okay, now we're back to only the new stuff. We added outline label. We updated API to add outline label to the docs. We updated examples to add a link to the outlined label. It's all good for a... Oh, it's doing it again. Okay, it's when you come up from down here, and then you can't close because that little thing is underneath your mouse. Come on, GitHub. What are we doing here? Should we... I'll just do it afterwards anyway. I was going to say, should I check if the docs build before we do this? But it doesn't really matter, right? If they don't build, we'll fix it. Looks like it's going all right. Kind of curious to look at it as well, actually, because I want to see if it got those extra arguments. Yeah, that built fine. These are outline label, simple test. That part looks good. API reference. So wrap, there's the wrap I was talking about before. Wrap text to pixels or wrap text to the lines. That one's got a weird name, huh? They both wrap to... I mean, they both wrap to multiple lines. One of them wraps to a certain number of characters, I'm pretty sure, and the other one wraps to a certain number of pixels. So it divides out the width of the characters in order to get to pixels instead. But they both effectively take a string and give you back a list of multiple strings that are cut at certain intervals. The list in here is super weird. What is up with this? Why is it like label and then bitmap label, and then label again, and then label.bibmap, which is like... Not even a thing you should really use necessarily for the regular label, especially. I mean, this is on bitmap label, though, actually, okay. Okay, because that is bitmap label. This is the API reference. Can we clean that up any? I'm not super familiar with how this stuff gets rendered. Yeah, unfortunately, we don't have a lot of stuff going on, do we? I mean, maybe we just shouldn't do this first, right? Or, but then we're gonna lose out on the wrapping. Pretty sure we're not gonna see wrap lines or wrap pixels anymore. Does those come from the base file, I think, the init file? What's weird? I mean, there's a bunch of things that are weird, but one of the things that's weird is why does display text label... It has no capital L label here, but display text bitmap label does have a capital. But then we also just have another capital label Oh, okay. So that one, okay. This one is the non-bitmap. So like, really, this should kind of be up here. And then this should be up here. And then this should be up here. I mean, I guess this is just the order it's supposed to go in. I don't know. Actually, these didn't work. I guess I don't know where those come from. That's weird that it lists parameters here, but not here. This one's like that too. Like they're all like that. Interesting. All right. Well, there's certainly opportunity for improvement in the docs here. Mostly the formatting of the API, I would say. But it does build and it does include the new stuff. And I'm not inclined to go too far. All right. There's our outline label. It does have our new properties. It would be, I mean, it doesn't show you the extents here, which is a bit odd because it would be nice if it would either show you all the parameters that exist because of the parent or at least like show you a link to the parent so that you could click it. I'm actually kind of surprised that doesn't work. It failed anyway here. It failed pylon. But I ran pylon with a different pylon, I guess. But I thought the pre-commit thing, I thought the way this was set up was like it specified all the versions. It must not be 714. But no, that's a hook. That says pre-commit hook versions. Oh wait, it's not pylon. It's black actually changed it. I just ran it. Did I not? I must have made a change after I ran it. Space, did I change that after I ran it? I mean, I guess maybe I changed the whole anchor point. Maybe I changed all of that afterwards. That's interesting. So where is that? That's on the method. So ours is a knit. I don't know, this might not. I don't know, this isn't going to work honestly. Where would it import that from? Where does that come from? Oh, it didn't import it to find it. But that was like a built-in thing. Yes, it extends it. It necessarily shares properties with it. Did we use that? Inherit dock strings? Have no inherit. Would dock inherit? Lock imports? I don't know where it would go. Just here I guess? Anywhere? Does pass this time or still fail again? Just run around crazy time for the cat. Yeah, I don't know. I don't see a difference. I mean it says here. I mean, I guess like if we wanted to get more manual on it, we could... I'm pretty sure you can link. I don't know the syntax. But I guess we could link to it there. I don't know. I don't necessarily want to dive too far into it. If I'm honest, the docks formatting, let's say genre of programming is not one that I particularly enjoy very much. I must rather be tinkering with code that kind of affects a program instead of an HTML page at the end of the day. This thing is cool the way it pulls the docks out of the code, but it's also a little frustrating sometimes when it's like... It becomes difficult sometimes to tell what a given change in the code is going to cause to happen with the HTML that's outputted. This did pass. I think we're good there. So we'll do that. All right, I do apologize, but I am going to have to run to the restroom again. So I will be right back. And then we've got about 30 minutes left. So I think what we'll do is use that on a different device. I will leave you with a teaser for... I must clean off the screen though. This is unacceptable, right? This is grody. All right, BRB. Okay. Okay, so I next want to try to use this fancy label as the overlay or the camera with the overlays. I'm 0.00 beta one. I'll go ahead and update. We might as well just update everything. He said... Yep, that's my ideas like the kind of comic book style fonts being overlaid like that. Exactly right. Yeah, so I did... I was playing with overlays a couple of weeks back, maybe two, three weeks ago. I was doing some overlays with the borders and the stuff like that. And then I've made a few other improvements to the overlays, like the ability to change the position and change the size. But I believe they are all still bitmaps right now. And so one thing I think would be cool is to be able to put a text as your overlay. For some stuff like that, like the kind of cool cartoony sort of font effects, or another one that came to mind for me was like wanted. Like you would see on an old timey wanted poster, like you could put the wanted text at the top or at the bottom, either one, and then like also use a sepia filter or something like that. So your photo would turn out looking like an old school wanted poster. The other thing that I think would be cool, which is less flashy, but kind of cool, I think on a functional level is you could put a timestamp in your image in the corner, like how cameras used to do before we had like metadata on the images and stuff. So it could have just like a little date and time that gets blitted into the bottom corner or whatever of the picture. I don't know if we can actually write the metadata from CircuitPython. That might be interesting to look into as well, but being able to just paste it into the image means we don't, it doesn't have to be in the metadata. Okay, I don't remember, I have no idea which version of the code would be on this right now. Let's see, this is not it. I'm glad this was, okay, this is the repo. Okay, simple camera is what this says. Overlay, no overlays, okay. Let's get to PyCamerRepo and I'll grab the overlay example because I think we start, I think we pretty much start from the overlay example. Ah, it was off by one. Play text, we can, yeah, we can close this one. I will take code simple overlay. Let's start from there. So this one just puts the overlay on the image. Sets the transparency and then after you snap the photo, it blitz it into a copy of the photo. Okay, so, yeah, this will be tricky because that's actually a string. It was doing more inside there than I remembered. Turns out, really foul to be used. I'm gonna try this. I don't know if this is gonna work. So we're gonna say this can now be a union of a string or a bitmap directly about bitmap, but then it shouldn't really be called new overlay file at that point. It should just be new overlay. I mean, maybe we should have, maybe we should have a different property. This one's called overlay. Maybe we should have overlay bitmap or maybe overlay with nothing else should be the bitmap and overlay file should exist for the file. I think I actually like that one the best. That requires a bigger change though. Okay, so here's the thing. We actually don't need to worry about this just yet. We can test whether or not this is even gonna work by just directly modifying overlay bitmap. So let me do that. So I'm gonna, I'm not gonna set either of these and instead what I'm gonna do is create a bitmap label. I'll just use stock. Seems like a fitting thing to start with at least, right? I think let's, should be all we need, I think, honestly. So pycam dot, well, what's the color on that? Let's change the color to ink, but it's hopefully easy to see. Okay, so pycam dot. So we're not gonna set overlay the property instead we're gonna set overlay bitmap and that's gonna be bitmap label dot bitmap. And then I think maybe the rest of this just works. I guess we shall see. I guess you discovered my good times font have no space. There was a bit of a zealous, I was a bit of a zealous about removing characters and font forge I'll fix someday. Yeah, I think it looked cool, honestly. I think optional args could do optional args. Maybe file is none or bitmap is none. File is none or bitmap is none. I'm not sure what you mean by that part. None type object has no attribute width and 12. I guess we need overlay to be something. None bitmap have equals combined bitmap. It says line 40, which doesn't even have code on it. That didn't even actually crash. That worked, but it is like absurdly small because it also gets scaled down for the preview. It's also centered, which I guess is just the default behavior. It's also a black background, I guess makes sense. We would still need to actually set the transparency color, but we also need to know if that's going to work. If it does work, it's going to be really hard to see. Let me also scale it up. Let me also... You could try setting it to literally this. I don't think that's going to be right though. Doesn't seem like the pink is working either. Let me snap a photo and let's actually get a look at it. Doesn't seem like the scale did anything. Well, I would say no, I just jumped. I mean, I didn't really jump back and forth that many times. I just tested on the titano and the feather, and then now I am kind of like moving wholesale to the memento, which I still sometimes call the wrong name, moving to the memento to try to use... Right? I mean, I haven't even gotten to the outline label just yet. I'm on the regular label still, or the bitmap label, I guess, but just trying to use overlays with labels more generally. But I will eventually like, I hope to get to the point of doing the outline label. Though I don't know that we'll make it in 19 minutes, especially since it's already... Well, the transparency is not working. We're about to find out whether the blit worked at all or not. One problem though is that the... Why did that get named that way? I guess this one... Or I still have a wrong version of the library? Why do I have commits in main? I don't want to push those, delete. I'm going to update the library on my device. Is it frozen in? I mean, I have it in lib, I guess. This iron bow. All right, I'm going to take another picture. I know we didn't even look at the last one, but I think I had a old version... Well, not even an old version, but just a partway dev version that had a bug of the library that didn't do the file names right. So I'm going back, get that, make sure we get the right file name after. Uh, didn't it? You get that fancy border working on the Mumento. I have not yet, huh? I mean, I guess it would work without the camera and all the rest of the stuff. Like we could put it on the display the same as we did the other devices. I'm sure it would work fine, but we have not gotten it to work in the camera now. That's what I'm headed towards, but not looking likely to make it in the next 16 minutes. I already have some overlays. It can overlay images right now. That's what I did add before is overlaying images. So like you can have a BMP file. Yeah, there we go. Now we've got our 00 back. Okay, so modified. That's the one with the actual stamp on top. So then what I'm trying to change today is make it to where you can do text instead of an image. Huh. Oh, it's up there in the top left. Interesting. Why do none of these... Okay, I don't know where hello went. I also don't know why. I'm not sure why the position... I'm not sure why the preview is in the middle of the screen, but the way that it came out on the file is... Boy, there is like a really dead angle right there. I guess it's just the camera getting dark actually. Okay. All right. Yeah, that's weird. I don't know why. I mean, we have several things going wrong. One of them is the color. We try to do pink, but we have very, very dark green instead. I tried to do pink. That's one problem. Is the color of the font is wrong? The next problem is the color of the background is wrong. I tried to do green in the background because I'm trying to get it to be transparent ultimately, but that's failing. It's coming out as black, honestly. So I guess if we set this to zero, maybe it will be cut out, but the truth is I'm not really trying to use black. Okay, that actually worked. So black does allow it to cut the text and be like... It doesn't have the black box around it anymore. Yeah, zero, zero. Yeah, that's true. Yeah, that's true. I just don't get why they're different. I'm surprised they're different. It's probably to do with... No, I'm not even going to hazard a guess. I don't really know why they're different. I'm surprised. Let's... I'll put it at... I'm very surprised that they are different. The location between the preview and where it ends up here. I thought they were effectively using more or less the same code. So I'm surprised that they're different. They totally are. I mean, this one is like... This one almost feels like zero, zero, X, Y. Well, no, because it should be pushed over farther still. Yeah, this one has just got a weird location. The color is still wrong. So I think the color is probably wrong because of RGB 565. If we use this, we might be able to get pink. It's also very small, I guess. Yeah, scale would not work because... Yeah, actually, I know why scale won't work. Scale won't work because scale scales the group, not the bitmap. If I were to go to the more advanced overlay example... So I started from overlay simple, but there is an overlay select. If I would have started from overlay select, there are actually some buttons you can press to change the scale now. So I could have tried that. No, we still don't have pink. I think it's a indexed color problem. My next guess, as for why our color is not working, is that the bitmap that is used by bitmap label is indexed, but the bitmap that this thing is wanting to use for its blit into the preview and its blit into the final image, it's wanting it to be RGB. So I'm getting super dark green because in my indexed BMP, the index is just like one or zero or two or something really, really low. We actually kind of would need it to be RGB so that the index stored in that bitmap would be the actual color value, not the just one or two, or else we would have to change code somewhere to access the palette. Yeah, that's going to make it a fair bit trickier. It's going to make it a fair bit trickier. Yeah, we could maybe make a function that will take an indexed bitmap and convert it to RGB by looking up each color in the palette and replacing the index of that color with the color itself inside the bitmap. The problem is the bitmap will have been created initially for only like two or three colors or whatever. So we are almost certainly going to have to make a copy of it instead of just modifying the original. I think the overlay code was doing something similar, color converting. Yeah, it totally is. It's doing, there's like all sorts of conversions going on, honestly. So because the image resolution, the color thing I don't think is because of the resolution. The fact that the hello looks messed up and is partially, potentially cut off, that might be to do with the resolution, but I'm not sure. 20 years ago, digital camera, this resolution been like $1,000. Yeah, that's totally true. Or maybe 30 years ago. 20 years ago isn't as long as it feels like sometimes, huh? You could probably store the index of the color in the image itself as a one by one pixel or something. That's an interesting idea, store extra data in there. Color space stuff is confusing. Agreed, a million percent. I would say I have a much better grasp of it after doing this work on the pie camera that I did a couple of weeks ago, but I still quickly end up in a point where my head is just spinning, truthfully. Which it looks like we're going to have to dive back into it at some point. But I think that's all the more we're going to get to for the evening. I don't think I'm going to have a solution for this because it's going to require something very, very tricky. Basically trying to make an RGB converter function, something that will take an InzX bitmap, convert it to an RGB bitmap, and then we should be able to use the RGB one for this purpose, I think. Might be kind of hard, but might not be. Off the top of my head, I don't think it will be that hard, but I also have that feeling about it.  Like maybe I'll try it and it just won't do at all what I thought it would or whatever. All right, I think we'll stop there for now. So thanks for hanging out. Let me say I appreciate all the folks who are watching this. I appreciate all the folks who came and said hi and asked questions and gave comments in the chat. I, for those of you that don't know, stream, I stream over on my own channel, FOMIGuy underscore Twitch on Twitch, as well as FOMIGuy on YouTube on Saturday mornings. So that is tomorrow morning at 10 a.m. central time. If you are interested in some more Circuit Python development content, then I would encourage you to come join me then or catch the VODs if you're not available at that time live. Tomorrow morning, I will not be working on this. I think what I have in mind to work on tomorrow morning is actually back over to the card pewter, the messenger server that we're writing on this card pewter device. If you're interested in that little teaser, you can go back over on my channel and there's VODs of the last couple of times I worked on this, but I think that's the plan for the morning tomorrow is I'll be getting back to that. So if you're interested in HTTP, web server, web content, JavaScript, HTML, that kind of stuff as well as display IO on the device itself, that's what I'm gonna be working on tomorrow morning. That's at 10 a.m. central time. I'm pretty sure I believe Scott's back next week for deep dive or if not, I should say, at least we just haven't talked about it yet. So I am working under the assumption that Scott will be doing deep dive next week unless something else comes up. So I will see you tomorrow. Scott will see you next week. If you join in for deep dive, appreciate all of you. Hope everyone has a good rest of your Friday, good weekend and all that stuff. And I will catch you all later. Thanks again for tuning in.


All right, good afternoon, everyone. Thanks very much for your patience. Just a few things here, and we'll get right to your questions. And so earlier today, Secretary Austin spoke by phone with Turkish Minister of National Defense, Yusar Guler, to discuss Turkish activity in proximity to US forces in Syria. The Secretary reaffirmed that the United States remains in Syria exclusively in support of the campaign to defeat ISIS. The Secretary also acknowledged Turkey's legitimate security concerns and underscored the importance of close coordination between the United States and Turkey to prevent any risk to US forces or the global coalition's defeat ISIS mission. Separate but related, the Department of Defense also condemns the recent terrorist attack at the Turkish Interior Ministry, and we wish those injured a speedy recovery. We will post a readout of the call later today on the DOD website. Separately, Secretary Austin also spoke with NATO Secretary General Jens Stoltenberg today to review priorities for next week's NATO Defense Ministerial in Brussels, scheduled for October 11 through 12. The two leaders discussed a range of transatlantic security issues focused on implementing Vilnius Summit deterrence and defense deliverables, as well as ongoing NATO operations in the Balkans and Iraq. A full readout of the call is available on defense.gov. And looking ahead to next week, Secretary Austin and Chairman of the Joint Chiefs of Staff General Brown will depart Washington on Tuesday for Brussels, Belgium, where they'll host an in-person meeting of the Ukraine Defense Contact Group on October 11. This will be the 16th meeting of the UDCG, since Secretary Austin formed the International Coalition in April 2022. And following the contact group meetings, Secretary Austin will subsequently participate in the NATO Defense Ministerial at NATO headquarters. And with that, we'll be happy to take your questions. We'll start with AP Tarkat. Thanks, General Ryder. She said the Secretary spoke to his Turkish counterpart about the shootdown of the Turkish drone. How concerned was the Secretary that these troops were put at risk and that despite multiple attempts to, I guess, de-conflict and get US troops out of danger, it still had to come to this? Yeah, so first of all, just a little context up front. Turkey is one of our strongest and most valued NATO allies. And that partnership continues and will continue. So this is certainly a regrettable incident. At approximately 7.30 local time in Syria today, our forces had observed UAVs conducting air strikes in the vicinity of Hasaka, Syria. Some of those strikes were inside a declared US restricted operating zone, or ROZ near Hasaka, and were approximately a kilometer away from US forces who relocated to bunkers. At approximately 11.30 local time, a Turkish UAV re-entered the ROZ on a heading toward where US forces were located. US commanders assessed that the UAV, which was now less than a half a kilometer from US forces to be a potential threat, and US F-16 fighters subsequently shot down the UAV in self-defense at approximately 11.40 local time. It's important to point out that no US forces were injured during the incident. We have no indication that Turkey was intentionally targeting US forces. And as I mentioned, the Secretary did talk to his Turkish counterpart and reaffirmed our commitment to continue to closely coordinate. I mean, Turkey is a NATO ally. And is this the first time that you can recall that a NATO ally has had to shoot down the aircraft of another NATO partner? Yeah, I think, again, it's a regrettable incident, but US commanders on the ground did assess that there was a potential threat, and so they took prudent action in this scenario. But again, the Secretary has talked to his counterpart. They had the opportunity to have a fruitful conversation, and again commit to one another that the US and Turkey will continue to closely communicate and coordinate. And as I mentioned, Turkey does remain a very important and valuable NATO ally and partner to the United States. Let me go to Courtney. On the phone call, did the Turks bow not to do this again, not to fly their drones over US? Or you said they were dropping ordnance from the UAVs a kilometer away from the US? I said they were observed conducting airstrikes. And including one that came about a kilometer away from US troops? They were conducting airstrikes inside a declared US restricted operating zone. Did they have to, on this phone call, did they agree not to do that anymore, or is that? Well, I won't speak for the Turkish minister. I would say that the bottom line is it was a very productive discussion on both sides. And again, a commitment that we would continue to closely coordinate to prevent putting US forces at risk, a reaffirmation of the strong partnership that our two countries share, and also an acknowledgment that, again, we will keep lines of communication open, particularly given that region of the world and the focus on the defeat ISIS mission. Can you say a little bit about how the US communicated with the Turks before and told them that they would shoot the drone down? Yeah, so I don't want to get into specifics other than to say that we have multiple channels of communication at multiple levels. As you know, US forces, as part of the Global Coalitions Defeat ISIS, have been operating in that area for a while. And of course, being on the border of Turkey and having US forces stationed in Turkey, we have multiple ways to communicate with our Turkish allies. But can you say about what level it escalated to before the shoot down? I mean, did it get as high as the commander of Central Command or something like that? How high up did it go? It went to a high enough level within the operational chain of command. I'll just leave it at that. Matt. So to be clear, the concern here was that that drone, you said, re-entered, got within a half kilometer that it might have launched an air-to-ground missile so close to US forces that it could have endangered their lives? Again, based on the observation of airstrikes being conducted and the fact that this drone was upwards of nearly half a kilometer from US forces, US commanders made the determination that it was a self-defense threat and so appropriate action was taken. So how concerning is it that, as my colleague said, with a NATO ally puts the US in a position to take self-defense actions, either through negligence or otherwise? Well, look, again, this is a regrettable incident and Secretary Austin has spoken with the Minister of Defense in Turkey. And again, we will communicate at all levels. And so we will stay focused on the defeat ISIS mission in Syria. That's why we're there in the first place. And so that will continue to remain our focus. Thank you. Sir. Thank you very much, General. First question. Was the United States or the chain of command really thinking that the Turkish UAVs were going to strike American bases there? Is that why this strike was done, letting the Turkish UAVs shot down? Because all rules of engagement have changed. That's why this incident took place. Yeah, well, again, as I laid out, based on the situation on the ground and based on the observation, the decision was made out of due diligence and the inherent right of self-defense to take appropriate action to protect US forces. As I said, based on the discussions with the Turkish Defense Minister and post-shootdown analysis, we have no initial indications that Turkey was intentionally targeting US forces. Again, it was a regrettable incident. And we will continue to keep those lines of communication open to hopefully prevent these types of incidents from happening. One last question, please. So you told Sierra and Turk just last night that the United States stands firmly by Turkey and its people in their legitimate fight against the PKK. And according to your NATO ally, they're doing exactly that in northern and northeast in Syria. So this difference of opinion in the terminology PKK, YPG, SDF, how are you looking to resolve that? Or are these two NATO guys going to keep shooting each other? Yeah, thanks, Eunice. Well, let me just reiterate what I provided to you yesterday. And you're right, as I said in my opening comments, we do stand firmly with our NATO ally, Turkey, and the Turkish people in their fight against the PKK. And the PKK has been designated as a foreign terrorist organization by the United States. So we condemn any act of terrorism against Turkey and the people of Turkey. And we recognize that the PKK poses a legitimate security threat. When it comes to northern Syria, we do remain concerned about the potential impacts of military escalation in that region in so much as it affects the civilian population and importantly, as it affects our ability to maintain focus on rooting out ISIS. And so the coalition and the United States remain very, very focused on rooting out the last elements of ISIS in this region. And so the potential for military escalation in that region can serve to become a distraction on this critical work, create instability in the region. And we've talked about this before. It's been a hard-fought battle to prevent ISIS from resurging. And so that is what we're gonna continue to stay focused on. We're gonna continue to advocate for de-escalation in the maintenance of ceasefires. But we will never question Turkey's legitimate right to protect its people from terrorists. Thank you very much, sir. Sir, do you have a, first you said, you mentioned that there's no indication that the Turkish UAVs were targeting U.S. forces. Do you have an indication of what they may have been targeting in the area? I'd refer you to Turkey to talk about their operations. Okay. Do you have a sense of whether this was a Turkish military drone or perhaps from another agency? Yeah, I'd refer you to Turkey to talk about their operations and their equipment, yes, ma'am. Thank you. Turkey says that terrorists, too, were planning suicide attack in Ankara came from Syria and that they warned third parties, which is obviously the U.S., to await PKKYPG facilities. I'm just following up my colleague's question, actually. What kind of facilities have been in those U.S. restricted areas, YPG, STF, or solely U.S.? Yeah, I'm not sure I fully understand what you're asking, but in terms of U.S. presence in northeast Syria, I mean, if you've been following this since 2014, at the height of ISIS, the United States has maintained a presence in this ungoverned space, working very closely with our vetted local partners in the region, the Syrian Democratic Forces. And so that as part of a global coalition to defeat ISIS is what we continue to stay focused on. But as I mentioned to your colleague, Eunice, when it comes to the PKK, we recognize and have declared the PKK, a foreign terrorist organization, and again, fully understand Turkey's legitimate right to defend itself. Yeah, let me move on, Chris. Thanks, Pat. To clarify something, you said there are multiple levels of communications with the Turks. Did the U.S. make repeated requests regarding this incident that the drone leave that area and warned that if it did not, or if it encroached again, action would be taken against it? And did Turkey acknowledge those requests before this action was taken? Yeah, thanks, Chris. I'm not going to go into the specifics other than to say, yes, we did communicate with Turkey, our inherent right to self-defense in the face of a potential threat. But again, in this particular case, it's a regrettable incident. No U.S. forces were harmed. We took appropriate action based on the situation on the ground. Thank you. Fadi. Thank you, General. I'm still confused trying to understand what really happened, because you say it's a great terrible incident. Not sure what part is regrettable, when you have two NATO allies and there's an incident like this. So again, the Secretary was able to have a phone call with his counterpart this morning and talk about the situation. Again, no U.S. forces were harmed, but because of the proximity of the drone to U.S. forces in Osaka, and based on the observations that this was an armed drone that had been conducting strikes, we took appropriate due diligence. And you said, initial indication, there's no intention on the Turkish side to target U.S. forces. However, how did you assess that, or the commanders on the ground assess there was a threat to U.S. forces that, and they deemed it necessary to take actions to protect U.S. forces? Right, well, at the time, you don't know what you don't know. You're making observations and you have to take quick action to, again, ensure the inherent right of self-defense. What I'm telling you is, subsequently, as we look at this and as we've had those conversations, you know, the initial indications are that there was no. In the phone call, was the Secretary able to get any guarantees from the Turkish side that these operations will not happen again in these restricted areas or cause restrictions? Yeah, again, without speaking for the Turkish defense minister, the tone of the conversation was, again, an understanding that we are too close NATO allies, that we will keep the lines of communication, that we don't want to put our forces, each other's forces in harm's way. But also, again, emphasizing the importance of the defeat ISIS mission. And that was a sentiment expressed on both sides. Thank you, sir. Thank you very much, General. I have two questions. I have a question regarding reports suggesting that cooperation between the Iraqi central government and Kurdistan forces Peshmerga has been highly effective in countering and reducing ISIS activities. Could you please provide your comment on this matter? Sure. Yeah, I'll provide a broad perspective and I would also encourage you to talk to CJTF OIR, which is squarely focused on supporting Iraq in the defeat ISIS mission. But largely speaking, as you know, I think that one of the key aspects of success in the defeat ISIS mission has been the collaboration between the ISF and Peshmerga forces in northern Iraq by working together against a common enemy, which is ISIS. And so certainly, you know, that is something that I think has benefited not only Iraq, but the region. Thank you. Another question, General. You announced yesterday that you had transferred Iranian weapons bound for the Houthis in Yemen to Ukraine. So three part questions. Two. Is Iran continuing to send arms to the Houthis? Is it your policy to seize such weapons when you can and when appropriated, transfer them to your allies? Yeah, so I'm not going to speculate about the potential future operations. Certainly in the past, we have seen Iran attempting to deliver weapons in aid to groups like the Houthis. And in the past, in violation of multiple international laws, those assets have been seized. Whether or not we will replicate this remains to be seen. Certainly when we did this, we did it under legal authorities in this particular case. The U.S. filed a forfeiture complaint over ammunition received or seized by the U.S. Navy from a flagless vessel that had been transiting the Arabian Sea from Iran in early of December, 2022. And so this forfeiture action is a product of the U.S. government's coordinated effort to enforce U.S. sanctions against the IRGC and the Iranian regime. And on July 20th of 2023, a final order of forfeiture was issued by U.S. District Court for the District of Columbia and the Department of Justice put out a press release which provides additional information on this forfeiture complaint. So thank you very much, sir. Thank you, sir. Two questions. One, as far as U.S.-India relations are concerned, India made a history recently at the G20 hosting leaders from around the globe. And President Biden was very clear about U.S.-India relations there. And last week here, Indian Forum Minister was in the building, Mr. Jayashanka. So where we do we stand, as far as military-to-military relation after G20 and also if there are any secretaries visiting India or Indian Defense Minister coming here. Yeah, thanks very much for the question. I don't have any announcements to make right now regarding any potential visits, other than to say that, as you know, we very much appreciate our relationship with India on a defense level. We continue to foster a stronger defense partnership with India, and that is something that I think you'll continue to see us do going forward. Well, I am saying that Prime Minister Modi also spoke as far as U.S.-India military-to-military relations and going beyond G20 and our relations because of China's rising in the region and threatening many nations in the region. So where do we stand as far as China's threat to the nations around that region? Well, we've been very clear on this that China remains the pacing challenge for the Department of Defense, and we do appreciate the partnership that we have with India and other countries in the Indo-Pacific region when it comes to preserving individual nations' sovereignty and abiding by the international rules-based order that has preserved peace and stability for many years. Let me go ahead and move on. Let me go, Ro. Yes, sir. Thank you. I want to ask you about the Secretary's meeting with the Japanese Defense Minister yesterday. The Japanese Defense Minister said in the meeting that Japan intends to acquire Tomahawk cruise missile by 2025, one year earlier than originally scheduled. Does the Secretary guarantee the U.S. will provide Tomahawk missiles to Japan by 2025 in the meeting? Yeah, thanks, Ro. So as a matter of policy, we are unable to comment on or confirm potential arms sales or transfers before they're formally notified to Congress. So at this time, in regards to their request, I'd have to refer you to the government of Japan. I would say that we've been very clear that we broadly support efforts by our allies to bolster their self-defense. Thank you very much. And time for one more. Yes, sir. A couple of quick questions on Ukraine funding. You weren't around last week when a lot was happening, but will the- I was in Africa. You were in Africa. And it does rain there, evidently, so. Good. That's why you're so curing. Okay, the ATACM's decision, if and when the President makes it, will it be affected by the lack of 24, if by 24 Ukraine funding? So on ATACMs, I don't have anything to announce or pass along on that front. So, yeah. Well, I'm not asking you to make a decision, not to decision, but given the funding issues, you didn't get 24 funding. If the President makes the decision, do you have money or authority to pull ATACMs from army inventories to send to Ukraine? So what I would say, Tony, is I'm not going to get into the potential impact on specific systems or capability as it relates to Ukraine's security assistance. You know, my colleague Sabrina mentioned earlier this week that we do have enough PDA authority and funding in the short term to last a bit longer and that we will continue. You'll continue to see us announcing PDAs on the regular cadence for the foreseeable future. Certainly, as we move forward, we will need funding from Congress. We'll continue to stay engaged with Congress both sides of the aisle to advocate for the funding that we need, but as it pertains to specific systems or capabilities, I'm just not getting into that. We've got about $5 billion of authority to pull from U.S. inventories. That's correct. We have a little more than $5 billion, I think $5.4 billion in restored PDA authority that remains available for Ukraine. We have about $1.6 billion remaining for replenishment purposes. That's the differences, what you're sure of. What's the latest thinking on a reprogramming request in a one of those arcane budgeting tool that you have available? Sure. So as you know, reprogramming is always an option for urgent needs. At this time right now, though, to my knowledge, no decision has been made on using reprogramming as a way to support Ukraine's security assistance. You know, we remain committed to working with Congress on the Ukraine supplemental and receiving a full budget. Thank you. Thank you very much. Can I call up on that one quick, please? Actually, I'll just do two more. Tom, since you caught my attention, let me go to Mike, and then I'll come to you. Thank you. I wonder if you could talk about the impact, the Russia's decision to move the Black Sea fleet out of Crimea is going to have on the fight? Is it going to have on the fight in there in Ukraine? Yeah, thanks, Mike. What I would tell you is I've seen the press reporting on that. I just don't have anything to pass along on it. I can't corroborate those reports at this time. So thank you. And all right, because you wave nicely, we'll do two more. We'll go Tom, and then the final question. Thank you. I think Sabrina mentioned on Tuesday that part of the decision-making on how the remaining money will be spent will be based on what the controller also says. We have X amount of dollars. We can spend it this way. So is that part of the mix as well? Like you have a certain amount to 5.4, we could spend X, Y, or Z, and the control will tell you how long it'll last? Well, yeah, so it's a great point, right? Because I know the question's come up. Well, how long is that going to last? And the reason that you're not going to hear us put a date on it is because it's all relative to what Ukraine's most urgent security assistance needs are, the situation on the battlefield. And so we will continue to tailor those PDA packages based on what they need on the ground. So again, we have enough funding to last for a bit longer from a Department of Defense standpoint. And you'll see this next week at the UDCG. Secretary Austin remains singularly focused on making sure that we're working with Ukraine and our allies and partners to get what they need to be successful in the battlefield, regardless of what's going on outside. Yes, ma'am? Sorry, another Blasey question. So I know you can't say if the ship's removed, but what effect will this have on the grain deal or the ability for Ukraine to export its grain if those ships are moved further down in Crimea? Yeah, so I hesitate to get into a speculative situation, certainly with Russia withdrawing from the grain deal. We've talked about the fact that this significantly impacts not only people in the region, but people around the world. You know, we were just in Africa, and this was a topic of discussion in terms of the impact of countries like Russia that are using food as a weapon to essentially negatively impact peoples around the world. So while I don't have any information on a potential Russian Navy movement, again, that's really something for them to talk about. I would say largely speaking, you know, it's just very unfortunate that we see a country like Russia using food, weaponizing food. Thank you very much, everybody. Appreciate it.


What's up everybody, Jason here for jazzyinfragescasebreak.com. This is our last filler we needed to do to sell out the last five spots in Finest 3 Case Break. This is 2022 Penini Capstone's Baseball One Box Break, Random Teams Number 5. And again guys, first we're going to do the break, randomize the customer names, teams, distribute the hits out, then at the end we're going to randomize only the customer names and the top five out of the 30 get into the break guys, which we're coming up in a little bit. So here we go guys, roll five into one, six times, here we go, one, two, three, four, five, six. Five into one, six, Jose down to J, five into one, six, one, two, three, four, five, six. Send those cardinals out of the Dodgers. All right again guys, stick to what you got. No trading, just a little filler box. I'll let you guys see what you guys got. And yeah, Robert Runkle helps out with both fillers, hip parade, and the immaculate. No, Kev gets hip parade, Sean Madagut too and the immac filler. Here we go, let's do this one right here. Aaron Judge. That's actually pretty nice. Whoa, it's Aaron Judge for Autograph, Patch Autograph. Wow, peak patch autos. I was thinking this was going to be just a relic. It's a pretty nice one there for a Yankees hit in a little box filler. There's the Yankees, Devin. There you go Devin, you have the Yankees in this break. That's pretty nice. If you're a Giants fan, I'm sure it really does, Pizzle. Luis Fries, there's a second auto, it's a 99. I mean, yeah, I was hoping for a closer game too, but I just been saying it for the last week, you know, since everybody was on Daniel Jones just having an amazing game against the Vikings is that Eagles defense is not the Vikings defense. And I just thought he wasn't going to have enough time to throw and look at him. Great coverage and that D-line is just eating up their offensive line. I mean, it's not surprising me at all.  But who knows, man? I don't want to call it a game yet just because I don't think we're going to be the Chargers, but you know, Chargers losing that lead after 27-nothing was embarrassing. So until like it's like 27-nothing in the fourth, then I'll probably feel a little bit better. I hope it's San Fran versus Philly. I mean, again, I'm not trying to say because I'm scared of the Cowboy. I just rather play the San Francisco 49ers just because we haven't played each other all year. But I think Dallas is going to win tomorrow, so I don't know if that's actually going to happen. But I hope I'm wrong. Oh, a nice little filler box right here, guys. I think so too, I don't cover a minute. I hate to say it, but I hope I'm wrong. All right. There you go. Aaron Judge, not too bad you're out of a filler. So let's switch scenes. I'm not scared 100% man. I think we would eat Brock Purdy alive. So that's not who I'm worried about. Dallas matches up really well with us, so that would probably be a little bit of a tougher game. All right. Here we go. Dice Roller, customer names. Roll one out of five, six times. Good luck. The co-worker you can stand. That changes the way it goes. All right. Six times. Here we go. Top five get in. One, two, three, four, five. I think that's everybody though, Rex. And six. Usually the people you can stand are probably the teams that they root for too. Six times, six times. Just missing out was Jay. Sorry about that, buddy. All right. With top five, I don't know. Did you get multiple spots? Jay, I don't know. Tristan, you're in. Jimmy, David, Tristan and Tristan. There you go. Congratulations, guys. So that break will be coming up in a little bit. I'm hoping another filler sold out so that way I can do that first before I take a break and then we'll come back and do that hour-and-a-half long break. So appreciate it, guys. JaskySkatesBrace.com.


Alright, I already put the tissues away, so don't try anything this episode. Ladies and gentlemen, welcome back to the channel, my name is Jack the Buster, I'm Shinobi. In episode 117 of our MHA Watch Today called Inheritance. Last episode being a heartbreaker as we saw Twice fall. Dobby actually being a big culprit in it. I mean, he knew that Hawks would save him initially, but I think a lot of his wounds and whatnot came from Dobby because Hawks intentionally didn't hurt him. But he also had to at the same time because, uh, TWICE was trying to kill him. He was so upset by the fact that he had been tricked again by someone he thought was his friend. We're gonna hop right into it, if you need a channel to chop us up and hit that big boy bell, and now let's get started. It was Dobby's actually, not him. I mean, well, I guess it was Hawks, apparently, but... Dobby just made it so much harder. How can you say I can't believe you killed him whenever you were going to? He doesn't care? No, he... Wait, he is smiling. Oh, damn. It doesn't seem like... Is he just like a permanent smile? Ham and Sugar Rock were the only two. So that's Hawks' real name. Boy, he knows more about Hawks than Hawks does about him. It was that long ago when he still found his real name? I think Dobby is a huge player in the game. Almost on the level of Sugar Rocky, probably. Dude, he is just... We told him. Even more than the lead. Steinswell? My God! What correlation does he have to Steins? Bro, it's been a minute. I love Steins. My favorite characters. He's in prison, right?  Like, I don't understand. He related to him? Did he train under him? He's carrying out as well. I think Steins is in prison. I get so geeked hearing his name because it's been so long. Like I said, I love him. His design was so sick. Oh, shoot. Endeavor is headed in, baby. I mean, all-crossed has is like the shields, right? X less? That was glowing. Oh, yeah. When the teachers show up, baby. I do like the look of the shields, like the titles and whatnot. Yeah, Mirko is in rough shape, to say the least. He's got that arm crush. I mean, she's doing pretty well against no moves that are higher than like the high level. They're adapting to her. God, do the arm is so hard to look at. That one just looks gross, man. No! Oh my God, he's got a leg, too. God damn, Mirko is relentless. No, man, she can't die, too. She's gonna destroy it. That's the two Sugar Rockies in. I was like, no way can she get away with that. There's no way they let her. Oh, no. She's still gonna get the hit in. Endeavor! Let's go! Oh my God, that leg. He's just obliterating it. That's just so bad, they're rolling them now. Ew, layers of bone in the no moves? Does he mean a leg? When her body understood she needed to destroy this? That's vinyl boss? Oh, this makes me so nervous, because I know this isn't how Sugar Rocky goes. There's no way it is. It's only a 75% too.  His physical enhancement? Dude, some of their designs are so cool. It shows you no moves on a deeper line of thought now. And you can see him connecting the dots. Wow. See? Way deeper lines of thought now.  What, critical thinking? Come on, take this. This place is enormous, bro. Look at my tubes. Oh my God, that zombie! Oh, this OSC is really good though. Oh, gosh. Oh, God! Jesus! Go! It's done! It's broken! Wait, maybe not? No, yeah, it's broken. Wait, I feel like him not getting into 100% is a big, big deal though. Like if he had gone to 100, he would have been like the ultimate weapon. I mean, he's quite insanely strong now. He's gotten way stronger, but... Okay, you gotta get her out of there. She's in rough shape. Oh my gosh. Oh, no, don't make me watch, please. He's like, damn, maybe she's like a promotion. Oh my God. He said bear it. Oh. Oh no. Nice! Yes! Good job, everybody! Oh no, it just cut away. No, I think Endeavor is fine. There's no way he loses the one no more, right? He's not just a naughty kid anymore. Dude, it feels like it's... It's been, like, come so far in the show. So what does Exiles do? They said, I think. This guy is a gigachat with the shields. Oh, he can save it. Dude, his outfit looks nice. They look really clean with like the mask. He has to. Oh no. The lightning, the arc. It's happening. It's too late. Dude, President Mike almost made it too. I wonder what would have happened if he had broken that worry, awakened him. President Mike! Yes! This is for their friend, their comrade. What a hit. DJ Punch! Oh, this makes me nervous. Oh, Shigaraki's right there. End of the animation. It's all dying right in front of him. He has to be revived. He's tricking them. This makes me so scared. What is he supposed to do? Oh no. Exiles is dead, man. They're almost singularity there. This is not the words of somebody that's lost, President Mike. That's him. Oh, wait, no, he taught it? He was the only one that reached out to him. Oh, he gave him the ability to do that. Oh. So he gave it to him. Okay, the original creator of that theory. Yeah, I bet with this person that hurt you. Oh no. I can't tell if those are happiness or sadness. I got a terrible feeling either way. But he's in dream land. Wait, what is his quirk? Why does it still show it every time they appear? His backstory was rough, man. I wonder if there's any hope for him to be a good person. I have this tiny feeling in my heart that there's some chance Shigaraki could be good. But it's such a villain's quirk. It's like his destiny to be a villain. Oh my God. Also, one gave his quirk to Shigaraki. This family is stopping him from that path of darkness. Oh, maybe there is no hope. Oh my gosh. Oh, dude, Shigaraki is going to be a force to be reckoned with if they can wake him up. Fart his body. Run, X-Less! Run! Unbelievably dead. Shigaraki is awake and he is not going to be happy. Well, I mean, things were already kind of bad. It's crazy how many perspectives we can shift to and how we're, what, four episodes deep into the scene? Five? No, this is four. And Deku is not even a part of the show, bro. But it's still insanity because he doesn't really have a place in it right now. But my God, Mirko, she has earned the pay raise. If anything, I really thought she was going to die getting that thing open. Like, I thought that was the end for her.  I think it was just because of last episode with Twice dying that I was, like, kind of on edge. I was like, okay, this is it for anybody. But a big reveal also this episode with Dabi having a very strong connection to Stain, which that was way out of left field. We haven't heard the name Stain since he was put away. But either way, the season keeps on delivering just the constant action, the constant twists and turns. Shigaraki is back in the mix, which is going to make it even worse. So I'm excited to see how the rest of this plays out. If you're new to the channel, drop us up and hit that big blue bell and I'll catch you guys in the next one. Peace, peace.


Felly, godi rhaid i elu gŵr i'n mynd i ddaeth yn dindeidol i'n rhan o'r ystafun ac i rhan o'r ystafun yng nghydion i'n Iechyd Eidol. Roeddion o'r gyfglwyd Cymru ynghyd i'r Gweithreidheith Gwyrdau Llyfrgell, Llyfrgell, Llyfrgell. Felly, fe gynnaidddiadau i'n cyfrifytau i'n rhan o'r teimlo. Neiddawn ni gynnau i ddiweddieddu i'n ymmyud. Eidw'u cyfrifytau i'n meddwyddu i'n defnyddio i mi. naced, and he clothed me." deport me. Inasmuch as he have done it into one of the least of these, my brethren, he have done it unto me. Thys yolkf yw what it was and what it felt like to be a refugee. He was one. As a child Jesus' family fled to Egypt to escape the murderous king Herod, and at various points in his ministry, Jesus found himself threatened and his life placed in danger. Ultimately, he would lay down his life for each one of us. Perhaps then it is all the more remarkable that he repeatedly taught us to love one another and to love our neighbour. Truly pure religion and undefiled before God is this, to visit the fatherless and the widows and the reflection and to look to the poor and to the needy and to administer to the relief that they shall not suffer. There are highly charged arguments in government and across society regarding what should be done to assist those who are refugees. My remarks today are not intended in any way to form any part of that discussion, but rather to invite us to focus on those people, those who have been driven from their homes and from their countries. In the Book of Mormon, we read of the people of Alma who, in their prosperous circumstances, did not send any away who were naked, or that were hungry, or that were a thirst, or that were sick, or that had not been nourished. They were liberal to all, both old and young, both born and free, both male and female, whether out of the church or in the church, having no respect to persons as to those who stood in need. Being a refugee may be a defining moment in the lives of those who are refugees, but being a refugee does not define them. Some of them will go on to be teachers, musicians, engineers, indeed many of them are these things before they left their countries and lost everything. This moment does not define them, but our response to them will define us. Verily I say unto you, and as much as ye have done it unto one of the least of these my brethren, ye have done it unto me. In the name of Jesus Christ, amen.


Well, my dear students, the course is Labour Policy Pakistan and the topic is kinds of codification. Dear students, codification is the process of stating laws in a code. This is the mode of lawmaking in continental Europe among the civilian systems. Dear students, the model is no doubt that of the codes of the ancient world, pre-eminently the digest of Justinian. Look at Wikipedia. You will find out the meaning of this in detail. My dear students, the idea behind the Cauchy codification is that all the laws in the code making it known to all the people and not just for a trained elite either, which made the idea appealing to the revolutionaries of the 18th century. The codes merely interpret the code which can be altered by the legislature, my dear students. Codes have spread for intellectual reasons in this word, my dear students. My dear students, you would be enlightened to know that the English legal system which has resisted codification may have been tempted in the Victorian era to put together a code of commercial law. My dear students, this very change explains the sale of goods act 1893, partnership act 1890, bill of exchange act 1882 and marine insurance act of the later part of the 19th century, my dear students. My dear students, English lawyers are still resistant to the idea of codification. Law commissioners in Scotland and England are more likely to favour it because it offers the opportunity to make matters clearer outside the legal community and to resolve outstanding anomalies. My dear students, some regularly consolidated statutory areas of law come close to being very complicated codes and example perhaps being the companies act to be a proper codification by dear students and act must consolidate previous statutory enactments and take into account precedents in point. Dear students, code is of following kinds. Creative code, Consolidating code, Creative and Consolidating code. Now let's move on to discuss what is my dear students creative code. Creative code refers to the codification made first time. My dear students, Consolidating code is the sum total of all existing statutory laws, customs and precedents on a particular subject. Consolidating code is not a new thing but it is called Consolidating code. Third kind of code is creative and Consolidating code. Creative means new things, new laws and old laws. Hope you have understood the topic. Thank you very much indeed.


वाड शुऊपी तो ड़ता eliminating वाड शुपी तो ड़ता वाड शु�希望 तोड़ा स्विल्साईटिनिन हyun जन्व coordin and people from all sections of society God have here to protest against दिवस्थ ख्यान्गच्छात के विश्रत है मिन्वाने फुऽ कही शेकिनगा अ औरीं मेसक थकनिन अगो � shoot his appeal if somebody is migrating from its land of independence, we need to see what are the crisis which has forced them to migrate. You can see it from the recent citizenship amendment bill where persecuted people from all religions are welcome but not Muslims. The Indian government is addressing its Hindu constituency that look here are intruders, illegal intruders and they are threat for our internal security. They are potential terrorists. That is what Rajnath Singh said yesterday in Jammu and Kashmir. We have come here to give our strong opposition to the move by the Indian government as well as to demand from the Myanmar civilian state that the violence on the Rohingyas must be stopped immediately and they be given equal citizenship rights as other ethnic groups. We appeal to the Indian government that till the time there is no peace, the Indian government should return it back to India. Islam never wants to support terrorists. These are small children. They don't even know their religion. They are Muslims, Buddhists, Hindus, who are they.  So it's not that we don't know how to live with Muslims. Muslims are very much part and parcel of Indian life. But this is the first time that from the governmental positions we see this fear, psychosis being created and spread. They have been subsequent waves. The international community has been silent because of these poor people have not had a voice to present their case in front of the international community. So the persecution is not recent. It is historic persecution and enough is enough. In India, they are running private army, they are training. The present BJP government is eyeless, completely no has no eyesight, no hindsight or no foresight. They are trying to appease the generals.