Hello. Hello. Hello, Dr. Williams. How are you? I'm doing good in yourself. I'm well. As well as well can be during these times. Yeah. We're gonna have a discussion about how basically we're gonna, I would want Dr. Williams to lead the panel on how we want to cover, you know, the truth in reconciliation with this project and are we gonna engage the community about how this is important now as well and how it affects our lives. Because it's definitely affecting our lives. And it has been for a long time. Yes. I think where I would start in terms of truth and reconciliation is actually admitting the horrors of black and brown people on the mainland of America, starting with the 1619 project idea of the first ship, documentary ship arriving, what was it, Virginia. So like just we have to start there because we can't start in the middle of the story because it's all attributed to this long history of over 400 years of slavery and just free labor. And the ways in which they have used power in various ways to continue to enslave us, maybe not physically, but mentally through the oppression of jobs, so forth and so on. In addition to when it comes to the penal system, the idea that people try to present is it's all about rehabilitation, but that's not the real point of it. If anyone knows about the development of police officers, it's really out of slave catchers. That was the whole kind of premise of policing was to really catch slaves. So with that mindset carrying it over to 2020, it's still happening. Still thinking of us as slaves, as free labor, as individuals that can be controlled by them. Property. Right. Right. And once you get in the penal system, that's how they treat you as if your property, usually doing manufacturing jobs or jobs of some sort. Some prisons engage in that, in only paid prisoners, like 20 cents, 25 cents, something very low wage. But again, because they're not viewed as humans once they're behind those bars. They're viewed as animals that they can control. I feel that the only reason they actually do pay them is to say that they pay them. It's not because it's the right thing to do, it's not because they have rights just because they made a mistake one time and they're paying for it. They don't have any more rights. I think it's just to say, oh no, we pay them. So it's not slavery. Yep. They try to frame the conversation as if, oh no, they're actually working at their own free will when it's really not that. That's nothing that you could live off of by any means. And not at all. And another like just to add to that, I think that's another way we can engage the community with this to bring to the awareness of how easily you can be coerced into be putting it to that situation. And I think that one of the messages that this project that we're doing is keep your mouth shut, let a lawyer do the talking. Because until we start teaching our people how to deal with the legal system, this is going to always happen. And coercion is a big part of the problem. It's a big, big part of the problem, especially with mass incarceration. Exactly. It's purposely done by politicians because this is how they get reelected. We're getting criminals off the street. So by any means necessary, we want to make sure these charges stick, regardless if this is the right person or the wrong person, not going any further. Too often it's like this person was there, I have enough evidence or I think I have enough evidence to link them to such and such crime. So that's that's all we need. We're not going to search for anyone else. Prime example is the exonerated five, which is central part five. Is one of the prime examples of making big these huge leaps just to say we caught the person. Yep. Just to say we're doing our job. We doing our job the right way.  When the real reason that they have that job is to actually find the actual person who committed that crime, but that's not what they're worried about because they're going to let that guy stay on the street to do it again. Yep.  How they make themselves look good to the community. And it's another side effect of capitalism because these people are trying to get money to support their families and that's why they need to move up in the system to get more money to be paid more. So it's a competitive market and that there's no place for that in the justice system. It's designed for us to fail. Yeah. Yeah. And also this idea of the blue code or whatever it is, this code of honor among police officers, regardless of what's going on. It's another big issue in terms of incarceration. Yeah. And that's, I don't, I don't, I've always found that funny because it seems to me like the code of honor is more important than the oath that they swore. And it's always, always, this has always been the case. And it's a big, big problem. It is. I was having a conversation with some friends and just because defunding police is a big topic right now. And what does that mean? My friend asked me, what do I think of police officers? And I say all of them are bad. He was like, well, there are a few good ones. No, no. There are no good ones when you are sitting and letting other officers do what they're doing. So you're being complicit in this entire situation.  There are stories out there about people, about police officers who are doing something, who are saying something, and then they get fired. Yep. And that's why you can say, you can say all of them are bad because they're no longer police officers. You know what I mean?  So I think that's a great point, Jay, because it really confirms that all police are bad. Because even when a cop tries to do the right thing, he gets shoved under the mat, that's good. You know what I mean? You're no longer, you can no longer be in the street because we don't want you to tell our secrets. Right. You're not going to move up in the ranks. You're forever going to be at this position if you remain in this position. This is the only place you will exist because I don't want you to mess up my opportunities to steal drug money, to plant drugs on individuals, or just all of the stuff or things I've done in the past. I don't want that to come to the forefront by you rising through the chains. How do, how do we engage the community? You know, how do we bring them into this, to this world of theater to tell the story and how we can help people find a way to not let this happen to them? Yeah. Stop. I would say talk through stats and everything else, but for some reason people, they're not interested in facts. No. For whatever reason. I think there needs to be a clear conversation with the community from the perspective of those who been incarcerated or railroaded in some type of way. Because too often there's this cognitive dissonance that is created in these situations. Because it's not a personal thing, it's like, oh, I don't care, but we have to make it personal for them to care. I can say that I've had my own personal experiences with this. I can say that I have very close friends and family members who have had experience in this, who have served time for things they absolutely did not do. And then at the end of the day, they still serve their time and the charges just get dropped or they just throw it away. But who's going to give that time back? You know, you can't give that time back and scars are made. The PTSD is there. All these problems that come with going to jail when you don't deserve to be there, it's like a huge effect on our community as men of color and women of color. And it's honestly just very sad. And I think that we can tell this story within our community exactly how Dr. Williams had said by having people who actually did go through this and have these discussions within ourselves and everyone that's involved in the project and bringing in community leaders also. I think that's a big, big part that we can use to engage a community. And like I said, I don't want to hear police talk. I don't want to hear Bozo. I don't want to hear judges talk or attorneys talk. I just time for them to listen and admit it. Yeah, I think that's a key part of the healing is actually getting people who have been in the situation and listening to them because as Dr. Williams pointed out, these days people aren't adhering to the facts of the matter. So you need to put a face, make it an emotional connection so that people can understand that this is something that has happened is happening. And unless we do something about it will continue to happen. Exactly. And I definitely want police officers and judges and anyone a part of the legal system in the audience. Because the other part of it, this is much more directly related to the play itself is although you're exonerated, there's still this stain that you wear Yeah, from then on out. We legally on paper and everything else you may be free, but you're not free because the community is going to remember and associate with associate you with that crime or that thing that they attached to you.  And I think exonerated if we can find some exonerated individuals, have that conversation and talk about their struggles of just existing in society. Yeah, and I'm going to throw a name up there, Khalif Browder, prime example of what you just described. How somebody took his own life because of what this system does to us. And I think it's not just him, it's many, many, many, many. Yeah, but he is the most prominent person in terms of where you really was able to see the effects of it. There are so many people who suffer in various ways, but his really took a toll on him. He was young when he went in, I think he was what, 16 or 17? And he wasn't put in a juvenile facility. He was put in the men. Yeah, on the island at that.  And coming out of it, it's like I've had all of these experiences. I've had so much taken away from me. How can I ever regain a basic sense of self? How can I re-establish life for myself? And I believe that's part of the reason why he took his own life is because he probably didn't understand how to exist in this new world. Yeah, and that brings us back to just being exonerated. What does that mean?  How do you become exonerated within yourself? How do you let go of everything and the trauma that you just went through? How do you exonerate yourself? I couldn't into that much. Yeah, this project is super important, super important, especially for right now. And I think, I definitely want to engage the youth on this. Yeah. Big time. And I'm going to be working with a couple of community members that I've been keeping an eye on and watching how they've been moving through these times right now. And just within my community and anybody that y'all think could be a great help to engage the youth on this. Oh yeah, I got a couple names. That would be great. I think it would be an excellent idea to have a community organizer and activist of some sort. So that's how we're going. Yeah, so we can talk about the idea of defunding and what it really means and not what people think it means. It's really about reappropriating some of the funds, some of the excess funds that they're getting to militarize the police department in just the lying pockets. Funny thing you say that is, and I saw this a couple, like I think it was two weeks ago, Jay, maybe that the mayor of Providence held a press conference on truth and reconciliation and reparations. Yeah, I saw that. And I just said, wow, this is, you know, it's just like how the universe works, like how we're working on this project now. And just within, just to see something like that in my own city was like, whoa. I think we need more community policing, but programs. Yes. I remember when I was younger, there were a lot of free programs out there that you could attend, participate in, even if not free, a small fee. But a lot of those things are being taken out of communities. And they're not understanding the impact or what they're doing about removing these things instead of fixing or correcting whatever they think is broken about this program. Because students no longer have a safe place to visit, to hang out somewhere to really direct their energy. So what are you going to do? You're going to hang out and maybe even get in some trouble. So, but again, you're purposely designing the system for us to get in trouble or to be in this pipeline by removing those things that redirects that behavior. Yes, sir. Yeah, I mean, you hit that right on the button. Just us, we've all, I would like to say, probably grew up with similar views of how to just be and how to walk down the street. And the pressures of being involved in violence growing up in the inner cities. And it's a tough thing to say no to. And if we had, like Dr. William said, like programs that people could go to, like, you know, like, I haven't been seeing some like no more boys and girls clubs. I haven't been seeing kids getting involved at the YMCA's. I haven't been, you know, and like when I grew up, there were more outlets I would like to think. And that has just faded away. Yep. I could easily fallen into the pattern of like being a part of gangs or just mischief. Yeah, yeah. Running the gamut. Because I grew up in lower income housing. And right next to us was a subdivision. But most of them were lower income of some sort. And a lot of the students and people I associated with, they wanted me to run the streets with them. But the thing that kept me out of that was me staying so active. I never had time to get into trouble. Because I was too busy going to this thing, to that thing, to the next thing. Basically, six to seven days a week, always had something to do, keeping me occupied. Yep. And I think that's what that would make a big difference of a lot of more people had that mindset. You know, it's a mindset.  But you need to be taught that mindset. Yeah. And you know, whether you learn it too late, or you learn it early enough, I think it's always something good to be learned within our community and something that we can actually probably offer to the youth. Yeah. So yeah, I think that's great. How do you guys feel? I feel like we've covered a lot of the things that we wanted to. When the reading will be, that's something, you know, I think we've talked about this, Dr. Williams. But I don't know if, you know, do you think it was a good time? I think, what do we say? Uh, yeah, let's do September 12th, because I want to make sure we're all on the engine. Yeah. Yeah, nobody's gonna give the attention on 9-11. Yeah. And I'm starting classes. We start back the last week of August. So I know I'd be scrambling to put my syllabus together. Yeah. Respect, respect. Yeah. So thank you. Thank you gentlemen so much. Thank you, Dr. Williams. Thank you, Jay Walker. Great conversation. I think, yeah, we have work to do. Trying to get us a community organizer.  And we can work together, you know, more is better than one, to me, when it comes to these things. Yeah. Let's try to get our team together. I'll work on that. I'll also work on notifying all the actors, getting them on their A-game. I don't know if maybe I'll hold like a pre-read to the read, just to, you know, get everybody, get everybody's feet wet. Yeah. It's been a while. And it's been, you know, for us as artists, it's a tough time. Yeah. Let's get back in, you know, let's get back in. Let's get that blood rushing. I think it'd be really good to hear their opinions on their character, but overall the story, because they have to connect to the subject matter in order to really portray the characters. And understanding how it impacts them and how it impacted those individuals. And I can't wait to move on with this. Yeah. I'm excited about it. You feel, Jay? Oh, I'm very excited. I'm very excited to see you play that character. That's one of the reasons why I'm excited. This character is absolutely wonderful. Yeah. Do we need anyone else, any other actors? I think we're fully casted. Okay. Perfect. We might be. I'll go over it again. I think we're pretty, I think we're casted. Okay. Just let me know if we're not, because we're starting back to class, I can probably pull a student or two. Okay, cool. I would definitely love that. Okay. All right. All right. Thank you both. Thank you. Have a good one.


OpenAI launched a new version of chat GPT that you can prompt by speaking and it'll talk back to you. They give you five different voices. Another new feature lets everyone upload a picture and ask chat GPT questions related to it. It is interesting that OpenAI is pitching this as chat GPT can now hear talk and see because it can see the images. Joanna Stern demonstrated in the Wall Street Journal. So let's listen to that because I think it is impressive how natural it sounds. It was. It was about how we can talk to each other now. That's a compelling topic. The evolution of AI and its ability to communicate in more conversational ways has changed how people interact with technology. It's not just about getting information anymore. It's about engagement, conversation, and sometimes even companionship. That second voice, that's pretty natural. Yeah, that was pretty good. A little something that tips me off knowing, but maybe if I didn't know, I wouldn't recognize it. I don't know.


The National Register nomination process is meant to include as much public outreach as possible. Every property owner whose property is being considered for the National Register is identified and notified by the nominating authority, usually the State Historic Preservation Office, that their property is being considered for nomination. That property owner or those property owners are given the opportunity to comment and or object to the listing of their property. If a majority of property owners, that is whether it's a single building or a district composed of a thousand buildings, object to the listing of their property for any reason, then that property will not be listed in the National Register of Historic Places.


Hello everybody. Welcome to Esoteric Atlanta. My name is Bryce. This morning I had the absolute pleasure of sitting down and chatting with Richard from Citizen First News. Excitingly for me, Richard is also a fellow Atlanta. And I do have to give quite a shout out to all of my friends over on Twitter who were able to connect us. As you see in the episode, Richard and I hope to be doing a lot more projects together, especially projects on location, seeing that we are in the same city. Like me, Richard has been heavily censored and heavily shadow banned for trying to share the truth. Now of course, this episode has to go on rumble because it is uncensored. So to view the full episode, follow the link down below. However, I have all of Richard's links down in YouTube's description box, as well as Rumble's description box. So please, please, please do what you can to support Richard and to support Citizen First News as it is a news organization that is actually giving you the news. Alright guys, I hope you're having an amazing Friday and I hope the weekend ahead is awesome. I know here in the United States we're going to be losing an hour of sleep this weekend, but that's okay. We're going to get an extra hour of daylight. Alright guys, I'll talk to you soon.


This is Witchspace news for Friday the 19th of March 2021, I'm CMDR Buur. In this week's news, FDev releases details on Odyssey's new tools, this week's triple play of CG's has Modules, a ship and system permits galore and Malik's mind map endeavours to show you all the hidden strings of galactic intrigue. If you enjoy this video hit like and subscribe and remember to click the little bell icon and select all notifications as that stuff really helps the channel and if you'd like to further support our work you'll also find us on Patreon, links to everything you need are in the description below. As we record this video the alpha for the biggest and most hotly anticipated update to the Elite Dangerous Galaxy ever, Odyssey is just 10 days away and as that alpha gets ever closer Frontier has started releasing more glimpses of the kit that we can expect to be seeing and using alongside our newly functional space legs. Starting on Tuesday this week the Cambridge based developer has released a new image and some small descriptive text talking about some of the new handheld tools in the expansion. Tuesday saw an image detailing the energy link which is the device we saw overloading the door mechanism of the power regulator room in the recently released heist gameplay video. In that video it became clear that the link had at least two modes that it could be used in, siphon and overload. According to the text from Frontier that accompanied the image released on Tuesday the device can discharge powerful electric pulses over a short distance. We know Frontier has said publicly that Odyssey will contain non-lethal options for gameplay and the somewhat cryptic text has led to speculation that the energy link can be used as a stun gun on targets of a somewhat more squishy nature than the door mechanism that we saw in the heist video. Following the energy link on Wednesday Frontier again released an image from the upcoming commander toolset this time of a tool that we'd never seen before looking like a cross between a handheld radar and some sort of wifi scanner the profile analyzer can be used to scan an individual and display some basic personal information. It can also be used to scan an individual's security profile and then clone that profile to make a copy of the access credentials to put them to use in somewhat more nefarious activities. And then Thursday afternoon we got our first look at the arc cutter. This was the device used to cut through the access panel shown in the heist video whether this tool also has a dual purpose we don't yet know for sure. Frontier stated on their live stream on Tuesday that they've sorted out non-purple twitch drops for future live streams and that going forward there would be more and more information about Odyssey coming out and with the alpha just over a week away now we're betting that what we've seen released this week so far is by no means the last of it. It's a busy time in the bubble right now all but one of the NMLA induced starport fires were out as of Thursday's server tick but there's still one station fire raging in Seoul if you're of a mind to rescue some stranded civilians. With the end of the fire cycle the rest of the attached stations have now gone into a state of repair and Operation Ida as well as numerous other independent commanders have swung into action to start delivering the commodities needed to get the remaining 8 stations in Lave, Akanar, Alioth etc. all back online. To compliment the terrorist attack aftermath a trinity of community goals went live on Thursday to deliver the medicines needed to aid the attacks survivors to staging posts around the bubble and as a reward for a decent level of participation in the community goals some engineered modules as well as a type 6 transporter to put them in are up for grabs along with permanent system permits to the three superpowers core star systems. Sadly if you're of a level to make a significant contribution to the community goals then it's honestly unlikely that the relatively diminutive type 6 transporter and the two 3A engineered modules that are up for grabs are going to be of a huge benefit to you but if you think I might be missing some subtle detail then do please let me know in the comments below. Ultimately any way you cut it free is free and if you don't already own a type 6 and fancy doing some humanitarian hauling then why not and I am enjoying the rewards for CG's beyond simple credits approach that Fdev is now taking long may it continue. And finally this week prolific streamer and creator of very fetching tinfoil headgear Malik VR is creating a sort of mind map showing elite dangerous characters, places, situations and things and how they might all tie together. Right now the board is mostly just tracking stuff and drawing some connections between them rather than drawing any specific conclusions about anything but if you're at all confused about all the names, places and things that regularly pop up on Galnet these days and why wouldn't you be then this could rapidly turn into a valuable resource for tinfoil hatters everywhere, suffice to say it's linked in the description below. We're assuming that Frontier must have something similar hidden in a basement vault somewhere at Fdev towers under 24 hour armed guard and that all the lines eventually inevitably lead to Raxler. That's it for now thanks very much for watching we'll be back later this week with more videos until then 07 commanders follow the greens on the way out and do keep clear of the toast rack we very much look forward to seeing you next time.


I am Anil Virgule, I work in company name Equal Experts, which is in Pune, India, and I am going to talk about solid design principles in 2D. So this talk is about design principles which I realized helped me to improve my code and ultimately write good object oriented code which is extensible and reusable. So all of us are software developers, so initially when we write our code, our application, it is all good, version 1.0 is very good, there are no issues.  So your application will change and it will become messy and developers will head to work on it. It will become very difficult to actually go and add features, mostly I have seen this happening in most of the projects. So why that happened? It happened because of bad design. So if your application does not have good design, if it does not have good object oriented code, it will be very difficult to add new features to it. So after time, it become bad. So writing model code does not mean writing good design. So most of the Ruby programmers actually follow Ruby items, some of the modality concepts. So just because you follow dry or TTD, doesn't mean you are following good design. So good design is about managing dependencies. Ruby is object oriented programming language. So everything is object in Ruby. So whatever you write are nothing but objects and how those objects are interacting with each other, that makes a good design. And that will make your code extensible and ready for change. So in this diagram, A is dependent on XYZ, so XYZ is dependent on M, S is subclass of T. So all these are dependencies and if you don't manage these dependencies well in your application, it is going to hurt in future. So unmanaged dependencies are killing your application and a good design might save you. So what are the smells of bad design? First is rigid. Rigid means your application is difficult to change. One change is causing too many other changes in your system. If that's the case, it's rigid. Second is fragile. Fragile means your application is easily breakable. So if you change one part, like if you change controller and suddenly worker is breaking, so something is messed up. So that's fragile design. Immobile. So whatever you write should be reusable. If you're writing code which is not reusable, then it's not of any use. So if your code is hopelessly entangled with each other, that makes your application immobile. And viscous. Viscous means you probably have followed good design, but it's very easy to add hacks than actually follow good design. If that's the case, then that means your application is viscous. So initially it was good. So like whenever we write application for the first time, it was good. But after many changes, after like new changes, new requirements, it becomes bad. And that's a pattern. Actually that happens many times. So changes killed it. So software development is not a game of Jenga, right? We don't keep adding features. So if you keep adding features without actually thinking about design, it will work for like some time. But after some time, it will become very difficult to manage that application. And in enterprise world, this is a pretty common pattern. So why solid? So solid helps us to write loosely coupled, highly cohesio, easily composable, context-independent, reusable, easily testable code. So ultimately it makes your code easy to maintain and extend over time. So Robert R. Martin, who is famous as Uncle Bob, has written this paper in early 2000s, written principles and design patterns, which mentions about this principle. And also Michael Feather coined this term solid. So S means single responsibility, O means open-close principle, L means risk substitution principle, I means interface segregation principle, D means dependency inversion principle. Let's look at these principles in detail. First is single responsibility. So this principle says a class should have a single purpose. Class should serve a single purpose. There should not be more than one reason for a class to change. If there are multiple behaviors that you have wrapped in a class, that means it's not single responsible. The ways of achieving this principle are revealing intent. Find out what is the intent of your code, rename the variables, rename the method names, rename the, introduce constants, and extract methods into other methods. Extract behavior to other classes, extract methods to other classes. If you do that, it will make you, like, it will introduce new classes and that will have single responsibility. So following single responsibility code generates highly cohesive code and removes immobility smell. So let's say our client asks us to implement feed server application. So let's see how we can apply a single responsible principle there. So a developer could go and write, like, these methods.  So one class can actually have these three methods. A normal developer could go and write code like this. This will work. This class is not following single responsible principle. So to achieve single responsible principle, we could refactor like this. So we could extract methods into different classes which are single responsible. So feed fetch feed, RSS parcel will parse the RSS feed and feed server will save the feed. So if you do that, we can reuse these classes from other parts of your code and your code will become cohesive and also immobility smell will go away. So this is how we achieve single responsible principle. So next principle is open-close principle. As you see in this image, to wear a coat, you don't have to do heart surgery. So the principle says the same, software entities, classes, module methods should be open for extension but closed for modification. Is it practically possible to write such code which is open for extension but practically closed for modification? Yes, it can be achieved using open-close principle. Let's see how. It can be achieved using inheritance and composition. If your code has lots of e-fills cases or long switch cases, that means there is a chance to introduce this principle. Let's see an example for this. So now clients want to introduce atom parsing. So previously it used to do RSS parsing. Now it is also parsing RSS. So it is like a developer could go and add e-fills case and just delegate the atom parsing to atom parser. But this save field has now e-fills case and that is changing behavior. So tomorrow if a client wants another type of field to be parsed, he has to go and modify this code. So this method is not open for extension and also not closed for modification. So to achieve open-close principle, what we could do is that. So we could abstract this behavior of e-fills case. We could introduce a parser abstraction. In that parser abstraction, we could just in Ruby, we don't have to add that parser class because Ruby is duck type. But now we have RSS parser and atom parser. And we can just pass this parser to our save field class. So now our method is open for extension and close for modification. We can just add another type of parser if required and pass it to save field. And that way we can achieve open-close principle. Basically, if there is branching, you have to replace that with delegation. You have to inject changing behavior. Don't have changing behavior in your class. Just inject that from outside and wrap behavior with abstraction. So if there are different types of APIs for the dependencies, you could actually wrap that dependencies into one abstraction. And then pass that dependency to the user of that dependency. So that's how we achieve open-close principle. So we saw the code example. And this is how we achieve abstraction with parser and followed open-close principle. Okay, let's see next principle, which is Liska substitution principle. As this image shows, if it looks like duck, acts like duck but needs batteries, it might be a wrong abstraction. So this is a very different principle, actually. This was written by Liska Barbara. And there is a rule for this principle. Firstly, subtype must be substituted for their base types. And this rule is like this. Let qfx be a property probable about objects x of type t. Then q of y should be true for objects y of type s, where s is subtype of t. Basically, subclasses should not modify behavior of their parent class. This line also tells more about this principle. If a piece of client code works for a type, then it must work for all derived or variant types. A new subtype should not screw up client code. Rules implement inheritance based on behavior. Do not violate the behavior of your parent class. Do not do less than your parent class. It's okay to extend behavior, but it's not okay to actually stop the behavior of your parent class. And also, Liska Barbara mentions about pre and post conditions rule. We'll see what are those. Instead of our RSS parser example, we will take this classical example for Liska's substitution principle. Suppose our application using instances of this rectangle class. So rectangle has width and height. And rectangle also has method called area. So this is working fine. It's like there are thousands of inches of rectangle linear application. And now certainly our client says, I want to introduce square. So a developer could think square is perfect rectangle. And he could introduce square like this. Where he could just override, like he could just pass side. And instead of width and height, because square doesn't have width and height. And square is perfect rectangle. So he just changes initialized method to pass side. And this could work fine. But there is a high chance that some other developer could override this height method. And if you see right, square will return area as 100. Normally, but if somebody overrides this height, it will return 300. So that's breaking Liska's substitution principle. So you should follow Liska's substitution principle for better code. Let's see what are pre and post conditions. Here we will take example of base calculator. Base calculator actually calculates past input. The bear of base class is that the input should be greater than zero and less than 20. So a valid subclass can actually... So the rule is preconditions cannot be strengthened in a subclass. So a valid subclass can actually weaken the preconditions but it cannot strengthen precondition. So let's see another subclass. So here you can see this is weakening precondition that's allowed. If it starts strengthening preconditions, it's breaking Liska's substitution principle. So whenever you write subclasses, you should take care that you are actually not strengthening the preconditions. So that's how we achieve precondition rule. It's not by not breaking the... Sorry. So by not breaking the bear of base class. So this rule is about post conditions. It says that post conditions cannot be weakened in subclass. So we have base calculator. The contact is it will always return positive numbers. So currently a base class is returning positive numbers but if you write a subclass which will starts returning any kind of number which is passed. Suppose if you pass a negative number, if you start returning that, you are breaking contract and you are weakening your post conditions. So if that's the case, it means that you are breaking Liska's substitution principle. So I gave these classic examples because in normal way, this principle is hard to explain in regular applications but if you follow these rules, it is easy to follow Liska's substitution principle. Okay, so next principle is interface segregation principle. Like there is USB port, there are USB port and there is USB. So this principle says that many client specific interfaces are better than one general purpose interface. So it's better to have a client specific interface, separate client specific class. So in Ruby, we don't have interface. We have modules and classes. So we can say that many client specific modules are better than one general purpose model or class. Client should not be forced to depend on method that they do not use. So following this principle helps us to write a highly cohesive code and removes the mobility smell. Let's see two examples which will convey this principle. So we have a common model TV which has on off select channel up, down, record and play methods. And we have HDTV and normal TV. So HDTV includes this TV model which is fine and normal TV includes this TV model. But normal TV doesn't need record and play methods. So what we could do is that we could override these methods and say, okay, those are disabled. So like this works but it's breaking interface segregation principle. So you should segregate your methods into two different modules actually. Instead of common TV model, you could add a module named DVR and a module named TV. So DVR module will have record and play methods and TV module will have other methods other than record and play which are common. And HDTV module will include this, HDTV class will include these two modules and normal TV class will include just TV model. So that's how we achieve interface segregation with modules. Let's see another example where it's with classes. So let's say we have a class called car. Car has these three methods, open door, start car, change engine. Driver is making use of only two methods open door and start car. And mechanic will use a change engine. So the same object of the class is shared between two different clients. So instead of right, so this is breaking interface segregation principle. So you should have two different classes like this. Now a driver is making use of car object which is fine because car object now has only two methods which a driver will use. And mechanic doesn't need this car object. It can have separate class which is car internals and that has this change engine method. So this rule is like seems okay why we should do this but this actually makes your code highly cohesive and immobile and extensible for the future. Okay, next principle which is last principle which is dependency inversion. So as the image shows, instead of connecting wire directly we are using switch and that plug. The principle says depend on abstraction do not depend on conclusions. There is another definition of this principle which is more therapeutic. High level models should not depend on low level models. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. Like this seems very difficult to understand but let's see how this is achieved with a classic example. So let's say there is a program which is copier which is reading from keyboard and writing to printer. So copier program could be written like this. Let's see how. Which has now hard-coded dependencies keyboard and printer. So this works but to follow dependency inversion principle, so the name of the principle is dependency inversion. So how to invert dependencies? Currently dependency direction is on downwards direction. So to revert dependencies, so tomorrow if you want to use disk instead of printer, it's impossible with this because you have to change the code. We can achieve that with this inverted dependencies. We could introduce abstraction. Copier should depend on these two abstractions which is first is reader abstraction, second is writer abstraction. And as the principle says, high level model should not depend on low level models. Both should depend on abstractions. So you can see both are now depending on these two abstractions, reader abstraction, writer abstraction. And abstraction should not depend on details. Details should depend on abstractions. So that is also achieved. So this is how we invert dependencies. And a common, like we can implement this using dependency injection, a common pattern to do that. But this can be very like abstract. Like you can have common contract which is common abstraction in like race services. We write contract right. So we are not dependent on actual implementation. We mostly have contracts there. So this is pretty abstract like principle, but if you follow this principle, you again make your code very clean and easy to explain. So let's see that same example where now this code shows it has used these abstractions and tomorrow we can change printer to disk.  If you see new keyword in your code, it means that there is a chance you can do like dependency inversion. And directly static or class method calls. If you have that, that also is breaking this principle. So what does applying solid principles lead? It converts your rigid, fragile and scary code to flexible, robust and curly code. And I've recently came across this tweet which says you cannot teach software design, but this is wrong. Actually, by learning these principles, I have one example to share. So in my company, five recent graduates had joined and they were writing, they were solving some problems using object-oriented code, but their code was not good enough. Since they learned about these solid principles, the code they wrote, they tried to follow these principles. It is not always possible to apply all five principles, but if you follow at least four principles, your code is good enough to go to production. And ultimately it becomes extensible and reusable. So TDD is not enough. Even TDD, people say it helps to evolve design, but it does not. And dry is also not enough. If you just follow dry, it's not that you are writing, it might be like just modular code, but it's not about design. So design because you expect your application to succeed because whatever we write today, if it succeeds, we have to change the code. And if your code is not ready for change, then you have problems. Also if it is having bad design, it is also bad for the feature of the application. So do design and design patterns. So design patterns are reusable solutions to commonly occurring problems. So if you follow design patterns blindly, it's a problem, but if you follow design principles blindly, I think it will definitely help. So I used to, I read about design patterns a long time back and I used to apply design patterns, but it was complicating my code. But following design principles never complicated my code. It actually helped to write code with better design. So finally, as in the last yesterday's talk by Constantine, abstraction is the key. You have to abstract things in all the principles. Somewhere there, abstraction is there. And if you abstract the things out, it will automatically follow these principles. So do follow solid principles. Thank you. I do recommend reading this book by Sandy Metz. My talk is inspired from her talk. So, and also Thoughtbot has this weekly iteration. Like Ben Orenstein has discussed about these principles in detail. And Uncle Bob has this site called CleanCoders where he also discusses about these principles. So as a Ruby programmer, we always believe in duct typing on all the things. But I think if you are working as an application developer for big application, we follow these principles. It will help your future. It will make you happy developer. Yeah, thanks. So we're running a little bit short on time, but maybe you can take one question. Thanks for your talk, Anil. All these principles sound great. My question is, which one of these principles do I need to apply to prove that rainbows are real? All the principles. All of them, okay. So thanks, Anil, again. Okay, thanks.


Hello, my name is Christel Mayans. This video talk is about the paper Efficient Simulation of Random States and Random Unitaries. And this is joint work with Goryan Allagich and Alexander Russell. Here is an overview over our results. In this work, we study the simulation of random quantum objects, like random quantum states and random unity operations. We develop a theory of their stateful simulation so this is a quantum analog of the well-known lazy sampling technique. Here's an overview over our results. In this work, we study the simulation of random quantum objects, like random quantum states and random unitaries. And we develop a theory of stateful simulation for these random objects. This is a quantum analog of the well-known lazy sampling technique. For random quantum states, we can do this efficiently. And for random unitaries, we can at least do it in polynomial space. As an application of the state version, we develop a scheme for quantum money that is unconditionally secure and both unforgible and untraceable. So that's privacy preserving in some sense. Let me begin with an introduction. As most of you might know, randomness is extremely useful, especially in cryptography, but also outside, for example, for Monte Carlo simulation and also more generally for randomized algorithms, et cetera, et cetera. An example of a random object is a random strings. That's basically the most basic random object, I guess. And it's a very simple object. So for example, it can be exactly generated using n bits of randomness. And because that's an exact realization of this random primitive, it cannot be distinguished from itself, of course. But we also have approximate ways of generating a random string. And this is what is called a pseudorandom generator. So here, we only want to generate something that looks like a random string to a polynomial time distinguisher. And in this case, we can do this with a lower randomness cost. And therefore, thereby also. Here's an example of a random object, namely a random string. This may be the most basic random object that's interesting to look at. It can be exactly generated using n bits of randomness, obviously. And because this is the exact object, it cannot be distinguished from itself, you know? But we also have approximate ways of generating such a random string. So more precisely, we have a primitive called a pseudorandom generator, which can use less than n bits of randomness to generate a string that is at least indistinguishable from a random string to any polynomial time distinguisher. Here's an example that's maybe a little bit more interesting and that is the example of a random function. Let's say the function goes from the set of n bit strings to the set of n bit strings. And such a random function is picked uniformly at random from all such functions. That means that each output is independently uniformly random from the set of n bit strings. In this case, the problem that we want to solve is the so-called oracle simulation problem. So that means that we should be able to interact with a distinguisher that expects oracle access to such a random function F in a way that they don't notice that they interact with us instead of with the random function. Again, we can of course do this exactly by sampling such a random function, but that costs a prohibitive amount of randomness unless the function has very short input length. And note that the randomness cost is a lower bound for the runtime and the memory cost as well. Now there are several ways to restrict the set of distinguishers that we want to simulate such a function against. The first one is to limit the distinguisher to a constant number of queries, say T. In this case, we can use what's called a T-wise independent function. And we can sample such a function efficiently using order T times n randomness. So again, there's no restrictions except that we limit the number of queries of the adversary to T. So in particular, there's no limit on the runtime. But now a complimentary approach is the case where we limit the distinguisher's runtime but not its queries. So this is the setting where a pseudo random function suffices. And here we have a security parameter lambda and such a pseudo random function can now be sampled using a polynomial amount of randomness in the security parameter lambda. And this is indistinguishable from a random function up to a negligible error to any distinguisher that has a runtime polynomial in that same security parameter lambda as well. Finally, there is a way of simulating such a random function against arbitrary adversaries efficiently, and this is called lazy sampling. And the only thing that we have to give up now is the fact that our simulations used to be stateless. Now we have a stateful simulator that just samples each output as requested and keeps a list of the outputs that he has returned before. So almost trivial algorithm, but it exactly simulates a random function in an efficient way using, you know, linear amount of randomness in the output length and in the number of queries. In this work, we want to look at random quantum objects. So in particular, random quantum states and random quantum operations. So let me introduce these objects. The quantum state is nothing else, but a unit vector in a finite dimensional complex vector space. And because it's a unit vector, it comes from the unit sphere inside that vector space. We're even more precise than actually we should restrict to the so-called projective space, but if you don't know that, that projective space, then it's fine to just think of this vector coming from the sphere. A quantum operation is a unitary matrix on that same space. So here we are taking a matrix from the two to the N by two to the N matrices, complex matrices, that is unitary, so it doesn't change the inner product. And the set of unitary matrices has a very nice structure. It's a group and actually it's more, it's a compact league group. These two sets, the sphere are more precisely the projective space and this unitary group, they're both very nice mathematical objects and they have a natural notion of a uniform distribution on them. And this uniform distribution is called the higher measure. Here's an example application of random quantum objects and that's a so-called quantum money scheme. The basis of security for quantum money is the so-called no-plawning principle, which says that quantum information cannot be copied. One of the oldest ideas in quantum cryptography is to make a money scheme, a digital money scheme out of that. One such quantum money scheme can be constructed using random quantum states and that's the so-called higher money scheme. This was observed in a paper by G. Liu and Song in 2019. So here the bank starts by sampling a high random quantum state with n qubits. And now it can start handing out copies to people as banknotes, these all have unit value same. So now people can trade by basically handing these quantum states to each other and if anybody wants to check whether their banknotes is valid, they have to send it back to the bank and the bank can check whether it's the correct state that they sampled. So this is nice because these banknotes are affordable so you cannot make one your own and you can also not copy them, you cannot take a lot of them and make one more or something like that. You can prove that. And also it's untraceable in the sense that if somebody comes to the bank and says, please verify this banknote, then the bank cannot infer anything about the history of this banknote from looking at it. The question is of course, can the bank actually sample such a random state? This brings me to the next part of my talk which is about simulating random quantum objects. Let us start with quantum states. Here we want to solve the problem of simulating a higher random quantum state of n qubits. We also look at this problem as an oracle simulation problem. So we think of simulating an oracle that has a trivial input and every time it is invoked, outputs a copy of a certain fixed but high random quantum state. In this case, the prospect of simulating such an oracle exactly is even more grim than in the case of a random function. That's because we are looking at simulating a random object from a continuous space which is a sphere if you want. And so therefore strictly speaking, it would require an infinite amount of randomness to exactly simulate such an object. Okay, fine. If we cannot simulate this exactly, let's try the next best thing, which is discretizing it. So we just pick an so-called epsilon net on this sphere and we pick a random element of this epsilon net. This can be done of course, but it still costs an exponential amount of randomness in the number of qubits. In addition, it actually implies a query limit on the distinguisher and that is because every time we hand out another copy of the quantum state that we have sampled, we incur another error of size epsilon. So therefore, if we have an epsilon net, then there is an order one over epsilon query limit on the distinguisher. If we're already accepting that we need to limit ourselves to distinguishers that make no more than a constant number of queries, then we can do something smarter than epsilon nets and that's what's called a state T design. This is a family of quantum states that has the property that if you sample a random one of them and hand T copies of it to a distinguisher, then they cannot distinguish it from a high random state. It turns out that there's an analog of pseudo random functions in the setting of high random quantum states as well. This is a fairly recent result from a paper by G. Liu and Song from 2019 and from followup work by Berkersky and Schmurli from this year, where they develop a theory of pseudo random quantum states. So a pseudo random quantum state is a family of quantum states that has the property that if you sample a random one of them and hand a number of copies them to a distinguisher that's limited in runtime, polynomially in some security parameter, lambda, then they cannot distinguish it from the same number of copies of a high random state. So finally, what we do in this work is we develop an analog of this lazy sampling technique in the quantum setting. So we develop a stateful simulation algorithm that runs in polynomial time in both the number of qubits and the number of queries that a distinguisher makes. And that can approximately with a fixed error simulate a high random state to such an unlimited distinguisher. So let me repeat this once more. So while the runtime of our simulation algorithm scales in the number of queries of this distinguisher, there's no limit to this number. So a distinguisher can make an arbitrary number of queries. This just makes the runtime of our stateful simulation algorithm also scale with this number of queries. This is fairly natural, right? Because at least the simulation algorithm has to answer each query. So at least it should scale linearly in the number of queries. Let's have a look at the case of random unitary matrices. So here we have a more natural oracle simulation setting as well again. And that is because now we really have the setting where we're looking at a distinguisher that can make queries to a unitary operation. So it can input quantum states, then the unitary matrix is applied to them and they receive the output back. The picture for exact simulation and epsilon net simulation is very similar to the case of random quantum states, except that the scaling in the case of an epsilon net is slightly worse still because the set of unitary matrix has a larger dimension than a set of quantum states for a fixed number of qubits. Here we have again this situation that when we already accept that we limit ourselves to distinguishers that are limited to making a constant number of queries, then there's a smarter thing than sampling from an epsilon net. And that's sampling from a so-called unitary T design. This is the direct analog of a state D design for the unitary group. So here again, we have a family of unitary matrices where sampling from it costs a polynomial amount of randomness in both the number of qubits and the parameter T, which is the constant number of queries that a distinguisher is allowed to make. And the random element from this family can now be queried T times and still appears indistinguishable from a high random unitary. Now the next setting is the pseudo random setting, right? It turns out that the setting doesn't look so good, actually. And that's because pseudo random unitaries were indeed introduced as a concept in the paper by G Lu and Song, but they don't have a provably secure construction nor does anybody else have. So green is the color of hope. We hope, of course, to have such a construction at some point, but at this point, we don't have one. The last setting is the setting of lazy sampling again. So that's the stateful simulation of this random object, in this case, the high random unitary. And this is where our work makes a contribution. So we developed a notion of stateful simulation of a high random unitary and we construct such a stateful simulator that is unfortunately not provably efficient in the sense of a polynomial time. We have no idea about the time complexity of this simulation algorithm, but we can at least prove that it runs in polynomial space. Let us return to the application of higher money again. So we have seen that if we had a way to sample a high random state, then we could construct a money scheme that is fundamentally unforgible and untraceable. That's unconditionally. Now we asked the question of whether a bank can sample such a random state. So now we know the answer, it's no, right? They cannot, but they can simulate it. And now we have seen that there's two options here. First of all, one can use a pseudo random quantum state. So this was already observed in the paper by Tiu and Sanz. Using that, one obtains a quantum money scheme that is unforgible and untraceable, but only computationally so. So this is against polynomial time adversaries. With our new technique, now we can simulate such a high random state statefully, right? And thereby obtain an unconditionally secure untraceable quantum money scheme. Let me say a couple of words about the necessity of statefulness. Consider a stateless simulation scheme for a high random quantum state. Such as a stateless simulation scheme can only work in the following way. It's defined in terms of a family of quantum states and the simulation is initialized by picking a random element from this family and then outputting copies of this random element whenever a query. The problem is as follows. If you have two quantum states that are not the same, then it turns out that if I hand you either end copies of the first one or end copies of the second one, then you can distinguish these two cases with a probability that approaches one for end to infinity. A similar reasoning can also be applied when we're talking about two families of random quantum states that follow a different distribution. This implies that statelessness implies a query limit, right? Because for any stateless simulation scheme, we know that if it's more efficient than a high random state, which requires infinite randomness, then it's not the same as a high quantum state. And therefore it can be distinguished from it with probability approaching one for the number of copies going to infinity. And a similar argument can be made, of course, for the case of unitary matrices as well. The last part of this talk, I would like to explain a bit the techniques that we use to obtain our results. For this, we need to dive a bit into a quantum theory. So quantum theory is inherently probabilistic. In particular, quantum measurement produces randomness. So therefore there's really no need for an external source of randomness when performing a simulation of random quantum objects. Here's a fact that's even slightly weirder than the above one. It turns out that a random quantum state looks exactly like half of a deterministic quantum state that has the so-called entanglement property. So let me try to paint a picture of this. Here you have two quantum systems. You can imagine two quantum computers and they are in a state that is deterministic, but entangled. So if we now discard or forget about one half of the states, so one of the quantum computers, then the state of the other quantum computer is in fact the same as if we had prepared this quantum computer in a random quantum state. This means that for a stateful oracle simulation of a random quantum object, like a random state or a random unitary, we actually don't need randomness at all because the stateful simulation algorithm can just maintain an entangled state with the distinguisher, making the distinguisher believe that they actually have a random object. Here's a version of this fact that we use for the case of higher random quantum states. N copies of a higher random quantum state in D dimensions. So D is equal to two to the N for N qubits. Look exactly like a single higher random quantum state on the so-called symmetric subspace of the unfold tensor product of the D dimensional complex vector space. But this state in turn looks exactly like half of a maximally entangled state of two copies of this symmetric subspace. This is about as far as I wanted to go in terms of explaining the techniques that we use to prove our results. So here's an overview over the technical contributions. So first of all, we developed several new algorithmic tools that one could call garbage list preparation of quantum states. These are algorithms that use a read-only register in some sense, but a quantum version of it to transform a standard state, say the all zero state into a quantum state that is specified on the read-only register, but without producing any additional garbage. So that's important because we can now initialize this read-only register in a superposition of different specifications and thereby prepare a superposition of different quantum states. We use these tools to devise concrete algorithms for the manipulation of states on the symmetric subspaces that I've talked about. So in particular, we have an algorithm that takes a maximally entangled state on two copies of the unfold symmetric subspace and transforms it into a maximally entangled state of two copies of the n plus one fold symmetric subspace. This is very important because it's a key step in the algorithm, in the stateful simulation that produces in some sense another copy of the high random quantum state. Finally, for the stateful simulation of random unitaries that I didn't have time to talk about in detail, we use very different techniques. Here we mainly combine several nice ingredients, like for example, we think that this is the first application in the quantum setting of exact unitary designs that were constructed by Kane in a nice 2015 paper. In addition, we describe an adaptive to non-adaptive reduction that uses post-election. So in some sense, instead of making adaptive queries to an oracle, we make non-adaptive queries using a standard state, which is again a maximally entangled state and later use a version of the teleportation protocol to teleport in our actual input. And also we use the uniqueness property of the so-called steinspring dilation of a quantum channel. This was my last slide. Here's the summary and some open questions. We have developed a theory of stateful simulation of random quantum objects. For random quantum states, we can do an efficient stateful simulation. And for random unitaries, we can at least do a stateful simulation that is a space efficient in the sense that it uses polynomial space in the number of qubits and the number of queries. As an application, we construct an unconditionally secure and untraceable quantum mining scheme using the random state simulator. Open questions about this approach include, can we simulate random unitaries efficiently actually? And I mean officially in terms of polynomial time. And then one extremely interesting open question that is actually an open question from the paper by G. Liu and Song from 2019 is, you know, can we construct sewer and immunitaries? This is all I wanted to say. Thank you very much.


I've been emailing dancers that have gone viral, Salif, Kida, the twins, Fiction. What else have I done? Reached out to you, I also worked at a bar, Philadelphia Eagles came by and then an event and I swooped, the mascot was there and I walked over to the guy that was part of the crew and I asked him, hey look I have a video that went viral. And I had this idea, I came up with this right on the spot, I was like, hey what if I showed up to a Eagles game and I walked up to the swoop and I shook his hand and we did like this handshake dance that I did in the video. So some of these things kind of come together in a moment, but even that is still, that's still a technique or a skill that people should do, whereas like you see an opportunity and you just go for it, because that's how I went viral, I just went for it. So I just quickly came up with the idea, asked them if they would be down, showed them the video work click, showed them the numbers, showed the legitimacy of the fact that I went viral, showed that I went viral on multiple platforms, showed all the followers I gained and then asked for specific emails from coordinators and other people that are important to approve of me just being at the Eagles game.   I went live, 300 people were in my life, the numbers were going up even faster. So I was already getting followers because of the video, but then followers were tacked on because it'll let you know how many people followed you through your life and people were sending me pandas, which is like a form of TikTok currency. And we're translates to real money, by the way. Yes, it does. And then Twitter, I was very active on Twitter, all of my was active on TikTok, Twitter, Instagram, responding to all the comments and just being funny and joking here and there and just interacting with all the people, engaging with the people, answering all the questions. I say hi to everyone who pops up on the live to acknowledge every person. I don't care if your name is user<PHONE_NUMBER>, I will say the whole thing, it's just like sense of humor. So it's not just showing that I'm a dancer, but showing the other parts of me that I know are also just as marketable, personality and being someone that people like outside of dancing. Same thing happened on Instagram.  It was about 60, 70 people brought some people on live with me and we talked and they asked me like, how did it happen? So I repeated the story so many times over the past month. Posting my own content, wearing this shirt more often, plans to do a dance video to hide. I emailed the Jabba Woffies, I spammed them, which is a technique that you've said to do. Don't feel like you're bothering them or annoying them. The point is to get their attention. I emailed a lot of other dance companies. DMed a lot of other dance Instagram accounts that post viral videos, dance viral videos, and I just would like send the same message over and over like once every couple of days. So those are things that I've done. Got you. So I see that you have a great ability to move in the moment, recognize those opportunities and act on them. At least you've been, you know, on a hot streak right now. And then you're talking about following up, hitting people up to get more things posted, all that stuff. Now, tell me what's the plan, though? Like in terms of a dancer, then, what does that look like to? OK, yeah, you work with these other guys or you actually do get a video with King Vader or OK, you actually do end up on the Philadelphia Eagles field and do that dance in the middle of the game. And then they put you on the Jumbotron and go viral from content and all that kind of stuff. OK, that happens. What what does sustainability look like for you? That'll be taking. Me as a dancer and my skill set and this moment that is now a part of my resume, bringing it to agencies, bringing it to auditions, call castings and hopefully getting signed to an agency. That's a direction that a lot of dancers go and through the agencies, they get booked for music videos, commercials, you know, they go on tour, stuff like that is the goal of mine is to be able to tour with artists. You know, I have dreams of performing with certain favorite artists, but it's not like I would turn and down if it's someone that I don't listen to. But it's all about being able to. Build build a larger platform from this point on and create consistent work and start getting paid and stuff like that.