So in an effort to bring role models onto my channel, I'm really excited to have two special people tonight to share their story about their relationship. It's Sabrina Rising and Beau Bowker. These are both coaches of mine. So these are people that I not only trust for my own, you know, well-being and growth. These are people that I invite in today. So Sabrina and Beau, welcome to being on the channel. Thank you, Jonathan, thank you for having us. Thank you so much, Jonathan. It's an honor and a pleasure to be here. Yeah, we're gonna talk about what it takes to build a healthy relationship and more important, how to manifest a conscious relationship. So let me just be clear, the two of you are in a committed relationship, is that right? Right? Yeah. Yes, yes. In case this is a situation ship or a casual relationship. I mean, it's serious, right? Oh, it's serious. Yeah. Oh, I like that the guy said, yeah, it's serious, you know? Okay, so when did you two meet and how did you meet? Well, we met in the summer and- We first met in April, in spring, right? Yeah. Oh, okay. We met at an event, a gathering for healers in our community. And Bo was facilitating a portion of that day and I was a participant. And so we just met, it was, you know, very amicable. And things, it didn't turn into something until, you know, I think it was June. Yeah. June. Yeah, June, where we, it was supposed to be sort of a casual meetup, you know, Bo had his children and I had my daughter and we went to a festival called VegFest. Here. VegFest? Yeah. Here. And we were, you know, we're just supposed to say hi and, you know, run into each other and it was gonna be really amicable and nothing more than that. And then it turned into a whole day of blended family fun. Our children really hit it off. They clicked immediately. And of course, I think there was a little anticipation of seeing each other as well. Oh yeah, absolutely. I think that was already present, you know?  It was really natural, really flow full, really easy for us to just kind of, you know, join together and spend the whole day.  In particular, you guys met at a workshop. So it was something where you both had a mutual interest in it, you know? And I know my audience and I know so many people are so desirous of like, I wish we could meet organically. I'm getting tired of this online dating way of connecting. So it's great to hear this story. And as I said a moment ago, the two of you met through a shared, like not just a shared experience because you were speaking at it and you were visiting it and stuff like that. But this is also a passion of yours too. This isn't just something, you were just going to some wellness workshop. This is something that the two of you live. Is that right? 100%. I always knew that I would meet the person that I meant to be with while I was doing something that I truly, truly love. It's something that was in alignment not only with the things that bring me joy, but part of what is my value system. And so it was the experience that I had when I met Bo. Yeah, same for me. When I came out of my marriage a couple of years ago, I was like, oh, what do I do now? I've changed so much. My vibration has raised, my frequency has raised. And I'm not going to meet someone at a bar like I did before I was married, you know? Yeah. Yeah, what's that going to be like? Where do I go? And I was like, oh, I'm just going to follow the things that I love and continue to follow my heart. And because I was participating in more high vibrational things, things that aligned with my passion, I knew that it was going to happen at a place like a, it's like I'm going to meet them at a yoga studio or an event, something like that, you know? I think it's an important message for people. Like you meet the person you love doing something you love. Yeah. Really important. I find that often people are disconnected from what they truly love or what truly brings them joy and so on. And I think as you mentioned earlier in the online dating world, sometimes we're so focused on creating that experience of love externally that oftentimes online dating can be disappointing in the type of results that it creates for people. Well, certainly, and certainly I'm in absolute agreement at the same time it happens to be the number one portal people are meeting. And I think one of the critical things is that, you know, that shared passion like the two of you have in personal development, self-help, spirituality, that's certainly something that I'm a desirous of. And it's important to vet people based on not just whether or not you like sushi or you like pickleball, you know? It's more about the form, pardon me, what's that? We have to go deeper for sure. Yeah, we have to go deeper. So, okay, so you guys, your first, you started dating in June, when did you officially become boyfriend and girlfriend? I think- Like, did it happen June 2nd? That's pretty much. It happened on our first date, I think. Yeah. Our first date was with the kids. That was our first sort of encounter. Our accidental date. Our accidental date, exactly. Which I think was really profound because it was, I think it was very reassuring for us to see that our children already really got along and there was a connection there. So that, for anybody who's a single parent out there, that's very meaningful, you know?  So, yeah, so that was important for us. And then we had our solo date, about a week later. Yes, they invited Sabrina over for some cacao, which is like a chocolatey plant medicine drink that I serve in ceremonies. And it's very dear to me. It's very heart-opening. It's very grounded. And yeah, we came together in my place. We were trying to figure out like, where are we gonna do it? I didn't wanna have her over to my place at the time. I was like, oh, I'm sort of embarrassed. But I just kept letting it go. I was like, it's all gonna happen perfectly. It's all gonna happen perfectly. Whatever happens, it's how it's meant to go. And so she ended up coming over to my house and you think, all right, we're gonna have cacao for probably two hours.  It's a wonderful way to really go deeper, yeah, right away with somebody, whether it's a friend or a potential love connection. And we were together for nine hours, 10 hours, 10. Okay. Now, some people would say, now some people would say that's really fast and that's way too much time.  And since you mentioned cacao, I just wanna share with everybody a couple things. Cacao is spelled C-A-C-A-O. If you wanna Google it, it's chocolate, but it's a high concentrate of chocolate. And chocolate has some very unique properties in it. I said it, from what I understand, it's almost the equivalent of like the love drug, if you will. Looking along that lines. For everybody watching, I just want you to know, Bo came to my home one day, we did a meditation ceremony centered around cacao. So I, and we'll be putting a link later to learn more about this because, this particular, whether we call it medicine or drink or can't think of what else I would call it, is very, has a very profound experience.  What I wanna, what I believe happened based on what you've shared with me is, the two of you made a commitment to explore a relationship together. Like, in other words, that's what that was. You know, it's a commitment to say, hey, look, I wanna explore a relationship with you, you wanna explore, let's explore this and see where it takes us. Is that close to what kind of happened or did it something different happen? Yeah, I mean, I liked, can I answer this? I like to say that we didn't fall in love, we met in love. Okay. And the reason I think that that's so important is because when we do the work to heal ourselves and to sort of prepare ourselves for love, for the kind of love we want in our lives, then, you know, we become more loving. We start to embody love. And then you can recognize that love in another person that's also done that kind of work. And so when two people that are already embodying love and practicing loving themselves actively, you know, every day, meet in that space, it becomes, you know, very magnetic. We recognize each other in love, right? And so there's a recognition of like, oh, you have done work and I have done work and here's where we are and we have this now common language and we can meet in all these amazing places. And, you know, it was only a matter of moments before so many synchronicities started happening and like similar interests and similar likes and similar paths. And even though Beau's spiritual journey looks different than mine, you know, we've sort of met in that place of readiness. And I think that's really important to denote. It's not like we met or like, hmm, let me figure this out. You know, it's not like the ego is present. Yeah. You know, here's all the things that I'm afraid of, right? I don't, that wasn't present for me. Well, and the other thing is too, anything that did come up, any fear that did come up, we explored it together openly. Okay. And I think we had both kind of done enough work and knew ourselves enough. And immediately just being able to see one another enough to know that we could trust one another, you know? Okay. I mean, I felt very quickly, based on what she was sharing, the way she held herself, the way, I could just tell that she loved her. Well, let me, and I apologize for jumping in because I get so anxious. There's like, I want to go question after question after question.  And a question I want to ask both of you in a moment would be how you each individually show, showed up to each other. But I think it's really important to address what work, when we say the word work, what did you do individually? And I want to hear from both Sabrina and Bo, or what did you do to prepare yourself so you could be in this kind of relationship because that's what work means. It's like you do this before you meet your beloved so you can enter into love, or as you said, walk into love with a more profound experience. So would you be open to sharing what you did each individually? Oh my goodness, I mean, it started from the beginning of my life, you know. Let's not go that far back. No, no, no, but what I mean is, you know, all of my experiences of loving and losing, that was all preparing me also. It wasn't just about, right, doing the work and exploring things. It was about getting into relationships, making mistakes, you know, falling in love so quickly, things like that, you know. And then having the presence of mind and the sense of self to later look at all that and learn from it, you know. And, you know, I think that for me, breathwork has been huge. Journaling, writing has been huge for me. Sitting with Kakao, which again is like a meditative process, where I've just been able to deal with my own feelings, recognize where I was blocked around love, look at my past relationships and say, okay, this was my part in that, you know. This is where I tripped us all up, right. And they had their own part as well. And this is what I did and this is what I can take responsibility for. And this is what I need to let go of. My stories about fear of abandonment, you know. Fear of not being enough, being self-conscious to fully express what I was feeling and what was on my heart. Letting go of all those blocks that were really just holding me back from expressing and receiving love.  I want to share with you something. You know, what you're hearing is a man who went introspective. He took, like he, in those own words, he took ownership in his part of all his past experiences. And he did work to prepare himself for something. Now, I know many of you might think that's rare. I'm going to tell you there are a lot more men out there that do this, okay? For those of you who don't believe it, I know my own journey took me down Mr. Toad's Wild Ride, much of Roller Coaster, quite frankly. But it is through these experience that we men can show up I want to say for, as a king to our queen, if you will, or our God to our goddess kind of thing. Sabrina, what about you? What did you do to prepare for Bo? So, I mean, so much. I think, so I echo a lot of what Bo said in terms of really taking inventory of some of the past relationships that I had been in and what I had co-created. I am a huge advocate for NBC as you know from my work together. Let's go with everybody what that means. NBC means non-violent communication and it's a modality which invites us to really examine what our needs are. And so I took, I spent a lot of time really, there it is, everyone should read it. So, I spent a lot of time really identifying what my needs were. And it took me a long time for anybody watching to really even be aware that I had needs, right? I mean, having been raised in an environment where what was modeled for me was sacrificing myself to make other people happy, betraying my own natural impulses, my own, what I felt was right for me in order to acquiesce the people around me, acquiesce to the people around me. So just really learning to identify what was important for me and taking ownership of that, really setting that standard for myself. I remember the moment when I had, I was in a relationship previous to meeting Bo and I remember the moment when I made that decision to sort of let that go completely and really just open up my heart to something that could really meet all of my needs. And I remember that moment of manifestation if you will, it was like sort of a conversation with God or nature or the universe or whatever you refer to it as, but really being in deep dialogue with this higher power and just like calling in an experience of partnership where I felt like I could be met in all of the areas where I knew that I had never been met before, right? So really I identify what those needs are and being aware of our needs is so important, right? Because oftentimes what happens is we meet someone that we like or that we're attracted to when some of our needs are met and that's great and we stop there, you know, we just kind of like hope that the rest falls into place and it really doesn't work that way. Or we bargain and we say, oh, I can go without that. That's gonna be fine. Right. And so, you know, as far as conscious partnership is concerned, part of being conscious is being consciously aware of what you need and want in a relationship, what needs to be in place in order for there to be sustainable long-term fulfillment and what has to be there in order for two people to wanna grow together, right? And so just to be aware of what my own needs were and putting that out into the universe, I believe help pave the way for us to sort of meet in love as I mentioned earlier. So I wanna share with you something Sabrina in particular, cause you're my coach, you know? I had an interesting awareness. You might get a kick out of this. So, you know, much of the work as a coach I help women uncover their needs or what their true desires are in relationship and to concretize it by putting it in writing. Well, it occurred to me that most people's desires in the form of relationship is somewhat nebulous. It's in their mind, it's floating. It's not concretized. And just like a dream, you know, one of my things I've been doing lately is writing down my dreams. And what's fascinating to me is I can go back a week or two or three weeks later and I can read it and I literally remember the dream.  And when you write it down, it becomes more of a magnetic amplifier to what you want. Which is- If I can just add one more sip, please. Yeah, please. That I think is really important too. The things that we identify that we need or whatever our desires want, if you're creating a little manifestation checklist on your ideal partner, I think it's really important to be able to embody those things. Yes, oh yeah, yes. We should just make a wish list and then feel like unworthy of that person. You know, like there's a part of us even subconsciously that feels like if this person shows up, I don't know what I would ever do with them, right? Like it's important to be able to really show up, you know, as the things that it is that we are asking, right? Like I knew, you know, that I wanted someone who could show up in the same way I do. I want someone who can show up in the same way that I can show up, who can give what I give, right? And so making sure that we are asking and opening ourselves up to something that we fully embody has integrity. It brings integrity to the process and authenticity to the process. Yes, and it reminds me of something that I left out that's like the biggest piece for me. I started loving myself. That's how I made room to have Sabrina come into my life. Yeah. I started, yeah, self love. And you know, it's such a buzz term, but it's the truth. And that's what Sabrina's talking about is love yourself the way that you want to be loved. Yeah. Until you love yourself, it's just not, when someone else does love you, it's not gonna land as deeply Yeah, 100%. Unless you love yourself first, you know?  It's loving yourself so deeply that you become open to receive all of the wonderful blessings that are just waiting for you to really say yes.  Love is, it's so important to take that like deeply within. Like, you know, it's not just being nice to yourself, like so many people think they love themselves, you know? But when it comes onto it, like, do you love what you see in the mirror? Do you go to sleep at night at peace with the way you've behaved or how you've shown up in the world, you know? Do you love what you do for a living? Do you love how you are with your children? Do you love your body?  Like, there can be so many ways and areas in which we judge ourselves harshly and all of those inner criticisms can push love away. Yeah.  So for everyone watching, be prepared. But really quickly, so I wanna take a commercial announcement really quickly for those watching, Sabrina and Brea are actually going to be hosting an event. It's a love immersion event. I'm gonna post a link right here for those that are watching and there'll be links below to learn more about it. But I just want you to spend not more than one minute sharing with everybody what's coming up for your guys because you guys are jointly doing something together. Okay, you're both taking your professional modalities, putting it together, offering some real love tools for people to embrace love for themselves and in relationships. So again, you get one minute. Let's go. Let's go. Let's have some time. I've guided. Online. Online, it's a virtual workshop. It's a 20 day love immersion that is where we use cacao as this plant medicine that you've already introduced to help us open our hearts and connect deeper within ourselves. Yeah, yeah. It's for anybody who is either in a committed relationship or seeking to just find deeper love in themselves and in their life, or somebody who's seeking that beloved, that partner that they've been waiting for. And so it's a daily practice that you get to do every single day, it's different prompts. Some are meditations. Some are just listening to a song. Some are going outside and being in nature. Some is breath work. It's the inner work that we've been talking about. So for anyone who wants to know what the work is, what do I need to do to get ready for my beloved, this 20 day immersion is a wonderful guided process that gently brings you into that space of setting the foundation to prepare yourself for your beloved. So we invite anyone watching to join us. Okay, so we have a question. It's a little bit, this question is directed to Bo. It's a little bit off, but it's off topic. But I wanna bring it up anyway. Julie asks, is it true after sex, the man likes the woman less and himself more? I want us both to answer this one, okay? Yeah. You go first. I know that feeling, I know that feeling, not with you. And it's, we were talking about something similar to this today, where it's like, oh, yesterday we were talking about this. We were talking about how great it feels to break up with somebody. Yeah. How exhilarating it is. I think I was sharing with you Jonathan about how exhilarating it is to like quit a job and break up from a relationship. Because the part of you that is engaged in those things is not necessarily the authentic aspect of you. Right. Interesting. So it's a similar phenomenon, I feel like, where it's like, oh my God, like, all right, I'm gonna, and I'm doing this thing. And oh my God, this passionate experience and blah, blah. And then it's over.  And it's because you're not in alignment with that person. If that man is, if his heart's in it, then he's not gonna have that experience. I'm gonna share with everybody and I'm posting something in the chat box. So I would say for a significant percentage of my life, I operated from what I could get from a woman and not necessarily what I could give. And certainly someone just posted a comment. It's known as, and then afterwards, what we men experience is known as post nut clarity, which basically means after we ejaculate, all of our clarity comes in. There's actually a great line in the movie, something about Mary that relates to this. I reached a point in my life where I wanted a heart on to go with my heart on. Nice. And this happened maybe a decade or so ago, but really to connect at a heart-centered space with a person because then it wasn't just about the ejaculation, it was about real connection. So coming back to Julie's question, I'd like to think, well, I certainly like to think for myself that's the way I operate. Both certainly operate in the sense that it means something more to be with a partner from a heart-centered place. Well, I think, yeah, and to put a fine point on it as well is to say that for me, it was, I think unconsciously, I was looking for love and subconsciously looking for love. And then when you, and so that's an act of love, right? But when it doesn't match up with love, then it feels weird and it feels a little gross. To me, that was my experience. I wasn't somebody, I mean, I've always wanted to fall in love, and I've done it. And yeah, if it wasn't in alignment, it just felt off and I was like, oh, what am I doing? Why am I sharing this with somebody? I think that's true for women too. I mean, I think it's true for women too. I think it's true for anyone who is having physical intimacy, physical intercourse with someone that they're not necessarily in love with. I think love, a sex in its highest expression is an expression of love, right? In its most sacred form is meant to be not just a physical exchange, but an emotional and spiritual one. And when you don't have that context for it, it can feel very sort of anticlimactic afterwards. It just feels like, okay, well, I don't know if this is the right thing or not the right thing, because we get caught up in the moment of not necessarily taking responsibility for making sure that we're actually getting all of our needs met, not just those temporary ones. Well, since we're going down this rabbit hole, it's interesting because the way I observe it, men biologically are driven sexually, I mean, to some degree, and a lot of men find love through sex, so to speak, and women tend to want to bond. I think when you go at this, when two people approach physical intimacy without real consciousness, without real bonding with another person, without real trust, it really opens up to a lot of potential calamity, if you will, and I don't mean to sound Machiavellian in any way, but there's certainly a lot of discourse that happens when two people enter into it unconsciously, and that's my response to Julie. So I have a question for the two of you. So in the early stages of dating, did either one of you have red flags or any conflicts you had to overcome? And if you did, how did you use NVC to overcome them? So, I mean, were there any even tiny ones that would you be willing to share? And you don't have to, but I'm putting it out there. There were a lot, I think there were a lot of things where we both just put things out on the table. Yeah, that's the one, I mean, we've had, obviously transparency in the beginning of our relationship, and I think both of us kind of came in going, okay, this is where I'm at, and this is, these are my needs, and this is what I'm looking for, and this is what I'd like to create, and we both sort of had the wherewithal and the presence of mind and the conscious awareness to say, this is what works for me, this is what doesn't work for me. And again, I'm gonna advocate for NVC, non-violent communication, because it really is a beautiful way to resolve conflict. So when we share, for example, if Beau does something that will trigger me in a moment, I will say, when you do this, I feel, these are my feelings, because I have a need for, and then I express my need. And so when we share things in this way, it sounds like less of an attack, it's more of an open conversation, like if I feel upset or triggered or sad about something, which hasn't happened a lot, because there's a lot of resonance in our relationship, again, attributed to the work that we've done and the conscious awareness around just creating this relationship in the first place. But I can just say, like I'm having a lot of feelings about this, like I feel this about, I feel that or I feel this. And because of Beau's commitment to listen and hold space, he's able to hold, to listen to what I have to say. And he's interested in what my feelings are, because there is a spirit of wanting to resolve things. I think when two people come together, willing to resolve conflict in the most peaceful way possible, is we're both working towards a much bigger picture of being in harmonious partnership. It's a different thing. Oh God, I'm getting a cavity listening to you too. What? Well, I'm actually tasting the cacao as we speak.  Don't take from your feelings and you'll attract someone who doesn't run away from yours. Wait, say that out loud for everybody again and I'm gonna push you.  Amen, amen. Hey, we have one more question. That's one of the principles of the course that we're teaching this love immersion. Okay.  Exactly what is within you and you're going to get back exactly what is within you.  And, you know, that partner that triggers you, they might have done this a million times in every relationship or they might be just exhibiting these triggers perfectly just for you. Because that is the way that the universe works. We're gonna keep learning those lessons. Those people that say, God, why do I keep, you know, attracting the same a-hole, the same guy who won't do this, the same woman who's just like this because you haven't figured it out yet. You haven't resolved whatever it is within you that is that wound or that story or whatever that is bringing to, that just keeps attracting this experience to you. Hey, by the way, so we've got questions coming in. So we're gonna open it up to questions. So we're gonna rapid fire as these come in. So Jane writes, how did you get to the point to really trust and know each other? Don't you feel vulnerable? Every day of this relationship, we both feel vulnerable. Vulnerability is something we're comfortable with. Right. And that's the key is to get comfortable with being vulnerable. Like, and I think that, you know, what we shared earlier, it's like when you're not afraid of your feelings and you're not judging yourself for having feelings, like, you know, maybe in the early stages of getting to know each other, you know, there might have been a couple of things where I felt sad or I felt afraid or I felt shame. Yes. Do you remember the time he liked something and you got triggered by it on Facebook? He told me about this. Something triggered you on Facebook. I don't remember. Oh, okay. Well, I know you shared it with me. Come back, I'll bring it up. Okay. Well, Facebook can be very triggering. Social media can be very triggering, of course.  And that doesn't mean he's responsible for my insecurities. He's not responsible for my feelings. He's not responsible for, you know, helping me out of those feelings. But because we're in a relationship, he's willing to hold space for me while I work through those feelings. And in the meantime, his only job is to offer reassurance. Yeah. By the way, repeat exactly what you said one more time for everybody. When, say that again, when this happened, because I want you to teach NBC for a second. Oh, okay. So when you did whatever the thing is, okay? It's really important that we quote the event without the observation or the judgment, right? Yeah. We can't say something like, when you abandoned me, and when you ignored me, because that's a judgment. It's like, for example, when you liked this thing on Facebook, whatever you said, you know, I felt insecure or I felt, you know, hurt or I felt embarrassed because I have a need for respect, reassurance, security, safety.  We all need, especially in the beginning when we're building trust, you know, this is the question. How did you get to the point to really trust and know each other? I kept asking for safety. Mm-hmm. I kept asking for it, not in an accusatory way or by, you know, by, you know, in a passive aggressive way. Right. There was no fishing. Yeah. But there were no innuendos. I was very direct about what my needs were. And I think that that makes the relationship both mutually just so much easier to navigate. Yeah. Thank you, by the way. Thank you for demonstrating that. We got more questions coming in. This is an interesting one. Phyllis wants to know how long should a couple be friends before dating as real love? And this is a tricky one because you guys jumped into pretty quickly. I jumped in quickly the last one. I had Joy and Matt on, they jumped in quickly. Is there really a timeline when it comes to love? No. No, there's no timeline. I mean, it'd be nice if there was a formula or a certain right answer, but, you know, there's really no right way, no right time. I mean, yeah, with Sabrina too, I mean, I had a history of jumping into love. And so this time I was gonna do it differently and I was gonna slow play and everything like that, but I also know to go with the flow of life and not fight against the current. And so I was just going with the flow, right? And the flow was rapid pace, right? It was fantastically... Well, hold on a second though. I also wanna say that to be in the flow as we're talking about, and then we make it sound easy, right? Yeah, yeah, yeah. It's really just about getting all the fear out of the way. So this question, even in and of itself, is like, how do you know when it's okay to move from beyond friends into dating and then real love? It's like, when is it, the real question is when is it safe for me to love? Yes, yes, yes, yes, yes, right? When is it really safe for me to actually love? And the fact of the matter is, is that if you're afraid of love, it's never gonna be really safe. Right. There'll never be enough safety unless you learn, we learn individually, you know, I'll speak for myself to not be afraid of love, to not be afraid of getting hurt, to not be afraid of rejection, to not be afraid of experimenting with my feelings and, you know, being vulnerable so that I can make sure that I am with someone who can meet me there, right? And I want everyone to be, to have that standard for yourself, you know? Yeah, well, it occurs to me though, Sabrina, that, and I only speak to the fact that I have mostly a female audience. Oftentimes they'll jump in emotionally before trust has been built, before there's been a demonstration by the other person that they are safe to be with. Sometimes as a hope that it will shift the dynamic, but this is really tricky piece of the puzzle is, I think, and where I'm going with this is, I think if you trust yourself, it doesn't matter. In other words, the most important thing is to have that trust within yourself. Now I'm asking that more as a question as opposed to a statement, but I want your perception on that. Well, this is what we talked about earlier, if you're asking me specifically about women, I think we exchange romance in the hopes of getting our emotional needs met. We exchange physical love and physical connection in the hopes of getting our emotional needs met. We jump in because we just are so desperate for love that we're not really gauging and making sure that this environment is really an environment that can help meet all of my needs. And when we're not solid within ourselves about what love looks like, this is what it looks like. This is the kind of love I want for myself. This is how I treat myself. And so I'm not gonna sell for anyone who treats me less than this, right? Then once we have that standard in place, then it becomes like, it's important to not walk, to not be afraid to walk away from a potential relationship, our potential opportunity for love if it doesn't fit all the parts. It's really important. And I learned that in both my last relationship and the relationship before that, I learned both those lessons in a very pronounced fashion. It's really important to look at the whole picture and to make sure that all the parts work. Yeah. So, okay, we got more questions. I wanna jump in, but I do wanna make a comment because most everyone knows my most previous experience. Even though jumped in maybe too quickly or whatever, I don't even wanna put a judgment on what happened. I am so grateful for each experience in my life because it's been preparing me for where I'm at today. I think when we hold on to judgments and resentment and anger and bitterness and fear, it's just gonna carry forward in every relationship as opposed to going, what was the gift in each relationship? Okay, question. Do you each have pet peeves and pet names for each other? LOL. Wow, it's like the dating game. I know, right? Yeah, it's a newlywed game, yeah. I have pet peeves. Pet peeves? I like to think, okay, specific to each other? Yeah. No, I don't, I don't. It's okay, it's okay. I'm just knowing it. When you blank, I feel, no, no, I mean, I think I just, I love Sabrina so much that I know it's so sacchariney sweet but she does all the little things that she does. I don't, I just find them sweet and I just find them, I don't really judge them. She leaves every cabinet in the entire house open. I just acknowledge it as a, okay, one of my jobs in this relationship is to close doors. Did you guys ever see the movie when Harry met Sally? Yes. It's been a while, but yes. Okay, but there's something and that brings up this point is that, you know, Sally in particular was very unusual when she ordered food. She had a very unusual way of ordering food and it would take her an hour and a half to order a ham sandwich, which was something that Harry said. At the end of the movie, there's a line that basically says what I most love about you are your neuroses, your peculiarities, you know, even in the movie, you know, in the movie Goodwill Hunting, he talks about our picadillos. It is, I think real love resides in maybe those things that might bug you, you know, I mean, so long as it's not disrespectful or anything like that, but I think that's where real love resides. It's in those unique parts of a person's personality, not their great parts of their personality. Yeah, I couldn't agree more. I mean, you know, since we're being transparent, there is, we have a different pace of life. We operate different pace of life. So, I- I'm slow. No, no, no. I wouldn't say that. Some of us are hummingbirds and some of us are tortoises, you know. So, I like to move through life really, you know, quickly, efficiently, and let's go, let's get it done.  And so, I create a lot of, and one of the things, one of the gifts of this relationship is that it's really helped me slow down. It helped me sort of like take a pause and just trust that everything's gonna get done and it's all working out. And so, I've had to do a lot of inner adjusting to sort of activate and at the same time, some detachment, you know, like just kind of, like, hey, I can unplug from this and work at my own pace over here while he does his own thing over there. So, it's really important. And we don't wanna give people the idea that, you know, you just meet in love and everything's perfect and there's no work to it. Right, yeah, yeah, yeah. I want, this is why I'm bringing this conversation is because it's important that, you know, you may not have everything that you do similarly, but that there is to allow there to be space for that, right, because it, and to see the gift in it because it's allowed me to sort of slow down and sort of be more conscientious and take more space. Oh, picked up the pace. Well, yeah, that's what I was gonna say is that it's an opportunity for me to take more action, you know, be more swift, be more decisive, you know, these are parts of my masculinity that I'm, you know, continuing to step into more. And I think that that's part of a beautiful relationship is it calls the man deeper into his masculinity and it should call the woman further into her femininity, you know, and obviously we both have the feminine and masculine within us, each one of us, you know, but it's an opportunity to step more into it. And, you know, and because her pace is more accepted in Western society, it's an opportunity for me to also just honor myself and say, oh, okay, like there's that part of me that's judging myself that's saying like, she's probably thinking that you're not fast enough and you're screwing this up. And maybe I think that too. And so wait a minute, let me honor myself and still have that slower pace, which she says, you know, serves her as well. And also let me, you know, meet her in the middle as well. And where can I adjust it, learn things like that? And I think that's part of this whole pet peeves thing. Number one is, yeah, accepting each other. Number two is also having a sense of humor about it.  And, but we do it with love. There's a way to do it, you know, in a joking way that's derisive. And I've certainly done that in my life. And in this relationship at times, and I, you know, but we just try to keep it light. The way to do it is to just continue to ask for what you need. Right? Like if it ever, like for example, you know, maybe sometimes I might be a little abrupt because I'm doing things quickly and I'm feeling impatient. And then Bo will say, I need softness. Okay, I hear that, you know, but I want, I'm interested in hearing that. Yeah, my heart's open, right? I think it's open. Okay. When you're in a partnership, it's, you know, there can't be an ego involved, right? If you, because otherwise you're battling beliefs and you're battling positionality and claim who's right and who's wrong. And there's no real connection that can be had from that kind of dynamic, right? So the real connection comes from just living in your heart and always being willing to come back to your heart, which Bo is excellent at always bringing back to love. So, so my audience, I'm not going to ask this question, but I am going to post it because this is something I repeatedly say on my channel. If you can read that. Yeah, I see it. Yeah. What did I go? No, you have so many videos, but I'm not familiar with this.  I'm not going to ask you to when you two had sex. I think that's what my audience is asking. But I mean, if you want to go down that road, we're open to it as well. Because, well, there's a lot of taboo around the time and waiting and everything. And I think when two conscious people get together, and again, you know, what is consciousness, right? What is awakeness, enlightenment, all these things. But when two grownups get together, I don't think they have to follow some sort of rule per se. And if you don't mind sharing a little bit about what I just shared, I'd love your feedback on it. Well, I mean, what you said is absolutely true. And it was a topic that came up earlier in an earlier question, but just about building trust. And you know, I trusted Sabrina from the get-go. I mean, yes, there was that, just that I was so drawn to her from the second I saw her. Yeah, yeah. Yeah, but how do we know that wasn't lust or limerence? How do we know this isn't just, you know, another guy who's just saying all the right things?  Okay. You know, and that's the difference between when I say, look, I jumped into relationships in the past, I jumped into this one in a sense, because that was the flow of it and that's what it called for. But also it's the only relationship that I've ever had truly that has grown. Every other relationship started out at a nine or a 10 or whatever, and then there's nowhere else to go. And with this one, and it's because of that openness and that trust that was allowed to build over time that I felt safe and I saw that she's not going to, she's not going to bail, you know, she's not going to abandon me, she's not going to abandon herself, which is something that's happened in other relationships of mine where it was like the person couldn't go any further with their own heart. They couldn't be loved. They didn't want it, right? I want it. And so that was a fear of mine, but Sabrina over time and very quickly showed me that she was not going to run.  Wow, talked, I want to hear about it. I had a panic attack on our first date. Okay. And I was mortified. I am not somebody who's had a lot of panic attacks in my life. Yeah. And I mean, and I hadn't had one for a very long time, all of the breathing and the drinking cacao really helped those things. Any worry or anxiety subside. And there we were on our first 10 hour date and sitting at a restaurant. And we were talking about something. Like we were talking about masculinity and opening up like men opening up their hearts. And I was listening to her and all of a sudden it started closing in. I was like, oh my God.   And did I tell you right away? Or did I, I think I told her right away. He told me right away. I could tell. He's like, you were like, there's something going on here. I was like, there's something going on. I'm going to excuse myself. And I went to the bathroom. Did Sabrina pull out her crystals? No, no, no. She didn't, she didn't. But I came back from the bathroom. I was, you know, look, I'm open to being more, to being vulnerable as we talked about. And this was a completely different level where I was like, oh, there's my ego. I'm mortified. And I returned, I returned to the table and I just told her, I was like, I think I had a panic attack. You know, I don't know what this is. It's very strange. And like, and I just expected, I was like, all right, here's the part where she recoils and is like, okay. You know, and treats me like, you know, a science experiment, but she reached out to hold my hand. Aw. And it meant and still means the world to me. Aw. Because in that moment where, I mean, it sounds silly, but I was, I was scared. Like something, and what it was, was that. Yeah, what was it? I was afraid of intimacy. Oh. I was opening up, my heart was opening up to this amazing woman, like it hadn't opened up in a very long time. Yeah. I didn't know, there was part of me that didn't know if it was gonna be possible again. As much as I love and as much as my heart is open and I am committed to that, there was a part of me that wondered, can it happen again? You know, can you go again?  And there was. And so there was that, you know, that little ego voice that I couldn't even hear in that moment that was saying, what if this person shreds you to pieces? What if it happens again? You know, can you take it? And so all I did was, I just showed up and I was honest and that could have been the biggest red flag for her. And I was like, it probably is, it's probably. But she held my hand and she didn't win. And that for me as a man, as a human being, just immediately built so much trust in such a sense of safety, you know? When we're talking about men that are stone walled and some women, they just dive in and some men, they're like, no, and they pull away. They're just scared. They're just scared of getting hurt, you know? Well, it reminds me, you know, it's interesting as you're sharing this, it reminds me of the idea of jumping out of an airplane. And I think to some degree, you know, we talk, no, there is a phrase that says falling in love, right? And there's an element where you're taking that leap, you know, and it's scary. But I think if my coach Sabrina was talking to me, she'd say, you don't have to worry, you have a parachute, you know, that's trust. Like the universe has got your back, the universe has a parachute. You don't have to worry about checking it, it's there. But at the same time, I can speak from personal experience.  And then like, there's this almost like, it's not a pullback, it's just a temporary pullback. And I've experienced this, but, pardon me?  You need to move forward, you know, don't get me afraid. We have more questions, by the way, a couple of people want to know, do you know each other's love language? Oh, yeah, we talked about that earlier, huh? Yeah, all of them. It's all of them. All of them. I mean, I think, who has only one? I mean, yeah. It's really all of them. Yeah. I mean, it's, I think. What is your major one?  You know, I can't really pick one because they're all important. I think words of affirmation are important for each other.  For both of us, and we're both facilitators, we both hold space, you know, professionally. We both help people connect to their hearts and, you know, let go of pain and fear and so on. So, you know, you can imagine in this relationship, you know, it's very important for us to sort of see each other, to acknowledge each other, to offer words of positive affirmation, to encourage each other, reassure each other. So we both have those needs. And so we're both very well equipped to meet those needs.  Yeah, yeah. We both love to give gifts, you know. We both love quality time together. I think that's important, especially because, you know, between the two of us, we have three children, three small children, we have two six-year-olds and a seven-year-old. So it's pretty busy in our house and, you know, we have to make time for each other. You know, and I think, yeah, I think we do actions every day.  But I think the reason why it's now all of them for me is because I've learned my needs and I've learned to love myself more and I've learned to allow myself to be loved more deeply. And yeah, I mean, acts of service, I never really would have thought about that, but like the way that Sabrina shows up and supports me, you know, I mean, I feel loved like I've never been loved, you know? Yeah. All right, guys, we actually have our last question and then afterwards I want to spend another minute sharing your love immersion. So here's the last question for the two of you. Do Sabrina and Bo have a love song? There's a couple of Trevor Hall songs. We're big Trevor Hall fans. Okay. And yeah, which we in a different room. We in a different room by Trevor Hall. Okay, that's the actual song name, okay. We love the early stages of our relationship and every time I think about it, I think about, you know, the sort of the tone that was set at the very beginning. Yeah, when we first would spend time together, it was just what we called it a vortex because it was like, yeah, it still is. And like time just either flies by or goes so slow. It's wild. And yeah, it's a very beautiful. I'm gonna add one more question. Lighthouse wants to know how long have you been together and are you living together? You guys are planning on moving in together, right? We are moving in. We just, after this call, we're getting the last remnants of my place cleaned up and done and as of today, we officially live together. Oh, congratulations. Thank you. And on that timeline thing, it's only, I'll say, been seven months. Yeah.  It really depends on where you are in terms of your own self-awareness and your own, you know, what you're, if you're aware of what your needs are and the kind of, if you're clear on what it is that you're creating and if you're really serious and intentional about creating partnership, then maybe you need some of those safeguards in place, you know, and obviously, you know, I honor anybody's process and path into love. And for us, it's just been, you know, easy and flow-full and resonant from the beginning. Yeah. I mean, if I didn't feel safe in this union, it would be crazy, but I feel so safe and secure and I just trust her and I trust myself at this point too. You know, it took a long time to trust myself in love.  Like either go all in or, you know, like this current dating environment is one foot in, one foot out. I'm just really not a fan of that. Either go all in, see if it works.  It's when you give your pow, pardon me. And hopefully having learned something about you. Yeah. And so I'm like, I'm happy for you guys. I'm excited. I want to spend this last minute talking about your love immersion workshop that you're doing together. I put a link there. By the way, everybody, the link to join their workshop is going to be below. It's going to be in the comments and the first, it's going to be in the show notes. You got one minute, share the love immersion workshop with everybody. So it's this 20 day program that is done online is really about falling more deeply in love with yourself, finding that and then being able to expand that love and embody that love where it ripples out into every relationship in your life. And we really invite people to go inwards and to examine their own relationship to love, to look at some of their fears. Maybe some of the participants will be already in relationship. So they're coming with their partners or they're trying to heal their relationship. So they're coming alone and whatever the situation is, whether it's just learning how to love yourself more because you just can't get a grip on exactly what that looks like or having a clear idea of the kind of relationship you want to manifest. We are guiding people to really take a serious look at how they show up, their own relationship to love and really healing themselves so that they can be ready for a deeper experience of love whether that is with themselves or with their beloved. Yeah, I will not profess that I know everything about dating, mating and relating. What I do know is I know some really amazing people on the planet that I'm grateful that I can host on my channel, YouTube being two of those people. I am really blessed to both get to know you both on a professional level but at the same time on a personal level. It has been a true pleasure to have you guys share your story. Will you guys be cool with coming back later on and doing this again? Yes, please. We love being here and we really offer you for the work that you're doing and trying to raise the vibe and bring awareness to dating, mating and relating as you say and it's so important. We just honor you for being willing to reach so many people. Yeah, you're welcome. Thank you, Jonathan. Absolutely beautiful and you're helping a lot of people and yeah, honored to be here, honored to know you. Thank you so much. Well, thank you. So for everyone watching, I hope you found value hearing Sabrina and Bo talk about manifesting a conscious relationship and I think if you do this, you'll actually have a healthy relationship. I wanna thank all that those participated tonight in the chat box and certainly if you got this far watching the recording, check out the links below to join their workshop. We're gonna all say goodnight at the same time. Bye everyone. Bye. Yeah.


Over the last decade as a UN Special Advocate, I have witnessed just how quickly financial inclusion has made a difference in people's lives. As of 2021, 76% of adults have an account, a 50% increase since 2011. This sharp rise has been fueled by technological revolution stretching across the world. New data from the Global Findex Report shows a long reach of financial technology. From India to East Africa, even the smallest rule merchant are being paid a making payments with the mobile phones they carry in their pockets.  Barriers to ownership are starting to fall and the gender gap has narrowed from 9 to 6 percentage points. This means millions of more women can tap into the benefits of FinTech and digital payments. We have come a long way since mobile phones were first used to leapfrog brick and mortar bank branches. People are sending and receiving payments in real time. Those who never had the right documents to open an account or take out a loan can now do so with digital IDs. Also innovative credit products are being developed under enabling regulatory approaches. Sandboxes, innovation offices, accelerators and text prints have been spring boards for exciting new FinTech solutions and regulatory adaptation. To sustain these gains, certain policies and infrastructure need to be in place, namely digital public goods. Some are critical for accessing FinTech and the digital economy, such as connectivity, network towers and digital IDs. Others make markets work better for customers, such as fair competition and interoperable payment systems. Some protect the financial system and the people using it, like cyber security, consumer protection and digital and financial literacy. Too often, digital infrastructure and policies are considered in separate silos, but really these public goods work best together. One digital public good that requires more attention is data governance and privacy. When individuals and businesses share their data, they often do not know how valuable it is. Most grant consent without reading the terms and conditions, which, as we all know, are often long and hard to comprehend. Accessing one's data is another challenge. For customers, it is nearly impossible to share their own data and use it to select suitable products or get better terms, such as lower interest rates. So, they cannot access their own data and are also not benefiting from it. Customers deserve more transparency and involvement in how their data is collected, shared and used. To better understand how we can empower individuals and small businesses, the EU Data Act and India's data empowerment and protection architecture are two initiatives to watch. India has been a global leader in showing what is possible with the Indian stack, which combines ADAR ID cards, the United Payments Interface and account aggregators into a powerful tool for inclusive digital finance. Similar tools can be applied elsewhere and not just in large economies. Peru and Estonia are examples of small nations that have created robust and inclusive digital public goods. We have to learn from each other. Organisations such as the Bank for International Settlements, the United Nations and the World Bank Group can act as facilitators for governments and central banks to exchange knowledge on global public goods. New global platforms are also guiding the conversation, such as the Digital Public Goods Alliances. Others are mobilising global funding for digital public infrastructure, such as co-develop. And critical international forums, such as the 2020 and the IMF World Bank Annual Meetings, can help prioritise digital public goods high on the global agenda. At the heart of all of these activities are the customers who want to live a financially healthy life and to seize opportunities that the digital economy can create. Digital financial products and services should not only do no harm, they should also do good. Credit products can help people meet their long-term goals, but too much debt can damage financial health. There are many opportunities to promote financial health. For example, with saving products that notch people to reach a financial goal, or by encouraging financial institutions to measure the financial health of their customers and flag rising debt burdens. During this week's festival, you will be able to discuss these important issues. How can the public and private sector come together to effectively design investing and govern digital public goods? How can we empower individuals as small businesses with their own data? How can we encourage the development of financial products that build resilience and financial health? I wish you every success in your efforts to create a digital financial system that really benefits everyone.


Hi. OK.  Can everyone hear me? Good. OK, that's good. My name is Tim Morgan. I'm a senior Rails developer at Scribd. I was hired at Scribd as kind of like a Rails guru, because I knew the API really well, but I didn't really have a lot of experience in scaling. That was kind of a trial by fire for me at Scribd. I learned a lot of things the hard way. And so this talk isn't going to be about security vulnerabilities or anything like that. Instead, I'm going to talk about what I've learned as a Rails developer for Scribd. I like doing it this way, like how I break it, because I think engineers sort of we learn the most when we break things, when we're knee deep in the debugger and stuff like that. That's when we really start to understand Rails and the stuff that we're working with. So a bit about Scribd. Scribd is a really, really large Ruby on Rails website. Here's our Quantcast page. We do about 40 million users per month in traffic. We serve 36 megabytes of traffic per second, and every day 50,000 new documents are uploaded to Amazon S3. My point isn't really to dazzle you with statistics, it's to let you know that when you have a website this big, it becomes really, really, really easy to break it if you don't understand exactly what you're doing and exactly what Rails is doing. So I'll be taking you through some of the more infamous mistakes that I've made. These mistakes are almost always problems of scale. Is this still on? It's almost always problems of scale. It's stuff that you wouldn't even think twice about writing if you had 3,000 users per day on a website, like a hobby site. But once your traffic explodes, it can really come back to bite you. And almost all of them center around how Rails uses a database at Scrim to use MySQL, so there's gonna be some MySQL specific stuff in here, but I also try to generalize it a bit, and I try to talk about Postgres and Oracle if anybody's using that too. But it is gonna be a little MySQL specific, so bear with me if you don't use MySQL. Okay, so my most devastating mistake ever at Scrim, which I will talk about in a bit, resulted in our DBA giving me a few good pointers, and it actually resulted in yelling a few good pointers. Here's his log from Campfire. Basically, in short, what he was telling me to do is to understand what the code is doing. And it's crucially important because Rails cannot be relied upon to generate the best query for every situation, and in fact sometimes it can't even be relied upon to generate a good query for the situation. And also, I hope everyone is familiar with the SQL explain and explain analyze tools. If not, you just stick explain in front of a query. It doesn't run the query, so if the query's slow, you don't have to worry about that. It just gives you some information on how it would run the query, and that's very, very useful. And you'll see some examples of that in the upcoming slides. So basically, I'll boil it down to you for a few points. Every time you add a feature, you should run your feature on your site and look at your query log, unless it's the absolutely most trivial of features, and you know it doesn't touch the database. You should be looking at your query log. You should understand what each query does and know it's not a problem, or if you suspect it might be a problem, you should be explaining that query. You should have MySQL explain that query.  And well, guess what?  I'm actually, this is actually a little hypocritical of me because I don't always do this, but when I have done it, I found it really useful. I know that with Rails 3.0, we're going to be a little more agnostic with our ORM, and maybe some of you have used Datamapper. Datamapper has a really cool tool called DM Sweatshark, which gives factories double duty.  So you can, in a small amount of time, have a database bigger than you would expect to have in production.  And lastly, you should pay close attention to your indexes. Hopefully everyone here understands the basics of indexes. If you have a users table with a login column, and you need to look up users by login, you need an index on the login column. Things get more complicated with more complicated queries. Indexes are very database specific. MySQL and Postgres use very different strategies for using indexes in queries. So it's important to understand how your database uses indexes, and what indexes you'll need for different queries. So we'll start with the anecdotes. The first one's a subject that's been a little beaten to death already, but I've added what's hopefully a novel twist to it. And it's the problem with find and batches. And what we're talking about here is when you need to update every row or a lot of rows in your table, but it's not the kind of thing you can do with a SQL update statement, you need to instantiate every row as an active record object, and you need to perform some kind of operation, like downloading from S3 and uploading to a different bucket, or something like that, where you can't just do it in SQL, obviously. So hopefully everyone sees the problem with this. If you do user.all, you're going to instantiate every single record in your database all at once. If you can even fit it in memory, if you have a lot of users, it's still gonna be very slow. And of course, it executes a very slow query, select start from users. So then in Rails 2.3, we get the find each method, which calls find in batches. It solves this problem.  It grabs the first n rows from the table and looks at the ID of the last item in the batch that it grabs, and it uses that to get the start of the next 10 rows. We don't use offset, particularly in MySQL because offset is slow. It does a linear iteration over the table to find the n offset item. That's O of n, whereas if you use the primary key, which you assumedly have an index on, it does a B tree lookup, which is O of log n. So the problem is with composite primary keys. If you have a table like this, a group memberships table that joins a groups and a memberships table, it doesn't need a surrogate key from the database. The user ID and group ID are enough to uniquely identify a row. So you use a composite primary key. Rails doesn't handle this very well on its own, but you have the composite primary keys plug-in. So the find and batches method, which I've copied and pasted here, will break if you use composite primary keys. Not realizing this, I foolishly just did find and batches, pushed to production, and script goes down. So there's a couple of bugs in there that I discovered while I was fixing it. You can see right here that the table names are not escaped. So if you have a table name, that's also a reserved keyword it's gonna break. And lastly, these records are yielded within the scope up there. So that width scope and then you yield the record. So if you have your own scope, it's just gonna be overwritten. So anyway, the composite primary keys method, a lot of you are probably familiar with it. You can do something like this where you pass a list of primary keys. And then when you call your model.primarykey, you get an array back instead of a string. So the solution in this case is to build a query generator that loads batches of objects in the same way you count multi-digit numbers. So if you have three primary keys, it'd be just like how you count three-digit numbers. I'm just gonna go through it briefly because it's not worth it to get into the details. So you grab the first five rows from the table. You note the primary key combination of the last row and then you grab all rows. You grab the next five rows where the user ID is greater than five and the group ID is greater than one or with a group ID greater than one and limit five. And so then you get the primary key ID of that, last item and so on and so forth. Hopefully you get the idea. The full solutions available at this URL if you use composite primary keys and you need to use find the batches, you can use this too. It's just a gist URL, it's a monkey patch. So monkey patches, the default find the batches implementation, obviously there's some contention about monkey patching. So if you don't like it, you can just rename the method or something and then it won't overwrite an existing method. It also fixes the two bugs I mentioned earlier. If you have your own scope, your records that, the records or this method will not overwrite that scope. And you know, you can use tables with reserve SQL keywords, standard disclaimer. There might be bugs, visited scripts, but you know, it wouldn't be the last time I pushed buggy code in the script. So you should test it before you push it. The next one is my most infamous moment. It's the problem with validates uniqueness of. Some of you guys are laughing. Some of you guys have seen this before. Yeah, it's really bad. It's really bad. So it stands as an absolutely shining example of why you should watch your query log and you should explain queries and how even the simplest of changes need to be investigated in the database. So here's an abbreviated, a very abbreviated example of Scripps user model. This is pretty standard stuff. Then the requirement comes down the pipeline. We need case insensitivity in logins. We need it so that if I sign up with one login and you sign up with the same login about a different case combination you're prevented from signing up. So we all know how to fix this problem, right? It's pretty easy. Case sensitive is false. So I get this, it's like, it's 10 p.m. And I get this down the, on fog box and I'm like, okay, I'll just quickly do this before I go to bed.  Yeah, and I, exactly. I agree with him. And I come to work next morning and I discover Scripps is down. Everyone on campfires mad at me because they get bisacked at it down to my commit. So yeah, get bisacked. It does not take favors. So how could this have happened? Let's take a look at the SQL that Rails runs when a user model is validated. So it does this, the offending clause here is the lower login portion. My SQL has to calculate the lowercase version of every single user's login one by one. And with more than 10 million users that we had at the time it was taking two minutes to run that query on our database. And this was being run every time anybody tried to sign up for Scripps which is multiple times per minute. So soon enough, Scripps goes down. And I'd also managed to seriously anger my DBA, this guy. So there was one, he doesn't, he works remotely. So I'm safe for now. There was one positive bonus from this whole thing. However, I learned what my name is in Srella. So what's the solution?  You can create an index on lower login. It'll take some time to create the index but then your problems are essentially solved. However, MySQL doesn't support functional indexes. The solution of MySQL is a little bit trickier. It's something that maybe you would not, maybe you don't expect if you're not that familiar with MySQL. If you see here, MySQL is case insensitive for string comparisons by default. This is actually an even bigger problem because now it validates uniqueness of and MySQL are kind of diametrically opposed. MySQL will make a case insensitive regardless of what you said validates uniqueness of too. So basically wherever there's a validates uniqueness of it's implicitly case insensitive. So the solution here is the use of the binary keyword in MySQL. This keyword, when placed before a string tells MySQL to treat the comparison as binary data instead of as a string and it incurs no speed hit at least as far as I know. And so basically you need to modify validates uniqueness of to include this binary keyword when case sensitive is true and leave it out when case sensitive is false. It's also very important. This is actually only one of two times I broke script that day because I actually committed this. And that's also order and for whatever reason despite the fact that it doesn't actually modify any data when you stick it next to log in its order and because it does it runs that binary keyword on every user's login which is essentially the same problem that we had before. So it's important to put it on the right side of the equal sign or at least on the side of the constant string whichever side that's on. Again, we've got the solution online. It's another monkey patch to validate its uniqueness of. It's really just there to kind of get the code out so people can see it. And this monkey patch also doesn't check if you're using MySQL and it on binary is not a keyword in other database languages. So you should probably only include it if you have a MySQL project or if anybody wants to make a plugin out of it that's smart and checks if you have MySQL and loads itself and otherwise not. I mean, that's fine too. Also standard disclaimer may contain bugs. So the problem with delete and destroy is really more of a problem with Rails documentation than anything else. In general, Rails documentation is pretty explicit about how different methods work. One area this falls short is the use of delete and destroy when you use it with belong or has too, sorry, has many and hasn't belongs too many associations. Their operation changes depending on how you configure your own association which can seem like unrelated code. And it's really an issue with how the documentation is set up or just the architecture decisions that were made. I'll take you through a real world example that of course happened in script. So here we have a category model. Categories group together documents with similar subjects. They are joined through a category membership join model. So category has many category memberships and has many documents through category memberships. Now we have a dependent delete all setting.  So it has to instantiate each row as an active record object to run the hooks. Whereas if you don't have any hooks, you just use delete all and it just does a sequel delete. Anyway, down the pipeline comes a requirement. When we delete documents or when we remove a category, we want to tag documents with the name of that category. So if we have five documents in the aviation category, then we want to tag them with aviation before we delete that category so that we can keep track of where they were or at least have a relevant tag. So everyone knows how to fix this. You just add a before destroy that tags those documents. And you can all imagine what the implementation of that method might look like. Well, it didn't work. Here was my implementation of the method. We're using somewhat fancy sequel syntax so that we don't have to iterate and instantiate each rows an active record object. But what's important here is the sub query that I've highlighted in red, which just selects all the ideas of all the documents in the category. When this query is executed, you might be surprised to discover that it returns no rows. In other words, by the time we get to that before destroy, all the documents have all the category memberships have already been deleted. So this does not make sense, right? Like, why would rails be removing associated objects before calling the destroy method? Like, why is it running that dependent delete all before doing the before destroy hook? Like, that doesn't make sense. The fix is not obvious and it's probably really frustrating to a lot of people. You just have to move it to the top. That's some Rails magic. Let's explain why, what the Rails magic is. HasMini is actually doing a little bit of metaprogramming. When you call HasMini, it calls, you know, on the receiver, it calls instance or class eval before destroy. It essentially invokes before destroy and creates its own hook that does the deleting. And so before destroy hooks are run in the order that they are defined.  Which is infuriating, but it's the way it is. But let's say you, like me, had no conceptual idea about this. Did not, in your wildest dreams, believe that moving to the top would actually fix the problem. So you made sort of a different fix. You just removed that dependent delete all.  You removed that dependent delete all. And instead you add this at the very bottom of your method saying, I'm going to run this first and then I will delete these myself. Thank you very much. Well, now you may be surprised to learn, hopefully before you push it to production, you may be surprised to learn that your delete all method does not delete the category memberships anymore. Now it merely set their category IDs to null. Why? It's tricky verbiage in the documentation. The delete all method removes all methods from, or removes all records from the association. It doesn't say anything about deleting the records. It merely says they're removed from the association. And so Rails and its computer mind believes that by removing them or by sending the category IDs to null, it has effectively removed them from the association. Rails has no idea that a category membership with a null category ID, screw you. Okay, keynote. Rails has no idea that sending the category, or that a category membership with a null category ID is essentially dead weight in your database. So you were probably looking for something like this. The active record-based delete all method, which will actually do the SQL delete and do what you wanted it to do. So this is simple, right? Association.delete all doesn't delete the records. It merely sets their foreign key to null. You just have to remember that. Well, not quite. Apparently you actually needed table to figure out what delete all does. So it depends on what your dependent option is. And it makes a little sense if you read through it. If your dependent option is nullify, which is the default, then it sets the records foreign keys to null. If your dependent option is destroyed, then it loads each record, runs the before destroy hooks, deletes a record, runs after destroy hooks. If your dependent option is set to delete all, then it deletes the records from the database. It makes some sense in some way. It's just a little quirky. But there is something here that should catch your eye, a caught my eye. It's actually two things. What's up with the selects? Why do we need to do a select before we do an update? Why do we need to do a select before we do a delete? Well, let's be smart. Let's investigate the query log and let's see what's going on. It looks like what's going on is that it is first selecting, it is doing the select that we expect with or doing the select with the where clause that we expect to get a list of IDs. And then it's doing an update and passing in a list of IDs. Well, that's fine for the nine category memberships that I have in this example, but for my SQL in particular, it doesn't do very well with lists of IDs. Even though, even if you have an index on ID, this is still going to break if you have a particularly large category that you're deleting. There's an even bigger problem though and the observant among you may notice that we're using ID and category memberships is a join table. It shouldn't have an ID column. Oftentimes our older join tables in script do just because at the time we didn't really know about the ID is false option, but now we do and so we don't have IDs. And the truth is, if you don't have an ID, you actually get this, which is useless. So composite primary keys, a recent version has fixed this, which is good, but it doesn't fix the larger problem, which is that we're still using a large list of, in the case of composite primary keys, we're using just a bunch of ands and ands and ands or we're just using an in and a bunch of items in a list. So we're back to our refrain. What's the solution? When in doubt, fall back on methods that are well-defined. No matter what parameters you give this method, the active record base, delete all method will perform one and exactly one delete and nothing else. And so don't be afraid to give up some of that Rails magic in exchange for knowing what's going on with your database. By the way, a little aside note that there's no conditions hash there. If you put a conditions hash in there, Rails will say conditions, well, that's not a column in the database, so I'll just delete everything. That's how we lost our credit cards table. This is a true story. So, yeah, fine. Back up. Well, actually at the time there were only, like, we had just launched our store so there were only a few credit cards so we were just like eh. Eh. Sorry, you guys. And the sad thing is, the sad thing is because, you know, I don't know if any of you worked with payment systems but you can't store your own credit cards in the database. You have to store them in a vault. So really, they were just, you know, the IDs of credit card that were stored by some big enterprise vault company. And so, and that, so basically when these users, they go and they're like, wait, no, I did type in my credit card. So they'll type in their credit card and we'll send it off to the vault and the vault will say, we already have this credit card. So they'll get it back saying they already have it but they don't have it. It's actually pretty bad. But fortunately, there's only a few of them that'll have to, you know, never be able to use their credit card again. Anyway, find conditions. The lead-all, no conditions. This will of course be fixed in Rails 3 with the new abstract query logic thing whose name I forget. Errol. Errol. Yes, thank you. Yeah, Errol's wonderful. Removes this problem entirely. Lastly, we're gonna talk about very MySQL specific thing. Again, sorry for anybody who doesn't use MySQL but, you know, sort of most of our problems come from, really. So the problem with indexes and really indexes are a wonderful thing. I shouldn't say there's a problem with them because they're not, because if we didn't have them, we'd have a lot more problems. Indexes though are the source of many, or the lack thereof are the source of many big problems in large websites. The problem is that your database performance depends critically on having the correct indexes but a lots of times, especially people who are just getting started in Rails, they don't understand what to index and when. And the other problem is, as your database grows, it gets harder and harder to add new indexes. So it's important to think about what indexes you might need early on when you've only got a few thousand rows in your table and before it gets slash dotted, dug in hacker news, then now you have a problem. You know, now it's scribbed, we just, we simply can't add indexes to certain tables anymore. We either add them to slaves or we find creative ways to use existing indexes.  So here's some pretty straightforward code to load. A user's documents for their profile page, if only it actually looked like this at script. We just have a bunch of namescopes, document.ofuser, we could also do user.documents but whatever, paginated and we have a params page and order them by uploaded and all. And so, you know, that's fine. And of course, since we're smart or well, we take a look at the query and there's nothing wrong with the query. It does exactly what we thought, strings together, all those things. Anyway, so down the pipeline comes the order that documents should be paranoid delete.  They deleted Boolean to true and that way you still have the data in case they want to undelete it or something because people are pernicuous or for whatever reason. Or in the case of the way we do it at script and the way the axis paranoid plugin does it, it's a deleted at timestamp and if it's null then the object is not deleted otherwise it's the time it was deleted at. So, we all know how to fix this, we just set a not deleted namescoe, right? So that's easy. Well, if you push it to production, script goes down. So, what went wrong? Let's take a look at the query. Nothing wrong here, that's exactly what it should be. You just add and deleted at is not null. That's fine. So we're gonna delve deeper into the indexes. If we show create table here, you can see the problem. We have an index on user ID and we have an index on deleted at but we don't have an index on user ID and on deleted at. And MySQL is not smart enough to somehow combine those into an index on user ID and on deleted at. So it also, MySQL important though, only ever uses exactly one index for each query portion of your statements. So, it's gonna pick. If we explain, MySQL confirms it, we got some scary looking stuff in the extra using file sort should scare people. And the fact that we're using index document on user or index document on user ID is also pretty scary. It's a full table scan. So the solution of course is to add an index. You add an index on user ID and delete it at. You run the migration, your problem is solved. You don't even have to change your code. If you are smart and you run the explain before you push to production, you'll see that is in fact using the correct index now. I actually forgot to change it. It says it's still got all that scary stuff at the bottom but whatever, this is just a fake explain. So it says index documents on user ID and deleted at which is good. That's what we want. We're done. What about the just in time solution? That index is probably not tenable for large companies. If you're, our documents table right now is millions and millions of rows. And if we were to add an index, it would lock that table for a very long time. And not to mention that table or that index has to propagate to all its life. So it's a big mess. You can at least force MySQL to use the more restrictive of the two indexes, which should hopefully fix some of your problems for some time until you can find a better way to deal with this problem. Here we're using the use index feature of MySQL which forces it to use a particular index. In general, MySQL is reasonably intelligent, I would say about picking the correct index. But yeah, there's some shaking heads. It can go really, really wrong at times and if you, as an intelligent programmer, don't want to leave it to chance, you can just use the use index or the force index statements in order to ensure that you're using the best index available. In this particular instance, we're assuming that each individual user has fewer documents than the set of all not deleted documents which is a reasonable bet to make. That way, we'll narrow it down quickly by user ID and then all we have to do is iterate over the documents in an order and time. In order and time, just to filter out those that are deleted. Yeah, and so as long as you're not loading some giant monster user's page, it should be at least reasonably fast for the time being. So normally MySQL will pick decent indexes if you have only a few indexes in your table and it's pretty obvious which one to use for a given situation but as you start adding more indexes, you need to explain your queries and make sure it's using the right index. And you need to provide index hints like this when necessary. There's unfortunately no easy way to do this in active record prettiness right now but sometimes you have to say goodbye to active record prettiness. So in conclusion, I'm going to reiterate my original points. You need to always understand the queries that your code is generating unless the query is trivially obvious. You should be thinking about what the implications it's going to have on their scale. You should be explaining it if necessary. Test with a heavily populated database. Again, I don't always do this but I really should and so should you. At least a couple of times. Again, DM sweatshop is nice. Hopefully there's something like that for Rails that I just haven't discovered yet and just prop up giant databases with random data and test with them and look for frustrating slowness. And lastly, pay close attention to your indexes because indexes are very important and oftentimes new programmers just don't understand them. So that's the conclusion of my talk. Are there any questions? Have you done any experimenting with Postgres with some of the same techniques? Yeah, actually, so Scribd runs on MySQL but I use Postgres for all of my little websites and I run into some problems with Postgres. The functional indexes is nicer as for some of the nittier and grittier stuff I only really understand that in MySQL just because I don't run a website like Scribd in Postgres and that's just the way it is. But there are lots of experts, I'm sure, that besides me, that would be very helpful. Any more? Have you looked at trying to, I mean there's a lot of what they call NoSQL, database technologies around now and a lot of the stuff that we're doing in Rails is using the database to model references. And when you have a million row table and a million row table and you need a bunch of references, that gets really huge and it's hard to do in a relational technology. So have you looked at trying to model some of this stuff in a non-relational technology, whether that would be an advantage or just a lot of household or the like? So NoSQL is getting pretty big lately especially with technologies like from Facebook and Twitter who have been kind of paving the way there and that's good. I agree with you and probably a lot of people here that relational databases have sort of a specific use case that they're really good at and they've just kind of been blown out to other things just to model an entire website's data structure. Unfortunately at Scribd we haven't delved into that a lot. Tyler is gonna be speaking next and he knows more about this than I do. He's more on the cutting edge of this stuff than I am. But we still use MySQL for almost all of our core data. This is a change that may come in the future, hopefully, but not yet, unfortunately. Let me go.