Julie hi. How are you? I'm good. How are you? Lonely? Lonely? There's nobody here. There's no people here. Now there's two. I saw there are there a couple people at least on to YouTube. I haven't checked Facebook I don't know if they give us account. Do they do we say and we do this like every other Friday? We're like Do we have a count on Facebook? We should check. All right you guys if you're here. Oh, there's Steven. I knew Steven would be here and K. They're already dating profiles. Yay. Awesome. Happy Friday everybody. Linda. Hi Linda Baird-Hanson. Nice that you're here. I was going to mention I'm actually going on a date this Friday right now this tonight with my husband and only 10 other people. What are you guys doing? We're going out to dinner the first time and since the lockdown we're all going to go out to dinner together. Is that why you're dressed in a strappy black thing? No, that's because I was really hot and I didn't want to put on like jeans and stuff. I was just too warm. It's humid here in Illinois. It's just hot here. Yeah, you guys don't get humidity. Not as much. We get some but nothing like what other people get. Is this to find a person to follow? I could see why you would think that Linda. It is not though. No, it's not dating profiles. Go ahead. We'll talk about a little bit. That's fine. No, explain. So Friday date night at Linda if you're familiar with wiki tree. Wiki tree is a genealogy site in case you're new to that too. And we are a collaborative community that works on our genealogy together. And Friday date night is kind of a play on words. We have a bunch of profiles in the database that don't have dates on them. So it makes it really hard to research them and to find the people, to find their relatives that they're connected to. So on Friday date night, we all get together and we date profiles. Not each other. Just profiles. We research profiles and put dates on them. So great. You have an account that's awesome. Hi June and hi Lauren Thompson from Melbourne, Australia. So I hope that explains a little better. We realize that it can be a little confusing because we call it Friday date night and we joke around about that a lot. So it's just kind of a fun fun play on words and we hang out together on discord and help each other or just chat once in a while. People just kind of get busy. Sometimes it gets very quiet on discord. Because they're quietly dating profiles. Yep. So we've been doing this since the first part of November of 2020 of course. It just seemed like a good pandemic sort of thing to do since we're all stuck inside for a while. Hi Lynette. Hi Lynette. Lynette's always here. Steven's always here. We got Lauren Thompson from Melbourne. I saw that. I said hello to her. You didn't hear me, did you? No, I said hello to her. Oh, there you go. And there's John Tyner from John's from Ireland. Yes, I knew he was in the UK. Hi Charles. Nice that you're here. If you guys are not on the discord server for wiki tree, you can. Let me find my banner. I think I have one here. No, I need to edit it. Just talk amongst yourselves and I'll edit this right here. Anyone? Tell them a joke. I have one. Hold on. What?  Do I have one? What does a thesaurus eat for breakfast? A synonym roll.  No, it's awesome. That was really bad. It's one of the best pun jokes ever. That is pretty funny. I thought you were going to say alphabets or something, but that's not nearly as funny as a synonym roll. So yeah, that's great. So Charles Platt, there is our our link to our discord help page on wiki tree. And you can pop over there and get the link. When you come into discord, one of us will verify that you are who you say you were. And you can come join us on the friday date night channel over there where we help each other with research or maybe tell jokes. I don't think anybody in there has ever told a joke, have they? I don't think so. We're not funny. Yeah, we are. We'll put Kay on that.  Bradley Dillon loves this new wiki tree. Yay, we do too. Where are you from, Bradley? Just in general, you don't have to give us two four six self-strank. Main Street. Oh, yes, you should put this in your Wednesday email. It is. I think it was noted in the Wednesday email. I don't know. Oh, there's Deborah. The discord help page. Oh, I don't know. I thought it was mentioned in there a week or so ago. It needs some editing before we promote it. Oh, okay. So it has not been in the Wednesday newsletter. Lancaster, California. Cool. So it's not really Friday date night for you. It's Friday afternoon. Friday afternoon. It's Friday afternoon for me, too. It's only two o'clock here. Yeah, it's three three o'clock here. Not good. It's not Saturday. Saturday morning for some people. So we were talking a little bit about how awesome the date additions are that you guys have made and how it might help with the connectathon that's coming up in July. So if you think about it, when you're doing connecting, you're looking for existing profiles that have the right dates and locations and good sources and everything. So if you have put good dates on a profile, they're going to show up in a search a lot easier. So we're hoping that that helps with the connectathon and I bet by the time July is over, we're definitely going to cross 25 000 profiles having been dated. We might in through July. I don't know. You think we could hit 30 000? We could do it. We're almost at 23 now. No, I take that back. We crossed 23. We're over 23 000. We're at 23 326. It happened. It could. I know there are a lot of people who really like working on this kind of stuff. So that's great. Bye June. She's leaving already and hi Tommy. John's dog got clips today. Oh, yeah? I'm not sure if that means one thing or the other thing. I was thinking the same thing. His nails clipped or something else perhaps clipped. Did he get his hair cut or she? We'll wait. So we'll wait. Yeah, we're just going to sit here and wait. So Bradley started working on wiki tree coming from Ancestry. It's quite different on wiki tree, but that's awesome. We're great to have you. We're great. Yeah, we're happy to have you. It's definitely Friday afternoon here. John's dog will be 14 on Monday. Hey. She had her coat and nails trimmed. That's nice. My doggies are sleeping this afternoon. They're all hot and tired from our walk. Molly. Molly's back there. So Lynette's been working on, I assume AR is Arkansas Unsourced Suggestions and Harvesting 4,300 data lines of Jedmatch. Wow. Wow. That's a lot. We are great. Yes, we are. Here, Lynette gets the quote of the day. So I know some of you are new to our date night thing. Got any questions?  We are not matchmakers. Although I know a lot of wiki chairs, so if you're lonely, I might know a match. That's true. We do know a lot of wiki chairs. What else do we have to talk about, Aowyn? Do you want to talk about the connectathon that's coming up next month? Not particularly. Why not? Why? Because there are people out here who don't know what it is. It is. And it's fun. A fun event. It's one of our more popular events and it is adding people to wiki trees. So basically you're not creating new people that, how can I say this? You're not just creating new people. You're creating people that are attached to people that already exist on wiki tree. So you're helping us grow the connections. Now she's sleeping in the laundry room.  Maybe it's cooler in there. Is it cooler? Do you want to come say hi? Come here. So Linda says, what kind of dates? Any date on a profile? Well, Linda, we have a free space page. Let me see if I have that up here too. I don't. I'll try and talk and do this at the same time. They're a free space page for Friday date night. And it has instructions on finding profiles that don't have dates. And I'm putting the URL up here right now. So hang on just a second. Typing and talking at the same time. It's hard for me. There we go. So if you go to that URL, that is our free space page where we describe how to find profiles that don't have dates. How to look for dates. What to do if you can't find them. And if you go on to our discord server, you'll have plenty of people out there that if you get stuck and you're not quite sure what to do, they can help you with that. I am probably not going to be here for very long today because I have to go on a real date. With my husband, of course.  And there's Molly. Oh, she really wants to participate right now. Apparently. She's like, do you have a date for me? Where's my date, mom? Where's mine? I see it right there. It's my treats right there. Yeah, I can't have them. So John wants to know, where does Connectathon start? Do we build backwards in time or forwards in time from profiles already on WikiTree? Yes. Yeah, basically if there's a profile on WikiTree, you can add in any direction. As long as you're adding family to a profile already exists, then you're good to go. Let me show you guys something. I'll share my screen and I'll go show you how to find unconnected profiles. Let's see. Chrome tab. We'll go there. Okay, can you see it? Or do I need to? Can you add it? Let me know when you're ready. Go for it. Okay, so if you were talking about the Connectathon today instead of Friday date night, but here's the free space page I was talking about before. And you'll find the schedule. How to find profiles without dates. And some other ways to find profiles without dates. What to do when you find a profile. There's this is a decision tree here that will help you figure out what to do. And more hints and tips. We have a sticker that you can put on your profile that looks like that. And what's going on? I can't see you. Did you drop the dog? No, she jumped, but she took my head so there. And here's our stats. This is everything we've done since the beginning of November. So, but for the Connectathon, when we get ready to do that, you can go, Alesh will have reports for you too, but you can always find Unconnected Profiles by going to the Find menu. And Unconnected Profiles. And it will bring up, wait, I didn't click on Unsource, did I? Apparently you did. Apparently. So if you want to find Unsource Profiles, that's how you do it. That's right. So here's Unconnected People throughout the whole tree. It's a very long, this will be a very long list, or if you'd rather work on ones that you're more familiar with, you go to my wiki tree and your watch list. Don't look at how big my watch list is right now. I'm busy with somebody else's family. And there will be a button here for Unconnected. You can click that. And these are the families on my watch list, or the profiles on my watch list that are not yet connected to the big tree. So that's a good place to start. And I wanted to show a little helpful hint here too. I'll bring this up. When you're looking for profiles to add dates to, a lot of times I find them when I'm searching for duplicates. So I'll go up here and I will go to the Profile ID menu and then I go down and I search for matches. And if you'll notice, we're almost always going to get profiles that don't have dates on them. So that's a really good way to help because this is very demonstrates very well that when you add dates to profile, it's going to help everybody because it'll make it a lot easier to search for duplicates then. A lot easier to find them. For sure. So I hope that was helpful for somebody. I'm sure it was. And Holly wants to know if there's an event for merging profiles and there is not. And there's kind of a reason for that. Aya, do you want to talk about that or you want me to? Mostly it's because merging is something that should have a lot of consideration with it. It's not something that we want to encourage people to rush and do and to hurry through because once you merge a profile, it's not that easy to unmerge it. Like you really can't unmerge it. You have to rebuild. And so we don't really do challenges around merging. Right. Good point. Did you have a different one? Because we don't want people to hurry. Huh? Did you have a different one? Do I have a different one? Nope. That's exactly what I would have said. It's not something that should be rushed through. They need to be researched to make sure you've got the right match. Anything should really be rushed through but it's just really hard. Like it's easy to restore a profile. It's easy to change a date. It's not easy to unmerge, fix a bad hierarchy. Right. Right. Exactly. And Kay brought up a point. She's been working on a challenge called the Grip Challenge. It stands for... Oh, I'm never going to get this right. Judcom Review Improvement... And Improve Profiles. And Improve Profiles. So she's been... I don't... Kay, I'm sorry but I have not had time to get into your grip stuff lately. So I'm terrible at navigating it. But there's a spreadsheet that she has set up and we have it pinned in the Discord channel for Friday, date night.  And these are all Judcoms that were uploaded years and years ago when we didn't really have many restrictions on them. So they might not have dates. They might not have locations. Some of them, the families were disconnected when they were imported. So it's a really good way to go and improve the tree by working on those Judcom created profiles from a long time ago. So that's always a good thing to do too. And there's plenty of those that don't have dates. So we have all kinds of ways to get to profiles without dates. Oh, and we enlightened John. He didn't know what the grip stood for. So we kind of been trying to work on those two things together because it's fun. I think I'm getting a lot of noise. Are you hearing that? No. Oh, that's weird. Well, I'm almost done anyway. Did you have anything else to add? You know, I don't. Well, we will wrap it up unless somebody pops a question in there real quick because we want to let you guys get out and start having fun. Start dating. Yeah, start dating. Please show up on Discord. We have a we have a good time over there and you'll get your questions answered. So we hope we can find you over there and help you get started. Oh, Bradley. Yes, I didn't see you pop up. I saw notifications. So we'll get you squared away as soon as we get done here. All right, everybody, have a fantastic weekend. Thank you for stopping in. Please thumbs up our video if you feel like it. We're happy to have you here and we will see you guys on Discord in two weeks for the next Friday date night. Bye. Bye.


When they first introduced QFT to me, I was like, okay, this is really cool, but How do I integrate it and where do I go after I have these questions? So I think the key to success is that you use the questions If the students don't feel that their questions are valid, they're going to shut down next time you try to do a QFT So having some kind of plan and you don't have to have the answers But just allowing the students to move forward with their priority question somehow If you don't use them talking about the questions You will lose them the them in that case is the students You have to use because otherwise it just becomes another teacher activity I used mine to drive my unit this other teacher I worked with in science She used hers to drive her lab, you know, you the kids have to see their questions because when they do What I love about the aspect of when they see their questions show up as the assessment Or it's the thing that measures the learning is that that rigor and relevance goes through the roof It's relevant to them because it was their question But secondly, most importantly, the rigor goes through the roof because they're not going to let you leave it Sometimes it's just a hook. Sometimes it's just a discussion to teach a processing skill or a way of analyzing things Um, a lot of the students really like it as a project They like to find the answer. They like to work collaboratively And they really like to present to show what they've learned And I always ask, you know, what's your question answer? Did you answer the question? Were you able to and Initially, I'm like, did I tell you the answer? did I Tell you which page to turn to or which website to look at And it's that early process where we're building that that sense of empowerment that you can do this You have the you have the capability the tools the the know the wherewithal to Solve your own problems or questions When when you put your mind to it I definitely think that moving into the future being able to have this as um a tool when writing papers that need research questions and um Going into a broad topic being able to Make a list of questions and being able to narrow it down and change the questions in a way that it could be useful to me in the future Um, so I think it has been such a valuable lesson to me We make sure that everyone's questions get presented to the whole class and then What we'll do is read all the questions that the students have and I'll post them up and around the wall And then we also do um a new thing which is interviewing people So when we were doing our community helpers we were interviewing the police officer at our school And we invited a firefighter to come to our school and we interviewed him And so that was super fun for the kids to interview people who actually were community helpers And those were our primary sources So we knew that we were getting credible answers from experts The q-focus had a collection of images and a quote The quote was alluding to the fact that Why would we even need to describe something with so many Intricacies with words when sometimes it's just easier to take that one thing and look at it Out of your questions you created Choose five that you feel will help you better describe a thing that no one has seen I said we're gonna do something with those questions They had to write an ode to an invention And they had fun with it. They had to draw their invention and accompany their ode with it And that was our final project for the semester After students have used the qft to Understand either a document or a cartoon or a photograph or a video I'm using the q-focus later during an assessment I use them either for short answers sometimes for essays Sometimes I put it into a multiple choice question and it's in a more academic context So for example in the one I just did with this cartoon I would just have a prompt something like analyze cultural beliefs of americans in the late 1800s that justified expansionist policies So even though their questions were like why is that guy sitting over there? It really is the same thing as evaluating cultural beliefs of American imperialists The academic language comes when when they start to understand it when they're finally being assessed They'll be able to rise to the occasion and understand those prompts My computer science students are seeing the benefits as they go through these questions and asking the how why What those are questions that they need to Um establish and learn how to do if they go and go through a debugging process Like if something runs wrong with a program, okay, why how um do we need to do it this way? Is it another way also not only the debugging process before you can get that like okay Why am I developing this app? Who am I developing this app for what is it going to do? And I think that's essential because it gets to go to the design process When you create environments and you empower them with answering their own questions It's not only empowering. It's also liberating for some of our young men and for students I believe and and they take that and and they they run with it, especially The way the system grinds grinds Is about about correct answers answers and correct answers Not about the questions. It also gives students an opportunity to speak Um students who don't like sometimes don't like to talk but when you're asking questions, you know, even in a virtual I haven't read it um It's still it's opportunity for student voice The student voice is always important because it can lead to so many other things that led to asking the question It led to now collaborating with your peers to now you're standing before a group of students of your peers presenting to the principal community members and others um and you know now you can You know take the oath of office if you choose and that and feel comfortable doing it


Right now we're going to listen to Circuit Breakers by Scott Trillia. Well thanks everybody for coming out, so let's talk about Circuit Breakers today.  If you don't know, Yelp is a website where you can discover excellent local businesses wherever you happen to be. We've got a booth outside and we're happy to talk to you more about what it is that we do. And we're a pretty big website as well, so in particular we've got 90 million monthly users, over 100 million reviews, which is something that a lot of our code deals with, and we're launched in 32 countries, including lots of Europe as well.  And if you're inclined toward Twitter, you can find me at Scott Trillia. Alright, so with all that out of the way, let's go ahead and talk about some Circuit Breakers. In the old days, we used to have this very nice model of the world, right? Pretty much any code that we wanted to call, whether it was something simple or something complex, was executing in the same Python process that we were calling it from. So if I want to do something nice like display a business's name in a nicely formatted way, I call a function to do it, and I can be pretty sure that that function's going to execute and do so cleanly. Unfortunately, more and more these days, that assumption that code is running locally and code is executing in process is not becoming true. So a lot of different trends are causing this. Things like Docker that you may have heard of, the microservices or service-oriented architecture movements in general, are introducing more and more network boundaries into our code. So that function that used to be executing locally in our same interpreter is now maybe on some remote server running elsewhere, we don't even know where it is. And the unfortunate reality of this is that can introduce a lot of problems, right? Problems that didn't used to exist. So things that we assumed would always work, all of a sudden have strange failure modes, maybe I get a 500 from some sort of HTTP API, maybe I just see a lot of slowness and I have no explanation of what's going on. There are a lot of ways that this can go wrong. And that is essentially where circuit breakers fit in. So circuit breakers are these components that we build in between ourselves and our remote dependencies, and they're essentially there to do two things. They need to detect when the system is unhealthy, when they can't communicate to that external API, whatever it is, and they need to do something about it. So often this is something like blocking requests or turning off features or etc. So wherever you hear circuit breakers mentioned, you're likely going to see references to this book by Michael Nygaard, release it, has a lot of ideas in it, a lot of ways to build good software, and one of them, in fact two pages out of an otherwise fairly large book, is dedicated to this idea of circuit breakers. So we have three goals today. First off, I'm going to introduce Nygaard's circuit breaker, give us an idea of what it does, what the basic idea is, and why we should care at all what problem it solves for us. And then we're going to try and walk through a variety of ways that we can take that basic circuit breaker and expand it to solve different problems. We'll sort of motivate this by talking through a few scenarios, getting an idea of ways that that initial circuit breaker is just insufficient, and what we can do about it. And to do all of this, I need to first introduce you to my own favorite restaurant back home in San Francisco, which is Jim's Diner. So Jim's is a very old school American Diner experience, so this means vinyl booths, you sit down at tables and you have waiters that come and take your order from you and take it to a back kitchen. And it's that kind of process of ordering food that we're going to use as a stand-in for a lot of different things that you might want to do with remote services. So let's briefly walk through the ordering experience, just in case it doesn't translate countries very well. So you're going to start out with the menu, essentially, you'll sit down at your table and be given a list of items you might order. Step two here is you're going to go ahead and decide what it is that you want to eat, and they're going to take that with the waiter and they're going to write it down on a ticket. They'll take this ticket and give it to the kitchen and say, please make this order. Step three is going to be, hopefully, the kitchen processing your order, nice and efficiently. And step four is, of course, whoever the customer is gets their food back and they get to enjoy it. So the fundamental rule of any of these kind of modern network-oriented architectures is you have to accept that your system is going to fail. Now, that may not be your code in particular, but it turns out that because you depend on these things, many of them may be significantly out of your control, something is going to fail. And it's not a question of whether you can avoid the failure entirely. It's a question of when it does occur, what are you going to do about it? So let's look back at that example of eating food at Jim's restaurant and see how failure might factor in. So we've gone ahead and ordered our food. We've had the waiter take it down on a ticket and placed it in front of the kitchen, the cooks. And something unfortunate might occur, right? It's something we don't totally understand. Maybe we aren't even aware of it, but that order that was supposed to get processed in a timely manner by the kitchen is instead entirely forgotten about. Now, in a real restaurant, you might hope that the reaction to this would be something reasonable, something like a waiter coming and telling you that the kitchen is far behind and that they need to take more time for your order. But in the code that we actually write in practice, we have very little thought to this failure mode, right? We might not even think of it at all. And so it turns out that the real result of doing this can be really negative. In fact, it can be completely preposterous. And if we ever said it out loud, we'd say, wow, that's a really bad situation. So essentially, our goal today is to make sure that we're aware of this problem and make sure that we've built in systems that can handle it automatically. And the first way that we're going to talk through that is Nygard's basic circuit breaker. So here's a slightly idealized schematic of Jim's restaurant. This is approximately true, and we'll see why it's designed this way in a moment. On the left there, we have a number of sections. One section contains several diners in it, but most importantly, a section is served by a single waiter. So they're going to come to the individual diners and collect those orders we talked about earlier. They're going to take them across to the right side of the diagram and drop them off at the kitchen.  And I had said earlier that this is sort of a general stand-in for a number of things. And so I want to briefly convince you that this is a generic kind of interaction model. Here's what it might look like if instead of, you know, customers at a restaurant, we were talking about services, back-end services, and some sort of HTTP-based API. And likewise, if you're dealing with task queues or any sort of slow back-end process with workers, you can fit that into this model as well. So all of that said, we're going to focus on the dining use case. And what we're going to essentially do is build-in circuit breakers to this model. The ones that we'll start out with are going to be on each waiter individually, so every waiter will have their own circuit breaker paying attention to the success or failure of their orders. And in Nygaard's basic model, there are three essential states. Now, on the right side of this, these are the traditional names that Nygaard gives to these states. I don't know about you all, but I find them horrifically confusing, and I'm not going to use them. So if you're a purist, you can look to the right side of this diagram, the ones on the left I find them a little more intuitive. So healthy is the good state, as you might imagine. Essentially, if all the requests are flowing successfully, the circuit breaker is going to recognize that things are going well and declare itself healthy. Unhealthy is the exact opposite, of course. If no requests are succeeding whatsoever, we're going to declare the system unhealthy and hopefully take some corrective action. And Nygaard's circuit breaker has kind of an intermediate state where we maybe aren't quite sure whether we're good or bad, and we want to decide between the two. So a very basic circuit breaker in Python could look something like this. So each waiter is going to start out by asking themselves, do I believe the system is healthy right now? In the good case where it is healthy, they're going to go ahead and just send the request onto the kitchen, they'll take your order, and they'll make sure they pay attention to whether it succeeds or not. In the bad case at the bottom, we're going to go ahead and just block the request up front. So I'm going to go ahead and read my order as a customer. I say I would really like to have maybe bacon and eggs, and the waiter's going to say, sorry, kitchen is unhealthy, can't accept your order. And we might be in this middle case that we talked about, kind of recovering, trying to decide where the system is. If we are in that middle case, again the basic Nygaard circuit breaker says that we should be taking this kind of approach. We're going to start by waiting a certain amount of seconds, maybe one second, maybe five seconds, and this is to give the backend system hopefully some sort of time to recover. And then the very next request that comes through, we're going to pass it to the backend, we're going to see if it's successful, declare ourselves healthy, and see if it's unsuccessful, and declare ourselves unhealthy. And we kind of repeat this cycle until we become healthy again. So that's the basic circuit breaker, not terribly complicated, but let's kind of explain why it's actually doing us any good in that form. So before we had a circuit breaker active, one effect of the kitchen slowing down was that diners would start to wait a very long time to get their food. We saw our skeleton friend earlier who had waited an extraordinarily long time, and the way that most of us often write this code in practice, there may not be any time out of any sort on the client side, so they just wait forever. On the other hand, the kitchen, the backend, is also getting a growing backlog, right? Maybe they normally have five orders in process, and as they get slower and slower, they have 10, they have 30, they have 100, and they're hopelessly behind. And every new diner that's entering our restaurant is actively making the situation worse. So maybe in a normal operation, we expect roughly 10 people dining at the same time, but if everything starts slowing down this way, we're going to get 20 in the restaurant at once, 100 people in the restaurant at once, kind of compounding all the same problems. And a circuit breaker does make this better. So for starters, we actually get fewer frustrated users, and that might be a little counter-intuitive given that we're blocking their requests immediately, but it turns out that in most use cases, that's actually preferable to waiting, knows how long, and then being told the same information. We're going to reduce load on the backend, so the kitchen, rather than having those orders pile up, can get a little bit of a breather and recover whatever the problem was. And maybe most importantly, we have a place in code where we can define a failure mode for our system. So we can say, if the system is unhealthy in some way, I know exactly what's going to happen, and it's in this part of code. And it turns out that that's actually really valuable as we start to expand and make this more complicated. So that is the basic circuit breaker. I kind of want to point out a few assumptions we're making, and we'll use that to launch in some more detailed discussions. So the first thing that we're assuming is that all those waiters had independent circuit breakers, right? And that introduces the interesting problem that one waiter can believe the system is unhealthy while the other waiter is completely clueless and happily sending orders through to the kitchen. And we might think to ourselves, that's a little bit strange, and we'll talk about what we can do there. In addition, in the basic circuit breaker, we have exactly one thing we do when the system is unhealthy, and that is we stop future requests, right? No other reaction is taken. And we'll talk a bit about what else we can do there. We also made the decision that the circuit breaker component itself, the waiters in our case, was the only thing that could decide if something was healthy or unhealthy. That's a little bit limiting, and you might imagine that, say, a cook in the kitchen has a pretty good perspective on this, and so we'll talk a little bit about pulling that information in. And last but not least, the whole recovery system in the basic circuit breaker is very defined, and it's very focused on the success or failure of one particular order. So we'll talk about expanding that a little bit. So let's start off with the first question, which is, should all these waiters have independent circuit breakers, or maybe should there be a little more communication between them? And we had said originally that one of the weird side effects of that is they can all disagree, right? If the waiter for section one is well aware that the system is unhealthy, they won't be sending any more requests to the kitchen, and that's a good choice for all the reasons that we talked about previously. But of course the waiter for section two may not have had any orders recently, and the next five people that come through section two are going to get very slow, very unsuccessful results. So the obvious solution in this case is we need to have them communicate somehow, right? And one easy way to do that is to just take whatever state it was that they were maintaining, maybe the number of successful orders and the number of failed orders, and put it into a shared data store. This data store can be any number of things, MySQL, it can be something more key value oriented, Cassandra, MongoDB. But the goal is that they're going to all communicate together, come to some roughly shared consensus on the state of the system, and that will be what they all pull from rather than their own opinions. So the new behavior we've introduced, obviously all of these clients, these waiters are now going to be communicating where before they were completely independent of each other. And that has a lot of different sort of side effects that may or may not be intentional. An obvious good thing that we get out of this is that we're going to propagate any failures in the system a lot faster. So rather than every section independently having to rediscover the fact that the kitchen is really unhealthy, they'll teach each other about it as soon as any of them know. On the downside, this pulls in a lot of complicated questions around building a distributed data store in the first place. This is a short talk, and I have nowhere near enough time to dig into all the complexities here, but a lot of the issues around the cap theorem and deciding whether you want to be highly consistent or not all get pulled in as soon as you decide to share a central data store like this. All right, so let's talk a little bit about sort of the second question we had proposed, which is given that the system becomes unhealthy, what do we do about it? And recall that in the basic circuit breaker, the only action taken is we're going to block future requests. Now you might imagine that this feels a little bit substandard because if I'm a customer, I come, I sit down, I look at a menu, I take my time, I decide what I want, and then at the very last minute I get told, oh, I'm sorry, we're totally unavailable right now. It's functional, but it's pretty frustrating for all your users. So what we're going to do is take that method that we had discussed, sort of deciding if the system is healthy or not, and maybe that's coming from one waiter, or maybe it's coming from a central database of some sort, and we're going to make it public, make it an API to whatever other code wants to consult it. And so instead of only the action we're taking being to block orders right when they're made, we can maybe make some slight improvements. Like we can say, don't let anybody else sit down at a table once the system is unhealthy. We can also imagine building out a lot of other features along this same vein. And so the new behavior we can introduce is we've essentially made the information about healthiness public, and we can build any number of features on top of that. Maybe that looks like shutting off access to whatever this feature is when the system becomes unhealthy. Maybe it even looks like really automatic monitoring, so we can go ahead and have some sort of, you know, manager be notified immediately when the system becomes unhealthy. And the advantages we've gotten here is we obviously have a lot of flexibility. We can build out any feature we would like on top of this. And the only downside is we have to ask ourselves some hard questions about consistency of that information, and that sort of gets back to the questions we had asked in the previous section. Okay, so one other question we might say is we had said before that waiters are in a slightly awkward position to decide whether everything is healthy or not, right? All they can see is the request that they make and whether or not they come back. And we might imagine that, for instance, in our scenario, something on the back end, the cooks, might have a really good perspective here. So we can have them implement some relatively simple function, and they can say, you know what, we're in the best position to tell if the system is unhealthy, if we have way too much work to do, and we know we're hopelessly behind. So we can go ahead and have them determine this and send a signal to the circuit breaker, even though they don't own it, so behavior that we've introduced, if we allow this, we can basically say anything in our broader system is allowed to communicate information, it's an opinion to the circuit breaker. And we have to come up with some way to combine that, right? If we're having waiters disagree with the kitchen about whether the system is healthy, we have to make some decision, and we need to decide who gets to win in that disagreement. So on the upside, we've introduced a whole world of new signals. This is a very wide-ranging and powerful tool to have, and on the downside, we've created a tool that's really powerful and complicated. So I've personally written some circuit breaker logic that is really, really hard to untangle after the fact, and I've seen myself in production situations where something is on fire and I have no idea why. I can't really recommend that approach. So keeping this simple enough that you can understand it while complex enough that it actually does the job is tricky. All right. And the fourth question we're going to ask ourselves is what are some alternatives to recovery? So in the original formulation, we had said that we were going to wait a specific timeout, maybe five seconds, and then we're going to issue a single request, and if it works, great, we're healthy, and if it fails, great, we're unhealthy. So we're sort of trusting that single trial request to tell us the right information. One alternative we could take on is to try something called dark launched requests, and essentially what these are is we're going to take live user requests, we're going to block them just like we would have in the normal circuit breaker, blocking them and forgetting about the request entirely, we're actually going to pass it through to the back end. We're going to run it through just like a normal request would be, and we're going to pay attention to whether it succeeds or fails just like a normal request would. Now you can imagine that this is really, really nice when it works. We have live user traffic with all the peculiarities and features that that might have, and it's going to tell us exactly when our system is alive or in trouble. But on the downside, it's thoroughly incompatible with certain systems. So if I'm running a search engine, I don't mind doing this. I'm happy to tell a user their search isn't getting processed, but then actually do it. But on the flip side, I work with credit card processing, and I think you would hope that if I told you your order hadn't been completed, I would not in the background be silently charging your credit card. So there are plenty of cases where you have these kind of side effects you really don't want to be telling users that things are a certain way when they're not. One alternative for those kinds of situations is what's called synthetic requests. So, as before with dark launching, we blocked real user requests and then we secretly did them in the background. What we're going to do here is still block the real user requests, and then instead of processing those, we're going to process something fake that we've made up ourselves. In the case of the diner, you might imagine that every, let's say five minutes, you ask the kitchen to make you a salad. This is a fake order. No one's going to eat the salad. It might be a little wasteful. But you can go ahead and figure out if those salads are getting made successfully, and the kitchen is probably doing okay. Obviously, downside here is there's no guarantee that those synthetic requests represent real user traffic or patterns or load or demands on your system. In the case that we're asking the kitchen to make salads every five minutes, if the grill is completely destroyed and they can't make a single hamburger, obviously those salad requests are going to work just fine. Everything's going to report that your kitchen is doing very well and then the moment that you decide to send a real user request and try and make a hamburger, it'll break again. So synthetic is easy to do, but maybe not accurate. And these new behaviors give us a lot of opportunities for traffic to determine health. They let us really remove those timeouts and not worry about tuning them or creating them. But on the downside, we've talked through a couple of reasons why maybe they're not appropriate for every use case and we need to think a little bit before applying them. All right, so let's wrap up a little bit. If you only take two lessons away from this talk, hopefully the first one is that if you have networks in your system, if you're doing microservices or Docker or any number of other technologies, you need to plan for failure. And not only do you need to plan, you should not be afraid of taking the basic solution, the basic circuit breaker, if you don't have time to build anything else. It is a limited approach, but it does work and for the reasons we talked about in the beginning, it's a lot better than doing nothing at all. That said, if you do have some extra time and if you can devote it, there are a lot of ways that you can customize it even better for your personal situation. We had talked about maybe how many circuit breakers you should have. Do we want one per set of processes? Do we want them to communicate? Should they be completely independent of each other? We had asked maybe what should we do in response to the system becoming unhealthy? Do we want to go ahead and just block requests? Do we want to trigger some other features? Do we want to prevent users from ever even seeing this feature? We had wondered out loud maybe if the circuit breakers themselves aren't always in the best position to decide if the system is healthy or unhealthy, and we might need to integrate multiple sources of information and make some final judgment. And then finally, we talked a little bit about alternative ways to do recovery, all of them traffic-based and some of them more accurate than others. And I should say there's a lot more here. Obviously we're a little time constrained, but there are many, many ways you can customize circuit breakers. They're more a pattern of thinking than they are a specified implementation. And everything comes down to your use case. So depending on what you're looking for, a lot of different forms of this kind of approach might be the right answer for you. Hopefully this is giving you some tools and ways to think about it that you'll find useful going forward. And with that, I think we have a little bit of time for questions. If I don't get any time now to talk to you, happy to chat after online, or I'll be out at the Yelp booth. Thanks. Good talk. Thank you. I have a question. I've seen a lot about circuit breakers, and I saw that most of the implications are in the API gateway side, because we have a main central way of getting requests. I just wanted to know if you did it and how you did it. So you said that most of the circuit breakers you saw were... Sorry. In the API gateway. Ah, yes. So you certainly can build them into any part of the system. It's very, very common for them to live either in the clients themselves or maybe somewhere between clients and those APIs. I would say all of the use cases I've personally had, they've lived pretty close to clients, but I think there's nothing fundamental that requires them to be there. That's certainly one of those questions that's kind of in the much more section, right? An interesting thing to think about what you get by putting it in clients or on the server side or somewhere in between in a smart proxy. Sounds very interesting. Be happy to talk with you after about it, yeah. Hi. I think in a production system, you would have probably 10 or 20 kitchens, so the thing would become even more complicated. How do you compare using this kind of HTTP request or whatever communication layer you have with circuit breakers? How do you compare them with having something like RabbitMQ or some queuing system to the couple? One thing or the other. My experience, you remove a great part of this complexity, but maybe other complexity arises. Sure, sure. If we have a system that's not maybe strictly HTTP-based, RabbitMQ, any number of task queues, is there any point to still doing this? I can say that for my own work, what we do is not HTTP-based, because the nature of dealing with money is that you would rather a network blip, not forget about your order or your credit card purchase. We're mostly Q-based, so we do a lot of work with Amazon's SQS, other technologies in that vein, and even in those cases, you still want this behavior. That solves some sources of unreliability, but if I write bad code in the back end that silently drops every request, we still want to identify that and take corrective action, and what we do is block future requests. Better transports are better, they solve some problems, but still relevant for those. Great talk. Say I need my waiters to synchronize over storage, but what I do is I introduce another moving part, because the CB store is another thing that could fail possibly. How do you think... What's the best way to deal with that? Because if that fails, I cannot even determine whether anything is healthy. Absolutely, and that's a great observation. When I had originally talked about this with some colleagues, I had taken it as an assumption that you would have some central data store, because why would you want these to be independent? And a colleague of mine on the operational side of things basically said exactly what you're describing. If your goal is for this to be a bullet-proof failure mode, so this is maybe the traffic that serves the entire website, any amount of coupling to another failure point is a bad thing. Any amount of coupling across processes might even be a bad thing. So there can be cases where you would actually accept a slower response in exchange for a simpler setup. That's a very good way of saying it. Okay, I see one more question over there. Hi, thanks for your talk. One question. How do you reconcile this with load balancing? Like if you've got multiple kitchens and you want to maybe when one kitchen goes wrong, load balance to other ones, and how do you make the circuit breaker interact with that? Yeah, for sure. I think in some sense they can be decoupled. If your circuit breaker is oriented on the client side of things, you maybe are completely unaware of load balancing. That's something that's secretly implemented on the back end. In cases where load balancers are doing their job, detecting unhealthy instances and removing them to a client, that looks just like everything is going well. So in those cases, the circuit breaker would not notice a problem because there isn't a problem. But it's a good sort of backup mode. Again, there are going to be plenty of other cases where maybe your load balancers are over eager. They remove everything from the back end, and now you're going to be really excited about having a circuit breaker in place still. Okay, I think that was it. Thank you very much. Thank you very much.


Don't judge me, you wanted nuclear revenge. // If you like cheating revenge stories from Reddit, you found the best place for your vengeful needs. When a wife cheats on her loyal husband, you might automatically view her with contempt or disdain. But in this story, your judgment will be tested. Secondly, a wife cheats on her husband, with 15 people. Followed by a monkey branching cheater, who grabs the wrong branch, with devastating consequences. Lastly, an affair between a cheating wife and her married lover, gets exposed professionally. Before we start, change the like button's email signature, by adding a rick rolled link to it. Naturally, viewer discretion is advised. These revenge stories, might be disturbing to cheaters.  I'm a 36-year-old male as of now. The characters have been a bit altered by their names. Rebecca is my 34-year-old ex-wife. So Rebecca and I were what you call college sweethearts. We survived college and what you can call, the hardships of young college life. Got married in our early 20s, I was 25, she was 23, ever since we got married, things were rocky from the start. Not from the start immediately, but situation-wise. I was in medical while she was an accounting major. There were things that was okay with me, but was not with her. Despite being married, she acted like she was a free birdie. I have to admit, I didn't saw it as a bad thing back then. So we had her 2016, and she joins a company as an accountant. I was happy because hey, it paid well, and the company owner was James, a college buddy of mine. Time goes by and instead of us growing closer, there was more tension building up. Slowly she started to complain about things that were in place. She didn't like where we lived, had problems with everything I did, stopped liking the food she used to be crazy about. I'm a great cook and she used to love my meals. Our fights intensified by the margin where she would call me names, that I'm good for nothing, that she earned more than me. This by itself could be classified as normal in most relationships, as most people have ups and downs. But if it stopped here, I wouldn't be sharing my story. It all changed when a drastic turn came up, when I got the word of our mutual friends, that Rebecca and James were hanging out with some of them. I found this strange. Why would she go and hang out with him? Why would they hang out together with some of our mutual friends, without me knowing? I confronted both of them, to which they both said it was just a sudden plan and it didn't include me, because I was out working. Coincidentally, it happened on the same day I was out of the city. They might have planned it beforehand, which I'm not sure of, so I think whatever. Next year, enter 2017, the year my marriage blew up. I was sure there was something fishy going on.  I was becoming increasingly paranoid and whenever I tried to address things, I was turned down. I'm not a saint, I started constantly yelling at her to tell me what was going on, because there was something off. Your favorite person in your life rarely talks or does stuff with you, and they claim it's nothing. Does this sound okay? It can't be normal. It should have been our best year, because we both paid off our student loans. We were making our peak financially and it should have been great for us. My friends and I, decided to open up a medical shop that provided medicine. Nothing too big, but as a side venture. One of the friends was Saladin. He proposed that we celebrated at a pub. When we go there, I notice a girl that looks exactly like Rebecca. It wasn't too alarming, but enough to catch my attention. The woman was dancing with another man and it was quite dark. I get a closer look, low and behold. It's Rebecca and James, dancing hand in hand. I could say I wasn't bothered much, because they're friends and colleagues, right? I'm there with my colleagues, she's there with hers. But of course it was bothering me. So I decided to send her a text, asking where she was, she's usually on her way home at this time. She told me, she was already at home. Now that was a red flag. A big red flag, like it's a communist parade.   She left the pub afterwards. I went home shortly after. On the way back home, I knew I wanted to ask her directly about James, so when I got home, I did. I asked her face to face about James. The look she gave me, was as if she saw a ghost, because she wasn't expecting that question. That look, told me something was definitely up. If you ask your significant other about a friend, they should act normally. The way she acted, was far away from normal. She mumbled and played it off, but as I heard her speak I knew for sure already. That night, I decided to snoop in her phone. The curiosity was killing me. We knew each other's passwords, but she changed hers. So I couldn't get in. I got it the next day while snooping. Don't judge me. I really needed to see it. There it was, walls and walls of texts. Countless questionable pictures, degrading comments, even calling him daddy. My wife and I made a vow to each other, that if there was ever anything we needed to explore, we would be transparent to each other. She broke that vow too. She confided in him, about how much of a thrill she felt that night at the pub. I went through everything. What hurt the most, was she herself told me if one of us ever got bored in the relationship, or needed to spice things up, we will let each other know. She destroyed everything. I couldn't look at her the way I used to anymore. I went to bed and just cried deep into the night. I want to tell you that I secretly came up with a master plan to ruin her, but I didn't. I was too angry and emotional. The next morning, I stupidly confronted her without any evidence in my hand. She yelled at me and stormed out after telling me I was abusive and insane. That afternoon, her friends created a messenger group where everyone ganged up to troll me. She apparently told all our friends that I was abusive. When she came home that night, she told me she was in love with James and wants a divorce. I asked her to talk it out first, but it turned into her berating me. I yelled at her, and she didn't think twice to call the cops. When they arrived I was asked to spend the night elsewhere. I went to my sisters and when I returned the next morning, James Carr was there. He spent the night here. You're kidding me? It was clear, there was nothing more that had to be explained. He was doing it on purpose. Hell, she was doing it on purpose. I went to see a lawyer. As we did not have a prenup, she already filed a complaint about me being abusive. It didn't look good for me. Not once did she try to apologize. Not once did she try to make amends. Our country law doesn't count infidelity as a fault. So even with that, she's entitled to half of my everything.  Few days after that, I'm lucky to be able to stay at my sister's house for the time being. I tried contacting Rebecca, but she won't reply to me. Until she hit me up, telling me we should get divorced. That's it. 12 years of relationship, 4 years of marriage and she ends it with a text. On top of that, I was convinced that James was taking my place. First time I saw her after that, she handed me the divorce papers. Everyone from our friend's circle was convinced that I was a freaking abuser, and James was her savior. She did the right thing to cheat on me. We were officially divorced during the start of 2018. She was already dating James openly during our divorce. As he was her life and she was doing way better without me. I lost my job, my house, my reputation and some of our mutual friends, all because of her affair and lies. I had to change the city to move someplace else to restart again. Saladin helped me massively in that fresh start. He got me a decent paying job that was nowhere like my previous one, but it was better than other options. We became closer buddies while I was working to earn back what I had. Dating life was over for me. I just couldn't trust anyone. It was a complete no communication between me and Rebecca. Last I heard was she moved in with James. They were doing great. Skip forward some time. End of 2020, my life was actually blowing up. The virus that hit the world forced us to work tirelessly with sore backs, but filled our pockets. Our pharmacy venture turned huge, so I was able to make good money. I met a friend of mine from whom I got a tip, that James and Rebecca were done. Totally unexpected to hear that her hero, James, cheated on her and left her stranded. He left her alone with a child that was surely his. Even worse, he was absent since the baby was born and didn't even sign the birth certificate to claim his child. So Rebecca is raising that child as a single parent. I heard she tried dating after James left, but she claimed she's still not over James, or me. The audacity of this woman. Part of me was happy with the aftermath. But gosh, I have to admit, I really missed to have her around. So the next part might make you cringe. But I sent her an email, asking how she was doing. She wasn't expecting to hear from me. We exchanged emails and reconnected. Our first meet was in 2021, after several years. When I saw her it came as a shock.  She gained weight, lost the charm she had about her, and looked utterly exhausted all the time. She told me about James and reopened the earlier wounds of her cheating and lies. I got a bit of closure, which made me feel a bit better, I guess. She said she was really sorry. She wasn't thinking straight about what she was doing to me. James poisoned her mind against me. Frankly, just her look alone, made my blood boil and triggered me into a mood for vengeance. It was obvious that Karma got to her already, and the hardship of life beat her down into the position she was in. It should have been enough. But remember the heads up at the start?  You can judge me, but I'm not here for that. I felt the need to take my revenge, and so I did. I wasn't done with her. I told her I would forgive her, if she comes clean to everyone and clears my name. She did that, losing a lot of friends. My name was clean and she took the hit, but she deserved it, because it's the truth. She wanted us to date again. Rekindle what we once had. In other words, force me to raise prick James' child. I told her I'm interested into starting over, but I could only agree if we would take it seriously. So we would need to start dating again and think about marriage first. Only then would I legally adopt her child.  Here is the ugly truth. I was already seeing someone. Pretty safe to say, I was cheating on that woman with Rebecca. She was a client of mine from a different country. We were in a long distance relationship. So we were dating, but not totally exclusive, if that makes sense. Her name is Lisa. Lisa was Saladin's cousin. I already told her about what happened beforehand. She was against my revenge idea, uncomfortable with helping me with my intense request. But I managed to convince her to help me. She understood that I needed to go through it. Rebecca and I were living in different cities, so I never moved in with her. But I played it well, by saying I need to travel a lot for business. So I was only getting Rebecca's hopes up, to crush her like she crushed me. The ugly thing is, we were actually being intimate, but we used protection. Rebecca truly felt she found love again. I pushed for her to go to therapy, to get her to deal with her issues. Everyone was commenting how she was becoming better and way more happy now she's with me. She would praise her luck, always followed by apologies aimed towards me. She would start doing things for me, that she did during the times when we were married and in bliss. Trust me when I say, I had a lot of emotions attached to this woman. I reconsidered my revenge, and had doubts about breaking her heart like I fantasized about. It would be bad, traumatizing for life kind of bad. But then I recall what she did to me when we were married. When we had made vows, that she broke.  She didn't reconsider about breaking my heart. So why should I think of hers? So I chose to continue. Her birthday was coming up last year October, lockdown was eased up and my someone, Lisa, was in my city. For the birthday gift, I invited Rebecca for ring shopping. She picked out her favorite ring and I got it wrapped. She was ecstatically happy. That night, she came up to me crying, repeating how sorry she was hurting me the way she did. She looked genuinely remorseful, but I had no feelings for her, except indifference. On Rebecca's birthday, I drove her to our favorite spot. The same spot where we married the first time. It's a beautiful place surrounded by nature. Lisa was already waiting there. So when we walked up to the spot, I introduced Lisa to Rebecca. I introduce her as my girlfriend. Rebecca went white, asking me what I mean by that. She asks what she is then. I then introduced her to Lisa as Rebecca, my ex-wife and friend with benefits. There and then, I proposed to Lisa with that same ring. Rebecca went apeshit and started yelling, to which I replied, how in the hell can she expect us to work out when she nuked everything? I could never date a dirtbag like her again. She repeats questioning if it all meant nothing. I answered by saying repeatedly, nope. The last moments we had, were just compensation. I got her to clear out the pain she put me through. Lisa was holding me back. She saw Rebecca was hurting. I firmly told Rebecca that she needed to leave, and she did. The aftermath. She repeated what she did before.  This time, I took it with pride. Everyone saw her for the dirtbag she was. She cheated on me and forced me to pay a high price by falsifying abuse claims. Then she wants me to raise her kid from her affair partner, as my own, and date her? The last we connected was in December of last year. She wrote me a letter on how sorry she is, because she can't imagine putting me through the pain that she already put me through. She hoped I live a better life. Last I heard, she was completely uninterested in dating. Looks didn't improve. As of me, you can guess it easily. Lisa and I stopped dating. There were other differences between us. Not just what happened. People who are saying I'm worse than my ex. Can you please, point out how I am worse than her? I loved her and she cheated on me. She cost me my home, my job, my image, my reputation and my friends. I was an abuser to everyone. I gave her a taste of her own medicine. Yes, I did by hurting someone else, but now I'm worse than her? I may emotionally scarred her. But that's what she did to me. I'm not looking for judgment. I'm sharing my revenge story, and this is nuclear revenge. I divorced my ex-wife over five years ago, for repeatedly cheating on me with over 13 different men and two women. To give you some background, my ex and I used to swing, until the last year of our marriage. Things had spiraled out of control, so I said that I was done swapping partners. Unfortunately, she didn't agree with me and kept hooking up with guys behind my back. Six months prior to our divorce, my oldest child was diagnosed with a life-threatening illness. I won't go into details to preserve my anonymity. She started to crack under the pressure and started to drink a lot, putting herself and our children in danger. It got so bad, that I moved out of the house for a couple of weeks and took our kids with me. During this time, her best friend, will call her Amy, approached me, because my ex had disclosed all of her dirty deeds to her at a girl's night out a couple of days ago. She disclosed that she had been sleeping with a new guy every single night, and getting intoxicated while she had the kids with her. She also told Amy that she went out one night a month ago, and left our three-year-old and four-year-old kids at home alone while they slept, so she could meet a guy. Amy said that my ex planned on filing for divorce, once she drained some additional money from me, while living rent-free in my home. Amy and I were both disgusted and knew that things had to come to an end. My ex hated living in the same house with me, because she truly hated me and couldn't go mess around with her flock of desperate simps. We had to come up with a plan to get her out of the house and document all of her poor behavior, so we could limit her custody of the children. Step 1, I moved my happy ass back into the house and plopped down on the bed, right next to her. She lost her mind, saying that she wanted me out of the house now, and would call the police if I didn't comply. What she didn't know, was that I was recording the audio of our conversation. I told her to pound sand and she called the cops, reporting me for domestic violence. Well, the police showed up in no time and had me in cuffs so fast, it made my head spin. The detective came to the squad car to talk to me and I let him listen to the recording. The longer he listened, the more his anger towards my wife grew. Before long, we switched positions and she ended up being the one in cuffs. They put her in the squad car and she got to spend the night in jail. She went to stay with Amy for the next week as she wasn't allowed back at our house. I got a restraining order. During this week, she went on a veritable spending spree buying herself a new laptop, new iPhone, full retail price, and a new wardrobe. She drained our bank account and started to dip into my savings. Amy also confirmed that she was drinking heavily at her house, to the point that she threw up and defecated on herself all over her bathroom. Amy video recorded her bender for posterity's sake and provided me with 20 minutes of video showing a woman out of control drunk. The next day I went and withdrew all of our money from the savings account and deposited them in my new bank account, so I would have money to pay the bills. I closed that account, so she couldn't use overdraft protection and leave me on the hook for the overages. I closed all of our joint credit cards and transferred all of my investment accounts into an account, solely in my name. She found out. Truth be told, she lost it when she found out that she had no money to burn through anymore. She told Amy that she was contemplating to hurt herself, because things had gotten so bad. I despised my ex, but I didn't want to see her harm herself at all. Amy convinced her that she needed some help, and went with her to check into an inpatient mental hospital. This worked out fantastic because she was getting the help she needed, but it also showed that she was a danger to herself and the kids. It was time to put the last part of our plan into action, and seal the deal. I went for a consult at my attorney to start the divorce proceedings and complete the needed paperwork. My attorney was appalled at the actions of my ex, and was 100% on board with helping me get primary custody. He filed my divorce decree, and also got the judge to agree to a temporary restraining order until our initial hearing. We served her the papers while she was in the hospital, and set the initial hearing for two weeks. The initial hearing came and she showed up with her attorney. Since it was a pre-litigation hearing, they didn't know what information we had. She got on the stand and started lying her heart out, telling the judge how abusive I was, and that is what pushed her into the mental hospital. She made a very compelling case, and even put on a Grammy award-winning act. But then, it was my turn. My attorney presented all of the evidence, even consisting out of videos and bank records. The defining moment was when my attorney called Amy to the stand to testify.   My ex couldn't close her mouth the whole time while Amy was on the stand.  When the dust settled, I was awarded sole custody, and she was awarded supervised visitation until she went to rehab and got additional treatment. We quickly settled out of court agreeing to a graduated visitation schedule once she complied with rehab and mental health counseling. I got the house, after paying her a portion of the equity, got to keep all of my investment accounts, and get to see my kids 80% of the time.  Life is pretty good five years down the road, and is even better knowing that she isn't my problem anymore. This happened between me and my ex. I'm a 25-year-old male, she's a 24-year-old female. I'll keep it short, but provide you only with the most important details. To start, the first month was amazing, like a dream relationship, we had been friends for a while before she suddenly confessed her feelings towards me. I had hid my feelings, as we were meant to only be friends, so I jumped at the opportunity to reciprocate and state the feelings I had for her. The second month was not as bad, only having a single argument as she invited her neighbor over, to what was supposed to be a date between us. After a good talk, we sorted it out and made up. The third month was when the problem started. We had planned out a date, which was planned on the Saturday, as she couldn't be there for the initial date we set on Friday, as she had to work that day. I understood and changed the date of the booking at the special restaurant. I hadn't told her anything about this restaurant, as I wanted it to be a surprise, instead of the usual home movie. So I asked her to keep that day clear, and to dress well for the date, that would be extra special. So the day comes up, and only an hour before the date she texts me, saying that she won't be there tonight, as she was going to see a movie with a casual friend. I was honestly furious, as I had already paid the pre-booking fee and told her over a week in advance. I tried to call her, but her phone was turned off. I called her best friend and he had no idea what was happening either. The next morning, I talked to her and she starts arguing with me, saying I should have told her it was a special restaurant date. After about an hour of arguing, she finally admitted that she was in the wrong for what she did. I accepted her apology, and we took a day as a break to calm and clear any bad feelings from the situation. After that, the relationship started to decline, I stayed the same, but she started to get more and more distant. Eventually after three weeks of no intimacy, not even kisses, I confronted her, asking what's going on. She says she needs a week to think and wanted to be single for that. I told her I don't mind taking a break if that's what she needs, but I don't see why being single is needed for that. She argued that it's for her freedom, and I realized it was for another guy. So we broke up. But then she starts spreading lies about why we broke up to other people. Telling them I was cheating and being abusive towards her. Thankfully, the friends she spread it to wouldn't believe her as we had all known each other for years, her being introduced to them through me. Her best friend had tried to defend me and she had blocked him for it. But he knew her friend group and through them, we discovered the truth. Apparently, she had been cheating the last three weeks of the relationship. Remember the casual friend she went to the movies with? It was a tinder hookup. And she tried starting a relationship with him as soon as we broke up. To nobody's surprise, he wasn't interested and stopped contact by blocking her. The guy had recorded them having sexy time and uploaded it to adult sites. The theme of this video was that she was cheating during it. So you can imagine that the scandal forced her to drop out of university, as it spread like wildfire. Then I decided I wanted my revenge, it wasn't much as I knew her parents and were really close, they knew nothing that was going on and assumed we just broke up. Her parents though, are super religious, along with her grandmother. So although painful, I found the links to the videos, yes it's plural. I downloaded them and took screenshots of the breakup between us. Then I contacted her family, saying that I had something I wanted to share, created a group chat with her parents, grandmother and ex best friend. Then I unloaded all screenshots and videos, along with a text message explaining everything that's happened. There was no contact for about a week, then her ex best friend filled me in on the situation. She had lost her scholarship due to dropping out of university. Her grandmother, after seeing the proof, cut her from the will and disowned her. Her parents followed by evicting her from the house as well as support being cut off. She now works a minimum wage job and sharing a home with friends to make ends meet. Had been dating this girl for almost seven years. During which we lived together for six. My line of work was electronic consulting, setting up systems with tons of sensors. Good money, but a lot of travel hours. Just setting the stage here. Anyhow, at one point got the feeling that something was off. Nothing I could put my finger on, but a gut feeling. I'm pretty good in following my gut feelings, so I decided to put some proof in the pudding. While she was out, I had placed a sound activated recorder in each room of the condo. Very small device as the storage was on my office PC. This was done on a Friday afternoon. Spent the weekend with her and had a good time. Sunday night, before bed, I took my luggage and tools out to my car and also popped a GPS tracker on her car. Left the next morning and headed to my next site. The plan was that I was supposed to be away for two weeks. I talked to her daily for the first week, the second week was really hit and miss. Times that she was normally home I would call, and it would go to voicemail. I would ask her about it when I spoke to her again and I got quite a few excuses, work meetings, late dinners, helping her brother, etc. Two weeks end and I come home, head almost immediately to my office. I see a ton of activity on the recorders during the first week, and barely anything the second, save a loud vehicle driving by. So I go back to the first week's recordings and find that she is talking. She was talking to some guy on her phone. To make it even better, she has it on speaker, so I get to hear both sides of the call. Turns out, she has been cheating from pretty much day one of our relationship. So I decided right then and there, revenge was in order. I had to find out who this guy was. Through some sleuthing I found out she met this guy, his wife and family, at a campground she worked at before I met her. Found out where they lived and then checked phone records. This being a few years back, people still had house phones, so I looked up the number. Great, it's listed. I called the number and a guy answered the phone. I was prepared for this, so in a professional voice asked to speak to Mrs. Smith. He yelled for her and a woman got on the phone. I asked her if she knew, my soon to be ex, girlfriend. She said yes, that they had invited her to their house a few times after meeting her at the campground. Wow, that was news to me. I told her we couldn't speak in detail right now, but if she would call me back when she was free to talk, I'd explain everything. I gave her my cell number and hoped that she would be curious enough to call. Sure enough, two days later she called. I explained everything that I had recorded. At first she was very skeptical. I told her that I would make a copy of the recording and send it to her. She said okay, but still was skeptical. So my work was set in motion. I went to a local recording studio along with the files and explained what I needed. They took all of the separate recordings and put them together, so when she wandered through the house, it picked up from the different recordings to make the conversation complete. They then burnt these audio recordings to CD, it took five CDs to cover it all. I then mailed the CDs to Mrs. Smith, registered mail. Then I waited. About 10 days go by. She finally calls me, she's very calm. She tells me that the day before, she went and filed divorce papers. Her husband works on an oil rig, and he's out on the rig for the next two weeks. After she listened to the CDs I sent her, she gave them to her lawyer. Mr.  She made it clear that she was going for half. I got off the phone laughing to myself. Couldn't happen to a nicer guy, after the things I heard on those recordings. During all this time, I never said a word to my girlfriend. I acted as normal as possible. In fact, I still left the tracker on her car. I didn't think that would produce anything. Things were quiet for another week.  My girlfriend was wandering around the house like she was lost. I asked her what was wrong, and she told me a friend of hers was getting a divorce. I said that's a shame and went about my business. That evening, she was out on the deck talking to someone on the phone. I didn't really pay attention, except for the fact that every so often she was raising her voice. Phone call ends. She comes back in and goes straight back to the bedroom.  I ask her what she's doing and get no reply. She finishes packing and walks out to her car, throws the suitcases in and leaves. Two weeks go by and not a word from her. I got a call from Mrs. Smith and she updated me on her world. She had her husband served with the papers and infidelity was the reason. He denied of course, but she was able to throw details that she said stopped him dead in his tracks. She confirmed the phone call that my girlfriend had the night she left, was with her. She said she never raised her voice, but my, now ex, girlfriend tried swearing up and down that nothing ever happened. Mrs. Smith then put out some details to my girlfriend, enough to let her know she was caught. Mrs. Smith implied that she found out on her own, and her next step was going to be, that she was about to tell me. This is why my cheating girlfriend left so quickly. So, this leaves my handling of the cheaty girlfriend. Credit card, gone. Car, I called to have repossessed.  Insurance, canceled, all of her belongings left behind, were sent by movers to her dad's house along with a note for the reason. By the way, he lives two states away. We lived in a condo, so I arranged for it to be shown for sublease. I was packed and moved in four days. New condo, gated community with guard shack.  They got it while she was at work. Dealership worked with me on selling the car and I just paid the difference. Mrs. Smith did win her divorce decree and got her half. Mr. Cheater aka Mr. Smith, never counted on anything, too worried about his company finding out the dirty secrets. Never heard from the ex ever again. You stay till the end, which means you're the one I make these episodes for. I want to take this moment to thank you, I really appreciate you, because you bring me a great amount of joy. Subscribe for future uploads and show your vengeful devotion, by tickling the like button, without mercy. Do you have any experiences surrounding the topic of this episode? Share yours below, I'll join the conversation. And I'll be seeing you, in the next one.


Hello, welcome back. Today we will discuss little bit different topic which we were thinking to discuss at the beginning but postponed it, ok. So, today's focus will be on pumps and channels. You must be wondering how a particular metal ion is gated to the cell, how cells are able to take the metal ions inside it or able to expel from inside to outside. Well, let me tell you that it is done by pumps and channels. Pumps as you know will require some sort of external force that means forcefully it will be taking out or taking in a particular metal. Channels are those where it is passed through a let us say cell membrane but without an external energy put on it or set on it. We will see that pumps are of course energy driven channels are more of a natural, more of present in many places but works very seemingly simple way. We will try to focus on both pumps and channels throughout this class today. Well, as I was saying pumps are involved in active transport. This is energy or ATP driven. Channels are passive transport facilitated by diffusion. You may have already noticed inside our cell different metal centers are present. These metal center could be or metal ions could be sodium, potassium, calcium or other anions such as chloride. But if you notice that extracellular concentration and intracellular concentrations are completely different. So, outside sodium is present in large concentration but inside it is present in very low concentration. On the other hand, potassium a outside is present in very little amount but inside it is inside the cell it is quite high amount. Similarly, calcium is present largely outside but inside concentration is very less. So, we will try to see how ions concentration are controlled in the means of pumps and channels so that ion can pass through the membrane and can maintain a particular concentration that is good for our body. Well, let us see this process of taking sodium outside the cell. So, let us say sodium is present in some amount inside the cell as you have seen sodium is present very little amount inside the cell maybe it is not too much required and that is why we are trying to see how the intracellular concentration can be decreased for sodium and taking them from inside the cell to outside the cell how it is happening through pumps. So, as I said pumps are energy driven process some energy is involved into the process overall there is a site in the membrane where sodium can bind as you see over here we are depicting 3 sodium binding in this pocket and overall ATP is converted to ADP and then phosphate is bound with this pocket. Now, the sodium binding will subsequently so this energy driven process will cause the aversion of this pocket to throw this sodium outside the cell release of sodium plus will then happen overall to ensure that sodium goes outside the cell from inside the cell. So, sodium was inside the cell through this pumping it goes outside the cell, but of course the cost is in the form of ATP to ADP and phosphate generation overall this energy driven process makes sure that sodium is launched or placed outside the cell. This pocket then combined with potassium 2 of the potassium gets in the cell through once again by dephosphorylation catching and releasing inside the cell. So, this is a cycle that goes on quite very well because sodium is required more on the outside not too much required inside, but potassium is required more in the inside. This process of pumping in potassium and pumping out sodium goes on quite seemingly well with the help of this ATP driven process. Therefore, this is a good pump it is just pumping out the sodium and taking in the potassium. There is similar pump for calcium also of course you can call it as calcium pump. This is the cell exterior and this is cell interior overall you have aspartate 351 which is the ATP binding site ATP mines over there in the pocket and calcium gets in to this cavity where in ATP cleavage and the phosphoryl transfer to aspartate 51 on the enzyme this aspartate 51 phosphate transfer upon binding of ATP will lead to the ADP and phosphate generation and this energy driven process then will start to rupture or to release the calcium outside the cell. So, both the ATP release and evasion happens of the enzyme to release calcium ok. So, this is the enzyme that is involved overall this enzyme helps us pumping out calcium from inside the cell to the outside of the cell. This hydrolysis of the aspartate PI residue also takes place wherein the water will assist in this dephosphorylation reactions overall then this is getting ready once again to bind the calcium. So, evasion happens once again to prepare binding more calcium 2 plus into this pocket and the process goes on it is almost a catalytic cycle and calcium is pumped from inside the cell to the outside the cell by this ATP driven process. You can read more from the book, but these sort of pumping out of calcium is quite important for the physiological function. Well, as we have discussed not the not transport of every metal ions or incorporation of every metal ions are done through the pumps. It is a very high energy demanding process it is a little bit hectic process, but the diffusion control process which are rather simple no energy is lost in the process and rather happening quite naturally and quite importantly everywhere it is happening and we have now understanding of these processes how these diffusions are happening. So, these are the protein residues as you see that they can assemble in such a way so that a whole or passage way can be created. So, these overall orientation gives rise to this passage through which perhaps different metal ions can be passed through, but more importantly how this passage is controlling a particular metal passage only, but not allowing other metal to pass through this is quite interesting to know. These are the single subunit, these are multiple subunit put together and making the whole channel for a particular metal ion. So, this is the one with the potassium channel and many X-ray structures are the reason why we perhaps started understanding this channel quite effectively and these are quite active areas of research and quite fascinating areas of the science. So, here is the cross section or the inner view of this selective potassium channeling or this is the particular channel through which potassium will pass through. Potassium plus from inside the cell we are going to get it outside the cell, but this is not through a pump this is by simple diffusion. As you can see the passage is wide in some case and very narrow in some phase. So, if you have a very narrow passage this ensures that the bigger metal ion will not be passing through this narrow passage. So, one can perhaps think of the average radii if radius is something like 1.5 angstrom this channel will not be able to pass those metal ions. If it is much smaller or smaller than this 1.5 angstrom then there is a possibility that they can pass through although you see that there are further narrower passage among this or inside this channel. So, there is every chance that the metal which are only having much less than 1.5 angstrom radius will pass through this narrow phase of the channel. On the other hand the large distance ok from inside cell to outside cell nearly 30 nearly this should be nearly 22 angstrom distance can be travelled by many different metal even the bigger one because as you see here the diameter is quite high. So, the metal ion such as all lithium, sodium, potassium, rubidium, cesium all perhaps can pass through this channel. Now, the question is then how the selectivity is obtained in these cases. So, one case that we have discussed so far that the bigger ions will get stuck here and therefore, they will not be able to pass through. The smaller ions will pass through all these, these and that also. For example, lithium and sodium is smaller than potassium, but why lithium and sodium is not passing all the way from inside the cell to outside the cell through this channel of potassium. Why show specific, why is it so specific for potassium, but sodium and sodium and lithium cannot pass through this channel. Well, I think that is a very difficult question to answer at the beginning, but the relentless studies many crystal structure and significant contribution from many different research group has now obtained an answer for this. Once again the bigger one will be eliminated naturally because of the narrow passage and smaller one should in principle all be passed through this, but not really only the medium size potassium goes through, but lithium and sodium cannot even pass through although size wise they fit perfectly to pass through. Let us try to look at what is the selectivity factor that governs or that controls this sort of lithium, sodium passage or prevents their passage and allows only potassium passage. As you can see the size of rubidium and cesium are quite high, the radius is nearly 1.5 or higher, so these will be excluded by default due to those smaller passage. Lithium and sodium are small, very small compared to potassium, but still they cannot pass through and this is mainly due to the fact that the hydration free energy or the hydration energy of lithium and sodium are quite high, so for example, 410 and 301, so while they are getting hydrated they want to stay hydrated. They do not want to go through this passage because during passing through some of the water molecule has to be displaced and the metal has to interact with the protein backbone. For instance when potassium is passing through this channel, the protein residue from this protein backbone different amino acid backbone, this peptide backbone or amino acid residues will be interacting with the potassium center and that is what is happening here as you can see making the life for potassium is as it is passing through, but of course potassium has to lose if it is interacting with 4 different center with the peptide backbone, so it has to lose 4 water molecule. After losing 4 water molecule then only this sort of interaction will be possible and it will be possible to make them pass through this. Now losing such water molecule is feasible for potassium because the hydration free energy is relatively less, so losing the water molecule and re-bonding with the peptide backbone is compensated for the dehydration energy, so the bond breaking from the water potassium aqua complex and removal of water from the potassium aqua complex is ok because these new bonding can compensate those hydration free energy loss. On the other hand for lithium and sodium since this hydration free energy is quite high water molecule from lithium and sodium would not like to drop off from the lithium and sodium primary coordination sphere and therefore they would like to stay as lithium aqua complex and sodium aqua complex which is having the large radius compared to of course these are ionic radius for free lithium and potassium with aqua molecule it becomes very big unless it can lose out those water pretty easily and can interact with these protein backbone in this channel it will not be possible for the metal ions to pass through and this is precisely the reason why we see potassium ion selectivity, so there is another thing, so this is hexa aqua sodium as you see the desolvation energy is pretty high means meaning if you want to remove these let us say 4 of the water molecule from here the desolvation energy will be this much. The energy gained due to the protein backbone interaction with the metal ion at the cost of these 4 water molecule is not that very high as you can see only this much. If it was able to compensate this amount then only potassium would have been sorry sodium would have been able to go through the channel. So, this is really a wonderful design by nature which ensures despite lithium and sodium being smaller in size, but having higher dehydration energy prevents them in participating these interaction with the protein backbone and therefore, if their effective size becomes much higher than the than what one of their atomic radii would give rise to. The size cannot be shortened because these water molecule cannot be released therefore, we see that potassium having higher atomic radii, but easier ability to remove these water molecule because the hydration energy is less and therefore, we see that selectively potassium ion can go through this channel. Let us get back again rubidium and cesium cannot pass through some part of the channel because there is very small aperture or very small opening and therefore, it cannot it cannot pass through it gets stuck. Lithium and sodium in principle should pass through very easily, but they are incapable of losing their water molecule since they have high hydration free energy. Lithium on the other hand is in the middle which has moderate hydration energy and moderate size which is perfectly matching for this passage through the channel and the size is absolutely fantastic provided it can lose out the water molecule and can interact with this protein residue which is feasible in this case, but not feasible with lithium and sodium therefore, they are missing out the fund of passing through this potassium channel. So, the selectivity can be answered by this way however, if that is the case why show effectively potassium ion of course, selectivity factor we now understand perhaps, but why potassium ion passes is so fast and so effective. So, not only high selectivity, but still a rapid flow can be maintained why is that and this is precisely due to the repulsion among the potassium ion that is quite interesting. So, a cationic potassium will ripple each other right same charges ripple with each other. So, let us say cell interior have this 4 potassium ion they want to pass through the channel. So, one of them will diffuse through this channel it will start diffusing it comes over here, but you know this process may be slow to pass through this channel. And this is when the second potassium ion which is also trying to get through this channel will come into the picture they will repeal each other as soon as the potassium is trying to approach this potassium channel, this channel. This repulsion among this potassium ion will ensure that this potassium which is already in the channel gets repealed and passed in because of the repulsion it gets it throws off each other. So, this potassium will be moved in and then that will create a vacancy for the next potassium ion. If that is the case if there is a vacancy in the next potassium ion which is in the queue for diffusion can get in right. Now, since they are now very close to each other once again they repeal each other. And the first potassium ion then can move one place further to go little bit more up. In this situation another third potassium comes in who wants to get in and then ends up repealing this second potassium and therefore, the second potassium moves inside and then also repeal this one and that move in. So, see systematically the first potassium is now very close to be out of the cell. Now once again the next potassium comes in it repels each other it goes up and during this process the repulsion of this second potassium with the first potassium causes this first potassium to come out and that is how from cell interior to cell exterior a potassium ion can move out. So what you have just seen is nature's beautiful architecture by which a potassium ion not only can be selectively passed through this channel, but ensures that a rapid flow of potassium ion is possible. So overall what we have seen then pumps can be very effective in delivering or taking out a particular metal from inside the cell to the outside the cell or it can take a particular metal ion from outside the cell to the inside of the cell. These are energy driven process ATP driven process, but perhaps a most desirable mode of ion passage could be those through channel. We have seen here how potassium ion is the winner among many different metal ions that is present let us say inside the cell. How potassium ion being larger in size compared to lithium and sodium still can passage through a narrow channel whereas, lithium and sodium being smaller still cannot go through it. Rubidium cesium which are larger in size compared to potassium obviously get stuck or get prevented or cannot approach due to the narrow passage of the channel. The main reason behind lithium and sodium inability to pass through this channel as we have seen is really the dehydration energy. Since their since their hydration energy is quite high they love to keep the water with them. They do not want to get rid of the water and therefore, their effective volume is quite big and cannot pass through the channel. During the passage through the channel one needs to ensure that those metal ions are able to interact with the channel backbone. That interaction requires some of the water molecule to get dissociated from the metal ions which is not becoming feasible for lithium and sodium. On the other hand potassium being perfect in size and also are in a position where they can lose the water molecule of course, they lose some energy, but the gain of energy due to the bonding from the protein backbone of the channel ensure that it can compensate those loss due to the water release. This compensation and the perfect matching of energy and the size ensure that only potassium can pass through the potassium channel. This does explain why there is a selectivity for potassium, but this does not explain why so rapidly potassium can pass through the channel and this is precisely due to the fact as we see over here that there is a repulsion among the same charge such as potassium in this case. This repulsion causes the potassium to step wise move out from the inside the cell through the channel. The same charge repulsion is quite effective and can be a particular reason why we get the rapid flow, alright. Keep studying will come back soon in the next class we will try to summarize the metal activities those metal chemistry that we have discussed so far, we will try to summarize to make it easy for you for the example purpose. I hope you are enjoying please do study more from the book of Leopards and Bug, Leopards and Bug you can read from any other book of your choice, but please keep studying and try to understand the principle behind this bioinorganic chemistry. If you have any questions or queries please do not feel shy stop by send an email or ask a question to TA or to me directly thank you very much.