Greetings retro friends. This is a Remex punch tape reader. Specifically it's an RRS 7155. So the idea is that you would have some punch tape and if you'll recall last episode I actually punched some tape and it would just go through this thing down here and it would read all the holes and it would output on a DB25 pin connector. Now I also happened to find on eBay the manual for this.  So this will be able to tell us how it works and you know if something doesn't work I'll hopefully be able to fix it. Now the idea here is here I have a roll of punch tape that I bought on eBay. I have no idea what's on it. There is a label on it that says LBR5 or possibly 6.2 and also T equals 121.11 degrees Kelvin. I guess that means that this is maybe some lab measurements taken at that temperature or maybe a simulation or something. Anyway it would also be nice to just read this and see what's on it. Anyway so the idea is that this would have actually been placed on a spool like this and the take-up reel is over here so the tape would go down here around here up through this reader down here over here and then around into the take-up reel and these are tension arms which presumably work exactly the same way as the perforator did where it can adjust the spooling for proper timing. Now the interesting thing is is that if we take a look inside the machine, let's show you that, here are some parts. Here's a transformer, here are some bulk capacitors for the power supply, this here is a bridge rectifier, so this is you know just your ordinary AC power supply. So the interesting thing is this is one of the spooler motors and this is a potentiometer so as I move the tension arm you can see that the potentiometer actually moves and this is not what we saw on the perforator which was just a simple switch and we'll just turn the motor on and off. The motor actually rotates at different speeds depending on the tension. Same thing here on the other side, here is the motor for the supply reel and this is its tension potentiometer. So that's kind of interesting, it'll be interesting to see how that works. We've got some buttons on the front, the usual on-off button. We have what appears to be a backwards and forwards button and also a loop load spool. This is the logic card back here. There are a whole bunch of potentiometers over here which adjust things like timings and thresholds and if we take a look at the back there's not a whole lot back here. This is where the AC comes in and this is the 25 pin connector that the data will come out on. In addition to this I also received in the package some extra light bulbs and the light bulbs come into play over here and they basically just shine the light through the holes and there are detectors in here and those potentiometers which we saw over here presumably set the thresholds for the light. So when a hole comes in the light goes through, the detector goes off. When there's no hole light doesn't go through and of course for paper tape like this the interesting thing is well how do you set the threshold because you know if it's a very bright light it's going to set off the detector even through the paper. Something like this Mylar tape of course won't have any light going through it at all if there's no hole. So what I thought was we would just start by plugging it in and seeing what happens. Okay so what I've done is I've loaded up the former feed reel or whatever you call it and put it in the take up position I guess. Maybe it's the take up I don't know which way this thing is supposed to go or which way this thing is supposed to read. So what I'm going to try to do is spool the tape and see what happens. So let me turn it off plug the power in make sure that I've got my 25 pin connector connected which I do and now I'll turn it on okay and now I'm going to put it in the spool position and see what happens. So as you can see it sort of loaded itself up now if I move the arrows we can see that we can actually move the tape around. Okay so clearly something is going on here where the motor is actually not able to keep up with the feed rate on here. Let's do the opposite now. Okay that seems to be okay so there's some adjustment that I need to do because it's not able to move this motor as fast and in the other direction yeah everything's just fine. Okay so the next thing that I should be able to do is do exactly that except through the db25 connector the 25 pin connector. So let's see let's drive right which is pin 16. Okay and that actually seems to be slower which makes sense because the manual says that it will go at a certain speed but then when you hit the buttons it'll go faster. So let's go the other direction which is drive left 17. Yeah and that all seems to work. Now one thing that I should point out is that the only thing that's driving the tape is the sprocket motor right. So if the sprocket motor moves the tape this way this tension arm is going to be pulled this way and this tension arm is going to be released this way and that causes these motors to spin to move these tension arms back to their neutral position. So really it's only this motor that's that's kind of controlling the whole thing. So the next thing that we need to do aside from you know make a note that we should take a look at the the voltages over here and maybe adjust that the next thing that we need to do is take a look at the outputs and see what sort of data we're getting. So I'll just maybe hook up an oscilloscope and make sure that we're getting some signals. Okay here we go. Yep all right so we're obviously seeing data and I'll run it the other direction now. Okay so clearly we're seeing some good data. So let's set up the Raspberry Pi to drive this and read some data. Now the way it works is this there is a data ready signal so data ready and the data ready signal basically means that the tape is stopped on a character. So when the data ready signal goes high then we can actually start reading whatever the data is right over here. Now we also have the drive signal and the drive signal is an active low signal. So let's suppose we're driving it and all of a sudden the data ready line goes high well at that point we can stop driving the tape and then we can read the data. So let's say we're going to read the data right here and then after we read the data we can drive the thing again. Now as we drive it as we drive the tape the data ready will eventually when the holes leave the the area of the light the data ready signal will go low and we're going to continue to drive it until the data ready signal goes high again at which point we are going to stop driving the tape read the data and let the tape go again and we let the tape go and then eventually the holes leave the reading area the holes enter the reading area so the data is ready and we stop the tape again and read the data. So that's basically what we're going to do and the other thing is there is a minimum here or actually I guess the minimum would be this and there's also probably a minimum drive pulse as well and I think the minimum drive pulse is something like 500 microseconds and the minimum between the data ready and driving I think is 0.5 microseconds so that's really small but this is a more important number because it basically means you can't drive this really at more than a certain amount in this case I guess it would be well 2,000 characters per second but it turns out that the tape is capable of being driven at a maximum of 400 characters per second and if you drive it like this the capability is actually only 200 characters per second which basically corresponds to a delay so it's 0.005 seconds or five milliseconds per character and that equals 200 characters per second okay so that's what we're going to do and that's the program that I wrote so as before I have the cable going down here this is a cat five cable and it goes up to the raspberry pi now here's the breakout board and you can see that I've got the wires going to a breadboard and if we look at the breadboard we can see some resistors those are 10k resistors and they go directly to the inputs of the raspberry pi and the reason that I did that is that the raspberry pi's inputs are not five volt tolerant and yet we're outputting five volt signals so the resistors basically limit the current that goes to the raspberry pi so that even though I'm sending it five volts the raspberry pi will only that the resistors will drop enough voltage to drop that below 3.3 volts so let's go ahead and run the program and I have the program set up to read 256 characters now you can see that on the leader part of the tape all we're going to be reading is ff's so if I were writing a program to read the entire tape I could just say okay read ff's and throw them away until you find the first non ff character so let's go ahead and read 256 characters and this is going at not not the full speed it's going at I think about 160 characters per second so let's see what happens ah okay so that little click that you heard sort of says I think that something didn't work somewhere along the way and I wonder what it could be okay so I turned the machine off and advanced the tape a little bit and I think I know what's going on if I can zoom in on the tape we can see that there's this double punched area and apparently that caused the thing to malfunction for some reason so now that I'm past that I think that I can start the program up again okay so we've read 256 characters so let's see what those characters are okay and these are the characters so the ff's that you see in the beginning are actually the the leader and then after that it looks like we see a but now this is hex so it kind of looks like we see a bunch of ascii numerals so for example immediately after the leader we get an ad character and then a 0001 01 and then an ac and an ab and then a 000385 and then another ac and an ab and so on and you know there are some other characters in there again I have no idea what this means ac and ab are not anything that I recognize there's also some ad a characters in there but the interesting thing is the the ascii numbers so apparently these are you know maybe some some numeric records but there's nothing else that's interesting in here we can read some more data and see what we get just more of the same yeah and that's just still more of the same just numbers followed by record separator characters and then more numbers the numbers appear to be six digit numbers I guess we could just continue reading to the end of the tape let me just modify the program to read a few more characters than 256 let's read say I don't know 1024 okay and it looks like we're almost at the end of the tape so let's just read some more data okay how much tape have we got we've still got probably about another k of data I think there's probably about 15 or 20 k of data on this tape and that was it so that's what happens when you run out of tape we read the end which was another leader which is a bunch of fs but yeah it it basically seemed to end on the the end of a record the interesting thing is remember I said that there were ac ab's let me show you the screen so here we are at the end of the tape and you can see that we read the I guess you could call it a trailer which is a bunch of ff's and you can see that there are these six digit records it looks like they're basically ASCII zero followed by the record separator acab and then we get a final six zero characters and then the very last character is a b8 maybe that means end of data and then we just get ff's which is the the trailer so that was about it all told there was probably about maybe 15 or 20 k on that tape well I suppose that's it for this fun punch tape exercise so we've been able to punch tape using a perforator and read tape using a tape reader and we read a tape that I got off of ebay and it did not seem to contain anything very interesting it was apparently a data tape and it had it didn't have any actual executable code on it which would have been maybe a little more interesting because then we could actually look at the data and see perhaps what kind of processor it was for but alas this is all I got well I will actually start looking for other tapes on on ebay and you know see if we can find some more interesting data about that but until then I will see you bye bye


and digging in. You know when Hamilton gets excited about something he just keeps digging and digging and digging and that brings us to Deandre Hopkins because it's been a bit now it's been a week since he was officially released and I feel like the only news we've gotten lately is teams coming out and saying we aren't interested we like who we have so there's a lot flying around right now we're going to sort it out you and me right now and figure out who is in the race for the three-time alt pro it is time for investigation and Deandre that's a little terrifying you know how serious this is let's start with the unlikely suspects okay first up we got the cowboys here's the deal both Jerry and Stephen Jones came out yesterday and said Dallas is unlikely to pursue Deandre bringing up how happy they are to have their archer thousand-yard guy in Brandon cooks okay that's what they said next jaguars all right not you know I didn't really see it as a likely destination but still Doug Peterson figured he'd have to talk about it he confirmed it he's probably asked about it and he said that it is not a realistic possibility for them so scratch off the jags and the cowboys on the list kind of all these people live so it's whatever the bills they've considered and been considered one of the strongest contenders to land Deandre it makes the most sense they got it to win the Super Bowl and it did take Brandon Breen's comments to Pat McAfee it took me in the direction of that there's a bit of a beacon of hope okay can we see that tweet again I didn't see it I need to see that Deandre's heck of a talent it would definitely have to fit with how we would structure the salary and all that never rule it out so this is being to McAfee never rule it out but it'll probably command a decent contract mmm it does kind of sort of make me feel like it's not happening because the tea leaves are just the numbers Buffalo's really tight with their cap space situation right now so I'm gonna sort of curb them a little bit though the doors always open then there's the jets now we we love our current group I know we there are some stuff with Odell but other than that there's we love our group it's very cute like I said so is he Robert Salah so is Aaron Rodgers so is Deandre how because it's a very like cute sexy storyline but that's what he said about that so they're out how about the Lions right the Lions like if I'm investigating and I have my detective head on and I'm looking for teams that have this space I'm going to Detroit they have 24 million they're going to be without James and Williams for a while that you know they might make sense David saying that Lions coach Dan Campbell uh about Hopkins said I'm not going to comment on that one but I like our receiver room I think we got a good mix of different types of guys so they're most likely out but why don't you want to comment on it just say that you're out if you're out right and then there's the Browns okay there were rumors swirling about him reuniting with his Texans teammate so we've got Stefanski being asked Andrew and his crew always looking to improve the roster but I'll just say I really like the room the way it is so that says to me that gosh we're we're striking out here people that says to me it is probably not happening so then you've got the Cowboys you've got the Jets you've got the Bills the Browns the Lions the Jags six teams these are strong teams that were thought to be maybe not the Jags but the rest of them like let's make a move these guys can swing and get nuke and they all seem to be out of the race so now let's take a quick look at the squads who have been very tight-lipped very quiet when talked about adding the star ride receiver okay so those are the teams that sort of came out and said we're good we're good we're good and then you have teams like the Giants Davele said anytime there's anyone out there who can help the team Joe Shine Shane and and his staff will look into it okay and that's intriguing and what's intriguing is what he didn't say there was no I love my receiver room like we heard from Dan Campbell or Kevin Stefanski okay New York would have to do some serious cap gymnastics to make this work but they seem to be at least entertaining it let's move on to the dolphins here I would say this is less likely but like I discussed yesterday with one delvin cook they do have space available and Mike McDaniel did make it clear they're gonna do something with that cap room so pairing Hopkins and Tyree that'd be pretty legit that would be scary so there's an unknown that's not totally closing the door then you have the Titans so they're desperate need of a number one target after trading AJ Brown last year and Vrable was noncommittal saying that Tennessee's focused on the players they have and that you know he'll keep us updated there's history that's worth considering remember Vrable and the DC in Houston when Deandre is with the Texans and when he was hired in Tennessee back in 2018 Newk had plenty of praise for him quote he's a great guy he's not a good coach but he's a good guy he can relate to his players the Titans are lucky to have him he also goes on to say that his relationship with Vrable went beyond football that it was personal the Titans I think definitely just based on this isn't a team to watch okay Deandre praising Vrable all of that so I really think the Tennessee fit could happen and for the last of these sort of unknown spooky teams could it be a Ryan Polls swing for the Bears okay we have not heard from Polls we have not heard from Eberfluss about Deandre yet but here's this to throw out there this is what the Bears have 32.5 million in cap space right now by far the most in the league they can win a bidding war against anyone and if DHOP is sold on Justin Fields pairing that with DJ Moore in that receiver's room has to be attractive to them okay he's a mover he's a shaker and this sort of thing can vault the Bears into the NFC North conversation and is it worth it to be in the NFC North conversation to pay that for him if you're not going to go much further than that probably not but I would be shocked if Ryan Polls was not crunching numbers and weighing on a abacus thing like what white work numbers wise for them and what the value might be in bringing home this all pro so those are the unknowns you got the Giants you got the Dolphins you got the Bears you got the Titans who I like a lot and that's sort of the other tier of these guys and the guys that are out the unknowns and here's I'm just going to throw them out there because you know I'm just going to stick all the pasta on the wall and see what sticks here there's the unlikely suspects that would be long shots but that I like first up this is the team that was talked about all along it's the Chiefs it is unlikely even though they're interested we know that it could have been likely because they tried to make this deal happen be a trade with the Cardinals they don't have the money though they're the second least cap space right now but what they are really crafty at with Beach who we love on this show is moving some decimal points they can free up a lot of money in a hurry you can see the impact of the Mahomes ceiling but the biggest factor here is Chris Jones we know they're working on an extension for him okay and that twenty eight point three million dollar cap it could go down dramatically if Casey can make that work great photo from Chris Jones at the White House yesterday taking a nap it was great nuke of course obviously has said yeah uh uh signing up I play for Mahomes no brainer for this to work if they can make the finances work the other team that's a long shot that I want to put on everybody's radar is the Texans yes you heard right the Houston Chronicle is reporting that there is some mutual interest and they say you can't go home maybe you can't DeAndre likes the rookie CJ Stroud this was being an insane turn of events and you know I imagine he wants to opt for a contender I don't know what is driving DeAndre happens I have not asked him but they look like a legitimate option and if we're in a world people where live in the PGA tour can come together under one umbrella and create a new business uh you think DeAndre can't go back to the Texans of course he can next the Patriots okay let's dig into this Bill Belichick at the podium is saying I'm not going to comment on players who aren't on this team that's his tagline it's what he said if he was on real house husbands of the NFL that's what he would say to the camera in every opening credit but on the field during in season hard knocks we did get some insight into Bill's true feelings detective style take a look I'm glad we don't have to play every four years man I love you ma it's half the season it's still gonna be the league in receiving gonna do my job man yeah trying to get better man okay there's love here mutual respect between the two that might work the question is just Bill O'Brien is there lingering anything between the two of them like Nuke Bill O'Brien are we friends do we get along do we love each other that's kind of the only obstacle in my mind um your thoughts guys and the last but definitely not least um sort of outlier like long shot but I would love to see it happen it's a place that's just adding receivers like they're being paid to do it and it's to Costa and those Baltimore Ravens okay Eric and John have yet to comment at all on DeAndre since his release that's sort of fishy to me right like we do know Lamar Jackson asked for the team to acquire him during contract negotiations between the quarterback and the team and John Harbaugh has made his feelings you guys this is good he's made his feelings about DeAndre very clear not just recently but over the past decade let's start back in 2013 leading up to a week three meeting with a rookie Hopkins Harbaugh revealed that the Ravens quote loved him heading into that year's draft but they missed out on him by five picks remember they picked 32nd the year after winning the Super Bowl a Houston snap nuke at 27 okay then there was 2017 let's fast forward to John Harbaugh calling DeAndre a star one of the very best top receivers in the league and then in 2019 he said quote I don't see one hole in his game high praise from Harbaugh to Hop so we know Lamar wants Hopkins we know Harbaugh loves him he has for a decade will Eric to Costa take the swing and do it potentially it'd be crazy if they did it what a loaded team what would they what would that do to them with the AFC shuffle and the hierarchy they're already pretty high up there which is a put them at the top of the division I yeah and then does it what does it do for them in the landscape of the AFC that would be insane if it got DeAndre so that's a lot of evidence there was a lot to take in very comprehensive Hamilton did so much work on this and I'll say this after looking at all of his evidence the discovery put in by Hamilton I got to come to the conclusion that the Chiefs the Texans the Pats and Ravens these are the top dogs I think to land DeAndre this is I think he's going to one of these four teams and I think I hit like 15 teams there if I missed any let me know and tweet me at up and Adam's show there we go coming up we've got Jalen Smith he was with the Cowboys he was with the Giants where will he go next Jalen Smith joining us oh looking like oh there we go he got a smile on him Joe McHale the hilarious Joe McHale joining us as well


Hello, my beautiful internet friends, and welcome back. If you don't know me, my name is Jo. I'm missing a foot, hence the channel name. I wanted to talk to you guys today about a really unique experience that I've had. One that is, I think, almost difficult to replicate, and I definitely hope I'll never have to replicate ever again. I made the decision to publish my entire journey of becoming amputee in video form here on YouTube. And it's been a trip. It's been a lot of different things. I had a conversation with my dad the other day about what a positive thing it was. And it really got me thinking about all of the aspects, and what a...  So let's dive in and talk about that. Now, if you don't know me or anything about my story, I became an elective amputee on October 11th, 2018, so it's been like just about nine months now. Prior to having that amputation, I started making videos about the decision process because I had other options, but they were all terrible. They all left me with reduced quality of life, living in a lot of pain, and they all ended an amputation anyways. So I decided to just cut to the chase and have my leg amputated at the age of 27, hoping for a better life. Actually walk, maybe without pain, to even like run, which I hadn't done since I was like 13. So I walked into a hospital on October 11th, and I didn't walk out. I was a wheelchaired out, missing a leg, and I made a video about that. And I made a video about, you know, coming home from surgery and what phantom pain was like. And I made a video just about every day, or every other day, recovering from surgery, and then going to a prosthetist and like getting fitted for my first leg, and then just everything that happened after that. Now, when I first started making videos, I had no intention of them being seen by many people. When I first started making the videos, if you go to the very first videos on my channel, those were initially meant for me. I was talking through my decision process, but it really helps me to make my words make sense for other people. Suddenly, they make more sense to me. So those videos were really just for me, but I thought, you know what? I'm gonna publish them in hopes that maybe they'll help someone else in the same place, someday. Someone else who's trying to make the same decision, but a lot of people took interest. And one of the videos I had kind of blew up. It was one that I had about going up to Denver to have the cast removed from my legs. So I actually got to see my amputated leg for the first time ever, and a lot of people were interested in that. Then I made a video about how I actually became an amputee, and for whatever reason, the YouTube algorithm was a big fan of that, and then took that and blew it up as well. And then, then I made a video about how I said goodbye to my foot and ankle, because I wrote like a breakup letter to it literally on it in permanent marker. I had a mini party where my friends came over and wrote good-bye messages on it as well. And when I published that video, that went viral. And has over, I think, six million views on it now, and news organizations reached out to me and did stories on me, and things like exploded. That was never my intention. I never expected anything like that to happen at all. So I went from someone making videos alone in my house, recovering from surgery, to suddenly someone who was somebody to other people. And that has come with a ridiculous amount of positive things, and also some negative ones. I often wonder what this would have looked like, what this process would have looked like if I didn't do it publicly. Because I publish a video at least every other day, except when I went away to Ireland in March, since it started. There's a lot of videos about this process. There's a lot of videos about everything that I've gone through. I can tell you for a fact that I underestimated the impact that this would have on me, that becoming an amputee would have on me. I knew that it would be a hard thing. I had no idea to what extent. It's been a lot harder than I projected emotionally, mentally, physically, spiritually, relationally, like in every possible way. And again, going through that with thousands of people watching is weird. So I want to tell you about some of the really positive things first. I think one of the absolute best things that this has done for me is it has kind of forced me to face a lot of fears and go out and do stuff. I didn't expect to get really self-conscious after losing my leg, but I did. I was really scared to go out in public. I was terrified, terrified to go out in public alone. I didn't want to like leave the house, but making videos alone in my house all the time doesn't make for super interesting content. And so I was like, you know what? It would make for a good video and it would be a good thing for me if I went to a coffee shop alone to work because I was physically capable of doing it that time. And so I did that. I made a video about it and because I made a video about it, I actually did it. I faced that fear and I realized that I could do it.  That was, that was okay. And there have been so many times where that was the case where I have wanted to stay dead on the couch, just so depressed or sad or upset or like sinking in self-pity for a while and been like, you know what?  And I've been forced to like be creative instead of just being stagnant. It has really helped me do things instead of just do nothing and let fear kind of control me. I think another thing that I was talking with my dad about the other day is that it opens me up to different perspectives because this has been really hard. I don't sugarcoat that. It's tempting to sugarcoat that but I don't sugarcoat the fact that like it's not all sunshine and rainbows and I'm not positive all the time. But on the flip side of that, I think making videos about this process sort of makes me consider different. Fan of pain is weird, sorry. Sort of makes me consider different viewpoints. Like if I'm making a video about mindset, I might start researching it, you know? And I might learn something or I might, you know, want to share something with you guys about my past. And in doing so, I actually gain a different piece of wisdom or understanding about myself by trying to put it into words. By having to explain things or talk about, you know, perspectives or things like that, I actually get a different perspective or at least I'm presented with a different one. And something I've talked a lot about on this channel is that when I make things, make sense for other people, they make more sense to me. If I'm trying to explain something about being an amputee or I'm trying to answer a question someone has asked me, like, do you identify as disabled? I'm like, I have no idea. So let me think about that and let me like try to put that into words for you and then suddenly it makes a little bit more sense to me and I understand where I sit on it a little bit more, which is really cool and really helpful. Now some of the less positive aspects of it have been that there is, I mean, so many voices, so many different people's opinions in my ears.  That's really painful to hear.  I never should have done this. It's hard to like tap into that internal strength and be like, I made the decision I made with the information I had at the time. I'm okay. And when people objectify me for being an amputee, not for being a woman, but for being amputee, like the devotee community. And when people send me extremely inappropriate messages because I'm missing a leg, that makes me feel really gross. And it was an aspect of this I was not expecting. If you don't know what I'm talking about, I'll link a video where I'm actually talking about that sort of at length. Being made to feel like more vulnerable and more objectified now that I don't have a leg is not something I expected and is something that I face sort of in mass from the internet and by far. The most difficult thing to push against is the constant positivity or the needing to be an inspiration.  It's hard to open up and be like, you know what? I'm actually having a horrible time. Sometimes I feel suicidal and I'm super depressed because that's not very inspiring by the playbook that most people are handed. You know, it's nice to have those things said about you and it's easy to want to chase them and there have been videos where I've made where like when I talked about being jealous of other people, being jealous of other people's progress, being jealous of other amputees' progress and some people sent me messages about how that was bad and wrong of me and how I shouldn't express that, how that's a bad example for people and you know, I shouldn't be like that on the internet. I should be more positive. I should be stronger. Hearing that is really hard, weird hearing so many opinions about my emotional state when I am like floundering around and trying to figure it out and I think that's been one of the strangest things. I am like literally on a roller coaster for anyone to see and this is a roller coaster I think a lot of people are on or a lot of people have been on but it's displayed.  Like I absolutely choose to participate in this process, obviously, but it's definitely strange. It's weird to go through one of the hardest things I've ever faced. One of the hardest things that many people ever face with so many people's opinions of how I'm doing it and how I should do it better and if I'm doing it the right way or the wrong way or whatever but I think it's led me to ask a lot of questions. It's led me to lean on people sometimes still learning to ask for help still working on that one guys and push me to really know myself and to really stand true to what I believe in which is not always easy and not always accomplished but I am trying really hard for and as I continue through this journey I'll continue putting it up for the world to see or for anyone to access who it could help and it helps me. Like I said, it's an incredibly positive thing in my life. I love it. I'm so grateful for it but it's also bizarre to go through something like this with a lot of different eyes on you not complaining for a single second. I'm incredibly grateful for this but it is different and I just wanted to share that. Thanks for listening guys. A huge huge shout out goes to all of my patrons over on Patreon. Our team has grown there. My family has grown there recently and I am really grateful for each and every one of you. I cannot tell you how much that helps especially at this time when I'm facing further surgeries and whatnot. So thank you guys and thank you for all of your support all your help all your love all of you. I love you guys. I'm thinking of you and I will see you in the next video. Bye guys.


Now the convener of the Big 10 for Ubi Dati and leader of the Labour Party, Lagos State Chapter, Professor Pat Utomi, has called for the establishment of an international election crimes court to try and jail African leaders who rig elections. Utomi stated these are the press, briefing, and Lagos to sensitize the electorate, while drawing the attention of international observers on their role in unwittingly suppressing democracy in Nigeria. Now the LP leader is pained by the attitude of election observers, whom he said see all the rigging, manipulations, and vote by and join elections, but pretend by looking the other way. I want to reiterate and put in the record before the international community that would question the credibility of an election presided over by Mr. Shagman Bajie. He can be as useful with his talent in gigawa as he is in Lagos, and that needs to reassign him now. I think it's also to ensure that we deal with the issues of cleaning up putters registers, underage voting, and all of those kinds of things that worry Nigerians. It also has to deal with the issue of the fact that many Nigerians believe that in creating new polling booths that people less favored have been sent two, three miles away from their voting area, and considering transportation or travel restrictions on such a day may actually be their disenfranchisement. We know for a fact that there are very few, not a very large percentage of the Nigerian population have Android phones, nor are even able to use an Android phone, even though you put an app out there for them to track in to know where their new polling unit is. The thing to do in a country like ours where a very large percentage of our population are in rural areas, or even in urban areas, but not educated mechanics, market people, conductors, and all of that, is that INEC should paste the polling unit list at the polling units now so that people can use it tomorrow and Friday, or Friday especially, to go look at the polling units, to know if their names are still where it's supposed to be, or has moved, and take the day to go around and locate it. Imagine people coming out in the morning of election day, and they've come to your polling unit and realize this is not your polling unit. That will create fresh news updates.


What's up guys take down here with another story time for you Hope you guys are enjoying this series right now. I have planned up until the middle of May So I'm doing pretty good with that and that's as long as I keep this once a week schedule Keep on doing that. I know Tuesdays was what I said It's gonna be story time upload day. I know that's gonna change in the future I know stuff my job are gonna be changing hopefully soon But it will still be a once a week upload whether that's a Tuesday or whatever day It's gonna be my day off that I upload for that week. So just wanted to put that in the video at first But let's just get into this video as you can see by the title We are gonna be talking about school projects. Most of this was high school and Let's just get right into it Now I'm gonna be talking about There's gonna be a science project. There's gonna be a automotive project or one or two automotive projects and Woodshop I was always in the shop classes That has always been my thing. I love building stuff taking stuff apart. That's just who I am That's what I enjoy doing But let's just start off the earliest one which is a science project. So this was I want to say the ninth grade. So yeah, we would have been in high school ninth grade We were in science class and there was a science experiments portion of it so you and a group of friends So it was me and another guy We did a science projects Experiments that we were actually wanting to do the year before problem is in the eighth grade They're more particular of dangerous stuff and they thought this classified in as dangerous So the next year when we were in finally in high school, we asked if we can do that for the experiment project They said or she said yes, that is fine Because nobody else has ever wanted to do it. So we thought Okay, this is gonna be fun and what it was is I can't remember what we titled it, but we both brought hot sauce different hot sauces and it was an experiment to see what Helped with our mouth the fastest and I think we both had 20 bucks or maybe we only had 20 bucks in total and We filmed it at my cousin's house She let us use her backyard kind of to film it because we recorded it I don't have that footage that footage would be nice for the channel, but I don't have that footage unfortunately but Because it was so freaking long ago But we went to the local convenience store we picked up juice milk Different stuff we had a list of stuff, but we only had each of us tried So for example, we bought a one bottle of juice only one of us tried it. So the theory portion of it We're just going by what one person said and it actually turned into a disaster Here's how right off the start Mine was like a liquid one. He chose Tabasco So mine was the juice not a sauce the juice and I had the seeds in it So our melds were on fire Right from the get-go. So we just started Scarfing everything down. We tried one thing. No, this doesn't work quickly go to the next thing open it up Try it. Nope. That doesn't work through a lot It was a mess I think we passed and I think she gave us a credit because We attempted it, but the heat was just too much and we couldn't focus on the experiment portion of it We just started downing everything that we just purchased to try to stop the heat It was funny. That's why I'm sharing it.  It's an auto shop one Well, let's start with auto shop. There's actually a few more than just the two I was gonna say So the shop teacher one of the first projects. I remember was probably the 11th or 12th grade and He purchased a truck. It was a 19 80s late 80s early 90s Ford F 350. So it was a big truck is that the big model and We had to take the whole interior parts seats the trim everything and At first we thought we're painting it Turns out we were just cleaning it literally we had mop buckets the scrub brushes and we're just scrubbing the crap out of it It was fun taking everything out and putting everything back in that's literally all we did for that truck so that was kind of stupid, but I thought I might as well mention it because that was kind of a Project if you will the next thing is the teacher actually got a 1970s No, I want to say 66 for some reason dodge dirt. It was a burn. Yeah burn find trying to think of the word there It was a bar find so it was rusty Missing parts the whole front end was like it was gone He took it from an old lady and she said as long as you're gonna restore it This car literally needed at least 30 to 40 thousands dollars In order to be able to run it and that's not that's not having it at a high grade value That's just to be able to have all the parts there running And it was a rare car that year was the rare one because the back window was curved So we smashed that window it was over So we never really finished it before graduating and then a couple years later. He got rid of the car I think he gave it back to the lady because that was the condition when he got it, but that was fun kind of Kind of tearing apart The vehicle even though it was already almost gone the stupid stuff they had an oil jug straps Under the hood With all the washer fluid and so that's what the reservoir was for the washer fluid. It was an old oil jug So it's kind of funny We took a parody Jeep. It was the one of the ones at the hood or the windshield flattens I want to say a safari edition and then the best project for auto shop was he wanted to us to make a I Want to say still but I know it wasn't a still a Oh It's gonna come to me anyways. We're fabricating We had these metal I Don't even know where he got the metal from but he he ended up getting metal from somewhere And he got a lot of sheet metal and we fabricated this like long Box but every time we would go and start fabricating it The next one day he'd be like do it like this So we'd weld it and we'd weld on top of it and it squared off and then the next day He'd be like no take that apart So we'd have to take it apart and then the next day is like okay now What I want you to do is he's like I want to cut and make it flush And it's like holy crap every day every time we get ahead. We'd almost get done. He'd stop change it And that's why the project never got done it was some for maple syrup to get the The heats the evaporator, maybe I can't remember what it was called It was heavy as hell, but whenever we graduated we just got the sheet metal cut it cut it Wow We just cut the sheet metal for the bottom part but all year two classes each day for an entire semester and One class a day for the second semester We didn't get it done we didn't get nowhere near done But that's because he kept changing and we had to keep taking stuff apart in that So that was kind of funny kind of stupid But the best one of my favorite projects for That I've ever done in high school would be wood shop. I actually built my mother a Giant Wishing well and it was heavy and the part that I'm proudest about is the fact that I drew up the design myself Because I couldn't find anything that I liked online So I had to hand her all the design all the dimensions make it work and it worked and we still have it to this day It's honestly, I would put a value of 150 to 250 on it Because that's what somebody would pay for something like that. The base is what's heavy We took it was all made out of two by fours and it took 97 pieces one-foot pieces cut and We just took a barrel and we I'd cut one put it in cut the next put it in flip it cut and just do that for an entire class people were pissed we took the tool up that long but I Mean we couldn't help it.  So the roof was here and this part was here So you couldn't see it when you're looking at it and it was crooked. So dad fixed that After I graduated high school, I think maybe after we got home because you wanted to fix it Lasted one season, but in the winter it made it all Brown or black moldy looking We did stain it But the stain was light stains. So we had actually had to stain it dark Shingled the roof after we got it home. I think because the shingles on it were no good Actually, no, I take that back. I think we shingled the sides, but the top there was no flat one So we couldn't finish the top. So we did that after we brought it home. We got shingles somewhere But that would be the biggest project took the longest took two of us doing it For most of the year cost I would say 50 bucks to build because you have to pay the supplies whenever you get into the big projects So 50 bucks that was at a really cheap price and we can sell it for 150 to 200 I gave it to my mother because she'd been wanting one for years. So I built it for her gave it to her Probably never gonna get rid of it. She loves it There was some other stuff I built in high school in shop classes. I can't quite remember everything But I believe this story time here basically was just me going on about projects I've done in high school mumbling again, but I Enjoy making these videos gonna continue doing it once a week uploading once a week I have plans up until the end or the middle of March or wow screwing that up middle of May. I Think you guys are gonna really like April and May what I have planned because it's I really had to sit down Stop and think about my past about my childhood places We went stuff that's happened to me and some of the stuff coming forward is going to be Hilarious, so give this video a thumbs up if you haven't already and I hope you guys enjoy the series because it's it's gonna be fire, but I'll see you guys in the next one. Peace


Want to learn about stocks, cryptocurrencies, NFTs, and the metaverse? Join RichTV.io Hi, how's everybody doing today? I'm your host, Rich. Here we have RichTV Live with our very special guest, the corporate development manager of NeoBattery Materials, Danny. How are you doing today, Danny? Very good. How are you? I'm doing fantastic. And before we get started, I want to bring everyone's attention to the symbols in Canada for NeoBattery Materials, NBM, and in America, NBMFF. And for those that are new to NeoBattery Materials, then you could give us a brief overview on what the company is currently developing within the EV lithium ion battery industry. For sure. So NBM, Neo, is currently developing a novel technology called Silicon anode materials. As many may know, graphite is used as the main anode material for all lithium ion batteries today in EVs and other electronic devices. But graphite itself is a main source of the technical problems such as slow charging, limited EV runtime and increase in costs in the electric vehicle, as well as the battery as well. So adding silicon into the anode material can effectively alleviate all of these problems. But what sets apart Neo from our competitors is our proprietary single step nano coding manufacturing process and our products that use the lowest cost silicon inputs. And we're pretty confident to say that this makes us one of the lowest cost producers on the global scale. And with the management team from a high profile battery companies such as LG and Samsung, we've established over about 50 relationships with global battery and EV manufacturers, financial institutions, and chemical material companies. We have a clear roadmap to commercialization and we're expediting this process through active material testing and agile optimization at the moment. Very excited to see you guys continue to progress. And in light of last week's news, could you explain to the viewers the technology milestone Neo battery has achieved and what significance it holds for the company? Yes, so last week on Tuesday, we have announced a major technology milestone for Neo's one step nano coding manufacturing process. So what we have accomplished is the consistent capability to uniformly nano-coat the silicon particles during manufacturing. Now some viewers might actually question what's so great about this, but in our technology, uniformly coding the silicon is especially important because the coding effectiveness is what determines the runtime, the longevity, as well as the ultra fast charging performance of our materials. And uniformly coding materials on the nano scale is actually extremely difficult for any company of any size. And it was actually especially difficult for us because silicon comes in a plate shaped structure, meaning that it's not spherical around, but it's very rigid pointy. And because of this accomplishment, we've garnered great interest from third party industry experts and companies as well. And to dive a little more technical, silicon goes through a huge volume expansion problem of about 300%, which is four times compared to its original size. And when we charge our EVs or devices, and because of this volume expansion problem, regular silicon breaks down very fast and without the right processing technology, we can't use it on the commercial level still. But what Neo battery material does is we encapsulate or encase the silicon particles with a robust nano coding material to resolve this expansion issue. So previously, although good capacity and ultra fast charging were achieved, the non uniform and inconsistent coatings often resulted in substantive performance due to the breakdown from that expansion. But with this new manufacturing breakthrough, Neo can uniformly code the materials around any kind of shapes of silicon. And this means we can drastically enhance the capacity retention, improve the charging speeds and enable coating thickness control, which are all game changing in the silicon outspace today. Now we love breakthroughs here on Rich TV Live. Danny, are there any significant changes to the manufacturing process that are required to enable the uniform coding capability? Well, the short answer is no. So although we do mention that an additional solution process has enabled that uniform coding capability, we do not change or modify the base process or equipment being used. So what we are doing different is that we use new process conditions, solution formulations and additive materials to enable the uniform coding capability. So simply put, we have just optimized our systems, formulations and materials to enable that uniform coding capability. So this effectively means that there are no cost shifting or cost increasing changes to the current nano coding process. And we can ensure that there will be no delays or hindrances to our commercialization timeline. So the uniform coding capability is just an additional advantage that we have attained in which we can use as a unique and advantageous value proposition in the battery industry. Now in the news, you also mentioned that the company may supply silicon anodes that are 70% cheaper compared to current competitors. Could you explain how the optimized one step process enables this? Yes, so we are certain that Neo is pulling off one of the hardest yet unique manufacturing technologies in the industry today. And this is because making processes in the chemical industry simple and energy efficient are always a significant engineering challenge. In an ideal world, we would want low costs and simplicity, but that's just not the case for the world we live in today. We're sure pursuing popular and available silicon anode options would be easier, but the industry requires differentiation so that silicon anodes can be provided at lowered costs while the performance is improved. But at Neo battery materials, we are just doing that. We take a completely different approach to manufacturing because we use a simple and almost a mechanical process to nano code the silicon with robust materials. So currently, many in the industry implement high cost engineering systems such as chemical vapor deposition, physical vapor deposition or atomic layer deposition, very scary words. Although performable performance results can be realized through these engineering methods, the costs are just too high for mass implementation. And also just to one up the industry, Neo uses one of the most cheap ubiquitous silicon input feedstock called metallurgical grade silicon. So this type of silicon is 10 times cheaper compared to a current competitors use so we can realize another area of cost savings on top of our manufacturing process. So when we couple the low cost process as well as low cost inputs, these are the two substantial value propositions that will allow us to supply silicon anodes that are 70% cheaper than current market option. Danny to wrap things up, what can investors expect to hear in the near future with regards to business and technology developments? Yeah, so as we have discussed today, neo bad materials is making significant advancements in both technology, business developments and R&D capacity as well. We have commercialization on track for the first half of 2024 and as announced, our team completed the request for quote or RQ process and receive construction quotes from contractors in South Korea. And it will be probably negotiating with each party and selecting the best contractor for the project. And once this negotiation is completed, we can expect the initial construction phase to commence. And in terms of R&D, we are establishing more relationships by the day with battery cell and material manufacturers, EV automakers and various battery industry companies. These players have been especially impressed by our unique approach to manufacturing and the low cost characteristics and active material evaluation between parties have allowed such technology milestones to happen. And we are more than excited and confident to establish meaningful contracts with these firms. And as we also settle into Ontario and the US as well, we'll start to advance our projects here in North America, and we are aiming to target non diluted funding as a substantial source of funding for these projects. And we hope to bring positive news and developments very soon. And we also hope everyone is excited for our commercialization. Well, we know we're very excited about your commercialization and all of your updates and your progress and you're moving into the United States. It's very, very exciting. Congratulations on all your success so far. Corporate Development Manager Danny, huh? Thank you for joining us today, Danny. Thank you so much, Richard. Always a pleasure and I must remind you that Rich TV Live is strictly for information and education purposes. Past performance is not always an indication of future results. Please do your due diligence, do your research before you invest in anything we talk about or discuss in saying that we believe that neobatter materials is very undervalued, underappreciated, underexposed. The symbol on your radar, once again, the symbol in Canada is NBM. The symbol in America is NBMFF, Neobatter Materials. If you're not winning, you're probably not watching. We're bringing the winners, we're bringing the news, CEO interviews, chart analysis, breaking news, and we bring them to you first. Thank you for joining us today, Danny, huh? Corporate Development Manager of Neobatter Materials. And for those that are watching, thank you for watching everybody. We'll see you soon.


How wild is that? It's way dark outside. The street lights are on. It is noon. Well, it's one o'clock in Dallas. Susan, where are you at? It's like super dark here. This is our roof of our building. Hi, Donna in South Australia. We taught a class in Brisbane and in Adelaide. We love South Australia. Oh, I'm sorry, you're sick. I'll be feel better. They turn up. Well, it's supposed to be super cloudy today. We're actually supposed to have rain right now, but it's held off. We're focusing. They're getting rained out like in Houston. We're also reporting a time lapse for y'all. Starting to come back up. They're rippling. I wonder what that's from. What do you think that's from? It's a ripple. You have to have a reflection for that. Yeah. Is it waxing or waning on this side? I can never remember. We're not even able to see it online, but on the glasses on it. But now is when you would see all the little half-mins. You have to get something reflection. You did your glasses put out at reflection? I guess not now, because it's got to be cloud cover. Clouds are there. You can kind of see it. Yeah, you can see it now. It's so weird to see the sun at the half-moon. Anyways. I'll be posting a full feature film of this today if you guys are interested. Welcome to the roof of my building. It looks like this too. I have to go do a whole bunch of work now since I haven't been looking at the sky. But we'll be back live tomorrow at 2 p.m. Until then, be kind to one another. Never know what's going through. And always remember, we show you these clips so you don't have to go see it yourself. We'll see you guys later. Bye.


Hi guys, I'm Madison Pena. I am a new instructor here at Marquette. I teach yoga, power yoga and yoga sculpt. I'm from California and I'm a sophomore in the nursing program. One cool thing about Marquette is that we have a ton of different group fitness little classes here offered. And some are Zumba, HIIT, all the different yoga classes and SPIN. And they're really fun. I recommend anyone to go try. So come along with me to my yoga class.


This talk is about balloon hashing, a memory hard function providing provable protection against sequential attacks by Dan Bonet, Henry Corrigan-Gipps-Stuart Schechter, so Henry is going to give it to him. Can you hear me? Yes. Awesome. So I'm going to be talking about balloon hashing, which is joint work with Dan and Stuart here. So, just in summary, balloon hashing is a new password hashing function that has three desirable properties. It's proven memory hard in a certain model that I'll describe. It uses a password independent data access pattern, and I'll describe why these first two things are interesting in a second. And it's practically good, so it matches the performance of the best, sort of furiously secure memory hard functions. So the idea is we're getting sort of provable security without having to pay much in terms of performance cost. So we actually use password hashing all over the place in our computer systems. You might use it without knowing it, right?  There's always some password hashing going on in the background here. So the attack of interest that we're considering when we're designing password hashing functions is one where an attacker gets into your machine, maybe it's your server, and extracts the password file that looks like this. So it has a list of all the users on the system, it has a list of salts, which are just public random strings, and then a list of password hashes, which are some function of the password and the salt. And the attacker's job is basically to run through a list of dictionary words, sort of popular passwords, maybe a billion of them. And for each user, try hashing the dictionary word with the salt and seeing if it matches what's in the password file. So the attacker is basically trying to compute this password hashing function a bunch of times at the least cost possible. So if this is what the attacker is trying to do, what we're trying to do as designers of password hashing functions is make the attacker work as hard as we possibly can. So a good password hashing function basically makes the attacker's job as costly as possible, subject to the constraint that you still need to be able to log into your system in a reasonable amount of time. So one way to sort of begin to formalize this property is to say that if your authentication server, the server that's checking the password, can compute some number of hashes per dollar of computation, then an attacker, even one who's using sort of special purpose password cracking hardware, should only be able to compute something like an epsilon fraction more hashes per dollar of energy. So the property you want is that the attacker is running at the same level of efficiency as your sort of commodity x86 server is running for this password hashing function. So if you haven't seen it before, it turns out that conventional cryptographic hash functions like SHA-2 are very, very bad by this metric. So to try to convince you of that, let me show you one chart. So this is on the y-axis, the number of SHA-2 hashes you can compute in billions per dollar of energy. And this is my server at Stanford. It computes like 100 billion per dollar. And it turns out with custom hardware that's designed for Bitcoin mining, you can actually compute about six orders of magnitude more SHA-2 hashes per dollar of energy than you can with an x86 server. So if you're using SHA-256 for password hashing, you're in deep trouble because with a device that you can buy for like 500 bucks on Amazon, you can compute a huge number of password hashes per dollar of energy. So this is why SHA-2 is bad. And to see why there is this big gap between what an x86 computer can do and special purpose hardware can do, you just have to sort of think about what's going on in your machine when you're computing a cryptographic hash function. So this is an x86 die shot. It's this sort of thing you have in your laptop or a server. It has some cores. It has a memory controller. It has some IO stuff. And then it has a big L3 cache in the middle of the chip. And when you're computing a cryptographic hash function, a conventional cryptographic hash function, it turns out you're using almost none of this hardware, right?   So the special purpose hardware for password cracking sort of looks like this.  And since the cost to power this stuff is roughly proportional to its area on the chip, this is where the attacker gets this million X sort of efficiency savings. So this is why special purpose hardware is way better at computing SHA-2 than your conventional server is. And if you look at what people do for Bitcoin mining, this is exactly what they do. So this is a special purpose hardware for Bitcoin mining. It's just SHA-2 circuitry sort of piled across the chip as tightly as it can be fit. So this is where memory hardness comes in. So if you haven't seen it before, a memory hard function is a function that uses a large amount of working space during its computation. And the idea is that if the internal state size of your hashing function is big, then an attacker who's building special purpose hardware to compute it is going to have to put a lot of cash on whatever hardware they're building. And this basically decreases the advantage of special purpose hardware. So the idea is the attacker is running at the same cost as your X86 computer is running. And the typical technique for building these functions is actually quite simple.  And then you mix up the state of the buffer in some special way. And then you extract the output of the function by sort of maybe hashing together everything in the buffer. So this is sort of a generic description of how these things work. So the idea is that without memory hardness, your hash function doesn't take very much logic to compute. If you use a memory hard password hashing function, it actually takes a lot of space to compute on your chip. You might need an entire memory hierarchy just to store the state size, the internal state of the function. Okay, so that was background on password hashing. I'm going to spend the next couple of minutes talking about sort of the goals of this work before I discuss the algorithm. And then at the end I'll talk about sort of where this area is going. So the first goal I mentioned memory hardness in an informal way, but I didn't really make it concrete. So this is what I mean when I say a memory hard function. So it's a function that has some hardness parameter n, which you can think of as like the amount of space this function is going to take up. And we'd like this function to require space s and time t such that the spacetime product grows like n squared. So the idea is the function takes n blocks of space to compute and you need that much space for about, you need n space for n time basically. And everything here is in the random oracle model. So the intuition is that an adversary that's going to try to save space like compute your function in a very small amount of space is going to have to take a lot of time to do it. So anyone who tries to cheat on the space is going to pay in time cost. The second goal of this work that we're doing is that the memory access pattern of the function shouldn't leak any information about the password being hashed. So remember the way these functions work is you fill up a big buffer and then you index into it in a sort of pseudo-random way. And the idea of this property is you don't want your indexing pattern to depend on the password because then you can be leaking bits of information about your password through side channels. So we're just going to stipulate that. And then the third goal is, of course, this thing should be practical. So it should be basically as fast as the fastest hash functions out there for password hashing or as performant, I should say, as the best hash functions out there. So let me just mention some existing schemes for context. If you've heard of some password hashing functions, try to explain why what we're doing is slightly different. So Bcrypt and PBKDF2 are based on iterated hashing and they're by the most widely deployed password hashing functions in industry today, but they're not memory hard. So they make no attempt to sort of force the attacker to use a lot of space. Scrypt was the first function, password hashing function, to popularize this notion of memory hardness, but it uses a password-dependent memory access pattern. So you can leak bits of information about your password through side channel information with Scrypt. There's some new sort of theoretical work on password hashing functions that are secure against sort of more powerful adversaries that are using sort of parallel computers that I'm not, I'll talk a little bit about this at the end of the talk, but they're basically asymptotically good, but practically not so practical. And then there's these two functions, one of which appeared at AsiaCrypt last year, so called Argon2i and Katena, which are the very practical hash functions, but both of them lacked formal security analysis in one way or another. So Argon2i had no security analysis, at least like formal proofs of security, and Katena had a flawed security proof, or at least for part of the proof was flawed. And it turned out that this sort of lack of formal security analysis for Argon led to an attack that we found that's described in our paper, and I'll mention it briefly at the end of the talk. Okay, so now having sort of set up the problem, let me talk about the algorithm a little bit. So I'm going to show the pseudo code for the entire algorithm in a second, but just to remind you what we're trying to do, we're trying to get these three properties. So proven memory hardness, the forcing the adversary to use a lot of space, at least in the random oracle model, use a password independent data access pattern, and have performance that's basically as good as you could ask for it. Okay, so it turns out the first property is really the hard one to get. The second two, you can just get by construction. So all of the work went into devising the proof techniques and basically making sure that we could simultaneously have the performance in the proven security properties. So let me show the pseudo code, and if you don't get the pseudo code, there's gonna, I'll show a picture, so the schematic, but I'm gonna put the whole pseudo code up just to show you that this is not a very complicated function to implement. So this is the entire balloon hashing algorithm. As I mentioned, it takes in password and assault, and then there's this sort of space cost parameter, which is how much space the, like the state of the algorithm is gonna take up, and then there's some number of rounds, which is essentially how many iterations of hashing you're gonna do, and those are the inputs to the function. And the way it works is you have this sort of internal state of the function, which is sort of n blocks of memory. And as I mentioned, the way it works is you sort of first fill up the buffer with pseudo random bytes derived from the password and the assault just by hashing over and over. And then you mix up the state of the buffer. So for each round of mixing, for each block in the buffer, you sort of pick three blocks pseudo randomly based on the salt, and then you hash together the current block, the previous block, and these three other blocks.   So as you can see, it's not terribly complicated to implement this. It's like a couple of hours of C programming. So in case, oh yeah, and I should mention that this hash function here is just a conventional cryptographic hash function. You can think of it as, you know, shot 256 or shot three, whatever, or whichever hash function you like the best. Okay, so to show you a picture of the same thing, the way balloon hashing works is you take your salt and password, and then you hash them together and use them to fill up a buffer of memory. So you sort of fill up n blocks of memory here, and then you mix up the buffer by sort of taking the prior block, the current block, and three pseudo random blocks and hashing them together, and then moving down the buffer and doing the same thing. So you just update the state of the buffer by hashing together every block with some other things chosen in a special way. So you can think of this, again, is like a mode of operation for a cryptographic hash function. So you're taking a non-memory hard hash function like shot three and leveraging it into a memory hard hash function using this construction. And so you can sort of see through this picture how if you start trying to cheat and use less space, you're gonna run into problems, because if you start throwing away these blocks in the buffer, you might need them later on, and then you'll have to go back and recompute them, and you'll sort of spend a lot of time retomputing stuff and not making progress. So that's sort of intuitively why you would get a memory hardness property out of this. So I promised that this algorithm I just described would satisfy these three properties. So let's see how we did. So the second and third, you can get just by construction, just by inspecting the pseudocode of the algorithm, and then by implementing it and see how fast it runs. So again, the challenge is to actually prove something about what an adversary can do in terms of trying to cheat on the space usage.  So this is an informal theorem, but the basic idea is that if you wanna compute this function, so the n block balloon function iterated for our rounds of hashing with high probability when delta equals seven, so this is just one of the constant parameters in the scheme. So if the adversary tries to, instead of using n blocks of space, tries to use n over eight blocks of space, then the adversary's time is gonna be such that this space-time product looks something like this. So let me sort of pull this out so you can see what's going on here. Basically the idea is that if you save a factor of eight in space, so a constant factor in space savings causes a slowdown that's exponential in the number of rounds of hashing. So if you try to cheat by building some special purpose hardware that only has an eighth of the space that you're supposed to use, then you get this massive blow up in the computation time. So you end up, it's not a very good trade-off because you're only saving a factor of eight in space, but you may be paying something very large in time. So for example, if you run 20 rounds of hashing using a factor of eight less space causes a time to blow up by 60,000 x. So it goes from being very fast to compute to being very slow to compute. And the idea of the proof, I'm not gonna have time to go into it here, but please check out the full version of the paper on e-print if you're interested. The idea is we basically write out a directed acyclic graph where each vertex in the graph represents a value that you compute at some point during the hash computation, and then edges in the graph represent dependencies between the different values that you need to compute. And once you draw out that graph, you just basically have to argue about structural properties of the graph, and from those structural properties you can deduce these sort of time space lower bounds here. And the basic idea is called a pebbling argument, and it goes back to sort of the beginning of theoretical computer science, and it's seen a bunch of really cool applications in crypto in the last couple of years. So even if you don't care about password hashing, you should check out pebbling arguments because they're sort of a very nice tool on set of ideas. Okay, so I promise that there would be, this thing would be competitive with the best juristically secure algorithm, so this is just a chart to show this. So on the y-axis, this is how many hashes per second you can compute on one CPU core, and on the x-axis it's showing how much memory you need to compute this function with no slowdown. And for comparison I've put two non-memory hard sort of standard password hashing functions using the standard parameters that people use in practice, and on this graph up into the right is better because it means you're using more memory with better performance. So argon2 again is sort of their best in class password hashing function that's memory hard. So this is argon2, the version that was around when we submitted the paper, instantiated with SHA-2512 as it's underlying, SHA-2512 as it's underlying cryptographic hash function. So that's argon2 and balloon is slightly better in terms of performance. There's various reasons for this, but basically it's just a little bit better than argon2 on this metric when both are instantiated with the same underlying cryptographic hash function. So the way to read this chart is to say it like 10 hashes per second per core, how much memory can you fill? So you sort of draw a line over from here and then you look and you see that if you're using balloon you can force the adversary to use slightly more memory given the same hashing rate. So argon spec actually defines a non-standard cryptographic hash function that they recommend and if you use that one, the performance of both password hashing functions is slightly better, but still balloon has a slight edge over argon2 even though balloon has these very rigorous security properties that you can prove about it. So just to wrap up I'd like to mention sort of a couple pieces of recent work that are interesting and relevant. So one are parallel attacks on memory hard functions. So in a paper at Crypto this year, Joel Alwin and Jeremiah Blocky show that in a parallel setting when you have sort of a massively multi-core computer and you're trying to compute many instances of password hashing function in parallel, it's possible to execute a space saving attack against any sort of memory hard function that uses a password independent data access pattern. So these include argon2i and balloon and katana and basically any function that falls into this very large class of functions they have an attack against it on a certain type of machine. So the thing that's sort of important for understanding the practical implications of this is that the attack really is an asymptotic attack so it only applies when the amount of memory that you're using is quite large. So say a gigabyte or two or three or four gigabytes of memory. Whereas in practice for password hashing you're probably only gonna be using on the order of like tens of megabytes of memory. So it's not clear whether this attack is gonna be sort of relevant for practice but it's still very interesting from a theoretical perspective. And the other thing to remember is that it basically requires a very sort of special purpose hardware that doesn't yet exist. So it's not clear whether these attacks are a practical concern but it's very interesting that in certain settings you can basically attack any function of this type. The other thing that people often ask about is like for a comparison with argon2i because this is sort of the winner of a recent password hashing competition and has a really nice simple design and it's probably gonna see the widespread adoption in the sort of applied industry community. And as I mentioned, it came out without any proof of memory hardness in any model. So it was basically heuristically secure. And argon2i is basically the variant that is comparable with balloon that uses a data independent memory access pattern. So we discuss argon2 in the paper and it's some depth. So as I mentioned, we demonstrate a practical attack against argon2 that invalidates the original security properties that the designers claimed. And they've since sort of changed the construction a little bit to try to defend against the attack. But we also prove using the same techniques we use to analyze balloon that much better attacks are not possible against argon2. So we sort of attack it a little bit and then show that the attacks are not gonna get much better than that. I should say though that as far as sort of the memory hardness properties go, balloon has at least as far as we can prove slightly stronger provable security properties than argon2i does.  If it does, you would want to use something like balloon. If you don't care, then there's lots of other options out there. Okay, so just to wrap up, I've tried to argue that memory hard password hashing functions are a good way to increase the cost of offline dictionary attacks against sort of stolen password files. And balloon is this password hashing function that has these three nice properties. It has proven memory hardness properties in the random oracle model against certain types of attacks. It uses a password independent data access pattern so you're not leaking secrets through cash attacks. And it's fast enough for real world use. So it's competitive with the best password hashing functions out there. And for people who are using password hashing functions in industry, if you know anyone out there, most people are using PBKDF2, which is just iterated hashing. And if you take away anything from this talk, it's that there's better hash functions out there. It doesn't even matter which one you pick, whether it's balloon or something else. But basically all of these modern password hashing functions are so much better than what people are using in practice. So try to convince your friends to switch to memory hard password hashing function. All right, that's it. Thanks. So any question? Thanks. Couple of slides before you mentioned something about these parallel architectures with many cores and shared memory. Said it doesn't quite exist, but isn't somehow what a GPU does right now? Like you can have thousands of cores, rather big memory that is shared across all of them. Yes. No. So this is, it's not sort of SIMD computation, which is what GPUs are better at. It conceivably you could, you could coerce the GPU into doing something like this. But for the attack to work, basically the key thing is you're sort of shuffling very large buffers around the chip. And as far as I know, GPUs are not very good at this. But it's totally conceivable that you could make such a thing work. Okay. Thanks. Any other question? So your general construction had the parameter delta, your theorem only dealt with delta equals seven. And earlier you also mentioned in the pseudo code that delta equals three. So what happens if you are using delta which is smaller than seven? Does it become provably insecure or you don't know how to prove it or what? So the smallest delta you can pick for which the proof still works is three. Any delta greater than that, the proof still works and it just changes the constant basically in front of, you get S times T is greater than or equal to constant times n squared.  So there's two magic numbers here. So the first magic number is this one in front of the n squared and the second magic number is this eight here. And so as you change delta, this eight and this constant change. So the bigger the delta is, the slower the thing runs but the more favorable these numbers are. And for delta equals two? Delta equals two, it's open problem or you have proof that it doesn't work? To say it's an open problem suggests that there was a lot of effort spent already but yeah, we don't know how it works. The most interesting case would actually be delta equals one. Sure. Would be nice. But basically the proof relies on a combinatorial lemma and that lemma doesn't seem to apply when delta equals one. Thanks. I was wondering if you're familiar with the paper where I had a unique security pattern on the halting puzzle, which for memory is 10 years ago but I think it was a very similar structure. First there was a bit different type. Because memory hard, the promise to come into an argument to show that hiding the hardness factor actually further increases security. But it happened to also be memory hard that the access was in fact data dependent. It also not be subject to the attack that you just mentioned in the last slide. You're not going to want to know that. So this is the one where you're hiding the number of iterations. That's also a secret. I don't remember the construction that was memory hard there. It wasn't the, as it's in the paper, because definitely memory hard. The execution time was proportional to the memory. Memory filling starts which happened to be proportional to the fixed constant with the running time period was a secret. Okay, so I only remember the first half of that so I'll have to go back and look. Thanks for the point to that. Okay, do I have an answer question? Okay, let's then speak again. Thanks.


Hi, I am Michael from ARM. Today, Henry and me will give you a presentation of Cloud HiPoizer, a new choice for machine monitor. Cloud HiPoizer is an open source project started by Intel. It is implemented in Rust language and is based on Rust VMM project. In the first half of this presentation, I will introduce the development of Rust-based machine monitors and Rust VMM, the architecture of Cloud HiPoizer, the virtual IoT devices of it, and how it works with Cata containers. After that, I will hand over to Henry who will continue to talk about the progress of Cloud HiPoizer on ARM and make a live demo to show how everything works. The first well-known machine monitor written in Rust is CrossVM. It was published in April 2017 by Google. CrossVM is based on KVM. It is designed to run on Chrome OS. Later, in October of the same year, Faircracker project started. In the very beginning, Faircracker was forked from CrossVM, but it became different soon because Faircracker aimed at different use cases, that is, lightweight virtual machines or micro-VMs. Micro-VMs are used for creating multi-talented containers and microservices. As the two projects have some functionalities and such code in common, duplicate ifers existed. The code was frequently ported from one project to the other, and much effort was used in testing and reviving. How can this be improved? In December 2018, developers discussed the way to share the code and finally concluded to start RustVM project. RustVM shared common components for making VMMs from the two projects. After that, in May 2019, Intel announced a new VMM project, CloudHepwizer, which is based on RustVM. RustVM is a collection of Rust crates. A crate is a building block in Rust, like a library in C. These crates are well-designed and tested. To build a new VMM, you only need to write the list code for combining these crates and customizing. Here are some examples of the crates. Linux loader is used for loading guest kernel. And the VM memory is for managing guest memory. It's Siteshare. In future, building your own photo machine monitor should be further simplified by using VMM reference. It is a new crate of RustVM introduced several months ago. It is a reference implementation on top of other crates. It aims to be convenient to extend and customize. You can choose to start your own VMM by extending this reference. Here is the diagram to show the major components of CloudHepwizer stack. Let me introduce them from top bottom up and the left right one by one. On top of host Linux kernel, it is RustVM. And on top of that, it is CloudHepwizer. CloudHepwizer is based on KVM, but it will not be the only choice in future. From the second half of this year, Microsoft joined the community and began to extend CloudHepwizer to HEPV. So a new crate was designed to wrap low-layer hypervisor details, that is the hypervisor crate. It has the details of KVM and provides a unique interface to upper-layer components. Architecture specific things are placed in ArcCrate. For ARM64, we have code handling, geek, and FTT here. VMM is the core component of CloudHepwizer. I have mentioned that on top of RustVM, a machine monitor should only contain customizing code. In CloudHepwizer, this customizing part is VMM crate. It manages devices, memory, CPUs, and interrupts of a guest VM. VM allocator is a resource management component. It is in charge of allocating and deallocating DRAM addresses and IO addresses and IRQ numbers. The last part is devices. It contains some crates for VRTIO and Vhost user devices. Ideally, the VTIO stuff should be designed agnostic for implementations. The vision is to make it unique in RustVM, but now RustVM haven't been ready in this part. In future, VTIO things in CloudHepwizer should be replaced by aligned RustVM crates. The conventional choice for device emulation could be QEMU, but QEMU is heavy-weighted. It emulates a number of devices, including some old ones. Well, CloudHepwizer focuses on cloud workloads only. It supports a limited side of pyro-virtualized devices. As the VMM running in the cloud computing centers, it doesn't care much about legacy devices. VTIO is the major type of CloudHepwizer devices. So far, it has supported many VTIO tabs, including VTIO block, balloon, console, IOMMU, networking, persistent memory, random number generator, and VSOC. Some kinds of Vhost user devices are available as well. This diagram depicts the workloads of VTIO emulation in general in CloudHepwizer. VM VTIO handles the car model of protocols. Various device tabs are emulated in VTIO device crate. In VMM crate, device manager manages all the devices. The notification from VTIO driver in guest kernel are carried by IOEventFD, which are handled by Epo Help Handler. In the return trip, interrupt manager can inject interrupts into guest via IRQFD. Working as a container runtime is an important use case of lightweight VM nowadays. CloudHepwizer can work with Cata containers to achieve that. Cata containers is an open source community working to build a secure container runtime with machine. By using Cata, a user feels like using a container, but in fact, the workload is isolated by a VM. This way, an additional layer of defense is built. In a pure container stack, typically, one C is under the runtime layer. But with Cata, it is a VM behind the runtime. In the right half of this diagram, it is where CloudHepwizer works. It serves to provide booting machines in which Cata agent is installed. The real container workload is running in the VM. That is all the slides for me. Now, I will hand over to Henry for the rest of the presentation. Thank you for watching. Thanks, Michael, for the wonderful sharing. From here, I'm going to talk about the CloudHepwizer or ARM. Currently, our contribution for the ARC64 platform can be divided into three parts. The first one is enabling CloudHepwizer on the ARC64 platform, where we implemented the guest VM memory layout on specific registers and devices. We also created a Rust foreign function interface for the Libre FDT library to implement the flattened device tree. This device tree will be used in booting the VM. Our second contribution is the ARC64 test infrastructure. This part, firstly, includes the enablement of the development container, as every development and test script is executed in the container. After the CloudHepwizer was enabled on ARM, we then added the ARC64 specific checks as well as the unit and integration test to the community CR. Based on this, our last key contribution to the community was about some feature enablement, including the VM snapshot and restore on ARM. Details about these contributions will be discussed in the next few slides. This slide shows the design of the ARC64 guest memory layout. One of the most important function of this layout is to provide memory sections to allocate each kind of devices. And in each section, devices are allocated from higher memory to lower memory. From bottom to top, the first 144 megabytes is reserved for the big-gig devices. The next 112 megabytes to 256 megabytes is reserved for the legacy devices, including the serial and the RTC. The memory from 256 megabytes to 1 gigabyte is the first part of the PCI-MMIO space, where the PCI devices which only support 32-bit addressing are allocated. The first 256 megabytes memory from 1 gigabyte to 2 gigabyte is for the PCI-MMM config, and the rest is reserved for the future use. Memory from 2 gigabyte to the physical address is for DRAM and the second part of the PCI-MMIO devices. Since we allocate device from higher to lower, the DRAM has a dynamic size, which depends on the number of high-mem PCI-MMIO devices. In this slide, I'm going to introduce the ARC64-specific implementations that we added to the cloud hypervisor. Code bases from this part were originally from the Firecracker project. We did modifications to this code basis to fit the own requirements of the cloud hypervisor project. The first part of the ARC64-specific implementations is the ARC64 registers, and this part is based on the KVM binding script from Rust-VMM. Similarly, as the Linux kernel, we divided the ARC64 registers into two parts, namely the core registers and the system registers. Key devices for the ARC64 are the VGIC device that manages the interrupt and the RTC device that provides cloud. The implementations of VGIC devices are based on the KVM IO controls, GIC-V2, GIC-V3, and GIC-V3 ITS were implemented respectively. The RTC device is implemented through software emulation. The VM snapshot restore feature has been merged to the master branch recently. It is based on the existing implementations of X86 with some modifications to fit the ARM platform. The snapshot or the restore process can be separated, summarized into a single figure where the orange part is the step needed on the X86 platform. The blue part is the step needed on the ARM platform and the black part is the common step for both platforms. In order to save the states of the VM, we need to save each component of the VM in a specific order. In current implementation, we save the states following the order of CPU manager, memory manager, and device manager of ARC64 platform. The CPU states that needed to be saved are the core registers, system registers, KVM-MP states, and MPIDR registers, which are different from those for the X86 platform. Also, a crucial step for saving the VM or ARC64 platform is saving the states of the VQT device, namely saving the distributor, redistributor, and ICC registers, as well as the VQT control R registers. This step should be executed between saving the memory manager and saving the device manager. The VM restore follows the order of memory manager, CPU manager, and device manager. One thing that need to be noticed is that previously at the step of restoring the CPU manager, the vCPUs are started directly after their states are restored. However, on ARC64, the vGeek is required to be created and restored before the vCPUs are started. Therefore, the original design was reflected. The start of the vCPUs was split into a single step. The restoring of the vGeek was inserted before vCPUs are started. So the previous slides have summarized the work we have done so far. Future works on our platform includes some code redesign and feature parity on ARC64. Currently, the code to generate FDT is based on the RAS foreign function interface, which depends on our C library. Calling a RAS FFI for C functions needs RAS off-save blocks, which is not preferred to address this problem. Both the cloud-type weather and the RAS VMM community has helped suggested that we could probably implement a dedicated FDT-created RAS and any design comments are highly welcome to the GitHub issue. The feature parity on ARC64 contains the improvement of the VM snapshot restore support, namely the save restore for the GQB3 ITS, as well as some other features such as ACPI, UEFI, VFIO, and CPU device hotbox support. Now I'm going to do some demos about the basic use of Cloud Advisor and VM snapshot restore using Cloud Advisor. Here we open the terminal. This machine has a Ubuntu Bionic OS pre-installed. In this demo, we assume that the essential packages, including Git, buildEssentials, and libappdT, as well as the RAS tourchains, have already installed on this machine. The current stable release of RAS tourchains would be enough for this demo. Before this demo, I have prepared the kernel and disk image file for the GAS2VM. Here for the GAS2VM, we use the Ubuntu full call. In the beginning, we firstly verified the machine architecture using uname-m. Now we can see that we are on a ARC64 host. The next step is getting the Cloud Hypervisor source code. Here we clone the current master branch of Cloud Hypervisor. We go to the source code directory and build those source code using cargo. Here we built the current master branch. We use KVM for this demo. Now the code is building. It will take about one minute to build this binary. The Cloud Hypervisor binary will be placed in target debug directory. After the binary is built, here we can start the GAS2VM. Here, I will give a brief introduction to the command we will use. The APS socket option here is to tell the Cloud Hypervisor to create a socket file for other process to connect. The kernel option provides the kernel and the disk option provides the disk file for the GAS2VM. The command line option passes the command line to the GAS2Kernel. The CPU option and the memory option determines the GAS2VC views and memory size. Now we run this command. We can see that our GAS2VM has been started. After the GAS2VM has been started, we can log into this GAS2VM and verify the number of the CPUs and the size of memory. We can see that the CPU number is two, which is correct. Also, we can verify the memory size, which is also correct. In order to take a snapshot of this VM, we need to open a new terminal. Here, we will use the CHRemoteBinary as a tool to connect to the socket file we have just created. It's here. And we can also send command through the socket to the Cloud Hypervisor API server. To take a snapshot, firstly, we need to pause the VM. Now we can see that the VM has been paused. Now we make a directory to store the snapshot data. Next, we take a snapshot of this VM. After all of this, we can resume this VM. Now we can see that the VM has been resumed. We can hear power off this VM. To restore the VM using the snapshot file we have just created, we firstly start the Cloud Hypervisor API server and store the VM from these files. Now we go to our second terminal and resume this VM. Now we can see that the VM has been resumed and this is the exact VM we have just powered off. Thanks for the watching.