All right, good morning. Welcome back after a restful reading week, hopefully. I know I slept most of it, so that was good. Hopefully everyone's done with midterms and everyone's good to go now. So we'll be easing back into it by talking about basic memory allocation and how basically malloc works and you actually get memory from the kernel because remember the kernel doesn't really care. It manages memory very, very easily. It just allocates in pages and gives you a whole page, which is like four kilobytes and then you're responsible for doing any other allocations past that. So first, let's talk about different allocation strategies just as kind of review and make sure we understand what's going on. So static allocation is kind of the simplest strategy. So for example, in your program you might have like a global variable that says char buffer of 4096 and now we all know that magic number is because that is essentially the size of a page. So how this works is that global memory, whenever your program loads in, the kernel is going to reserve some space in virtual memory for that buffer for you and make sure that it's valid memory that's actually backed by physical memory that you can go ahead and access. And this memory will go ahead and exist as long as your process does. So there's no need to free it. That's why it exists for the entire lifetime of your process. There's no such thing as a free in this case because the allocation essentially happens whenever the kernel loads your program into memory. So that's the simplest strategy, basically a big old global variable. But often in our programs you don't know how much memory you're going to use if you have static allocation that means it's static. Once you allocate it, you're not getting it back. You can't really free it. You can't ask for more because you're already running the program so you can't do anything. So dynamic allocation is often required for any real programs. So for example, you only conditionally require memory based off maybe what the user's doing or based off something you're reading from the network or something like that because static allocations might be wasteful if you allocate a bunch of memory that you never ever use then there's no point of actually doing that allocation. Maybe you just want to only allocate it on like a per use basis and then you need dynamic allocation. Other reasons are you might not know the size of the allocation ahead of time too so static allocations need to account for the maximum size because you aren't ever going to grow, or buffer before that's never ever going to grow. That's just allocated when the program loads, that's it, you can't grow it after the fact. So static allocations have to account for the maximum size so if that buffer represents, I don't know how big your file can be or something like that then you have a maximum size of the file that isn't that big. And while there are limits on all computer systems, generally you want to be flexible with the limits and kind of be able to increase the limits if you know you need to. So then the question is, where do you allocate this dynamic allocation? And we all kind of know the two main strategies are we either allocate it on the stack or on the heap. So, stack allocation, that's what's done for normal variables. So if I just declare an x in a function, that will declare four bytes on the stack and you may not know this, but you can actually allocate stack space yourself if you really want. There's this function called allocA that you might not have ever seen before, but essentially that's what the compiler is doing for you. So it will allocA instead of malloc and it just takes how many bytes you need. Essentially it just increases the size of the stack and gives you a pointer back. So the compiler is going to insert that for you so you don't have to allocate stack space yourself. It's kind of one of the reasons that people actually use C as opposed to just assembly, just because it's nicer to you for using the stack. So the deal with allocA, you'll realize that there's no free for allocA. We've never freed our variables in C at all. So whenever that function where the allocA called returns, it frees all the memory. So it just resets the stack point back and all that memory can be reused again. So all it does is restore the previous stack pointer and now that address is no longer valid. It's essentially freed for you and the nice thing about it is no matter how many times you allocA in a function, you only have to reset the stack pointer once to get rid of all the allocations. So it's also nice and fast. But this also won't work if you try and use the memory after returning. So say we had a function that kind of looked like this. If we just had like a function that returned an int pointer and we called it foo. Well, a silly thing we could do is declare space for an integer x and then we could return the address of x. So this is going to be a very bad thing to do. It's going to compile and be fine, but we know that the space for x, it would allocA whenever it enters the function and when it returns and leaves the function, it's essentially freed and it gives you a pointer to x. Now that is freed. So that's now pointing at invalid memory. And if you use the pointer returned by foo, you would have no guarantees what would happen. Essentially, it's going to just, if you modify it, it's going to replace some random stack variables. So this is pretty much the equivalent of doing something we already know we shouldn't do if we had a pointer to x and we malocked it and then we freed it. Well, if we did something like that, we would actually probably get a seg fault or something bad would happen so that's like a use after free. So you can also do that with stacks, but it's just harder, but it's just something you know you never want to do. Okay, so any questions about that? Hopefully kind of see review. Okay, so we've all used dynamic allocation before too. So these are the malock family functions. So this is kind of the more flexible way to use memory and also the more difficult to get right due to all the seg faults we've been seeing.  So whenever you malock something, you have to free it at some point and you have to call free on it exactly once. So if you call free on it twice, that's invalid. If you never free it, you're just wasting memory. So on top of this, so today we'll be talking about the actual implementation of malock. So there's kind of a new concern. The concern about that is fragmentation, which we kind of touched on before, which is essentially just wasted memory. So this is a unique issue if you're doing dynamic allocation because we're allocating memory in different size contiguous blocks. So whatever argument, whatever size you give to malock, you're getting all that memory contiguous and you can essentially ask malock for any size you want. So they're all going to be very different sizes and if you're malock, you have no idea when the user is going to free it ever.  And what you would like to be able to do is just kind of compact that, kind of just move everything so you get rid of all the holes, but you can't do that because you gave a pointer to the program and they have to access that memory through that pointer and they won't be able to update that pointer unless you go through like a layer of indirection. So something like Java will be able to do compaction because Java doesn't let you deal with pointers so it could do this, but of course another layer of indirection is slow, so Java is also slow. So what a fragment is, is just a small contiguous block of memory that cannot handle an allocation. So you can think of it as just a hole that wasted space. So if I have one block of memory, that's like a hundred bytes and then I have a hole of say like two bytes or something like that and then another 200 bytes allocated. Well, if I never make any allocations that are two bytes or smaller, then that hole is never gonna get filled because all the allocations are bigger than what fits in that hole. And to have a fragmentation problem, there are three requirements you have to have. So if you have different allocation lifetimes, that is a recipe for fragmentation. If you have different size, if you have different allocation sizes that also is one of the conditions for fragmentation and the inability to relocate previous allocations is also another one. So you have to have all these three things in order to have fragmentation. So if I don't have number one, so everything has the same lifetime, well, then I don't really have fragmentation because if everything has the same lifetime, it's just exactly like dealing with a stack. So the lifetime of any stack allocated variable is however long that function lasts for. So I'm not gonna have any fragmentation because I allocate it and I get rid of it all at once. So that's an example of a stack. And then another one, if every allocation is the exact same size, I also won't have this problem because I can essentially say, hey, if all my allocations are like 128 bytes or something like that, well, if I have to deallocate stuff randomly, then I'm going to have another slot open that can fit an allocation of 128 bytes. So everything is the same size. So I just essentially pick a slot and fill it. So I'm not gonna have any fragmentation there. And then the third one is of course, the inability to relocate previous allocations. If I could relocate previous allocations, well, I could just compact everything. I could move everything and make it all kind of one big contiguous block. Okay, any questions about that? So there's two types of fragmentation. There's internal and external fragmentation. So generally when you talk about fragmentation, you argue in terms of blocks that you use to fulfill the allocation. So external fragmentation occurs when you allocate different size blocks. So there's no room for an allocation between the blocks. So in this example, this big block is a whole size of memory you can deal with. And the red blocks are the allocated memory. So I have a gap between those two red blocks. And if all my allocations are bigger than that block, then I'll never be able to fill it. It's essentially just wasted space. And then the other flip side is internal fragmentation. And that only occurs. Some memory allocators will allocate fixed size blocks. That might be bigger than the actual request. So that's wasted space within the block that the allocator is essentially managing. So for example, hey, I could say, oh, I'm not gonna deal with fragmentation because I'm each of these big blocks here. So at the bottom there, there's two blocks that the allocator manages. So say they were, I don't know, like 64 bytes. And then the user is doing like a 40 byte allocation and a 10 byte allocation. Well, the memory allocator might just allocate two 64 byte chunks of memory. And then internally, the program doesn't actually use that entire block. It uses like 40 bytes and 10 bytes or something like that. So the wasted space within that block that the allocator cares about is internal fragmentation. Okay, so as our goal for memory allocators, one of our goals at least is to minimize fragmentation. So it's just wasted space, we should prevent that and allow programs to use as close to possible the most amount of memory we have in our system. So we want to reduce all these holes or blocks in between memory if we have holes. And yeah, generally, if you do have a hole, one of your strategies could be, well, if I have a hole, I'll keep it as large as possible. And then that hole is actually not really wasted. I can just use that hole for allocations. So I want to keep allocating memory without wasting any space. So the allocator implementations usually just use a free list. So offering systems tend to like link lists. So they keep track of free blocks of memory by essentially chaining them together as a big link list. And then you need to handle a request of any size. So for an allocation, generally you'll choose a block big enough for that request, remove it from the free list and give the user that allocation. And then for the allocation, you would add that block to the free list and now it can be reused again. And if it's adjacent to another block, well, then I can merge them and I have more free memory because it's all contiguous. So there's three general strategies. If you're doing kind of heap allocation using this method, there is best fit, which is choose the smallest block that can satisfy the request. So the idea here is I'm picking if there's a hole in memory, I try and a request comes in, I try to pick the block that best matches it. So of course, because I'm looking through the free list, every time an allocation happens, I'm looking through every element of the free list, which is kind of slow. I have to look at every element to see what the best fit is, unless there's this exact match because then you know you're not going to do any better. So you may as well just do the allocation there. So there's an end early condition, but you might not hit it that often. Then worst fit seems like a worse idea, but we'll explore that a little bit. And the idea between worst fit is, well, I'll just choose the largest block, which has the most leftover space. And again, this also has to search through the list. While if I didn't want to do all the searching stuff, the strategy I could use is just first fit. So choose the first block that satisfies the request and just use that. So let's go through an example. If we're allocating using best fit. So at the top there, I have a red allocation, a blue allocation, and then the blocks with the blank background and number are free blocks. And the number is essentially how many bytes that block is. So in my big block of memory that my allocator is managing, I have a red allocation, blue allocation, and then a free 100 byte block and then a free 60 byte block. So if an allocation, a user requests an allocation of 40 bytes, I have to pick a place to do this allocation. And if I'm doing best fit, where should I do this allocation? In what? 60, yeah, so this is best fit. So I have two choices. I can either put it in the hundred or put it in the 60. If I do best fit, it's the closest size that can actually fit my allocation. So 60 is a closer fit than 100. So I would allocate there and then split that off so that 60, I'm using 40 of it for the request. And now there's 20 bytes left over. So now I have a purple allocation of 60 bytes. Where do I allocate that? 100, I can't put it in 20 because it's too big. So I put it in 100. So now I have the 40 byte block and a 20 byte block. So now a pink allocation comes in of 60 bytes and I'm screwed at this point. So I have 60 bytes of free memory, but it's not contiguous. So I can't actually do the allocation. So I have, okay, the helicopter is landing on the building or something. I don't know. So I have enough bytes to do the allocation, but because of fragmentation, I can't actually satisfy the request because the next block doesn't fit anywhere. Wow, that's really annoying. Oh, is that jack hammering or helicopter? Jack hammering, jack hammering. Yeah, jack hammering downstairs. Perfect time to do it. Okay, well, let's do the same allocations doing worst fit instead and see what happens. So worst fit generally sounds worse. So let's see if that's actually the case. So if I'm doing worst fit and that 40 byte allocation comes in, where do I put it? In 100, right? I'm looking for the biggest block possible. That is the worst fit. So I would do the allocation in the 100 byte. So I have 60 left over. So now if I have a purple allocation of 60 bytes, well, where do I allocate this? And at this point, there's two 60s. So I don't really care. I'd probably pick the first one. So now I have 60 bytes left over. And now if I have another 60 byte allocation, well, this fits exactly in the remaining space. So in this case, worst fit was actually better because I could use all my space. So just because it has the name worst fit doesn't actually mean it's worse. In some cases, but not all cases, it sometimes works actually better. But both best fit and worst fit are both really slow. And if you simulate this with different size allocations, if you look at best fit, it tends to leave very large holes and very tiny holes.   And first fit, in addition to being much easier to implement and much faster because it doesn't have to scan through everything, it also tends to kind of leave average size holes and actually work pretty well, which kind of works out in our favor. Okay, so because I cut this one short because no one was here on last Thursday's lecture, so we'll go over page tables. And if you have any more questions on page tables, I hope, well, get out of your system today because isn't there a quiz this week? I think so. No, it's not, it's next week. Okay, whew. But page tables will be on it and hopefully we'll go over it again. So if you're the kernel or you don't have a C standard library, you have to implement your own memory allocations. We'll see more allocation strategies that the kernel actually uses today because it doesn't actually use any of these strategies. This is more for like malloc and stuff. But the concepts are gonna be the same for user space allocation like malloc and stuff. The kernel just, yeah, remember in terms of the kernel, the kernel doesn't really care to user space programs. It just allocates some pages and then backs them with actual memory, which are done through page tables that we'll explore a little bit more. But in terms of memory allocations, there's static and dynamic allocations. And then for dynamic allocations, we have fragmentation being our big concern because dynamic allocation just returns big blocks of memory and then fragmentation between blocks that the memory allocator is managing is called external fragmentation and fragmentation within the blocks of memory that allocator is managing is called internal fragmentation. And there's three general allocation strategies for different sized allocations. We saw best fit, worst fit and first fit. So let's go over the page tables. Oops. All right, so no one was really here last lecture on Thursday. So the hardest thing is probably the multi-level page table thing. Oh my God, that jackhammering is great. So we have a multi-level page table here. So I have three levels of page tables. So there's a level two, level one, level zero. This is going to use SV39. So there is a 39-bit virtual address and then a, yeah, 39-bit virtual address that translates to like a 56-bit physical address, but that doesn't really matter. So we have three levels of page tables because our page table entry size is eight bytes and our page size is just four kilobytes. So in this, I essentially wrote a simulator for the MMU that uses the page tables. So in this, we allocate a level two page table and allocate page table just returns a page. It doesn't do anything that special. So it allocates a page and we're going to use it as our level two page table. So the only thing the MMU actually uses is a root page table, which is just a level two page table and that is what you would switch, whenever you switch processes and you want to switch what the virtual address is mapped to. So in this case, my root page table is a level two page table and I create a level one page table and I make the entry of the level two page table at entry zero, essentially point to the level one page table. So it creates a page table entry from this page table. So it essentially just removes the offset and it essentially just gets the physical page number of that page table and sets it as the entry as index zero. And then we do the same thing. We allocate a level zero page table and then in the level one page table, at index five, we go ahead and point to the level zero page table and then the level zero page table is going to directly translate to from whatever virtual address that led us there to a physical address. So our page table entry is from a physical page number and we just want it to map to the physical page number cafe. So if we use this virtual address in this case, whoops, so in this case, if we go ahead and use that physical address because of the way we set up this page table, we should know that it actually would translate to this address C-A-F-E-D-E from A-B-C-D. Any questions about that? Okay, let's see how well we know stuff then. So what about if I make the address like that? If I change the F to an E, is this going to actually map to a physical address or is it going to do a page fault? It's good? All right, what physical address am I going to get? So that's my virtual address. Yeah, so if I run it, it's actually going to map because remember the last three hex characters are the offset in a page. So if I change them, it doesn't change the virtual page number because this is the virtual page number here, it's A-B-C. So whatever entry that is, we'll still map all the way to, you know, I could do zero, zero, zero. Whoops, I do zero, zero, zero and that still maps. But if I go over and change this to a D, well then I'm going to get a page fault because I have no entry. The other question, questions about page tables or why some of the magic numbers are here or do we all know why I put, why I used all the numbers that I did? 84. Yeah, so why did I use 188? So that is a good question, so I'll just go review it again. So here's the address I had. It was A-B-C-D-E-F. So my offset was the D-E-F part. Whoops. So this was my offset, the D-E-F and then A-B-C was my virtual page number. So if I go ahead and write out A-B-C in just decimal, or sorry, in binary because each of my levels of page table are nine bytes so it's a bit easier to do that. So if I write out C here, well all C is 1100 and then B would be 1011 and then A would be 1010 and then everything beyond that is going to be zeros. So then if I group it out into nine bits falling from the last one, well I can see the last eight, or sorry, the last nine bits here are going to be my index into L0. So that's 010111100. So if I add all those numbers together because we all know our binary arithmetic, it's four plus eight plus 16 plus 32 plus 128. So it's 188. So that's why we index 188 into L0. Then similarly, for index into L1, well the number there is one plus four. So we index five there and our index into L2 is going to be zero because it's all padded with zeros. So this is going to be, oops, that is to do. So this is what our page table looks like. We just allocated level two page table. It's entry to zero pointed to an L1 page table and then it's entry to five pointed to an L0 page table. And then it's entry at 188 pointed to had the physical page number at cafe and that's where we did our translation. Okay, so kind of makes sense, ish. Okay, well, let's see how sharp we are today. So let's translate. So if I do something like 7FFF, FFFF, FFFF, just to make it easy. So if I do this, what do I expect that to translate to? Whoops, we're blind. Okay, if I do that, if I do MMU 7FFF, FFFF, FFFF, FFFF, what do I expect that to translate to? Given my page tables, page fault. So if I do that, page fault, okay. Say I want 7FFF, FFFF while I can't do anything with the index bits. So say I want that to map to, I don't know, like 1FFF. So how would I do that? I would need a new page table. Which page table would I need? So I need a new page table. So here, I'll give you one. So all I would need is a new page table and done. I would need to index into it. I'd even left bits for 7FFF, FFFF. Okay, so if we were to translate step back, so if we were to translate 7FFF, FFFF, FFFF, FFFF, how would I actually translate that? Load the steps I would use if I had, you know, a 39-bit virtual address. These are normal page size and 8-byte page table entry. Because that's essentially what SV39 is. So how would I go about translating this? Even if I didn't know how many levels of page tables there are. Yeah, so the last three are gonna be the offset because it's, you know, to the 20. To the 12, so each hex digit or each hex character is going to be four-byte bits. So the last three, that's 12 bits. So I don't have to translate that, that's the offset. Okay, so how many levels of page tables do I have for this? Yeah, so I have three levels of page tables and why is that? Yeah, so the number of entries. So if I do multi-level, remember I have, I fill an entire page with page table entries so I can figure out how many of those I actually need. So the number of entries I can fit, page table entries I can fit in a page is going to be to the 12 divided by two to the three because there are eight bytes. So they're going to be two to the nine entries in a page. So my index bits, so within a page, the number, or sorry, within a page that represents a page table that fits on a page, well, I'm going to need nine index bits because that's however many I need. So if I want to calculate the number of levels, I need in my page tables, remember it was the ceiling of the virtual bits minus offset bits divided by index bits. Well, in this case, this is, even if we forgot what SV39 was, so and we're driving it. So the number of virtual bits was 39 because that was from the question. And then the offset bits, well, that's from the page size, that is 12 because each page is four kilobytes. So that's minus 39 minus 12 divided by the number of index bits which we found was nine and then ceiling of that. So in this case, it's actually kind of nice because it's 27 divided by nine. So you don't really have to take the ceiling of that because that gives us a nice three levels and then you can see why they pick the number 39 bits. So we have nine, we have nine bits for an index. We're gonna have three levels of page tables. So that's, so our address would look like L2, L1, L0, and then offset. So this would be nine bits, 12 bits, nine bits, nine bits. And we can double check because 12 plus nine, plus nine, plus nine, that's our 39 bit virtual address. So seven FFFF, that is 39 ones in a row. So if I have 39 ones in a row, well, if I, it would be nine ones here, nine ones here, this isn't an accurate number of ones because I don't want to write them all out. But so what are nine bits of ones in decimal so we can actually read it? Five, 12, five, 11, five, 11. So in this case, for my big virtual address of seven FFF, well, in the level two page table, it's going to look at the 511th entry. Then in level one, it's going to look at the 511 entry. And then at level zero, it's going to look at the 511th entry. So what is happening and why we generate a page fault is right now we have our level two page table and in our level two page table, so this is what we were doing before, in our level two page table, it would go look for slot 511, there's nothing there, so it's a page fault. There's no valid entry there. So we need to make a valid entry there. So that's where we have the new page table come in and that should be a new L one page table because we only have one L two page table. It's already there. That's our root page table. We don't have to make another one unless we were like switching processes or something. We wanted to make a new address space. So we could just call it some creative name like L two page table two and then let's go ahead and copy paste. So we need to make it the 511th entry and we need to create a page table entry from page table two. So essentially that's just going to rip out whatever physical page number there is and put in the page table entry. So now we have an entry for that. So if I compile and run it, do I get a page fault or am I good? We're good. So what we did, we created a level one page table. Yeah, we need more levels. So there's an entry in the level two page table that points to the level one, but in the level one page table, we just kind of made it, which one is it? This one, we just kind of made it and we didn't do anything with it. We didn't fill, we didn't give it any entries.  So it would look up, first it would look up, 511 in the L1 page, or L2 page table. It would get the L1 page table that would look up 511 again in that. And then that's not going to have an entry. So we need another page table. So we're going to need another level zero page table because we need that new L1 page table to point to an L0 table. So let's do that. And then we have to make sure to actually create an index in our new L1 page table that would be at 511. And then that should point to our new L2 page table. Cool, all right. So if I compile and write it again, page fault or am I all good? We're good. So for anyone that said we're all good, what address were you expecting? Well, what were you expecting? You're expecting kaffafafafa? So we wouldn't have kaffafafa because essentially the page table entry we have is to translate this virtual page number into a physical page number. And this is the virtual page number we're trying to translate now. So it's going to look at completely different index bits than it would if it's trying to translate the ABC. So what do I need to do to finish my journey? Okay, so in my L2 page table, I didn't need to make another one because remember what we said before in here? Well, first thing it's going to do, look at the L2 page table, look at entry 511, then use that as the L1 page table, then look at 511, then look for the L0 page table, then look at entry 511, and then it's going to do the actual translation there. So that's going to just get the physical page number and actually do the translation there. So where we're at in our code is we have our L2 page table, and then that L2 page table at entry 511 points to our new L1 page table, which is good. And in our new L1 page table, which was L1 page table two, it has an entry at 511, which is good, which points to an L0 page table called L0 page table two. And now it would get that go to the L0 page table and look at entry 511, and what's there right now? Nothing. So it would page fault. So how do I make it something? So I need to do essentially what I did here and make an entry for it. So in L0 page table two, whoops, at what spot? Yeah, 511, that's where it actually does the final lookup. So I would get a page table entry from a physical page number, and I said I want it to be 1FFF, so that would be physical page number one. So if I do that and compile it, am I all good or a page fault? Everyone's scared now, everyone's page faulting. So why that page fault? That was a good question, because it shouldn't have. I have a typo, right, this is page table, oh no, page table one, page table two, page table two, okay, that should have worked.  No one find anything weird yet? So I don't make another L2 page table because there's only be one. How do I screw this one up? They screwed the address, did I miss an F? Oh, there, I screwed up an F. Woo, so I messed up an F. So there, it actually works. As long as you type the virtual address correctly. You can't see from here? So, whoo, saved that last minute. All right, any questions about that? No? If there's only eight Fs, like what I had before? So if there's only eight Fs, it's gonna change the index bits it uses, so I just have to make it map correctly. So I would just choose different indexes in that case, like for ABC, I looked at the different indexes. So as long as you can get them, then you can populate them however you want. Yeah, yeah, and you can also do fun things like, hey, if I want both these virtual addresses to, I don't know, go to the same address. So if I had ABC, FFF, and seven FFF, if they both had the same physical page number there, then if you translate both of them, they both translate to the same physical address, and then you have overlap, and it's a lot of fun. So just remember, pulling for you, we're all in this together.


My advice for a soldier for Day Zero, insert Day Zero coming in, just come in with a clear mind. Make sure you're physically ready because there's a lot of physical events involving that to get you into the course. Come in with that mindset of you can do it, a can do attitude, and just push through. So during phase one we're introduced that soldier to a basic aerosol operation by instilling military discipline and also showing them basic missions that aerosol carry and how important that role is within the division and within the Army as a whole.


We need to discard cold war mentality and seek peaceful coexistence and wing-wing outcomes. Our world today is far from being tranquil. Rhetorics that stoke hatred and prejudice abound. Acts of containment, suppression or confrontation arising thereof do all harm not the least good to world peace and security. History has proved time and again. The confrontation does not solve problems. It only invites catastrophic consequences. Protectionism and unilateralism can protect no one. They ultimately hurt the interests of others as well as one's own. Even worse are the practices of hegemony and bullying which run counter to the tide of history. Naturally countries have divergences and disagreements between them. Yet a zero-sum approach that enlarges one's own gain at the expense of others will not help.


Hello and welcome to My Career and Data, a podcast where we discuss with industry leaders and experts how they have built their careers. I'm your host Shannon Kemp and today we're talking to Ari Leeds from Leedsource. With a robust catalog of courses offered on demand and industry leading live online sessions throughout the year, the DataVersity Training Center is your launchpad for career success. Browse the complete catalog at training.datavercity.net and use code DVTOX for 20% off your purchase. Hello and welcome. My name is Shannon Kemp and I'm the Chief Digital Officer at DataVersity and this is My Career in Data, a DataVersity Talks podcast dedicated to learning from those who have careers in data management to understand how they got there and to be talking with people who help make those careers a little bit easier. To keep up to date in the latest in data management education, go to dataversity.net forward slash subscribe. Today we're joined by Ari Leeds, the founder and CEO at Leedsource and normally this is where a podcast host would read a short bio of the guests but in this podcast your bio is what we're here to talk about. Ari, hello and welcome. Hi, thank you. I'm so glad you could join us today. So tell me, so you're the founder and CEO at Leedsource. So tell me about Leedsource. Yeah, so we're primarily a professional services company specializing in custom Salesforce.com build outs, business automation, helping people take products to market on the Salesforce platform and doing some administrative and maintenance as well support type things and we also have a product on the side that we're that we build as well. Oh, what's that product? It's called Permatrix. It's on the Salesforce app exchange. It's currently free and it's to help system administrators and security-minded people, CISOs, those types of folks getting a handle of visibility into the permissions and the deep permission setup in Salesforce. It can be pretty complex and we're trying to help people who have compliance and security in mind make their job trying to make their lives easier basically. Do things in clicks instead of hours. Oh, I love that. I love efficiency. Well, and just in case there's somebody out there listening who doesn't know what Salesforce is, can you tell me what Salesforce is? Yeah, so Salesforce is the biggest CRM platform. It does extend beyond CRM customer relationship management, but it's that's where it started and that's where all of its core capabilities really are. And it's more than just a piece of software. It's in the cloud, so it's online, but it's also a development platform. So we can build all kinds of applications and business systems on top of it and you know how you might get QuickBooks or Excel or you have these other applications that you're used to and these these are more canned pieces of software. Salesforce is more like a box of Legos. You know, it's a kit essentially. So you got all these parts and you can kind of build your business operations on top of it. Very cool. So tell me as the founder, why did you choose to start this company and what are your responsibilities in your day to day week? Yeah, so I started the company in October of 2019. I had been in a number of different positions between software development, consulting, product management. I had always wanted to start a business. I wasn't you know, Salesforce was a common thread that that technology stack was a common thread and a lot of my jobs. And I had been a consultant in it about 10 years earlier. I'd worked for consultancy. So I had some good experience there, always really liked the platform and what they did. And I took the little bits of experience that I got in my different career, my different jobs, my different titles and decided that we would get started by going back to the Salesforce world and into the services side, step away from product and try to apply some of that knowledge that I gained through those different lenses of being in product and development and management, etc. My responsibilities now are much different than they've ever ever been. I'm the head janitor. I am the lead developer. I am the accountant HR. So you know, it's a small company, a lot of hats, as they say, but it's very true. You know, tonight I'll be washing dishes and getting the office ready for the weekend. So it's it varies quite a bit minute to minute. Nice. And so you you started in 2019. And you spent just a year before COVID. Yeah, it was it was the end of 2019 as well. So it was very soon before. Yeah. So how was that building? I'm just curious, have building a company, you know, while suddenly you're being locked down, especially a consulting company? How did you how did you navigate through that challenging time? Um, it was definitely scary at first because it was just at the very beginning of COVID, it was just me and one of my my first employee. And I, you know, I wasn't really sure what was going to happen, especially when it got very real. And we I started, you know, shipping his equipment out to me wasn't coming into the office anymore. Yeah.  So we wouldn't touch each other or be near each other.  It was, you know, definitely a strange experience. But the reality was the nature of our business, we did just fine, especially that 2020, we really did find a lot of companies, you know, their needs and what they were doing with, you know, technology very often were actually increasing. So we actually did quite well at first. And yeah, it didn't didn't really hurt us. It was tough to be away from everybody, but sure that yeah, there was kind of this thirst for technology once COVID came around. And it wasn't really till 2022 where we started kind of seeing that, you know, a backslide away from it. Yeah, we've seen that we've seen the same thing. And that's great. That's that's really amazing. That's because so much of consultancy, I imagine is is that interaction with people? Yeah. Yeah, that's right. Yeah, we we definitely used to do a lot more or I used to do a lot more travel on site. But it's just, you know, it's a it's a zoom call away at this point. And people were saying, you know, why why take a six hour train or a flight or a drive when we could have some of this up in 45 minutes on camera? Right? Yeah, yeah, I understand. I always I've been saying, you know, one of the pros of what this the the challenge that we went through in dealing with a pandemic is I no longer have to explain how I work from home. It's, you know, yeah, we've been a virtual company for a while. So tell me so, okay, so all right, you when you were very, very young, five, six years old, was this the dream? When I grew up, I am going to found a company. Well, I think, you know, aspects of it might be the dream. Yeah, maybe having my own company. Sure. I don't know if I thought in those terms maybe a five or six, but you know, I think I like the idea of having something like this. You know, I as a kid always wanted to be an architect. And that carried me probably through high school. And I did do a semester to two semesters of architecture school. And I said, oh, this isn't exactly what I thought I wanted. Yeah.  But you know, it's not it's not as it's not the picture that was painted in my head, you know, that long ago. Yeah. So what what evolved then so so you're like, oh, this isn't for me. What was the architecture dream? Yeah, yeah, so the the romance has yeah, I think, you know, I liked drawing and I liked math and science. And I did a lot of in high school, I did a lot of like tech book architectural drafting things like that drawing blueprints. I did a lot of it. Even as jobs on the side, it was good at it. I'm using AutoCAD solid works and, you know, doing computer aided design things like that. And when I got to college, it was, you know, a lot of art history, which, you know, didn't really do it for me a lot of I'd say like, you know, certain types of theory courses that weren't really tickling my fancy. I wanted more of the what about the structure? How do we, you know, how do we analyze structures? And how do we design? And I think all that would have come. But I was really, I guess, wanted more instant gratification, maybe or more hands on more science, more math.  And I was just like, what am I, this is not what I want to be doing. So it just didn't end up being for me. And I ended up switching to mechanical engineering, which was right up my alley. And that transitioned when I had my first job. I loved the classes. And then when I had my first job, I said, huh, I could probably automate some of this stuff. There's a lot of formulas and equations. And that's when I started actually putting my hands on code. I said, ah, this is, I can do make things happen really, really fast. Very gratifying. And I kind of have it look back. I've been in software ever since. And that was probably 2000. Oh, man. 2009 or something like that. Yeah. Very nice. So it's a couple of things I take away from that is when you listen to yourself and went, okay, this doesn't fit, which is very commendable. But, you know, and to know yourself and not force something and then find something that you really did, that did fit you and you would could be really, really passionate about. And that I love that. So, and you, so tell me a bit about the discovery into code. I mean, it sounds like two additionally that you are problem slower. So I see a big problem here. I think that's going to be done better. You know, how do you, how did you discover those things? Is it just from doing it and repeating and finding ways to make it more efficient for yourself? Or is it talking to others? You know, I think so for one, it was definitely curiosity. And I kind of think I get into these little holes where I block the rest of the world out. Oh, there's, you know, I forget what my task was, you know, especially when I was in my early 20s, I say, Hey, you told me to do that, but I'm going to, I'm going to figure this out. We'll get to that and we'll solve that, but we're going to figure out a different way than what you told me. And I've also usually been really good at learning by myself versus learning from being taught. I was very, you know, very good at independent learning. Sitting in school and listening to somebody speak was, didn't always work out. But if I had time, if I really enjoyed the subject matter, and I put it right in front of me and get my hands on it, I kind of, you know, maybe obsess a little bit about it. And so the same thing happened here.  There's all these moving parts. I can, I always had, I was always very good with technology to begin with. So computers weren't not like new to me at all. But I started it by writing like macros in Excel. Anybody's familiar? But, you know, automating spreadsheets was like the first step really into this world. And then I, you know, just kind of kept opening up and opening up. And I ended up at this little, what was at the time, a small software company, Brookline, Massachusetts.  It was where it kind of got my, I call it my my honorary degree, maybe, in software development.  And yeah. And it was just other people like that there. Oh, that's very nice. And so it wasn't just matter of finding things that you like, but in the culture that really worked for you as well. Yeah, I, I don't feel like I was so consciously seeking it out. Yeah. So I don't want to take too much credit for, you know, knowing exactly what I want and getting it. It was more going with the flow, I'd say. It's like, huh, this is interesting. Let's pivot over here. Let's, you know, move over there. And yeah, it's worked out. It sounds like it. So, so tell me a little bit about the profession of your career. So you go from coding and really learning to code and what's next? Where did you go after that job? Yeah. So after that one, you know, and that taught me all about code and databases and, you know, that was, we were building, you know, big system business systems. So it wasn't cute little apps. It was pretty, pretty heavy stuff. But that's when I went to my first Salesforce consulting company.  I had it my first child at the time. And I couldn't be doing these, you know, stay on the couch all night at work anymore type of deals. I had to get a little bit more of a solid job. So I got a job with my first Salesforce consultancy as basically a developer.  And it was kind of easy at first. I mean, you know, I was doing building software from scratch.  Imagine, you know, you don't have a Lego kid and somebody says, build me a castle made out of Legos, but you don't get any Legos. You have to build the Legos first. Right. Like you have to get the plastic and mold it and all that. And now I got this kid and I'm like, wow, I could do a lot with this. This is like a Salesforce thing. It's like a toy. And it just became really fun. And I got to know the platform very, very well.  And, you know, it was running my own projects and clients after not too much time. So that kind of got me into, you know, a little more exposed to client facing work, project management, things like that. And, you know, and then there were transition after that that took me to product management. And we were building a cloud cyber security product. And they, this company was, had covered the Google platform really well. And they were trying to cover Salesforce and they were trying, you know, they tried to do something and they didn't have too many experts in house. So they brought me in as a Salesforce expert to run the Salesforce product. So now I'm building products that are integrating with Salesforce. So it's kind of a different angle, you know, and we're taking products to market. So it's a different skill set. Doing marketing and sales, working with marketing and sales. I wasn't doing marketing and sales. But yeah, I kind of mixing technology and management with taking products to market and learning how product management is separate from project management. And that was, that was a really, really great experience. I don't think I could do what I'm doing now actually without that second one because it, you learn to think more about the top down. So as a developer, you're thinking about a bottom up a lot with, oh, I can imagine what I could do with all these things. You know, I could write code that does this as an S in product management, you're thinking about what's the problem that a person or a market or, you know, segment has, and how, and thinking deeply about problems before jumping right into solutions. And thinking about what are the business needs, what are the human needs before, what are the technological needs. So that was a really critical job. And they ended up getting bought out by Cisco. So I worked there for a small period too. But those were probably the really big critical steps. I don't know if you want me to just keep going or what? Yeah, yeah, yeah. No, this is really interesting. I love this. I love this path.  Yeah, so there was what I'd say, actually, there was probably one more critical job after those that I became, I was kind of getting, let's say bored, let's say bored with Cisco. We got bought out, we were acquired, your job was a little bit more floaty. And I, you know, I'm used to touching stuff and doing stuff. And I said, all right, I got to get back to that. I ended up going to work for an energy company as CTO. So it was my first executive experience. And I'd probably say getting that executive experience was, you know, sitting on the next to the CEO, you know, that was really good, seeing how to really oversee people in a different way, really look from the company's perspective, really look at the very forward-looking, strategic stuff. So yeah, that was, that was one more experience. I did have one other job in the middle, but it was kind of like, I'm going to try this. And that was really, I don't want to say I picked up anything too new there. It was another product management job where I said, you know, I got to get back to the software world. I've been in energy for the last couple of years. I really miss like big software world. And I got into it and in less than a year, I said, I, nope, I made a mistake. This is my cue. This is like, it's time to start the business. I picked up all the nuggets that I wanted to pick up. This last one, not picking anything up here. I'm going to jump and finally make, make the call. And I called up some, called up a former clients, couple of former clients.  And I got, I got two yeses. And I said, good enough for me. That's enough for 40 hours plus a week of work. Let's do this. So I, you know, I launched it. And I learned all the legal pay, all the legalities and all the account. I started learning very fast, all the things that I didn't know, I didn't know. Right. As you do when starting a small company. Yeah. Yeah. Oh, well, congratulations. It's, it's a brave thing that you did. And that's amazing. I love that. So it doesn't feel brave, but that's what people say. Oh, it is. It is truly. And I do. And he's just a great story of, of problem solving and, and following your passion, which, which is great. Visit dataversity.net and expand your knowledge with thousands of articles and blogs written by industry experts, plus free live and on demand webinars covering the complete data management spectrum. While you're there, subscribe to the weekly newsletter so you'll never miss a beat. So tell me, so as you were transitioning through all those things, you know, what was your biggest lesson in your career that that you still use today? This probably in my whole career, I would say it's probably a little cliche, but I would say it's the failures that really shape you more than the successes.   Nope, not doing that again. I know what that does now. Yes, there's so many things that helped me say, you know what, for now on, I'm, I'm going to create a framework for this type of problem so that this type of outcome doesn't happen again. So there's a lot of those failures, I would say, that, that are probably my, my biggest lesson is probably to accept those failures. And while I'm in the moment realize I'm having, not to get too upset at where I am and just remember that it's, it's a point in time that's something I'm going to look back at that's going to form something else in the future. So that's, it's probably accepting, accepting the failures along the way is the best lesson. I don't think that's cliche at all. I think that, I think that's such an important thing to, to drive home for, for people because, you know, it takes so long, right? Because especially when you're in the moment, like you talk about when you're in that moment of, you know, something not going right.  Failure is such a negative, horrible, awful thing, but you know, but it is a lesson, right? It is to take away from and so do you use that? So you use, do you use that in your, you know, current job, you know, just like your current in the company, you know, like, hey, I'm going to, does it make you afraid to try new things or does it make you more bold to try new things? I think, I first of all, I'll definitely use it. There's an element that's harder now where I have, you know, a list of clients who are depending on me and I don't want to let them down. So I'm less, I'm more afraid of letting others down now than I am myself. So in that respect, it's sometimes harder and also as the business owner, one thing I've had to learn is to measure and balance risk and say, I'd like to do that. I don't know if that's going to work out so well for my employees though, you know, there's, there's a little bit more balance that comes into play, risk management, you know, you know, thinking about finances, things like that. So I would say, you know, in terms of operations, I'm very open to failure in certain ways, like, hey, let's, let's try to do something different and see what the outcome is more, I would say more experimental and being willing to, for that experiment to fail. But there is definitely a lot more measurement probably that happens now. But even when things, hey, when things do go bad with a client or something, I am still trying to remind myself the point in time, you know, this is only going to make things better going forwards, try to get some sleep tonight, if you can. Yeah, yeah, yeah, I can relate to that for sure. And you mentioned measurement, which is really a really nice segue into data, you know, I imagine you work a lot with data in as a founder and CEO. And so how do you use data currently in your job? Well, probably, probably over 90% of the time, I'm touching other people's data, my customer's data, we're helping them with their data. And then, you know, I've got my own data and I probably am really not, I don't know if I should say this, but I'm probably not great at practicing what I preach on certain things because I'm usually pretty consumed with making sure the customer is taken care of and that their data is right. Mine's pretty good, I've got some good systems in place. But there's things that I'm like, if I saw this in my customer's environment, I would have them fix all this. But, you know, there's definitely a few of those things. But there's so many uses for it, and there's data, there's metadata, which is, you know, the data that describes the data or the containers of the data.  You know, we're usually trying to give executives data that, or present them data that gives them the levers for their business so that they can say, ah, this isn't, you know, this looks like this, therefore I can pull this lever to improve something over here. So we're trying to give them the information they need to make good high-level, you know, strategic business decisions steering the ship, not like, you know, minuscule day-to-day stuff. However, that comes from the minuscule day-to-day stuff. It's an aggregation of all the tiny bits and granular pieces of data that roll up from what their company actually does. You know, somebody makes a phone call. Is that logged as data? You know, an email, an action, somebody places an order. You know, somebody closes a deal. These are all, everything's generating data. And so we're constantly trying to make, make sense of it, make sure it's structured in a way that makes sense of itself naturally, and put systems around it that, you know, that hopefully aggregate it and make sense at a business level.  And that's what we're doing all the time. And yeah, I have to remind myself to do it for myself sometimes too. There are certain things I depend on constantly for my business, like time tracking. As a consultancy, it's very heavy on time tracking. But yeah, lots and lots of, I'd say it's, it's like a, we're just building pyramids and the deeper you go, the finer the bits are. And then you're, you're building up to these things where people can make big business decisions. I can relate.  It's so hard, you know, to, you're so working so hard for, for the consumer and, and, you know, manage your own data. Yeah, 100%. And we're, I'm looking forward to the day. I think there's a point where my company is big enough where we can start like, there's a whole area that covers just making sure this stuff's really good. Yeah. Yeah. So, so what is your definition of data then? So it's, it's really a collection of information that's useful for describing something. You know, data is really the plural, right? It's datum for, you know, it's allowing one little nugget of data. So when I think of data, I'd always kind of think of it in the plural. There it's, it's, you know, it has to have attributes for it to be useful. I tell you the number five is data, but it's, it really isn't until it's, there has to be metadata for it to be useful. Five watts, what's your unit of measure? Let's start there. And what is it for? So, so data, I think is, it's the, it's the information without the context. And then useful data really has to have the context, which is really the metadata or, or other types of contextual placement of it. I don't know if that really defines data, but it's got to be, it's got to consist of some kind of type. It's got to be, you know, a number, a word, binary information. It's, it's information that needs context to make sense. Hopefully it has that.  Indeed, it's very, very true. And that's a very good definition. Absolutely. So, because you're absolutely right. Data in context. So, and now working with a lot of data, especially now you're working with customers who have a lot of data, you know, do you see the importance of data management and the number of jobs working with data increasing or decreasing over the next 10 years? And why? So it should increase, but, you know, there's one really big, variable question mark out there called AI. So we'll putting that aside, it should increase. Yeah, there's, there's, you know, I see too often companies with the generate loads of data that don't have that where nobody's actually responsible for it. And it's, it's kind of dangerous actually. There's, because it's open to, it's open to interpretation. Lots of data is open to interpretation. So there has to be, the number of jobs should surely increase. I think, you know, companies that value their data and their operations, because now data is driving operations, you know, paperwork is basically gone from a lot of industries, not everywhere, but paperwork's pretty, pretty, pretty limited.  And it's, it has to be put into the right hands at the right time under the right circumstances with the context. And it takes somebody to manage that data for all that to happen.  And you've got, you know, everybody from every department dipping their spoons into it and pulling from it. You don't, they don't really know what to make of it or they might think they know what to make of it, but it really was something that wasn't meant for them. And I don't really mean in a privacy way. I mean, in a purely contextual way, it's, so you have to have it, it's got to be on the right conveyor belts, it's got to be of the right context, it's got to be in the right packaging. And it's going to take, it takes work to do that, whether it's automation or people, there ultimately has to be human beings responsible. And, you know, there's backup and there's just so many, there's so many things that revolve around that it's, it's the, it's the, it's really, it's the fuel for, for everything. Yeah, I think you're so right. You know, there's so many points where it does need to be managed by people. I would even argue, you know, that AI, you know, what goes into AI, the data that goes into AI and managing what it produces, you know, also needs to be managed. There has to be somebody outside of that world that can, that can be ultimately responsible for it. It has to come from outside. Yeah, absolutely. So what advice then would you give to people who are looking to get into a career in data in some aspect? There's so many, but, you know, whatever you choose. I think it's understanding, if they're going into a career in data management, I think the, the use of the data would probably be important. You know, are you, is it, is it for research? Are you, you know, collecting information from sensors that are floating out in the ocean? Well, you should know that you're going to be, it's going to be very research-based, statistical, you know, you're going to be one of the scientists, basically. You know, that's data where you're sifting through it to find something unknown, you know, versus with a business, it's a little bit more intentional. Sure, there's aspects of it where there's feelers out in your collecting data and you want to make sense of it, but, you know, it's, when it's, when you're in a business setting, there's, there's a business reason. Okay, you're not just sifting through the unknown as much. You're, you have to have the business in mind. And I think to be successful, you have to be somebody that thinks about what the business is doing. You can't just think about data in your own vacuum. Oh, I like data. I want to play with data. You want to think about what is, what is it being used for? Is that something you're interested in? Is it something that you're good at representing? Can you think about it in terms of the consumer of that, of that information versus just the producing side? And that's, that is that top down thinking, you know, it's, it's asking why on everything. So I think you just have to know what it's for. It's data, you know, it comes in all, all different forms. That's really good advice. And it's, it's very, very true data with intention. Yes. Well, all right, this has been such a great conversation, but I would be remiss if I didn't ask you, how do people solicit your services if they would? Yeah, so we have our website, of course, leadsource.com. And it's, by the way, the company is named after my last name is leads, L-E-E-D-S, like the city in England, but and source. So there's two S's in the middle, but it's, it's from in sales force as a field lead source, obviously, the source of your leads prospects. So it came from that, it actually came from some heckling, from some, from training, oh, leads like lead source. Yeah, yeah. And then I accepted it. But anyways, leadsource.com, there's, you can contact us there. That's probably the best way. Of course, I'm on LinkedIn. Anybody can feel free to reach out to me. Oh, I love it. And we will grab both those links from you and get that sit on the podcast page for everybody. Great. Oh, I love it. All right, this has been such a pleasure. Thank you so much for joining us today. Yeah, my pleasure. It's good meeting you Shannon. Oh, likewise, and to all of our listeners out there, if you'd like to keep up to date in the latest in podcasts and the latest in data management education, you go to dataversity.net forward slash subscribe until next time. Thank you for listening to Dataversity Talks, a podcast brought to you by Dataversity. Subscribe to our newsletter for podcast updates and information about our free educational webinars at dataversity.net forward slash subscribe.


Welcome to Jalassette News to get top stories and crypto current digital assets and bring them down to bite-sized pieces today. Some disturbing news I have to be honest with you. First up, Susie Swap, chef sells all of his holdings as the community cries wolf. If you've been in the DeFi space, you know that it's highly volatile and this story explains exactly what a big deal that actually is. Also, blockchain voting, one of my pet projects, shines at the Michigan Democratic Convention and what we can all expect, hopefully, in the next one to five years. Continuing on with the vein of politics, Joe Biden 2020 tax plan has been released a couple months ago, and I finally got a chance to take a look at it. And I got to tell you, if you think you're gonna make some impressive gains over the next one to five years with cryptocurrency, this is going to affect you greatly. And finally, it'll take us to Key with the Day where we take a look at high risk versus low risk and the potential rewards that you can get. Before we do that, let's take a look at the market. So today it is Saturday and it is September 5th. Looks like about 1 p.m. Texas time, not too bad. And the market, I got to tell you, a little concerning. So we reached the $10,000 level on the bounce swing. So now we are sitting at $99.95. Not something that I was not expecting. I kind of thought I would actually drop down a little bit and then bounce back. But here we are. And if we fall below 9900, I can see 8,000 Bitcoin being hit. And that's just the name of the game as far as cryptocurrency. Now remember, in March, just five months ago, we were at around $4,000, okay? So if you are new to this area, do not freak out. Do not be alarmed. This is not the S&P 500. We are not NASDAQ. We are cryptocurrency initial assets. And when we see huge swings like this, this is just par for the course. You have to stay in there, have your strong hands and don't be alarmed. Just realize that this isn't the first time this has happened. This isn't the first rodeo. This is going to happen again and again and again. So buckle up because it's going to be a bumpy ride. But the gains that you can expect or hopefully can expect are mighty and it's just going to take time. So right now, it's on that downswing, but hey, if you don't like it, just stick around. It'll change. Also, Ethereum blows past the $400 mark and is down at $322. So I expect that to probably go to $250 or so before we bounce back up. But who knows? Down 17%. Tether's Tether and XRP is XRP. Although not too stable, now we're looking at $0.23 and maybe we can drop below $0.20. Who knows? The most interesting thing though here is Bitcoin Cash has had a resurgence and it's come from, I don't remember, 7th, 8th, 9th place somewhere around there and it's all the way at the 5th place and it's 24 hour volumes, 3 billion with a market cap of almost 4. And the question it becomes then is why did Bitcoin Cash jump Chainlink? Well, obviously because Chainlink dropped 23% and the Darling Polkadot dropped almost 30% obviously. But I think there's something more to that. I think that there is another story behind that and this was something that we covered a couple of days ago where we're going to talk about the Bitcoin hard fork. I will link this in the description if I can remember to do that, but I should, but there's a hard fork coming. It's going to happen on November 15th. It is between Bitcoin Cash and another faction and it's all about miners and the taxes that they're going to impose of 8%. So once I want to do that, one side doesn't, but if there's a hard fork and you have Bitcoin Cash, what does that mean? Well, you're going to have another fork of another fork and that could potentially lead to gains. However, I don't like to play that game, but some people do and they will bind to Bitcoin Cash because potentially they can have Bitcoin Cash and the new fork of whatever it is. Just like there was Bitcoin, then Bitcoin Cash, then Bitcoin SV, then Bitcoin Gold, then Bitcoin Potato Foot or whatever the hell it was. There are so many different forks of forks of forks. I don't, I'm not into that, but some people are and that could be why there's a little bit of a gain here, but who knows? We're all in that downward slide, so we'll see how this pans out, but I would like to see some more information on that. That is for sure. Anyhow, Chainlink, woof, big down, bigly 22% and it's below that $10 mark. You have to understand, with Chainlink being an Oracle, it can pull outside data in and that is a big plus because blockchains can't pull outside data, so they need an Oracle like Chainlink. Now with the fall of DeFi, which we're going to talk about in a bit, Chainlink isn't being used quite as much, but the big thing is, you have to remember, smart contracts, as they start to become more prevalent and when they start to be used more in society, Chainlink and other articles will be a big part of that. So I still believe in Chainlink and right now, hey, downward slide, what are you going to do? Polkadot also down, pretty massive, almost 30%. And again, this is one of those new projects that just came out of nowhere, but it is part of that, what I call the Ethereum mafia. This is from Dr. Gavin Wood, who was a co-founder of Ethereum.  Just dollar cost average like everything else. And here we are, down to 383. When people were saying, you know what, six bucks is only, you know, the stopping point, it's going to go to 8, 10, 15, 20, calm down. Listen, this isn't the first rodeo. I know this game is played and it's going to go down, it's going to go up and all the way around. So just dollar cost average in should be okay. What else we got? Pretty much everything's pretty down. That's all I can say. So Nio's down, Cosmos is down, 20%. Vechain, 12%. Urn.finance. And you can see DeFi are taking a massive hit. Urn.finance at one point was at 36 or 37,000. Now it's at 20,000 a coin. So yeah, UMA, jeez, 45%. That is huge. And on and on we go. So like I said, if you're new to the game, don't worry. This is par for the course. We'll see how it all plays out. But I am in here for the long haul. I am not here for a day to day occurrence or a week or a month. I'm here for the next 20 years. And that's how I see these markets. All right, let's move on. First up, sushi swap. Chef sells all his holdings as the community cries wolf. Now before we go on, I need to make mention that I believe in DeFi. I believe at some point it will be a huge dent in centralized finance. And I think it's a necessity. Having said that, I believe that these are the early days. And with early things and early adoption, there sometimes are problems. And you can see that with what's going on right here. And this is just par for the course. So let's see what's going on. So scrolling down, it states the hype of DeFi seemed to come crashing down on the fifth of September after the anonymous founder of sushi swap sold all of his tokens with many yelling exit scam. And I got to tell you in this place, in this sector that we are in, the word scam is surrounded around a lot. Is everything a scam debatable? But there are some things that we can see as definite scams. Bit connect, that is definitely a scam. One coin that was definitely a scam. Is this a scam? Sushi swap? I'm going to let you be the judge. Let's see what's going on. Master chef had already announced his retirement on four September via tweet. He stated, and just so you know, master chef is the creator of sushi swap. So he states with all the growth of at sushi swap and the FUD, I'm considering transitioning the admin control of master chef and deb share address to a multi sake address behind time lock. So not a big deal, right? So he wants to transfer it over. We don't see the issue, right? But it gets worse. The chef finally asked community members who believe in the project to stay through the migration and become part of sushi swap in the long run. However, as the chef sold all of his sushi's, the market got alarmed and everyone started calling it a scam, which I got to tell you when you're the creator and you sell all of your shares, that doesn't instill a lot of confidence. And this is the same type of lesson as in 2017, as we're going to see right now. As a justification, the chef tried to highlight the example of Charlie Lee, the founder of Litecoin, who in 2017 also sold and donated all of his Litecoin 2017. First of all, I did not believe that he donated all of his Litecoin. I mean, he sold it all, that's for sure. As far as donation, I don't know the percentage, but I know he did. I mean, he says he does did. So I'm not going to say he did not, but there's he did actually sell it at the all-time high, which is perfectly timed. So Charlie Lee, hey, he sold it all. But again, that doesn't instill a lot of confidence. And the reason why he said he did it was because he said he didn't want to be behind the different ebbs and flows of the project. He said that he felt like he had too much power with his different Twitter account that when he would tweet out something, it would either raise the price of Litecoin or drop it down. And he didn't want to be a part of that whole thing. So that's one side, which is admirable and I can get on that. And then the other flip side of that is people just say, I just want to make a bunch of money. I'm not here to debate that. I'm just saying that when you sell everything, it really doesn't instill confidence in the project. So moving on, it states, however, a part of the community didn't take the comparison seriously. Twitter users stated, hey, Satoshi Lite was there from 2011 till 2017 doing a proof of work coin. You're claiming that this is in any way similar that what he did is redonkulous. Not that his exit was smooth or something, but at least it was after six years of proof of work. And I don't know how long it took to create SushiSwap, but I'm guessing it wasn't six years. With the community divided, the anonymous chef continued to state that this was done because they care about the community. At Naomi Chef or Naomi Chef concluded, all I can say is if this experimentation goes on to success, you guys know the upside, but if people don't believe in the project, it will fail. And we return everything back to the original creator at Uniswap protocol. I'm happy with either result. But I have to tell you, if you sell all of the SushiCoins, which is what it is all based upon, the governance coin, you essentially sold out everything. And I don't think that really, like I said, instills much confidence in the project. Now I can see both sides of the argument, but to me, I wouldn't touch this project in anywhere shape or form. Let me know what you think in the comment section. I just found this very interesting. And I got to tell you, as we see decentralized finance start to sell off and the cryptocurrency asset market slide, I can only see a worse slide coming up over the next weeks and months. It's all about what you believe. Do you believe that cryptocurrencies and digital assets are going to be here for the long haul? Do you think that they're going to just take off over the next couple years to five years to 20 years and that they are going to make a huge impact in the global economy and how we interact and do things? Or do you think this is just a flash in the pan? And that's going to go away in a year and we're just going to go back to the regular way that things were without digital assets. If you think that then maybe this is time to sell for you. I'm not giving you advice, but that might be your option. For me, I believe that the genie's out of the bottle and you can't put it back in. I think cryptocurrency and digital assets are going to be here for a very long time. It's going to swallow the whole internet. It's going to be what they call money over internet protocol or MOIP. And there's going to be some fantastic changes coming about just like what would happen with the internet and it's going to take place over the next one, three, five, 10, 20 years. And that's why I'm in it for the long haul, because I believe that things will change for the better. I could be wrong. Let me think of the comment section. Let's move on. Next up, blockchain voting shines with Michigan, Michigan Democratic Convention. And this is one of my pet projects because I've always believed that that blockchain voting can really change things for the better. I mean, blockchain can change things for the better, you know, end of statement. But voting, I feel is just one of those things that really needs a major upgrade. If you think banking is old school and is predicated on a very old technology, have you ever gone to vote? Do you know how old fashioned that is? You stand in line and he's super long lines and you're just waiting there for sometimes hours. Sometimes I mean, in some polling place, it's like, it's like eight hours plus.  Okay, great. Then you step up to a voting booth. And if the, you know, if the tablets aren't working, which has happened last year, then you got to put it on paper and you're like, really on paper, make sure you have the right pencil and you have to, you know, set it all in and go through the things. And it's like, this is where we're at in 2000. Well, this is 2019 and 2020. Are you kidding me? I can open up a bank account from anywhere in the United States and it takes like 20 minutes. I can verify everything and I can start swapping out money all over the place. But yet I can't do a vote.   So something like this, I don't see why it can't happen. Anyhow, what's going on here? So blockchain based voting app votes has recorded nearly 2000 votes at the virtual Michigan Democratic Party Convention. Votes has conducted pilots in several US States, including Arizona, Michigan and West Virginia. MIT researchers, however, blasted votes early this year, blasted claiming the app was not secure against hacking attacks. Okay. So here's what's happening. Votes announced today, this is actually a couple of days ago, the successful completion of voting on the platform at Michigan's virtual Democratic Party held August 29th through August 30th, during which delegates from multi-nominated candidates for the state Supreme Court and other positions, nearly 2000 delegates voted using votes, smartphone voting platform. So again, I do not see what we cannot use a smartphone. If I can't open up a bank account, if I can get life insurance, if I can get medical insurance, but yet I can't vote online, what is the problem? And before we start talking about fraud and all the things that we hear about in the news, are we not smart enough as a society to come together and overcome the hurdles and barriers that may lead us to some type of fraudulent voting count? I mean, look, we're in 2020. Why can't technology combat that? I just don't see how we can't do it. Anyhow, making headlines as COVID-19 keeps citizens at home and mail-in voting becomes a hot button political issue. As a precaution against COVID-19, all convention participants attend virtually from their homes. And if you believe in coronavirus, I personally happen to believe it's a real thing, which I should because my nephew passed away from it a couple months ago. I just don't understand why we all have to stand in line to vote and we have the technology right here. We don't have to crowd together in these small little places. You know, with our masks on and trying not to touch anything and trying to get infected. We can just do this, you know, distance-wise. We've had all the time in the world to figure this out, but here we are. Of 2092 delegates, 91% voted using the votes app, while the balance voted using a help desk phone system. Great phone system, sure. There were so many unique challenges with this year's convention because of the pandemic, but the votes platform eased many of our concerns. Michigan Democratic Party Executive Director Chrissy Jensen said, votes enabled delegates to be verified remotely and participants through their smartphones. The convenience, safety, and accessibility of voting this way was eye-opening for everyone who participated. Well, yeah, because you have everything there at your fingertips. Super simple. Let's just do it that way. Votes has helped facilitate three previous Michigan Democratic Party conventions using an in-person tablet-based system in the past. It also facilitated remote voting at the Arizona Republican State Convention earlier in 2020. Votes came in the public eye in 2018 thanks to a pilot that allowed West Virginia residents to vote in midterm elections using the platform. After naming the pilot successful, state officials planned to roll out the tool for overseas residents in every county for 2020 voting, which would have been fantastic, and that could have kickstarted it, I mean just in West Virginia, and then probably spread across the whole country. Great. However, they changed course after the MIT researchers claimed to uncover security vulnerabilities in the vote system. Votes responded, stating that the researchers performed their analysis on an outdated version of the mobile platform and relied on assumptions about the server-side architecture of the system, which they never accessed. So, you know when you update all your apps on the phone, the reason why you do that, sometimes, not every time, is because of some type of vulnerability. So, if the MIT researchers were using an outdated version, why the hell did they do it like that when they could have said, hey, we're going to test this and we want to see what's going on, so we need your updated version? Why the hell they do that? I don't know. I don't know, seems kind of sketchy, but they kind of screwed everything up for the rest of the voting because they just botched it, whatever. Votes also pointed out that other research teams have been given full access to source code and other components of the system. It criticized MIT study authors for remaining anonymous prior to publication. So, that's a real bummer. They could have done a lot of great things, but because of that research, it got shelved until right now. So, I will say this.  I mean, obviously, for a lot of people, but it is pushing us into the forefront of technology because this is how we should have done it the whole time. So, let's take a look at votes. So, votes I think is awesome. If I was part of the delegation, I would definitely be looking at these guys and going, hey, you've already done it all already for two or three years. Let's see what you can do moving forward. So, let's just go on this. Okay, what's this? In this video, I'm not going to play it, but it was pretty interesting because they had some people who were disabled, some people who were overseas, some people who had, they were limited in vision and hearing. So, those people, it's very hard to go out there and vote. When you're able-bodied, sure.   So, why can't we just use something like this? Seems a lot easier than, you know, mail-in ballots and all that stuff. So, scrolling down, there was just one thing I wanted to read. Yeah, this one, right here. So, this is from somebody who's visually impaired. He says, this is the perfect method of voting because I didn't have to go anywhere. I didn't have to find someone to drive me or get my wife to take the whole day off. I was able to do everything at home. Voting app is perfect. Very accessible. Utilize the voice over my phone. It was a great experience. So, again, I mean, why can't we just do it like this? And this is how it works. I thought this was pretty cool. So, there's just really, there's five steps. So, you request mobile voting. So, you just submit a request to receive your ballot via smartphone. You download the app. You verify your identity. And this, I think, is the biggest part here. So, how do they do that? So, it's a three-step process. And I don't know, I'm guessing, I'm not for sure. But unlike my iPhone, like it's, there's a biometric available. So, I just put my thumb in there and unlocks the actual phone. So, if you can verify your identity with that with a thumbprint, that's a hell of a lot safer or a lot easier than going to a polling station with an ID. Maybe that's you. Maybe it's not. I don't know. But your thumbprint is kind of hard to hack, I should say. But then also, I would, I read somewhere something about like face imaging, software and things like that, or verify in some other way. But again, it doesn't matter. If I can open up a bank account, why can't I vote? Anyhow, then you vote and then you verify it. It says you'll receive an anonymous receipt. So, you can verify your selections. Which I think is a big thing because in some different places, they were talking about people would vote for a certain party. Then they would get the printout and it was for the exact opposite party. So, I don't know what the hell happened there. But here you get to verify your vote. This is what it is and off it goes. And the great thing here is with the blockchain, you would be able to verify everything from start to finish. And that's the big deal about distributed ledger technology. So, I think it's a fantastic way to do things. Let me know what you think in the comments section. Let's move on. Next up, Joe Biden tax plan. Whoever you're going to vote for, this is not a political channel. I'm not here to change the world. I'm here to make a profit. That's it. So, this was just interesting to me because of these are tax proposals. Now, will this go into effect? Well, I mean, maybe if Joe Biden gets elected, sure that could happen. Or he also has to pass this through the House and the Senate, you know, Congress. So, you know, chance of that, who knows. But these are the things. This is the vision for a specific party. Okay. Not that this is right or wrong, but this is just what it is. And you have to start thinking about this right now. Because if you believe, like I believe, that digital assets are going to go to the moon over the next three, five years, what are you going to do when you are sitting on a million dollars or a million in cryptocurrency and you're like, okay, I need to pay some bills. How do I take this out? Well, now we're talking about capital gains tax, not only in the federal part, but the state part. And I got to do all these different things as far as like my income and taxes and taxes and taxes. What do I do? Well, right now, it's not too bad. But here's what could potentially come out of the pipe. So, former vice president Joe Biden enacted a number of policies that would raise taxes, include individual income tax and payroll taxes on high income individuals with incomes above 400,000. That doesn't seem like much now. But I'm going to just imagine this. It's 2016, you bought Ethereum at $10 and you bought, or you bought a thousand, right? So you have a thousand Ethereum. Well, what happens when it goes from $10 Ethereum, which was in 2016, all the way up to, oh, I don't know, $1,400 in 2017. And you want to cash out. Well, guess what? This 400,000 doesn't seem that much now, does it? So as time goes on, you have to understand, you might make a lot of money. And if you make a lot of money, this number that you think is unobtainable, all of a sudden becomes the norm. And now you're like, well, wait, well, how much am I going to pay in that? Well, if you're sitting in a tax bracket, I don't know, it might be 28%, 32%, 30%. I forgot, 34%. Let's just say a third, a third. So a third of everything that you have now has to go to the government. And I don't know where you're at in the world. This is just for America. But I can tell you right now that taxes around the globe vary greatly. And there are some states that just are some states, some countries that just are awful, and some that are pretty good. But we have to start thinking about these things now as opposed to paying the piper later on. So Biden's plan to raise taxes roughly by 3.8 trillion over the next decade on a conventional basis, 3.8 trillion, which is, you know, a good amount of what we printed from nothing. On a conventional basis, the Biden tax plan would lead to 7.8% less after tax income for the top 1% taxpayers. Okay, so if you're Jeff Bezos, hey, 7% 8% less, think you'll be okay. 1.1% lower after tax for the top 5 and 0.6% for the other income quintiles. Nice word. All right, so moving down, moving down. This is the interesting part. Taxes long term capital gains and qualified dividends at the ordinary income tax rate of 39.6% on income above 1 million. Again, that may seem out of reach right now. But as time goes on, this might be the norm for you. I don't know. Lastly, it states, increase in the corporate tax rate at 28% would account for the largest revenue gain, which is 1.3 trillion over 10 years in the plan. So that's corporate taxes, right? Lastly, higher taxes levied on taxpayers earning more than 400,000, that could be you, including higher tax rates and ordinary income as well as capital gains and dividends would raise another 1.2 trillion over 10 years. So again, plan now for what's going to happen later because there is nothing worse than being caught short with a ton of money. You're like, ah, now I got to give away 33% or 25%. I mean, heck, even 20% is a lot. So if you have time, I'm going to link this at the very end of this video. It's how I am not going to pay any crypto taxes moving forward. And I talk about how I do it, the plan that I do it, and how I do it legally. And that's the most important part. And really, it all comes down to risk and safety. And that's going to lead us into question-the-day. So let's jump in the office. All right, everybody, and welcome back to the office for Q-the-day, the Saturday. So a little more of a casual day. But what I have, it's not really a question, but it is an email that was sent to me by Espartano171. And he or she states on another topic, and he's talking about this thing that we were talking about as far as like putting money into our US dollars into stable coins during the instability. So it says on another topic, you had a key point in the crypto space, which is putting your money in the stable coins when the markets are volatile. I have a personal experience to share, which is he put, he or she put, CRO, CRO in crypto.com. He said when I bought it, he said he spent 1,100, almost $150 when it was a nickel in value. So, you know, hey, pretty good, right? Locking those funds into the three-month term certificate of deposit at 18% PA or per annum. So that is how much he's going to make per year, 18%. So, you know, not that much, but a hell of a lot better than any bank are going to get. I'll tell you that right now. And he or she states, it made me 3x on my money, $3,100, put $9, thanks to appreciation, and $120 in interest. So total capital gain was $3,159 plus $120 minus the original investment. So it came out to about $2,000, which is 286% in gains. And he talks about another deposit I had with Tether. It was 8% per annum, and it made me $17 on interest, which is pretty awful. So when I was first reading, I was like, well, I mean, you know, 18% per annum is pretty good. But of course, the big gains were putting it into crypto-currency digital assets. And when I first looked at it, I was a little confused. I'm like, what was this, the actual per annum? What were you got? But of course, it was just the certificate of deposit. So what it says to me is that if you're able to do this, which I think it'd be kind of tough, especially with the way that our brains work, right, which I talked about yesterday, it would be tough to just buy crypto-currency digital assets and just put it into an analyzer or into a wallet, hopefully a cold storage, right? And then just forget about it for at least a minimum of three months and then just see what happens with it. I got to tell you from the beginning of this year of 2020, if I would have, well, actually, I kind of did it. I mean, I don't really sell anything. But just to put your money in 2020 into crypto-currency and then open it up right now, I mean, where would you be? You do pretty well. Or in March, if you could do something like that, and then off you go. So I think if you're looking for these monstrous gains and to go everywhere, I mean, you can look for the new DeFi thing or you can look for the new hot topic or the new shiny object. But I think the best way is just to, you know, a simple strategy, which would be, you know, just make an investment, put it into a wallet. That could be a percentage yielding account. My two big ones are Voyager and Celsius. Because, I mean, you could just live off the interest if you have enough. Now, granted, it's going to take you a lot of money, depending on where you live, like I talked about. If you're in Costa Rica, you don't need that much. If you're in upper Manhattan, you need a lot of money. So it just really depends on how you get it. But I mean, if you're looking at like interest rates of like 8%, 10%, 12% and, you know, you've made a lot of money in the cryptocurrency market, I mean, it's feasible that it could actually happen. I just am waiting for that moment. And I've got nothing but time. So might as well just sit on the investment and see what happens. Anyhow, let me know what you think about that in the comment section. Let's jump back. All right. Hope that answers some questions. So to finish up, just want to let you know that there is a join now button underneath. It's not like getting special. It's just like a tip. It's like a buck 99. And what I do is I just give out random shout outs. So then I'm sure it's to Regina Halasinski, Justin Ross, Doug Lemley, who else we got? Carlos Gomez, GK, SML, Azrael's passage. I think I nailed that one. And Gene Holland. I just want to say thanks to everybody who would have signed up. Really appreciate it. If you like these types of videos, there's going to be two months going to pop up on your left and right. Not for sure. I'm going to try to get the other one, but that's what we got. So if you like those, go ahead and check those out. And that's it for today. So thanks for watching. Really appreciate it. And I'll see you on the next one.