I'm Sergei Bratis. This is Rebecca Shapiro who did all the work. I am a research assistant professor at Dartmouth. She is a PhD candidate in our lab and you know for a who we are well you know we're here from the frozen north the northern Apalachia and it's a live-free or die state. This talk will be as Travis just brilliantly introduced it about the deep magic that is being used everywhere whenever a program runs and is severely underappreciated as any deep magic is. So what we're going to show you is that there is enough power in just the linker loader to be borrowed to write in the ELF metadata just in ELF metadata not malformed or anything. Any program you might care to write. Any transformation of your process memory any transformation of your runtime that you care to do which is to say it's during complete it's got loops and becks built it. The interesting thing about this is besides illustrating a philosophical principle on which I will expound profusely in just a few moments. It happens before memory protections are set and it doesn't care about ASLR at all because this is the linker loader this is the thing that finds the dynamic symbols. It's the keeper of the names and ASLR is nothing to it. So with that in mind you know I'm sure you can find some interesting obfuscation offensive defensive users of this thing we're going to talk about the general mechanism and what it teaches us about what our operating systems really are because this is what hacking is about. There is a computer as taught and programmed and then there is a computer as it exists really. We find that computer so we're exploiting it. If your system has not been exploited you don't understand it. And exploits these days are no less than programs running on the target they come in encoded as crafted data although there are other delivery methods but this is the most common and they reliably cause the target to run a computation that was never intended to run. It happens to do that by leveraging above an error a feature these are known as primitives and there is a brilliant introduction in Frack 61 article 6 by JP that talks about this particular one primitive which looks like a really weird assembly instruction. A, A, B, A for BMO right 4 bytes almost anywhere. And if you're familiar with format strings %n is that thing that you can leverage to cause the internals of the print format or converter to do a computation for you that was never ever expected and can be quite a nasty surprise to the owner of the system. So in the slide deck on the disk on the CDs that you got I have a rather wordy set of slides explaining why this is interesting. And then of course just a couple of hours before the con I got this great idea. Hey there would be people who like HP Lovecraft here. Possibly. Okay. So weird machines. I'm going to talk about this term that got coined when I was giving a talk at Felix Lindner's Rikiri T. Lab's workshop and you know that I absolutely love this picture. This is what 20th century warfare was supposed to be in you know in the eyes of the artist from the 19th century. So talk about weird machines. Cyber war. Probably our ideas of cyber war are going to be just as accurate. But coming back to what is the real computer that is in front of you? What is the real system as opposed to what is the model of it? We discover that with exploits. And then you ask yourself well what is our exploits? Are they data or code? Isn't this interesting? Exploits are of course proofs that your machine is capable of a computation that you have not foreseen. It's approved by construction. By shell dropping. You can't really argue with a root shell. To quote FX. But exploits show up as inputs. But they run on the target.  Is this a von Neumann machine or some strange Harvard architecture machine or maybe Miss Katownik University of kind of an architecture? So an exploit is a weird stored data program running on the target. And if you think about your code as this Lovecraftian entity that you just summoned up to work on your data, build your mystic pyramid. This is actually Yogg Sothoff. He holds the key. He is the key. So we're not summoning anything in this auditorium. I can't afford the liability insurance. Neither can Dartmouth. So this is your code. Its tentacles reach into your memory and fiddled with bits of data. Pulling it up, pulling it down, rearranging them. And this is how you build the computation that you want. But if you look carefully enough, and this is how people think of their code. Oh, there is code. There is data.   And if some of them are interesting and that they present a bug or a feature or a primitive, then you can build a machine out of them by manipulating this metadata. To this machine, your metadata is byte code. The primitives themselves are the little implementations of that byte code. And this has been the hacker folklore of advanced exploitation since at least 2000. I take absolutely no claim except to naming it and dragging it out as a sort of a coherent body of folklore. If you don't take my word for it, look at Halver Flake's talk which he gave at infiltrate last year. Where have we seen that? Well, this is of course how virtual machines work. Virtual machine has this byte code and you implement those little byte codes. And the only difference between a weird machine that is what runs your exploit, the collection of your primitives that pass the control and data flow through some areas of memory that you control, is that for a virtual machine, your byte code is usually contiguous. For a weird machine it's not. So that tape is really broken. And so think of your target that does anything interesting as this rich, dancing, singing, milk giving, woolly pig, right? And it's also a code running pig. If you can, if there is enough complexity in the target, how is this for authors Clark, a fourth law, any complex enough memory reading writing program is indistinguishable from a virtual machine on its data. As long as you can craft the data. Input data for a complex enough program is indistinguishable from byte code. For the pieces of the grand monster that you manage to decompose, unwind the tentacles of the monster and isolate which memory locations are serving for your implicit flows. And so the bit of philosophy is this. Code is doesn't work on data. Data runs on code. Input strings run on your parser. As the tentacles reach down, there is strange bubblings in the monster, in the old one. And this state that state changes that you create in it, are your expected computation, are your exploit. You can make it explode. You can make it build not a mystic pyramid but something more useful, such as a root shell. Packets run on your TCP IP stack. Packets are little programs that run on your TCP IP stack. The changes in the state of the stack are what you are after. Heap metadata runs on the heap manager. Format strings run in the print. And elf metadata runs on your runtime linker loader. Which VIX is now going to present. So think of this entire folklore as bringing the idea that you're programming weird machines when you're exploiting something. And this is all over the place really. This is the art of boring code and chaining up the primitives and creating, setting up, instantiating and programming the weird machine. We're showing you a weird machine that's there and that's well formed. But we would love to see its uses for more interesting purposes. With that, Bex will take you through the wonderful world of elf. Thank you, sir. Okay. A magic forest. So I'm just going to try, there's a lot of information I want to give you. Not enough time. So I might end up skipping. But I really just want you to get an idea of what's going on. And you can continue if you're interested. Look at the code. I'll post a link. I'm going to start off talking about the elf's, what it is, point, the linker and loader and so forth. Look at some private work. And try to give you enough background so you can understand how we're using these primitives and getting something that really works outside of what you would normally do with elf metadata. And hopefully you'll from the philosophical reverie that they just plunged you into. So what basically the point of elf is just how the different components of the GCC tool chain communicate. You have the assembler, static linker, so forth. But in the end there's a metadata that's structured so that each component knows how to act on its input. How to lay it out, how to compose it and so forth. And mostly I'm looking at the runtime loader. And that's all. That's all I care about. There is a lot of information in these elf files. And I'm not using all of them. Not constructing, crafting most of it. But I'm looking with symbols, relocation entries and so forth. Well, that's pretty much all I'm working with. And the dynamic table that helps tell the runtime loader where everything is. And that is what I work with for this tool set I'm making or I'm calling it full set. And just to give you some idea of how many different sections are there in elf file each one with its own function in constructing the runtime in the modern binary more than 30. Yes. So all data and or code metadata so forth is contained in elf sections except the section headers themselves and the segment headers themselves. Typically there's one section header per section. And the header just helps you look up where in the file the section is supposed to be understand its permissions in memory, raid, write, execute, where it should be loaded and so forth. And most sections contain either metadata and is a table of the same type of metadata in a single section. No terminated strings for the string table. Mixed data, something statically allocated. And the code itself which is called text. And there are a couple of sections I'm focusing on for this talk. They are the most useful in trying to craft metadata and get some extra computation out of the runtime loader. And first with the symbol table. Symbol tables provide information on all variables, all functions and so forth. So you know where it's located. Sometimes there's a value. Sometimes there's other information on the size, how to look it up for the linker. And then the example symbols, there's one that's a variable standard in and has a preset value. Second one is a function. Also has some value in there. And then the definition. So this is the structure itself. There's a point, a name which is actually a pointer into the string table. There is some information about it, value and size. And think of this data as something that the dynamic linker loader eats. And finds you the right library, loads the right library and connects up the little stub that your call goes to in the procedure linkage table through the global offset table. And through a little, this little stub the dynamic linker gets called, finds the symbol and loads the symbol into memory. And if, since the lookup is actually by name, there is a little hash table involved in that. And it just jumps around that hash table until it finds the match so that it knows what symbol is there to be loaded. Now the thing about this is that the complexity of these operations is pretty damn high. And it starts resembling your Lovecraftian old one or that woolly singing mill giving pig. And so the question is, should I manipulate that data? What can we get? And I'm not really talking about buffer overflows. Assume that it's perfectly legal. It's just that some of those offsets are going to be pointing at other structures. And think of my own grandpa in the process. By creating this assortment of interlinked data, you can actually drive this thing into insanity or into executing any given program. So I will continue. As we like to say, however, the ELF metadata is just in our vision and the way we see it. It's the static linker's love letter to the runtime loader. So for relocation tables, this is information from not only the runtime loader but the runtime linker. The first one I listen to is for the runtime loader exclusively and every entry in its process during load time. And the second one is for the dynamic linker, the PLT. And that's processed as needed at runtime. Information contained in these entries include offset where you are eventually writing the output of this operation and usually you calculate some sort of address right it in. Info includes the symbol that if there's a symbol that the entry works with. It's a symbol number. Also the type of relocation entry is there. And then for AMD64, there's also a den which allows you to, depending on the type of relocation entry, add another value into the final computation. Now imagine this is the thing that keeps the ASLR working. So you've got this code that you've compiled and you're about to load at this address which is in the L file. But this is not where you want to load it. You want to randomize that base. Or you can't load the library at that address because another library is taking that up in the process of virtual address space. And so what you need and what you are getting out of this mechanism is a little automaton that goes and patches your binary coder data based on these data structures. So you look at this, you see a useful auxiliary mechanism for relocating data, moving it around in memory. When we look at this, we see this strange creature that touches, you know, lifts up those relocation entries and writes other things in memory. And by the way, we're inspired in this by the low create by escape. So look at up in uninformed number six. So again, what you see is a machine that you can program by crafting those relocation entries. Not making them illegal or anything. Just driving that engine to do something more. So two other sections that are interesting are the global offset table and the procedure linkage table. And the global offset table is merely a table of addresses. It's used by the linker to look up any LinkedIn functions that you do not know or exactly they reside until runtime. It also contains a pointer to the linker function that's actually invoked during linking, runtime linking. And this link map structure that contains everything you really need or the linker needs to perform the linking about for each, and there is one structure for each library for each elf object. That is there. There is a link map structure. The PLT contains instructions that just work in tandem with the GOT to invoke the fix up function if needed or to invoke the function itself if it's been patched. Because I think you might want to actually start explaining those symbols. This is a global offset table, obviously. You probably got the relocation table before. What is that one? It's been so long. There's a procedure being linked to it. Oh, yes. This is a procedure linkage table, exactly. Shall we go on? Yes. And this dynamic table which contains all the information needed by the runtime loader. And there's basically a tag that says what the value is. And I will, these are a bunch of ones that we use in our work. Yeah. Remember, these are things that point at other things. These are offsets of strings in symbol tables. These are offsets into library files where that symbol live. These are offsets into a section where things need to be patched on relocation. Now imagine them having a great family. I'm going to continue. So despite that this, all this information is in the headers themselves. But there's a separate table that has a copy of this information just for the linker. And the dynamic linker and runtime loader, in the end after it's loaded, only work with this table right here. So if it ever needs to know where the relocation entries are, it looks at the value of DT Rella in the knows the size, symbol, did a location in the symbol table, the location of the GOT, and anything else that's needed for clean execution in the runtime loading and linking stage. So just to give you an example of what happens during loading and linking, suppose we call exec on ping. What happens in the kernel is there's initial setup of the address space where we have the executable mapped. We have the loader itself mapped and a stack and an entry point is set to invoke this loader. And so now in user space, the loader takes over and starts sending up more things. It looks up the needed libraries. It builds in a heap stack. Oh, the stack was already there. And then it sets the entry point to the executable. And that's all we are working with in that part of the process. And you'll see that red is execute only, yellow is read only, green is read write, which is important to us. And each library has its own address space for the read only, read write executable code. And this is an actual memory layout of ping. I took out some parts to fit on the screen. And the stack is at the bottom. You can't see, but it's on the slide.  So going back to this, let's zoom in to the executable. And the nice thing is even normally during runtime, sorry, normally during execution, even if you have ASLR, you have to actually put an extra compilation options to get the executable itself to be mapped in a different location. But I haven't really run into that. Like even with ping, which is something that set UID root, the executable is always mapped to the same spot, at least in Numbutu, that version that I was working with. So if we zoom in and see what's there, all these sections I was talking about are mapped in some in read execute only space, some in read only, and globe offset table and data so forth in read write. And then something to note is the dynamic table itself. During the relocation process, I have found that I can write to it. I haven't actually looked to see at what point it's read only, but after everything is set up, this dynamic table is read only. So in our perspective, we are interested in these entries that we see, the symbol table of relocation entries and so forth. And the DGOT we're interested in, which is actually writable. But then there's also the metadata, these link map structures, which is actually part of the linker loader memory and heap. And so these link map structures have is what we end up working with to do what we need. This is not the entire structure definition, just things that we end up working with. It contains the base address of where the library is loaded. It actually contains pointers to the dynamic table entries that we're interested in. It contains a bit to say whether or not it's been relocated before. And some other things that we end up working with just to get this code, this engine working as something that's turning complete. But I won't go into details. And then also, since every ELF object that's loaded has its own structure, it's in a doubly linked list. And so there's next and previous pointers in each link map structure. And that's how they're ordered in, how symbols should be looked up. So there are fun ways to craft ELF metadata. And mayhem, in fact, 61.8, as we used it to inject object files, you can intercept library calls to run injected code. And so there's been work by Cesar and Mayhem in that, resident in attacker built library. So you can inject code into a library and get that loaded either by playing with some environmental variables, LD preload, or you can play with the ELF structure itself and put another entry in the dynamic table. And this is the point. You do not understand those structures until you make them do something interesting. Then you actually know what the code behind them, what that automaton is doing when it's getting that data. And so cheating the ELF by the grug, I totally recommend, this is a classic that explained this for the first time, and this was for the longest time, the most detailed excursion into how these things really work. And so low create is inspiring worker, helped inspire what we did. May actually use as relocation entries to pack and unpack binaries. And we're kind of taking that a step further by just using relocation entries to act as code itself or to have an effect, some sort of Turing complete machine running in just runtime loading. So low create is a patcher. So it can go, it run over code and transform the code because, hey, if we're rewriting bytes, we need not rewrite just addresses. We can rewrite op codes and immediate as well. And so how is that for an upfuscator, the upfuscator packer, unpacker? But let's build something bigger with loops and branches. However, in the tool chain we're working with, the text section is actually not writable by the time relocation entries are processed. So he was working with P and it worked. So here's our warning. I actually am proud to take a little side note off of this. Yesterday I got it working with ASLR with when the library is in the stack randomized. But this is specific to our architecture that we're using AMD64 on Ambutu. There's no reason that it won't work on others. But the details are specific to this. So first off we need our symbol table and relocation entries in a place that we can read write. Normally it's in read only. So we inject it using the RC toolkit right there, below the data. And there's space there. And it's a great toolkit and takes care of any rewrite updating headers for us. So for the relocation entries that are used, there's lots of them. And we only need three to do what we're doing. There's copy. And basically what it does is it acts as a mem copy of the copy. And you give it a symbol and the symbol value is treated as a pointer to where to copy from. The symbol is also, you get the size of how much to copy and then you copy it to the offset specified in the relocation entry. There's another version where you give a symbol in an offset and it looks at the value in the symbol and copies that over into the offset. And it adds an add end if there's one. And the base of the library, since we're working in executable, the base is always zero. It's been, unless it's actually randomized, it's mapped to the, well it's actually not zero. It's, I believe, like 40,000.  Yeah, these look like off codes to me. I'm not sure about anyone else. And then, so the last one, relative where it doesn't use a symbol, it just adds a base if there's one and you write it into the offset specified in the entry. So we have arithmetic. Close. We do have arithmetic. That's very straight forward. Another thing we use is these indirect functions that are supported by the runtime loader. And these are special types of symbols in which the value of the symbol is actually some function that runs and whatever is returned gets ridden into the offset. And we found it useful. Because you need branching. Normally here I'd have the video, but a lot of you saw it already. Many, many years ago. You don't want to hear me sing. So what did we do? We decided to find the simplest, most annoying programming language to work with and implement that in these relocation entries. So traditionally there's eight instructions. There's a notion of a tape and a pointer into this tape and you can write increment, decrement values and test and branch and output byte. So you have standard out or print off or whatnot. Or you can read in a byte, get char. But we actually are not worrying about those two because no one ever talks to the linker loader and I can imagine implementing it, but that's not in our version. So as an example, if we do plus angle bracket minus, so we increment the byte of the pointer, we move the pointer and then we decrement the byte. This is what happens. We increment the byte, the tape pointer, it gets moved, decrement. And it's fairly straightforward. It's just really hard to write anything useful in because that's hello world. You know, think of it as the Turing machine but more fun or more tingling in your brain. Fun. Fun. You know.  You have an executable that you specify.  You invoke this compiler and you get just another executable and that's it. You hand it to the loader.   I feel like we'll hit some limits, though, on size. It's not the... Maybe symbols. We can do better. We can optimize. Oh, my God. It's full of symbols. Yes.  Two. So this is the configuration. There's a lot of stuff we collect at compile time automatically. And so from the dynamic table, actually, so the address that they got, in theory you can get some sort of ROP gadget that returns zero. So it's not... We don't have it done automatically, but you can imagine if it exists. We can find it. And the location and memory of some other things in the dynamic table. And then data collected at runtime using everything else is the base address of libc, the loader, and a stack location, which that's new. We found there's the auxiliary vector, which is basically, well, the loader's love note to the executable itself with all its arguments, environmental variables, et cetera. They're all located on the stack. Well, there is a static variable in the loader that points to it. And so I can get to the loader. I can read this value and get some offsets. Isn't this nifty? Not only the executable knows how to call the loader from its stubs, obviously it needs to, but there is a pointer back as well. So I am not giving you the full setup. You need to read the code for that. I'm trying to simplify things.  There you need more than just this. And I put a little note at the end. So for this symbol table, we inject a couple of symbols. The address, there's one that holds the address of the tape head, or wherever the tape head is pointing at. That copy of the tape head value, an address of, yes, an address of this symbol, the copy of the tape head value that we need so that we can do some copy operations. So observe, the tape is now this, the tape is now spread through the ELF metadata. But that's okay, because you see an RTLD, I see a bytecode interpreter. Yes, and so the last symbol is just the ROP gadget that we need, something that returns zero, an address of that. And for the relocation entries, we actually have, well, before the instruction starts, we have some setup that's needed so that we can clean up, and so we can find all these library-based addresses of libraries. And then we have all the instructions. Then we have some cleanup instructions, and I'm calling them instructions. They're just relocation entries that do something useful. And then some cleaning, and then the originals. So we can actually have the executable, execute after we do whatever we want. So this is how the tape pointer looks to us. We have our two symbols that we need. The address the tapehead is pointing at and a copy. And just as a note, anything on the tape needs to be in read-writeable memory. And yes, and not just the tape though, the relocation symbols as well, because we edit them on the fly. But luckily this is the case, because the memory protections, the bulk of the memory protections get set up later. So we need, okay, so we need two instructions. Oh, I'm sorry. We need, yes, we need two relocation entries to do, to give you a movement of a tape pointer. One of them, I'll show this little demo, that's not a demo, it's an animation. So first we get, we calculate, we have the offset of tape pointer value, basically the next symbol down. And then we have, so we can start writing to it and copy it over. We have, so the symbol of the tape pointer site. What we do is, the tape pointer is a pointer to the symbol. We read that out. And we end up using, good morning me.  Luckily, we can craft those entries, luckily we can craft those entries to point at other entries so that we can start building loops and branches. So instead of actually giving you a step by step, since we're low on time, I'm going to just point out some interesting things. In addition to subtraction, we end up having to rewrite one of the relocation entries to get this done. To do unconditional branches, we realize that when the relocation entries are processed, it actually steps through this link map structure and goes to the previous one and moves to the previous one. So what we need to do is set the previous to our current so we can start processing relocation entries in ourselves again. So we have go to, right? This is the primitive, right? This is the implementation of the bytecode that we are creating. And the fact that a particular pointer is pointing and then is being followed to the next primitive enables us to do looping. And so we have to do some extra work to make sure it loops again, because after the first time memory permissions are set, it doesn't try to reload twice. And that sets some permissions so we can't rewrite ourselves again. But we use this little chunk right here to end up clearing out this relocated bit so it will process itself again later, which is very nice. And so we have loops. And we also need to rewrite some of the dynamic table entries to point to where it should go next and the new size of the relocation entries that we're processing. But again, the functionality is helpfully already there. This is what the relocator actually does all over itself. So to do conditional branches, we use this indirect function symbol. And the interesting part is this shindex, if it's one, it treats it as an indirect function. If it's zero, it treats it as whatever values in that symbol as just a value. So we end up doing it is telling that to overwrite this end, which basically end is where the relocation entries stop being processed. So we can either set it to zero so the next time the loop executes, it stops. Or we can set it, it ends up being something way bigger than any of the relocation entries and it will keep on going and we can fix everything up in the end. And so we have branches. We have an instruction that behaves differently whether it reads a zero or a non-zero. So to get actual details of how we do it, I look at the code. It's on GitHub. I'm going to skip the demo because I want to move to something a little more practical. We inject the back door into ping.  We actually create our own primitives to start following pointers. At a known place as a pointer to the linkmax structure of the executable and from there, we can start finding where the libraries are and from there, we can figure out what address is to write into the global offset table. So when the functions are invoked, it invokes what we want instead of what the linker tells it to since there's a value there. And so what happens is we rewrite the symbol over and over and update the value through these relocation entries and how they work with the symbol. And what we end up getting, we can get the base address once we get where the link map structure is itself. And from there, we can find any function in the library that we're linking. And so I do want to demo this. And the version of ping that I have has this interesting argument, this type. And I actually have, the way we work this is we tell staircase comp to exec it instead. And that's how we can get a shell. And we also need to tell it not to set UID back. Ping is set UID root. And then eventually drops privileges. We can trick it into not dropping privileges. So your output is all of your memory space in the process. And you can rewrite it any way you like. So why not rewrite it to give yourself root when a particular option is invoked?  And you can't read it, but that's fine. So I'm just showing that there's this type that we're playing with. And we end up, oh, so first we compiled our new relocations entries into there. And we set UID ping. So because it needs to be set UID. And when you run it, normally, this is running at double pace. I don't know why. I must have changed something. So let me pause for a moment. So let me pause. So ping works normally with the new relocation entries. Or at least you can ping normally. There's probably some other things that might break. But you can ping normally. But when you put in dash t, and then we just give it backdoor.t.shell, it just invokes bash without any arguments.  But what happens is once you evoke it with this, suddenly it calls exec on backdoor.shell and we prevented the root privileges from being dropped and now you have a root shell. And we go on to just show that there is no difference in the code itself. And since it's in double time for some reason, maybe we'll have time to see this. There are differences because there's different sizes. We injected metadata. There's so shaws are different. But the code itself is not. We only checked metadata. And I am going to probably not let this finish running. I'm going to skip ahead a little bit. Yeah, you'll trust us that if you dump out anything that could be disassembled and compare the disassemblies, they are exactly the same. The only difference and all of the program compiled to rewrite your memory at runtime is in the Elf method. So the left side is our injected version. The version of ping with the injected entries and the right side is the original. And so the original entries are still there. Ping still executes. But before all of them are our injected ones. And the same goes with the symbol table. But we inject our symbols after the original symbols because everything is referenced from the beginning of the symbol table. And we don't want to mess with the linking that it needs. Let's get out of the full screen. Ah, F11, of course. So that's sort of everything in a nutshell. Again, I suggest going to our website. But I need to thank Sergei for leading this. And Sean, who's my actual thesis advisor at the moment, for putting up with me not doing the work he wants me to do. And Greg Q for doing a lot of great work in the RSA toolkit for allowing me to inject relocation entries, mayhem, scapey. And then the noun project where I got all these cool little things. Thank you.


That's all our stuff. That's not bad. That's not bad. I'm just watching. 560, or the M16 is going. Get those PMDs and where they fit in. Yeah, well, she's still doing it. Hey, just like your pack in the shape. Yeah, there you go. You want to try to get as much as you can in there. We need one in the tie-in. Why not? It's in there. Do you want to put a wrap? Are you already packed or do you need C4? Nope, it's already packed. Because that's about where it fits. Stand up. It's good. Yeah, good. Because 1.5 times. 2.3 times. That's why it's 6. How much is it? It's 3. 3. This is not good. It's 4.3 times. Oh, 4.3 times, yeah. I'm going to pet food for the whole time. I'm going to pet the food. I'm going to pet the food. I'm going to pet the food.


What's going on everybody got Kyle here with late sports cards and we are ripping this is one box of 2023 prism football This one is for Andrew s. Good luck. Andrew. Let's see. We got Steven. How we doing today, sir? What up? What up? How we doing Steven? How's things over? Rams go round. Sean's gonna say it all day. Sean's gonna say it all day Hopefully we're telling her to say it's supposed to cringes. Yeah Spencer's probably meditating or something like it's boy JJ. Yeah, probably trying to get in the right zone Jace today in the right zone for the game. Yeah, Jace might be Jace might be at the tailgate, you know Might be in the negative weather. Post the schedule. Yeah, I got you RJ. I got you RJ. No worries There's a Derek Carr a nice one there on the Navy Camo. I love the Navy Camo 225 10 out of 25 on the car His camos are sick. Got Josh Downs and Michael Wilson on the rookie It's gonna be a solid day with a forest and jaker later. I got two big mixers. There you go RJ Silver rookie is Isaiah Foskey for the Saints and Logan Wilson color match the 249 bangles. You're very well Of course RJ. You're very welcome, sir Campbell County Benson Hey guys, I have Daniel and Ed will collect those two what up, man, so quicks Sir morning. Oh, don't start. It's quicks trying. Yeah There's a One ninety-nine Kaleel Shakira on the blue wave. Uh-oh Tyric Stevens and Isaiah Foskey might be trying to make that list Try to make that list Waiting for the bill's game same Steven. I'm excited for man. Yeah, I'm excited to see these games today There's a silver prism break that will be Anthony Richardson For some break silver and Joey Porter, Jr. to 149 rookie for the steel is no boy Stetson Bennett Sampled you. Oh geez You are building the rainbow. That's not a bad start That ain't a bad start to the rainbow All purpose Josh Jacobs Are you really man and blue ice night night AJ Dylan where are you at AJ Dylan quicks Yeah, it sounds like a lot of people come out of people getting murdered with snow blast. So it's snow and cold Oh, you think so sidewalk. I think it's awesome that he's on his dad's team and the Hey a little bit was heaviest in Toronto. Zach Wilson a 225 provides a no-conal rookie for the Raiders the Snow is heavy as a Toronto Buffalo. Yeah, so they had to change that game Steven. It looked nasty and buffalo They were showing some of the some of the pictures of the stadium. It was looking nasty Definitely wouldn't want to play a game out there in that and Dalton. There is over the Duane bow. It's a 99 there on the blue ice sensational signatures Duane bow Blue ice 99 Paris Johnson trade Tucker retest and Sean today. Oh, that's right. That's right. That's right. That's right There should be a promo RJ for all of the different playoff I'm not a hundred percent sure force will be announcing that later tonight, but it's a promo for all the different playoff mixers No, is he arc there's a Bryce young prison break and it's a 249 drew tranquil for the chiefs Julius Brents Our south of Fayetteville gotcha Arkansas That cold in Arkansas to Blue wave gonna be the 199 Shaq Leonard What Gips No, you're good RJ. No worries. Yeah, we're confused. Yeah, we did a promo for all of the Regular season, so I think they're doing one for all the playoff So it'll be each spot you get you'll get a spot in the promo. I don't know what exactly it is at the moment though To 175 I got Gabe Davis on the hyper. Where's Van Buren Zach Evans and Charlie Jones president. No, Jeremy lives in Oh, I don't know what I mean where that is. Yeah, I'm not sure either. Is that Arkansas? That's what we were talking about Arkansas Pennsylvania and just got just got snowed on. Yeah, there's a silver jail in Hertz And this will be Jerry Judy on the veteran auto and Jerry Judy Broncos 15 man Yeah, it's like it's like 60 out there Freezing freezing You got no girlfriend, dude Coastal flooding to geez Silver is Jerome Bettis and to 125 we got John Randall with the Vikings purple people either purple to 125 And DJ Turner Alrighty there, sir. That will do it for you. Mr. Andrew Andrew S with the one box of prism football Appreciate you as always sir and get it right out to you


For his second budget as Prime Minister, Hon. Philip J. Pierre and his Cabinet of Ministers have crafted policies that would build on the socioeconomic gains of 2022-2023 and also inspire positive economic trends throughout the 2023-2024 financial year. We as a country have good reasons to celebrate. Because of the economic gains we have made, notwithstanding the external challenges and concerns about citizen security. St. Lucia's post-COVID economic health continues to move from strength to strength under Prime Minister Pierre's stewardship. For the second consecutive fiscal year, St. Lucia is on course to register double-digit GDP growth of 18.1% in 2022, a marked improvement when compared to the 12.1% GDP projection in the previous year. Prime Minister Pierre has successfully nursed St. Lucia's economy from the sharpest GDP decline to the second-best performing economy in the entire Karakoram region since assuming office mid-year 2021. The key economic indicators are trending in the right direction as a result. Guyana, St. Lucia and Barbados recorded the highest growth rates and St. Lucia and St. Lucia recorded the second highest growth rate after Guyana. For the first time since 2010, the national unemployment rate dropped to 19% by the end of 2022 and youth unemployment declined to its lowest levels in 13 years. We remain committed to driving overall unemployment and in particular youth unemployment down to single digits before the end of this parliamentary term. The overall deficit has been slashed from $287 million in 2021 to a projected $17.3 million by the end of 2023. Following three consecutive years of deficits, the primary balance returned to a surplus of $82.4 million. The current balance has improved from a deficit of $139.1 million to a surplus of $12.6 million in 2023. The debt to GDP ratio is down to 69.8% in 2022 from a high of 85.9% in 2021. The government has directed resources derived from the economic gains of the previous year to ensure local vulnerable populations receive additional support. A further $5 million has been injected into the public assistance program, increasing the allocation to $25.9 million. The St. Lucia Social Development Fund has distributed more than $17 million in social intervention programs. $7 million has been allocated to the home care program to secure care for the elderly. An additional $10 million has been allocated to the Ministry of Equity to provide social assistance to the island's needy. Our economic policies go beyond revenue generation and are also intended to assist those who justly and deservedly require assistance. The average St. Lucia household also benefited from financial interventions at the behest of the Prime Minister and his cabinet. The government spent $40 million to subsidize LPG cooking gas in 2022. $8.9 million in tax free funds have been paid out to date. $18.3 million in outstanding back pay was disbursed to public servants during the fiscal year. Government pensioners each received a one-off payment of $500 last year. At least 10,000 public and private sector workers will be exempted from paying income tax this year. And NIC pensioners currently enjoy a 4.2% increase on their monthly payments. More relief measures will be implemented in the coming months. I propose the following, a rebate of $1 per gallon on fuel for all registered fishers. A one-off payment of $600 for government pensioners payable in November 2023. A $600 increase in the one-time allowance to teachers bringing the amount to $1,100. An extension of duty rebate on vehicles which are available to frontline workers during COVID-19 to customs and correctional officers. I propose Mr. Speaker a one-year window for the local purchase or import of these vehicles which will end in July 2024. The strategic choices comprised in Prime Minister Pierre's 2023-2024 budget is designed to respond to the challenges confronting St Lucia with the aim of securing a better life for its citizens and inhabitants. The strategic choices for the 2023-2024 budget will target health, national security and economic sustainability. From the Office of the Prime Minister, Rihanny Isidou.


As with any figure from the Ahl al Bay during the times of the Umayyad and Abasid tyrants who were obsessed with blocking out accurate information about the holy household of the Prophet and indeed the Prophet himself, much controversy and differences, has been recorded about the life of Lady Zainab after the events in Damascus. This was quite intentional as naturally, Lady Zainab and Imam al-Sajjad, peace be upon them, had humiliated the authority of the Umayyads and exposed them as the treacherous, stretched non-Muslims that they were. Therefore, attempts were made to confuse the Muslims about what happened to Lady Zainab after the aftermath of Karbala. What is known for certain is as follows, Yazid gave the holy household the choice of remaining in Damascus or returning to Medina. As a result of the public pressure he was put under through being constantly humiliated by Lady Zainab and Imam al-Sajjad in his own court. When as Lady Zainab, peace be upon her, decided to return to Medina, he called Naaman al-Mashir who had been a companion of the holy Prophet and ordered him to make suitable arrangements for their journey. A contingent of horsemen, foot soldiers and adiquate provisions were made available. Elaborately adorned decorated litters with velvet seeds were provided but Lady Zainab demanded that these should be covered in black so that people would know the travellers were in a state of mourning. When the citizens of Damascus came to know that the members of the holy Prophet's family were leaving, the women came to the house they were staying in for a last farewell. This is a sign of how greatly influenced the people were by the public demonstrations carried out by the Ahl al-Bayt. At every stop made during the journey the tents of the men were pitched a mile away from those of the women so that the women could move unhindered and unobserved by strangers. Tanks of mourners were held wherever they stopped and many people came, listened and learned the truth. The travellers returned to Medina via Karbala. When they reached Karbala they found Jibir ibn Abdullah Ansari and some of the elders of Bani Hashim were already there for they had come to pay respects at the grave of Imam Husayn peace be upon him. It is related that the travellers had brought the severed head of the chief of martyrs with them from Damascus and that in Karbala it was rejoined with his body by his son Imam As-Sajjad. A great Majlis of mourning was held before they continued on their journey. When the time came to leave Karbala Zaynab wanted to remain near her brother's grave till the day of her death but Imam As-Sajjad pleaded with her not to leave them and reluctantly she agreed to return to Medina. He knew it was necessary final steps to establish a culture of grieving in the centre of the Islamic world and the home city of the holy prophet, a place where the earliest Muslims still lived. After the caravan stopped on its way to Medina a mourning commemoration or early form of Majlis was held when the city was inside Zaynab bade the women a light from their camels and they pitched their tents. Black flags were raised up on learning of their arrival. The people of Medina came out in droves and Zaynab recounted to them the events at Karbala and the hardships of their subsequent captivity. After some time Imam As-Sajjad asked the women to ready themselves for entering Medina. Then they entered the city on foot. With black flags raised aloft Zaynab went straight to the grave of the holy prophet where she prayed and complained to him of the massacre of his beloved grandson. This was not only a necessary step for her own well-being but a public demonstration which would have no doubt affected the Muslims heavily. Zaynab had returned as a transformed person as it is said the Ahlul Bayt inherited the signs of aging due to the tribulations that are forced onto them. Her hair was now white and her back was as if it was bent. Although upon her return she had been reunited with her husband she did not live long. After the tortures, trials she had to face or the responsibilities the situation had forced her to carry on her shoulders. The exact date and place of her death is not clear but it is probable that she died in the year 62 AH some six months after her return.


All right, welcome to the FOSDEM 2020 distro dev room up next. We have Daniel Kuiper talking about grub upstream and distros cooperation Thank you I will be talking about what's this happening in the grub. I am Daniel keeper. I work for a cool and I'm software developer and gram upstream maintainer The beginning is some legal stuff, which is required by my company. So program agenda. I will be talking At the beginning about grab maintenance later. I will move on to what's happened during last year and I will be also discussing What is happening right now in the grub project? Later, I will Discuss main points. What are the problems in the project and at the end I would like to ask you What do we expect from from from the grub? Project so not much has changed since last year There are still three Maintenance, but I was able to convince two guys to to join the project and support me with three things alexander with the graph Decided to take over management maintenance offer risk five and lately Link home takes care of arm and TV fi. So I would like to thank them To take over to taking over this walk What happened last year alexander the graph introduced initial support for for risk five and he also introduced initial Travis CI support Into the grub calling what's on from Ubuntu Finally changed The metal how GNULIP is integrated with the grub it currently it is much easier It is well documented how how to update the GNULIP and I think it is it is the Largest change which went into into the graph last year Eric Snowback from Oracle on the beyond foxy quest provided OBD's driver for spark platforms Jesus At that small modules which allows you to modify Intel MSS read-rides And Also this function will be used in other in other things after few years under From arm to cover The HCP before work from under Bozhenkov He split this this patches into some logical parts and we finally got Native full support for the HCP before We still have a support for boot pee doesn't about they here use boot pee in their networks Nobody, but we still have a support for John at some point realize that being new to us folks decided to drop out support for a out for spark 64 and And He tried to convince be new to these guys to get it back, but it wasn't possible So he started thinking how to get back spark 64 support for into the into the grub and Fortunately it it was quite easy the patch was pretty small surprisingly and currently we have We have spark 64 support Into the grub back Just before a 2.0 for release Michael from Suzer realized that it is not possible to bar by Grub with GCC 9 as so he provided a set of patches which are fixed This issue and currently it is possible to use GCC 9 to buy by the crap at the end of Sorry at the beginning of this this year Patrick introduced a lax to support into the grub so we are able to read encrypted Encrypted boot partitions from the from the grub directly and We had 2.0 for release in the middle of last year And it took most of these features which are current which are listed on this slide and also plenty fixes and What's happening right now the biggest thing which we are working on is that the trench boot project And currently we are doing two things in parable in parole Me is focusing on txt implementation for for the grub. I had Had a nice presentation together with peo from free mdep about this work and yesterday and Free mdep is focusing on AMD SK need implementation For the grub. I hope that I will be able to release The rfc for Intel txt at the turn of February and March And on top of that AMD SK need implementation will be Merged We are going to do that in that way because we think that there will be a lot of common parts between these two Features provided by different companies Finally, I was able to convince red hard forks to forward port all Patches which are carried in fedora and sorry to for far port to upstream all patches carried in fedora and red hat and here I would like to convince other Distance to do the same because currently it is difficult to at least for for example for red hat to merge upstream with with new new releases because they carry a lot of different patches also it is difficult for us because there we got some questions about things which currently are not upstream and This creates a lot of confusion Also red hunt plans to introduce Linux K execute usage to load another OS from from from the grab It means that Grab will run from small Small like a new environment and it will use kx to kx to start a new operating system At the end of last year, I met with frame that folks and we also discussed some Interest features for example or an undone grab for environment file It will be it can be used by some embedded devices to safeguard Upgrades and currently it is not possible to do that safely. So for example if you if something Bad happens that happens during the upgrade then After a reboot machine were not able to start or something like that. So this environment file And how it works it should be improved Frem de Polk also are looking for TPM 2.0 support in led legacy systems currently there is a TPM driver in the grab but It uses EFI calls. So it depends on EFI structure But not system not all systems especially embedded system provide you if I so it is not possible to use This TPM feature on non-EFI system There is also some there was also some discussion about Python integration with the grab this can be some This is can be surprising for some people, but it is used for some female validation tools And I think that this is quite interesting usage for Python We are also planning a grab 2.06 release this year. We are going to freeze the code around March and the release Probably no later than then in June Starting from one and now we are planning to release the grab yearly if our infrastructure and our And then our infrastructure and police how we maintain the grab improve of course we are able to Make that release says More often currently all patches which are posted on the mailing list are at least by tested So we do not accept any patches which broke any any target any platform Which is which is provided which is provided by the by the grab As I said, as I said, we are working on new code review and test system I hope that we will be able to announce the details by the end of this year and next year We will be able to use it As a replacement For for the grab develop a list or or something like that We also this we are also Discussing a Linux kernel UFI boot protocol in equation unification for all targets Currently right now. The problem is that x86 boot protocol on the ufi Mostly reminds something which which was used on by legacy bios machines It simply does not use load file Sorry, not a lot fire load a lot images to start image calls from from ufi and Things is completely different on arm risk 5 etc. As far as I can tell this both platforms you use just ufi calls to load and execute PE binary, so we are thinking to Change this boot protocol and make it common for all platforms which which use ufi as a call it as a firmware This is the this discussion just started, so I'm not able to provide Any details we have some rough idea right now, so but I hope that we will have something in a female something Present in quite good stage in a female in a few months, maybe maybe faster and Finally We are planning to admit officially that grab upstream is not able to support 62 sex sectors and be our gap on a 36 x86 86 PC targets, sorry This issue comes up from time to time On grab the well and some people try or some distance try to solve that the problem by cutting out some some features For example as far as I can tell it Somebody tried recently to cut off Support for for one of less Come more more less common file system, so I think this is not good idea and We have because there will be more and more features the core image will be larger and larger And at some point we simply will not able to cut anything from this core image So we are going to finally say in the documentation that we we are we are not going to support the small and bigger ampere gaps probably we will suggest using ampere gaps larger than One kilo one kilo sectors or just simply use GPT with bios boot partition This is this is a suggested solution and it was It is worth mentioning here that that GPT partitions work without any Work without any issues on legacy bias platforms if you have a bias boot partition on GPT You are able to boot the crap or any anything Which support the bias boot partitions directly on the bias? System it does this thing creates any shoes for for you Or we can drop it and you will not complain Okay The note from you want to guy from even to was was note that They Do not allow to upgrade from the grab You don't force people to upgrade from grab one to group two so they think this is not a problem for them Perfect that's great Pain points so there we are still fighting with the problem that We don't have enough throughput to review old patches and There's there in my opinion huge delays on the mild increase because I'm not allowed to Spend all my time on maintaining Grab I would like to do that, but currently it is not possible so I would like to ask you to to If you are able to look at the patches and send sent at least reviewed by or something like that It will be helpful for me if you know somebody who knows The grab quite well or something I would like to know something in the grab that will that will be perfect Also, we still would like to improve The cooperation with distrust and other interesting parties as I said currently we are in quite Corporation with a refresh hat, so we are very happy and There are two problems which appear from from time to time or on the mailing list that people start posting patches and After a few exchanges of the emails they disappear from the mailing. This is this is annoying because let's say I'll spend my time or being patches and after that we simply Lose the future I lost lost my time reviewing reviewing the passes and I'm not able to take over this patch To take over the work on this part. So I lose my time. We lose teachers. So please don't do that and From time to time it seems that some people do not carefully read the my tennis comments so they I Send some replies with my comments and after after That I received a new version of the patches, but I see that some Comments are not taken into the account. So this is also annoying and please do that because this doesn't help and recently I Got I found out that some people start working on new feature. That's nice But there's don't get there. They start that work on the Not out the grab a stream, but they start work on the Specific grab version which is in the district. This is crazy. Especially if grades if the district carries tons of tons of patches Which are not forward ported to upstream so I Would like to encourage you if you would like to provide new feature start your work on grab upstream if you need some features which are needed for your work from specific distro, please forward port This feature first into the grab upstream and then start work I've of course it takes time, but I think that it will make my life as a upstream and then easier and also Grab up the grapple distro maintain as easier And I think that's it and I would like to start the discussion What do you care about in the mean the grab project? What is important for you? right now, I outlined our Work plan, let's say for four four year Is it okay for you? Do you think that we should change something in general after discussion for Various people. I think that we should focus on on the system which is a review process and also is automatic Tests of grab and all the patches which were provided to the graph. So I'm looking for questions This one If they have to deliver new features to their users and to their customers by a certain time Is it really You know that wrong that they work on their code base when doing it upstream Okay, the question was As I understand it correctly Does it make sense to work or I agree that maybe it is better if This works on on the new feature instead of on on on the on the grab Distro specific version instead of grab upstream and does it act like I accept it. I understood correctly I guess my question was Yes Yeah Oh As I understand correctly you are saying that if they are forced By customers to have a new feature in in the in the Specifics distro. I'm okay with that Okay, but I would like to ask you to Let's say as soon as possible to forward these patches to the graph upstream I'm not able to Forbid you to work on on a specific graph upstream. Okay, but I would like to convince you to don't do that Okay From from the last row Yes, first of all the question was is it possible to Shorted the release cadence, right? Yes currently. Yes and no It it will be possible if we have a new review system and We have we will have Some system which automates the testing of the graph. So I'm considering that that I hope that it will happen in year a year no later and then We will consider Shortening the vector cadence of release I The question was That I mentioned during my presentation that there is a TPM Implementation in the graph which use you have five features and the question is Do I suggest that you would should provide these ufi calls to have a to have to have a TPM if you would like to have a better in better Security infrastructure In the you would I think that it makes sense to have to have that feature But I'm not sure how how is it complicated to have that in you would because as like as far as I can tell you But is focused on the embedded systems. So it can it can not only okay So I think so I think that If you would like to use TPM infrastructure in the grab it makes sense to expose this TPM via ethicals to the grab Does it apply your question? Okay Okay They are we configuration and Kernel loading configuration as a certain one single file It is very complicated to manage Especially if the file is signed The kernel is updated the file needs to be regenerated when the glue stays the same What I'm saying, maybe it is a point to separate these two things the menu configuration and And The question is how to upgrade the system if for example, you take measurement of configuration file configuration Common light of the kernel or something like that. Yes What do you mean menu menu part do you mean generic configuration of The Okay Okay, okay, I understand I understand the engineer in general this is it is it goes into a larger topic in general because if you would like if you measure your system and you and then after that upgrade your System and you have much more problems than just upgrade Then just updating the measurements of the grab configuration You have to also upgrade the measurements of the kernel in it are the et cetera et cetera We are working on some dynamic route of trust systems in the Oracle and We in at initial phase of this work We are aware that at some point we may meet that these issues, but currently we don't have any Good idea how to how to solve so we have some rough ideas But we don't have good ideas how solve This problem so it times is up. I will be outside. You can catch me and chat if you need


Taking a video editing break to go pluck out a chin here. It's a thing. Good morning, everybody Hey, everybody. Happy Sunday morning. It's Sunday, September September 19th, 8, 835 a.m Dad is still here with Tala. Remember the missing dog toy from a few weeks back? Yeah, so Lily, not Tala, my dad's dog, found it in the backyard. I'm guessing it was buried Because it was under a bush. We looked in no less than 10 times if not more But Rebecca was outside with Lily last night Lily was digging the next thing Rebecca knew Lily had the koala bear in her mouth So yeah, I don't know. Anyway, it was found Thankfully and Yeah, I washed it And it's all clean and it looks good as new and you would never know it was buried in the backyard for like a month It's the weirdest thing Hey guys, so it's just about three o'clock. We are out for a walk I guess Bob's football game is over to be honest. I wasn't paying attention. I was reading so I don't know. It's half time. It says It is about 63 degrees outside and Yes, I have a coat on I know right.  So if we get wet, he said hopefully we don't get wet. I don't care. I'm walking anyway It is Monday morning September 20th It is 1055 a.m. I am trying to edit down Almost two hours of video clips to something that's 30 minutes or less That's a challenge Then I have to write the post for the week I've got to work on a video for a video club that's coming up like in a few days that I haven't done yet. I Have to finish working on the video that I've been working on using my arphomies and That drinking my bone broth because yeah, I'm gonna need the extra energy. I'll be back 4.50 p.m. And I finally was able to turn the computer off and shut down the art room So I got the vlog edited loaded and scheduled. I got the video collaboration filmed edited loaded and scheduled Big accomplishment. I got the other playing with our foamy's video Finished Edited loaded scheduled. I do think we're gonna make it a series. So I'm gonna try to think of other new ways we can Use our art foamy's print with art foamy's in our artwork. So that'll be fun I Got the chores done. I got one more little laundry to do. We are gonna go out when Bob is not done with work Hopefully within the hour And we're gonna do a little bit of thrifting before they close We have our great-nephew Paxton who is turning two on the 23rd same birthday as their daughter, Rebecca And We are gonna go thrift him a whole bunch of books and see what we can find if we don't find Enough then I'll go thrifting either again in a couple of days or I'll just go to the bookstore But I just thought it would be fun to get him some thrifted Fun children's books. I also ordered him.  I'll put a picture here anyway This is one of our guest rooms that we have upstairs. So my artwork on the wall I'm on the wall. Yeah, I really like this one. I'm pretty proud of that one. Anyway, I haven't started noticing I think my dad's moving some of his stuff over here. He left a dog Pooper Cooper and rake thing here a few weeks ago. That's outside He he left one of Tala's dog crates here so Since she'll be here probably with him more often than not and she'll be outside for the most part unless she's coming Up stairs to go to bed with grandpa. So It's pretty interesting he's moving some of his stuff in I don't know where to go with that. Yeah, I think that's the only Rambi's put stuff Yeah, I don't think he left any bathroom Anyway, I'm gonna go downstairs to start that little laundry Maybe do a little reading while I'm waiting for Bob to get off work and then we're gonna go do our thrifting and Walking while we're thrifting because we need to get steps in. I only have like 2,000 steps because I've been sitting and filming and painting all day so Hopefully we can get some steps in at the thrift store. I might Have to have bone broth for dinner because I don't have enough steps. So, you know, that's a thing But it is what it is. It's all right. I got some really great work done today And I can't multitask anymore. I just my brain won't there we go That's some really great work done today pretty proud of the projects. I got finished and I can't wait for y'all to see the videos Yeah, so it's pretty cool. I do have some people out there thumbs down in the videos, but you know what that means they're watching I'm right It's interesting. All right, that's it for the minute. I'll be going yet today. I don't think so I Spent most of the morning chatting with friends and supporters on in our Facebook chat room and We picked up I told you a bunch of books for our great nephew Paxton for his birthday and I ordered him the rocket ship back I was so excited. It should be your tomorrow But I spent the morning cleaning up the stack of books that we bought for him at the Goodwill and I love getting books used especially children's books and I love the variety of unusual titles that you can find and You know for kids books, I don't think you necessarily have to buy new ones and plus, you know Especially if you're on a limited budget, you can take that same amount of money and buy a lot more books Usually at the thrift store than you can at the bookstore Anyway, so I did that most of the morning and then I worked on a Couple of other things while I was chatting with friends and supporters So let me just go back upstairs because I just realized just now I forgot to vlog I didn't get very many steps in yesterday. So when Bob is off of work, I'm hoping we can Make up for that a little bit. I've only got a couple thousand steps for today, too Let's see so I got September mission inspiration printed and I've got it pasted into the journal I'm gonna work on that probably tomorrow and try to get that filmed and also the mid-month mini mission This card is all ready to go So I'm hoping to get those done Tomorrow or Thursday, but definitely before Friday and then I did a year of my life journal page with About the kiss concert So the red and white strips of tissue in the background are from confetti that they blew out at the concert and I collect of course I collected some and Put that on the journal page along with some paint and some art from you have an art from me It's not my design. It's one of the other artists designs, but that little swirly white Thing in the background. Um, that's one of our fromies. Um, if I can find it, I'll link it down below for you I printed some kiss images and I printed a copy of my Ticket from my phone and pasted those and then did a little bit of journaling on some line paper So because of COVID it's a It was a ticket list concert.  So anyway Um, I have all that done.  So now I've got a big stack of them And I am working on some gifts for patrons and supporters so I think That was my goal. Um, so yeah, I got I feel like I got a good amount of stuff done along with chores and you know I think it was a pretty good hard day. Yeah, I love the art kiss page and the way it came out. So Anyway Other than that, I've just been sitting watching the tubes the u-tubes Because you know As one does morning people it is Wednesday morning September 22nd September 22nd. Okay. Yes. I'm in the car again. I'm out running some errands.  Um It's been a busy day. I didn't expect today to be so busy Anyway, got all the chores done got the sourdough starters both the regular and the gluten-free fred fred Fed and they're doing their thing on the kitchen counter. It is kind of a cold chili day So a little bit so it might take them a while. They might need to sit there for extra time Got the kitchen cleaned up had some lunch had a little chit chat with one of my neighbors and She will be left unnamed but she is suffering from best cancer She's going through treatments at the moment. She's had her surgery Everybody send her some love and good energy. Holy cow. She's going through a lot anyway We have an upcoming HOA meeting. We need to elect new board members I might put my name in the hat. I know it's probably a mistake, but Anyway We'll see Thursday, September 23rd. Our daughter's birthday. Happy birthday, Rebecca. Love you very much And our great nephew's birthday, Paxton. He's two. Happy birthday, Paxton. Love you too It is 9 46 a.m. And I am Making let's see. Where is it over here drying in the corner some gift wrap for Paxton's present Rebecca's is downstairs. I'm also printing from an Etsy shop a A5 calendar pages for 2022 for my planner for work in YouTube You know, it was a dollar 92 It's worth it for me to pay the dollar 92 to the Etsy seller rather than try to create one myself I just anybody who knows me and has been Following me for a while or friends with me for a while knows I detest making the calendar pages every year for my planner I just really hate it. So Um and webster's pages seems to be always sold out. I have a webster's pages a five planner by the way So I'm just like printing them from an Etsy seller. That works for me Uh, just basic black and white. They don't need to be fancy. So anyway, I'll be working on that today getting that cut and punched and wrapping Paxton's present when everything dries and Those sort of things. Uh, letty is here downstairs our friend and person who helps us keep the house clean She does a fabulous job. By the way, during the Portland, Oregon area, you need a recommendation I have one for you. All right, everybody. Bob is back from his appointment and we are taking Not balls over there crazy pants Not Bob the dog over a walk um She was very good with letty today and she likes letty She had we made sure to go to letty every Hour or so to get pets from letty and then she was fine with letty being in her second house, you know our house Anyway, we're gonna go get some steps in and then I don't know. We'll figure out what we're gonna do for dinner. I'm not that hungry. I might just have a cup of broth. I don't know All right, I'll be back everybody. It is Friday morning September 24th Just after 9 a.m. And I am Gonna go walking and get some steps in Aunt cook garage sailing all at the same time The local senior community across the way from us is having A big community wide garage sale. I don't really need anything, but I'm gonna go Over there and look around get some steps in I haven't taken a shower yet because I'm gonna get all hot and sweaty. So why bother? um I'll take one when I get back uh Told the husband that and he went and took a shower. So and he's coming with me. I don't know. Anyway We're gonna go get some steps in we've got a couple of bags just in case and of course Wait a minute. Hold on Some masks And yeah, so we're gonna go check it out get some steps and start that day off the day off that way This is a lot of fun way to get steps in walking and garage sailing. It's my kind of saturday. I have friday Yeah, it's not saturday tomorrow saturday. Yeah. Yeah. Yeah. I'll be back. Okay. So obviously we're in the car again always uh Bob's um little bonsai tree. I ordered for him for his birthday came He loves it. He repotted it already It was it's in his office. It was missing the little tray that's supposed to go under the plant And when I let the company know thinking they would just send me a little tray They're sending him another bonsai tree So he's gonna have a pair of trees He's gonna see about watching some youtube videos so he figures out how to trim them And all of that stuff. So hopefully he keeps them alive. Cross your fingers everybody Get a learn how to trim my bush God I might have to cut that out. I'll make you If you don't get it. I'm not explaining Good morning everybody. It's saturday morning september 25th 9 41 a.m I Had a couple of beers with dinner last night. So when we got home, I didn't do any drawing or anything I barely got through today's puzzle last night's puzzles of the day For those who don't know we play word brain every night Anyway, I did all the drawings today though.   It's the final Thing in that whole process. I think And having a brunch with the family and all of that stuff And we don't have to drive The kids are driving. Yay. So we're just waiting for saturday evening. We've been home for a little bit Just relaxing.  Yeah, for whatever reason my mom If you believe in it, my mom and her spirit were there and blowing all the smoke from the fire directly in my face And so yeah Anyway, that was a thing But it was a good day and It was a nice day spent with family. So it's been a good week. I hope you had a good week and um If you didn't I hope next week is better for you Please stay safe. Stay healthy. Stay creative. Check out the video description for relevant links My link tree lists the links of where you can follow me on social media Support the free content here on youtube by shopping in the Etsy store. Maybe take in a class that I'm teaching Become a patron over on patreon. There's a bunch of different ways And so check that out. Don't forget to like share and subscribe Above all go out and have a great day. Have a great week. Do something nice for yourself because you deserve it I'm gonna go to bed because it's late. I'm tired. I'll see you next week. Bye guys