Are you an overeater?  I know I do I go down to the shop to the Bristol farm store Sometimes on Sunset Boulevard and I get a bag of barbecue flavored pop chips and I say to myself I'm only gonna have a half an hour. I have the half in a couple days and Most of the time I've got the bag finished by the time I get home to my apartment I am an overeater A lot of the times I overeat on very healthy food Rarely do I overeat on bad food, but I am an overeater nonetheless and today we're gonna figure out How to stop that habit? How do you stop overeating and then when you do overeat? How do you recover from binges?  Well, we're gonna figure out why how to stop it and how to recover from it With with that. It's a big welcome to a veteran psychologist who has Decades of research in why people binge and overeat from stress He's been on there featured in the LA and New York Times. He's been on TV shows across the country He's the author of never binge again His name is dr. Glenn Livingston and he joins us from Pembroke, New Hampshire. How are you dr. Livingston? I'm very good and I'm looking forward to talking to you. Thanks James Wonderful great to have you here. Um, I Today I had a huge lunch. I had albeit a very healthy lunch I had some arugula and some kale and I had a couple of potatoes and then I finished it and then I decided to go a second round and I went another round again and I felt pretty pretty good at the end But is that is that binge eating if does it count if you're eating super healthy foods that you know to be healthy? Well, one of the things that I've discovered is that it it's really critical For people to step back and define for themselves What's binge eating and what's not binge eating because there's so many variables and most people who what identify themselves as an overeater or a binge eater They've done a lot of studying about what's healthy and you could ask them Have you had better days than others there are some days where you felt like you ate just about perfectly and What happened in that day? Wait, you know, how? how How many portions did you have and how frequently did you eat and what specific specifically did you have and why did you feel Proud of that and how did your body feel? Right and there's so many different diets out there and there's so much different information about what constitutes healthy versus unhealthy food I don't really get into that. I have very different opinions about it I don't really get into that with people Because I find that most people know for themselves. What's healthy and what's not and I what I tell people is that it's extraordinarily helpful if you take these four categories of Behavior of eating behavior Things that you never do things that you do only under certain conditions Things that you always do and things that you can do in an unrestricted amount and to find your food plan. So Kind of going to what you were talking about I work with a woman who figured out that the best way to control volume for her was to say I Always take a 60 second pause before I go back for seconds and I get up from the table and take a deep breath And that's all she really needed to do to figure out What was she really hungry? Was this something that she mindfully wanted for herself or was it something that was a little more compulsive and mindless and You know that type of a rule and her always category really worked well for her There are other people who need to eliminate certain foods there there are certainly for me. I'll speak for myself It's kind of like I've got an inner chocolate monster, right? And that chocolate monster will tell me anything to get me to have chocolate it I remember there was a time when I would I was on a I was trying to follow a follow a diet that had an awful lot of vegetables in it and You know, I had the Monday morning. I'm a formerly obese guy by the way. I was about yeah We'll get into your story in just a second Yeah but I remember a time when I was going to I was going to Try to eat an awful lot of vegetables and I was gonna stop having chocolate and candy you know all that kind of stuff and and I was Walking up to the counter on Monday morning after making this resolution And I was waiting to pay for my Starbucks and there's this big hairy chocolate bar That's just staring at me and saying, you know, you really want me and all of a sudden I hear this little inner voice saying, you know Glenn Chocolate it comes from a cocoa bean and and cocoa beans they come from a plant and a plant is a vegetable So, you know chocolate's really a vegetable and of course, that's ridiculous But I I use it as an illustration because during the moment of impulse we don't typically have access to our Higher levels of cognitive reasoning and impulse control right when there's that temptation what happens is our survival drive has been hijacked and We think that we need that chocolate bar to live and because of that There are some foods that it's easier to say never to than sometimes Just because if you if you look at if we can say well, that's that's not really food to me That's a much easier decision than well G Did I do enough exercise to have a bar of chocolate and I might have to my chocolate quarter for the day And there there's just some foods that people can't But that some people need to say never to and there's some people who can make a conditional rule and say No, I can have chocolate on the weekend. So I can have chocolate at social events We're gonna have chocolate once a month on the weekends and it really works fine for them So what I like to do is take people through an evaluation of the different trouble foods and behaviors that they have and also of the different constructive Foods and behaviors they want to implement like drinking more water or having more vegetables or going for a run every day or something like that Yeah, I'll give I'll just give you a rundown of when I get tempted and when I Overreach and then I'd love to ask you a little bit about your story and why this is such a fascinating topic for you as I understand that you Were an obese child or maybe you you were obesity at some point in your life And now you're reformed and found the way so looking forward to exploring that but for me personally, I'll tell you I I've always eaten a huge amount of food and I'll tell you where I think it stems from I remember back in the early 80s and About 1984 1985 and I remember sitting at the family kitchen family table dining room table and my mother serving us our dinner with me and my two younger brothers Edward and Tristan and my father Ron and If I didn't eat all of my plate of food And if I left had leftovers for example, my mother would say James Finish your meal think about all of the starving children in Ethiopia Because at the time it was this huge big thing like all the children in Ethiopia was starving of hunger and you might remember like We are the world and we are the children and Michael Jackson and all those famous 80s rockers came together for the live aid concert and to Make that very famous song and so for a couple years there It was just huge about the famine that was going on and in Africa in Ethiopia And so from that moment on whenever there was a meal even if I was full I would always finish My meal because think about the starving children in Ethiopia who would love to have just a little bit of that So I always just from that moment on ate everything that was put in front of me and more Like even when I was finished if I saw food around I would just keep reaching for it So I have always had a huge Appetite compared to what I what society might deem it as as normal Now I'm quite fit and quite healthy like I consider myself to be a fit and healthy 40 year old. I'm quite lean I've never I mean There was a time where I quit playing rugby when I first came when a couple years after moving to America And I stopped exercising for a year or two I started drinking a little bit more and I started eating poorly and I blew out to about 218 pounds. I'm now 185 But that was really the only time That stretch when I put on a lot of weight And it was I think it was because I didn't do the exercise because now I can't I don't think I've eaten I'm eating any less right now I think maybe what's happened is I'm now choosing better foods and I'm exercising considerably more So anyway, that's just to give you an overview Dr. Livingston of my eating habits and why I think It stemmed from that. Is that a logical summary? Do you think or or theory as to why maybe I've I've always over eaten? It's it's a logical theory as to how you got trained to overeat, right? And by the way, some of the things that I say are really not in concert with my profession's view of the psychology of eating So I I actually operate in this venue more as a coach and an educator than a psychologist. I have a psychological degree, but I when I work with people or work with them as a coach so that I'm freer to say things that my profession might disagree with but what What I want to tell you about that James is that the fact that you were trained like that It doesn't require you to overeat it. It creates a certain discomfort if you don't it It creates a certain psychological experience that makes it More natural for you to overeat than not over eat it, but it doesn't really require you to overeat and What I tell people is that you you can draw these lines for yourself and When you draw these lines and you adjust your behavior to match these lines Then the psychologist look it becomes something very interesting and soulful to look into, you know my My mom was married to an army captain and she was very worried He was going to go to Vietnam and get killed and she was overwhelmed because her father was missing when I was first born and so she rather than putting an awful lot of time into, you know feeding into 1964 so They didn't know as much about child wearing back then as they do now But she she would keep a big bottle of Bosco in the refrigerator and a very low level it's Bosco is this chocolate sauce and All she would say if I would cry where I was hungry. She'd say well the Bosco is right there and so I that's psychologically where my addiction to chocolate probably came from but What while I could use that as a jumping off point to talk for a few hours soulfully about My upbringing and what it means for the rest of my life It doesn't have that much to do with whether I stopped eating or or not What I what I tell people to do is to draw this line in the sand For example, since I I will never have chocolate again.  Tell me what to do and It's not a lot more complicated than that to just keep separating from those thoughts and Allocating them to your inner pig or your inner fat thinker and then if you want to it can be helpful to come up with a Rational answer to what your pig is saying. So for example When your inner pig says or your inner fat thinker says, you know You've got to finish everything in your plate because of the starving children in Ethiopia if you ever you could say Well, no, I have to take care of myself in the best way possible So that I have as much energy and enthusiasm and passion to help the children in Ethiopia and do a good things for the world I can't be lethargic and you know Unhealthy and dying early death because they're going to be more starving kids if that's my mission in life, right now You don't have to have that answer.  Yeah, absolutely. Okay. So what so let's talk about some well first of all Just to give us a little overview about what your story was. You said that you were you Had obesity or binge eating as when you were younger. So what's your story? Mm-hmm. Um, I was born in a family of Psychologists there's 17 of us all together now I have my mom and my dad and my sister and my cousins and my uncles and my grandparents and you you don't want to come To my family reunions. There was an awful lot of talk about psychology in my in my family And I sometimes joke that I can't do anything around the house except for ask the broken stuff I would feel but I Was what you would call an exercise bulimic I discovered probably around the sixth grade that if I Exercise the lot and I love to work out that I could eat whatever I wanted to and not gain weight So it's actually a relatively thin Child and teenager What happened was that as I was kind of nearing the end of graduate school and taking in responsibilities seeing Seeing patients having a wife having a house so all of the responsibilities of adulthood I couldn't find two or three hours a day to exercise as much as I wanted to and Still be an adult But I found it very difficult to stop eating all the things that I was eating I was the kind of guy that could dislodge my jaw go to the delicatessen and tell them to empty it into me And I just really really enjoyed that and I found it extraordinarily difficult to stop to stop And I just kept gaining weight and like there's some stressful times and then I gained more weight and my triglycerides I think the highest they were were about 1,100 Ridiculously high number where the doctors would yell at me and say you're gonna be dead by the time You're 30 if you keep this up and But I I literally felt like I couldn't stop I You know, I went to support groups. I went to psychologist I I naturally gravitated towards all of these psychological elements because of my background and I even set up a Very large online study. We had over 40,000 people participate to look at the relationship between Personality in particular food addictions and I learned some interesting things I learned that people that really crave chocolate are feeling lonely or unloved in some way and people that crave Carbohydrates are usually feeling very stressed and people that crave Salty chips and things are feeling some type of work anxiety. So I want to go I want to go over that. That's interesting So people who crave chocolate are feeling unloved. Is that right? People who crave carbohydrates are feeling what? People who crave chocolate are generally feeling unloved or lonely Okay, who feel who are craving carbohydrates are feeling stressed and People who are craving chips tend to be feeling Anxious Anxious so every time I go for a bag of pop chips. I'm feeling anxious. All right. I'll have to make sure Check my mood next time They weren't perfect correlations Here's the thing James The thing was That I thought that knowing that I could then go to someone who said that they were Craving chips and I could help them work with their anxiety and I could come up with an alternative coping mechanisms and Helped them, you know, figure out how to get through the day feeling less anxious Mm-hmm, and I thought that they were gonna stop having chips then what happened was they learned some of these anxiety coping sessions They said, you know what until I really figure out these coping mechanisms I'm just gonna keep having as many chips as I want to see there was that inner voice that was always rationalizing why it was okay to have the industrial hyper-political food that they were addicted to and and eventually when I came across a there's a body of literature by a Man named Jack Trimpey and rational recovery and a couple of associated people and they talk more about this voice inside of you That you need to deal with They they also deal more with the black and white addiction like you know, you can stop doing drugs you can stop having alcohol entirely and It's perfectly fine for you physically. You can't stop eating entirely So there were a lot of differences in terms of applying something like this to a complex behavioral system but at bottom The the key insight for me was that there's this crazy Voice inside of me that inside of people that says we can't survive without this Addictive food we can't survive without the chocolate we can't survive without the second or third portion of x y or z and That's what I had people. That's what I had to teach people and teach myself to to deal with okay So let's come up with some practical ways here on how we can avoid or We can prevent that. So can we have a few examples? Let's just put it into Context here someone who's listening knows that at a certain time of the day They want a Kit Kat or a bag of Skittles from the machine or They know at the end of the day they want at the end of their meal. They go. Oh, I really want some Ben and Jerry's ice cream Even though they're full well, I Could do this one of two ways I could speculate on that hypothetical person or if you want to I could coach you through a specific Example, which would you prefer? Let's go through the example. Okay. I'm just gonna get a pen and paper so I can take a couple and notice what we talk Do you mind? Just go for it. Okay? so What I ask people to do is to think of one specific problem one specific eating problem that they'd like to conquer because it's easier to learn this technique when you're Working on one problem than if you're trying to get it your whole diet or to control it all at once Okay, so is there one thing that you really wish you could Do better with your with eating or eating behavior With me. Um, okay, it would be Eating the Large quantity of ice cream after a meal that I tend to eat on weekends So on a Friday night or a Friday night or a Saturday night. I Will have a big meal And then I think oh it's Friday or Saturday. I'm gonna have Half a tub which might turn into three quarters of a tub of sugary ice cream Sounds good Um, bloody delicious. I gotta tell you But what's your favorite flavor? I'm a caramel kind of guy. So I love caramel.  That's that's amazing. I mean that is sensational I I challenge anyone not to be like once you open that lid not not to want to finish the whole damn tub But there are billions of dollars of research spent on making those things Oh, yeah, there's a there's a famous book called salt sugar fat when and it goes into like they're all they have these laboratories of the big Food makers food manufacturers who hired the world's top scientists to find what they call the sweet spot So it's like that texture and the just amount of a level of sugar and sweetness to make you want it to just keep keep eating it Cool. Okay. So when what's the impact of having three quarters of a tub of ice cream on your head? How does that affect your life? Well in the mo in that moment? It's wonderful. It's like pure pleasure. I love it I love every bite Are 30 minutes afterwards it's kind of like regret that I ate so much of it It's not regret that I had some of it But it's regret that I had a lot of it and then when I wake up in the morning the next day I absolutely will go and exercise because I had the the Ice cream before which is a good thing because it makes me go and exercise But I'm also very conscious so the next morning where I go. Oh, I had that ice cream last night I best go and burn it off on an empty stomach What what would you consider to be a healthier relationship with the with the ice cream? How would you if you could wave a wand and have perfect control? What would you like to do? Uh, I'd like to enjoy having the ice cream on occasion a couple nights per week and just be be satisfied with a considerably smaller quantity The issue is is that I never seem to be satisfied with the small quantity What what um What type of a quantity would you like to be satisfied with? Oh, I think I think a couple of scoops. I think I think two scoops would be nice Is that enough? No, I want it all dr. Livingstead of course is not enough But I want it to be enough.   Yeah, and I'm just I'm spending a little extra time in here I'm really defining what the difference is Because it's it's clear that this is not something you want to give up entirely you you want to have ice cream in your life um And you want to have enough to feel satisfied but but by the same token you want to draw a line that protects your goals and aspirations and You know higher level thinking so Just asking you to double check is is that is two scopes two scoops. That's where that line would be I mean if I could find it if I could find a way to be absolutely satisfied Then yeah, two scoops would be would be would be sufficient How could you do that? How could you feel absolutely satisfied with two scoops? Only make two scoops available available to me like if it wasn't if it didn't come in a bigger tub It was just a two scoop container then I would create the visual of that's enough. That's what a container is So that's what I'm going to eat.  No It's okay. I wouldn't be yeah If I knew that was all there was then then I would certainly enjoy and savor what I had Considerably more the moment that I put two scoops in and then put the rest of it in the freezer and say, uh You know, that's all I'm going to have is the moment that the soon as the two scoops are over I go back to the freezer and have the rest How frequently would you like to have those two scoops? At least uh weekly weekly would be would be sufficient one night a week would be great Yeah, and Forgive me for being relentless about the definition.  Is it only on the weekends? Yeah, it's usually on a friday night or or a sat saturday night Okay one night per weekend Yeah on friday or saturday Okay, and so Uh, this is a I'm just templating this for your audience so they know how to do it themselves We're eliminating any ambiguity because the pig loves ambiguity at the moment of impulse It looks for little holes in the fabric of your plan and it just rips right through it So we're we're really eliminating any ambiguity And then we're going to make some very declarative bold statements and this this is the part that's controversial because if you talk to most people about anything addictive, they'll say You know, you really can't you really can't do these things forever. You can just you can make a guideline more than a rule um But I I think that when people are sitting out to accomplish something important like Climb out a mountain or ride ride a bike all the way to the top of the hill if you're a little kid I think that they need a way to purge all the doubt and insecurity from their mind I think they need to be able to visualize the top of the mountain and see themselves finishing it I think they need to know they're going to pump their legs all the way up the hill Now if they happen not to make it that's another story then they should be kind to themselves And we're not going to beat ourselves up and we're just going to get back up and do it again But it's it's kind of like when you get married You don't say you know, I'm 80 sure that I can not sleep with anyone else But there sure are a lot of attractive people out there. So I'll just make that a guideline not a rule um And so I asked people if they would be willing to consider Making a very definitive rule for themselves like I will never have more than one and two scoops of ice cream per week per calendar week and I will only ever have ice cream On one weekend night again So that would be the most I'm just writing these stands we can come back for that would be the most definitive and declarative statement I could come up with to encapsulate the rule that you want to follow Okay, um, I'm covering a lot of ground here because I know we have a short amount of time. I would normally do this in a Longer example and I can point people some examples on my side if they want to to listen to that later um Just before we go on we're talking to dr. Glenn Livingston who is a trained psychologist And has helped thousands of clients over the years Where can our listener find more about you as we continue here dr. Livingston? Well, my book is available for free if you go over to never binge again dot com Never binge again dot com.  All right continue And I should say that's the the electronic versions of the book are available for free the paperback and the audio version Have a small charge associated with them okay, so We've got two rules to encapsulate the behavior you want I will never have more than two quite two scoops of ice cream For a calendar week again, and I will only ever have ice cream on one night on one weekend night again And I would normally add between now and the day that I die Why would I do that?  Whoa Whoa, dr. Glenn. I don't know if I really want to do that Um, but that's on purpose. I'm really we're really trying to force the pig to the surface I just want you to ignore it for the moment And what I want to ask you is If you never had more than two scoops of ice cream on one weekend night again between now and the day that you died And you did this perfectly for the next year What what would be different in your life? How would your Life have changed a year from now if you were able to do this 100 percent Regardless of whether your pig says you can or you count How would my life change if I only have two scoops of ice cream per week for the next year? Yeah, you suddenly have this magical ability to do that Uh, I'd probably feel um, I would feel more Self control which would give me a feeling of satisfaction. I feel like I would probably be a slightly leaner physically which would make me which would create more energy which would make me happier And I would probably savor the ice cream You know, I would appreciate the ice cream more when I actually had when I actually had it Knowing that it was only once per week Okay um What would be the impact of having more energy and being happier? How would that play out in your life? Uh having more energy would make me Give me greater clarity And having greater clarity would give me more direction having more direction would make me happier and being happier would probably make me Wealthier and making me wealthier would probably give me a greater level of satisfaction and Yeah, it would have spin off or spin off effect Can I pressure them just be a little more specific about that so um, what would you do with all the clarity and energy and Happiness that would create wealth and much more wealth you think you would have because of this Well, it would enable me to focus more on my business and to be more focused in the moment and the more focused I have The more knowledge I will be able to gain and the more knowledge I'll be able to gain the more I'll be able to implement new strategies into my business and create new products and So for is there a particular project that you feel you'd be able to move forward better? Uh, yeah, I'd be able to move my 30 day no alcohol challenge forward more In fact, what I would learn from abstaining I guess for the other six days of the week from ice cream I'd be able to teach to the existing customers and new customers of the 30 day No alcohol challenge as it relates to alcohol and as it relates to other areas of their life More I'm able more I'm able to serve them The more they're going to want to work with me and that would equate to more members or longer staying members Which would mean more dollars in the pocket and greater levels of satisfaction from being able to help more people And james would this impact any of your personal relationships? Well, if I was if I guess if I was happier Then sure I would be I would attract even happier people into my life Okay, I would spend a lot more time on this if we were doing a full session What I what I'm really doing is trying to ground you in your higher aspirations and goals Associated with the desired behavior change.  I want you to know james.  Okay, okay So what what does your pig have to say here? Why can't you do this? Why shouldn't you do this? Why won't you do this? I just like that damn ice cream too much and sometimes I just The heart wants what the heart wants and the heart might really want the ice cream on a Tuesday afternoon When I'm pissed off or frustrated at something to do with work I might just want to go and smash a cornetto ice cream from the chevron gas station down the road You know exactly where Um, the heart ones with the heart ones. Okay, two first thing I'm gonna work What else why can't you do it? Why won't you do it? Why shouldn't you do it?  I guess when I was uh Uh It was someone else like someone that I loved or someone that I was close to and I would feel like I could have it to bond over Maybe I was having a nice romantic meal and at the end of the meal I wanted to continue the romance and have like a little sort of naughty delicious delight at the end just to Just to round off the evening so I could justify that like in order to create greater connection Indulging in something that is a little naughty and you know that it's bad for you Creates intimacy or romance and so I could justify it that way What else? Um, what's the question again?  I'm I create my own world.  So It's too good and the heart wants with the heart wants What what would you say to that? Um, so now I'm coming at the count. I'm countering the argument. Is that right dr?  Why are you gonna keep to this rule regardless? You're right the heart does want what the heart wants and what I want more than the temporary pleasure of the ice cream is uh long-term health and happiness and so that I overrides my Illusionary temporary feeling of pleasure from eating the ice cream right What if you're too frustrated at work? You just want to pound one down from the gas station down the road We'll just get up and breathe in for a minute. Do some heavy breathing jump up and down Do some push-ups do some burpees go for a walk around the block drink a nice tall glass of ice cold water There's 101 Thousand different things that you can do other than walking down to the chevron and buying a king cone ice cream Yep, there you go Life is way too short. What if you get hit by a bus tomorrow?  Yeah life is way too short That's why I enjoy life now by being healthy and energetic and fit and making good dietary choices because I enjoy eating healthy and feeling amazing and Enjoying my life life is short. So I'm going to make sure that I do it the proper way and that's being super healthy most of the time What about the fact that you've seen studies that suggest short-term pleasure increases long-term pleasure? Yeah, well, there's always a study for and every other study isn't there So so I'll just choose which study serves me better in the long term Which is the study that sugar is not good for you and even a little bit over a long time can make you put on weight um Give you acne slow you down make you eat Make you crave sugar even more sugary foods disrupt your sleep patterns so I'll just go with the studies that show that You know having a little bit of ice cream is okay having anything in moderation is fine But anything consistently or overindulging in something is ultimately going to be bad for you What about the fact that you Want to have some type of social enjoyment if you're having a romantic meal with someone to Have that indulgence as a way to increase the intimacy I mean you can do you can do it another way you can first of all you can have healthy ice cream coconut coconut Based ice cream you can have Some fruit a little bit of fruit You can do anything else So you don't even you don't have to have the ice cream You can just say something nice or go for a walk around the block or instead of having the ice cream say let's go for a romantic walk instead or There's 101,000 different things that you can do to create intimacy or connection other than eating a sugary treat Yeah, here you go What about them I I have the freedom to do whatever the hell I damn want I know I do All right, so I have the freedom to choose what to put into my Mouth and what I don't so I choose long-term health and satisfaction over short-term satisfaction with feeling of resentment or disappointment afterwards So James, how confident are you at this point that you're never going to have more than Two scoops of ice cream per calendar week and you're never going to have a more than one weekend night per week Well, the fact that I'm saying this in a public setting like this is that I'm pretty Pretty confident. Let's let's say this. I'm more confident than what I was and when we started doing this So I have I understand the process of reframing my mind I'm not going to say something that I'll regret later and promise it And then someone takes a video of me smashing a full cup of ice And post it on twitter or facebook and says you see you were full of shit James But I this this is a really really important point This is how what I'm suggesting is different than the way most people go about this see In this point what we want to do is separate how confident you feel From what your pig thinks right, okay and we It's it's almost arbitrary, but we draw a line and we say We're a hundred percent confident that we're going to do this, but our pig has other ideas right and you don't It's it's different when you do it publicly it's different do it publicly because then you've got other people's opinions to contend with And I don't normally recommend that people go about that because I think that Nobody can really follow you around all day long and watch what you put in your mouth. So I think that Eating is a very private matter and you have to make the decisions yourself But what I would ask most people at this point was whether they'd be willing to say That they're a hundred percent confident in their pig has other ideas Because that sets up the framework For hearing all the pigs other ideas See if if if you're not willing to say you've got that one hundred percent confidence then The pig can sneak ideas past you you can think that it's your idea um And it's it's a very personal choice and you don't you don't have to do that.   Oh james.  Yeah yeah That that's that that's absolutely true and a lot of the people that my work appeals to Are people like me who've been through the experience of feeling a loss of control and Feeling like it interferes with everything else in your life. Yes overtakes your life. It takes three days to recover and What's the point? I really liked the the the process that you went through there doctor living center of Identifying like the the the positive things that would happen if you are able to control Whatever it is that you're trying to control But not just like oh, I'd feel better or I'd lose weight It's well, what are the benefits you get from losing weight because losing weight is just a feature, right? It's just something that would happen. But a benefit is You are happier which attracts happier people into your life Which makes you more energetic which makes you look better which makes you smile more and when you smile more Other people smile at you more which brings much more positive people into your life And much more positive people into your life will inspire you to quit that crappy job that you're in And finally achieve the dreams that you want to achieve Including traveling the world and building a business and finding your perfect partner and loving your children and having great relationships and Blah blah blah blah their benefits Yes, and when you really analyze it If you I think you know that I have a strong background in marketing also you go from the Go from the feature which is losing weight to a rational benefit, which is You know, well, I'll feel better about myself or I'll look better to to an emotional benefit Which is that I'll feel happier and attract more attract happier or better or more positive people And then it kind of develops a constellation of emotional benefits, which is a statement of character It's the kind of person that I'd like to see myself as And that's what i'm trying to get people to envision Is how that would be a different person? And what would that mean for every aspect of their life if they could be that person? yes and Obviously you're You know you've written books on this as it relates to food and it's never binge again dot com, but can we use this same structure? Can we use this same kind of like investigative? questioning Designed to extract certain answers for other things like giving up smoking giving up drinking giving up porn giving up a swearing swearing Preventing getting into fights being irritated like it doesn't work in all areas of life. Dr. Livingston. It does with a caveat There's a difference between the black and white addictions like drinking and alcohol where you can Give those things up entirely and the more complex behavioral economics like eating or swearing or where there are conditions and situations where There's like an infinite number of permutations you have to examine and I tell people My approach is more forgiving than something like rouse on a recovery or or the other types of cognitive approaches to to the black and white addictions and If you're struggling with alcohol or cigarettes, then I would encourage you not to use my approach for it to go back to the original work and Look at um, you know rational recovery, right? I don't know much about your approach in particular So I don't mean to steer people towards them. If this is something you would like to have a look at your third-day alcohol free challenge with But I what I don't want people to do is to apply never binge again to drugs and alcohol in particular because The mechanisms of forgiveness will Rune the work in drugs and alcohol whereas they help it in overeating and the consequences are really grave if you Rune the work in alcohol or drugs. I'm I'm very careful about that Well, dr glenn limington, thank you so much for your time and for your insight into that I really appreciate that remember to the listener and the viewer you can check out never binge again Dot com. Where can we find you on social media? Dr. Limington? If you go to never binge again dot com there are links to the twitter and facebook and We'll just twitter and facebook Yeah, that's what you know what your twitter twitter and facebook. It's never binge again. Yeah never binge again. Okay wonderful So yeah, if you want to uh, send him a tweet send dr. Limington a tweet at never binge again Or follow him on facebook at at never binge again. Please do so you send us a tweet right now Make sure you include at james swanick there um So let me live so let me know that you have listened to me and uh Yeah, tell us what you thought about uh Tell us what you thought about this uh this episode and how you are going to use what dr. Livingston Taught you in your own life. Are you going to now reduce the amount of ice cream that you eat like me? Are you going to stop eating bags of chips and couldn't have ice creams? Are you going to stop drinking so much coke or soda? Have you got the tools now to be able to do that following dr. Livingston's advice and if you'd like to Get more and follow dr. Livingston a little bit more closely make sure you check out never binge again Dot com dr. Livingston. Thank you so much for your time, sir. I appreciate it Sure. Oh, I I should say that when you go to never binge again dot com.  You can see examples of what worked for other people And there were a whole bunch of audio recordings of the Full sessions like I started to do with james here Oh, wonderful. Yes. So if you want to hear even more sessions of that check out never binge again Thank you dr. Livingston appreciate your time. Thank you james. Thanks for being a good guinea pig And to the listener and the viewer. Thank you very much and I'll catch you on the next one


Thank you all for coming. This is the talk about performance audits and the most common issues that we see when doing them. If you would like to follow along with the slides on your laptop or phone, here you can get access to the slides. I will show the QR code one more time a few slides later, so if you miss it, don't freak out. My name is Giannis. I'm a senior engineer at Tag1 Consulting. I used to be the lead of the media initiative for Drupal 8 and I was also at the largest Drupal website on the internet at the time called examiner.com where it was not the first time where I was introduced to performance, but it was a totally different beast and since then performance has been dear to my heart. A few words about the company I work for. It's a second all-time contributor to Drupal. We are a globally distributed team of experts with largest concentration of Drupal of core contributors at any organization and we contribute a full-time infrastructure expert to Drupal Association. So we basically help you when you're using issue queues and everything else on Drupal.org. We work with many clients from different industries, a lot of enterprise, government, nonprofits, your name. So first I would like to explain what performance audit is. We are usually approached by clients when they notice that they have problems on their website. Either it's too slow for you know, their needs or users start to complain or even worse sometimes site go down or you know, really bad things happen and we're approached to try to figure out what the causes are and how to fix them. Usually it's way too late like sometimes it's weeks or days before the go live or it can also be too late in a sense that there was years of technical debt that accumulated and then it's really hard to roll that back. What we do is we review the site. First we talk to the client. They tell us what the problems are. Is the site generally slow or there are specific pages that are problematic and then based on this info we go in and review the site and we try to identify the biggest problems and also the smaller ones. And of course we usually want to fix the lowest hanging fruit first. Things that will give us the biggest bang for the buck. And usually there are some and some can give you quite big improvements. Sometimes we just provide recommendations and then the internal teams would implement them. Other times we either do them ourselves or we assist or train the clients team to do it themselves. Again, if you've missed the QR code before, it's again one more time. And now let's talk about what we see the most. By far the most common problem that we see on Drupal 8, 9, 10 websites, it's incorrect use of cash. Specifically incorrect use of cash metadata. And by cash metadata we mean cash tags, cash contexts and cash max age as well. Those are the things that define how when something that is cashed will be cleared or invalidated, how it will vary and for how long it will be cashed. If this information that is provided to Drupal is correct, then Drupal's cash system is really powerful and will help you a lot. If you don't provide the correct metadata, the correct information or if you don't provide it at all, then you'll start getting problems. And these problems are sometimes really weird and hard to debug because they won't show up immediately. They will only like show up when you have multiple users on the site and then you see that somebody is seeing something that that shouldn't because it was some other user that generated, let's say that part of markup and since the cash context was not correct and it's not varying correctly, it's being displayed to another user that shouldn't see it or should see it in some other form. And usually that's quite hard, well hard, but it's often easy to overlook this when you're developing locally because you're either running your local environment with cash as disabled or even if you're testing with cash as you don't test it with every user in all different combinations of how these users interact with the site. So it usually appears on, no, UAT or even worse on production. And in my opinion the most important thing when it comes to fixing this problem, which is really common, is to learn and understand how caching in Drupal works. There are plenty of blog posts, sessions at Drupal cons and it's really not that hard. We have to remember that in Drupal everything is cached and when you are doing something you have to think about like if you are, let's say you have a block and if you need to rely on users' role when you're generating that block, that probably means that these needs to vary by role or by permission or something like that. And that means that you have to add user role or user permissions, cash context on it. And if you don't, you have problems. Core also provides us with debugging tools that help you with that. First is HTTP headers where all the cache metadata for the page that you're looking at is displayed. And here we can see that we have a header that tells us that there was a cache miss on this page, which context are used, how long it will be cached when there will be a cache hit, and all the cache tags. This is useful if you're trying to debug a page in general, but when you have a lot of blocks or a lot of pieces of a page, it's sometimes hard to figure out where something comes from, like which part of the page caused session sample cart cache context to appear here. And this is why we also have this debug output that will, when you enable it in services.yaml, it will add an HTML comment above the block that this is about. Like you have any piece of the page that can be cached with this setting enabled will have something like this above it. And here you will see basically the same information as before, except it is specific for that part of the page. So you have like most recent news block, you will see which cache context are attached to it, which cache context for how long it will be cached, you also have, if it is a cache miss, which this one it was, as it says no here, you can also see the rendering time below, which also means that this is also like a performance measurement tool in a way. If you see, let's say your page is slow and you disable caches, so nothing is cached, and you run this, and you will see that most of the blocks will probably render like 50, 100 milliseconds, and then you notice that there is one block that takes 10 seconds to render. You will know that that's the block that is causing your problems. Related to the previous problem is the next one. Very often when people experience the first problem and don't know how to fix it, they resort to this one. They just disable cache. The problem goes away because now things work, but your performance starts to suffer. Everything is okay when you have low traffic, but then let's say your site grows. This is the worst scenario. When you start doing this, it becomes a habit. When you see that first time you see, okay, setting max age zero on some render array fixed my problem, and now you know, okay, next time that I will have similarly weird problem, I can use the same fix, and then you start doing this, and if this goes on for years, then your site is full of this things, and at the same time your site will grow and will have more and more traffic, and at some point you hit the tipping point where everything falls apart. The problem with this and why this is so bad is over the years you accumulated so much of the technical depth that it's now really hard to remove, and you have to spend a lot of time going through the code ways and figuring out where these things are and removing them, but then you also have to fix the bug that caused you to resort to this fix. Another similar thing is if you're building views, in views configuration, you have the caching setting, and by default there are three options there, time based, tag based, and none. Tag based is default, and none basically disables cache, and it's equivalent of max age zero, and it can potentially affect the whole page that it sits on. So even if this is just like a small part of the page, it can potentially affect the entire page. The fix is to never do it, like seriously. I've never seen a valid use case for something like that. Even if you have part of the page that is updated really frequently, it's still useful to cache it at least for 5 seconds or 10 seconds, like some short period of time. It's still better than caching it to zero. Then with lazy loading and big pipe, for example, you can even, like if you have something that is updated really frequently, you can separate the rendering of that out of the rest of the page, so the page can still be cached, and then just this piece that updates frequently will be added at the end of the rendering pipeline, which is actually what Drupal does by default, if you do things correctly, but later I will come to contributed modules. There are some cases where contributed modules cause this to stop working, and then this frequently changing block will again affect the whole page. And yeah, if you think you need it, you probably have the problem with the first one, so recommendations from the first problem apply as well. Next one, it's a little bit hidden functionality in Drupal, and many people don't know about, and the situation that makes it really bad, it's kind of blurred, so we have to dissect it a little bit to understand when it can cause problems. Drupal, in core, by default, has underscore list, cash tag, for every entity type that it has. Even if you have a custom entity type, core will add it by default, so you don't have to think about it. It's always there. And that means that, let's say you update a node, any node, or create a new node, like any CRUD operation on node, if we're talking about nodes, will invalidate this cash tag, which in turn means that everything that has this cash tag added to it will be cleared or invalidated. The thing is, views automatically adds this cash tag to every view. And the reason why it does that is when you build a view, the views are cashed by default, you have a list of most recent news. If it wouldn't do that and you added a new article, that list wouldn't update. So yeah, it's a good thing that we have that. The problem is that it's too general. If you're just listing your articles in a block and you have dozens of content types, any of the other content types will also clear this block, which is only about articles. So it's overdoing it. And it makes sense that it's overdoing it because Drupal needs to make sure that views work in every situation. But it also causes like a performance hit, so to say. And now let's imagine a scenario where you basically build the entire site with nodes, like everything that you... All the content that you have are nodes. And you update those nodes very frequently. Like an example would be you have some content type that is some content that is coming from some other source and you have a script that runs regularly and imports this stuff all the time. And if you have a lot of those, you're basically clearing this cache tag all the time. Boom! Because, I mean, yes, you're using cache, but it's invalidated all the time, so we're basically not using cache. And everybody uses views for everything and everybody uses nodes for everything, so what could possibly go wrong, right? And there are actually quite easy solutions for that. The most simple one is the views custom cache tag module. Which will add you next to those three options in cache configuration in views. It will add you another option, which is called custom cache tag. And when you choose those, it will, A, remove the underscore list cache tag from the view so it doesn't cause problems anymore. And it will give you a text area where you can type in the cache tags that you know are more optimal for that specific use case. And Core already has content-type-specific cache tags, so you can use a column article, and that means that this block, this view will only be invalidated when an article updates, which is what you want, right? And you can probably solve most use cases by using these. If you don't, you can very easily invalidate your custom cache tags and do that. I remember an example where we had a block that showed whose, which colleagues of yours, it was an internet, which colleagues of yours have a birthday today? And users don't update that often, right? So this is not a problem. You shouldn't be invalidating the cache of this block frequently, except if you're using single sign-on of some sort. Because single sign-on systems would usually, every time when you log in, they would send fields about the user to the site that you're logging in, and that gets saved. So often when you have SSO, users are updated all the time, a.k.a. every time when the user logs in.  And it's really easy to fix. You hook into the saving with users, and you check if the birthday changed, or maybe even something more specific than that, but this is quite simple to do. You see if the user's birthday changed, it won't change every time when you log in, because your birthday doesn't change. And then this block can stay cached basically for the entire day, after it has been generated for that day. Another issue is a lot of joins, particularly in views. This is basically caused by Drupal's data model, which puts each field that we create into a separate table, which is great because it's powerful and flexible. You can have single-value fields. You can have multi-value fields. It's great. The problem is that when you have listings, a.k.a. views most of the time, and you want to filter on those fields, especially if you have a really complex view with a lot of filters on different fields, then you need to add joins to bring these fields into the story and then add where clauses on those joins. And the problem is that MySQL sometimes can optimize this, but often it can't. And often these kind of situations cause for queries to become really slow. If there is a left join, which is when you have this checkbox where you say require this relationship, something like that, if you don't require this relationship, that's usually then a left join. And left join is worse because the size of the dataset grows way quicker than with the normal join. Because instead of joining just rows that exist, it just adds null rows for everything that doesn't have this field, and when you have few joins doing this, the dataset that the database needs to work with explodes quite quickly. The fix for that, the most efficient fix for that, in my opinion, is to use custom entities where it makes sense. It's seriously not a scene to create a custom entity in Drupal. And the entity API is actually quite powerful, so it's not that hard to do. And even when you do it, you still get all the goodies, like you get the entity form, you can use formatters, you can use it in views, like everything works more or less out of the box. The reason why this solution is great is if you have a custom entity that has single-value fields that are base fields, everything is in one table in the database. So it's much easier to query, especially if the dataset is large. It's easier to index it, so it's better. And also, if everything are nodes, everything that you have on the page will be in one table, basically like node underscore field data, or just node. If you have custom entities that each handles its separate thing, you also separate the data in multiple databases, so your datasets by default are not that big. It obviously depends on the use case that you have, but it's seriously not a scene and it's seriously not that hard. Another thing that it's almost a scene in Drupal world is not to use views when you need some custom display of something. Creating a custom blog that loads whatever you need and then displays it exactly how you want it is not that hard to do and sometimes it's way easier because views have to fire up all these plugins that they have and they generate this query that needs to be very general so it's usually not that optimized and then to template that, it's hard because you end up with the gazillion templates potentially, but if you have a blog where you load stuff and just print it out in a render array, it's also easy to maintain and it's not that hard to do. If you have to use views, we often do what we call the in sub query track, which is this. On the left side, you have what views would do out of the box, like if you have a field on a node and you put a condition on it, this is how the query will roughly look like and if you figure out that this query is slow and you figure out that this is the field that is causing the biggest damage, you can use the trick on the right side, which is basically querying the field table first, getting entity IDs out and then on the main entity table using where on the entity ID, which is a primary key, which is indexed, so it is generally much faster. To do that, you usually need to create a custom views plugin for condition or contextual filter or whatever this specific thing is, but it's not that hard. You can do a sub query or you could probably do two separate queries and then bring the IDs into PHP and put it into the next query, both work, but often the difference between these two is substantial. We're talking a few seconds or even more than 10 seconds to 200 milliseconds. I already touched on this one. Views are great. Views are one of the reasons why Drupal is so successful in my opinion, but you can also overuse it. There are situations where they probably shouldn't be used. I've seen views being used as a field formatter and this is in a way that, let's say you have a reference field and you want to just display the things that are referenced in the field and instead of having a formatter, it just loads it from the entity and displays it. There was a view that joined from the field to the node table back to the field again. It already had a few joins before it even started doing what it needed to do. It was basically using views as a template layer because you can add fields in the UI and then it's easy to do it. But it's not really the use case that it was made to be used for. Also, as we've seen before, views out of the box have to be really general when it comes to caching. So if you do a custom field formatter instead or a custom block instead, you can be much more specific about how this thing that you're building needs to be cached, which brings your cache hit ratio up and by doing that, it also improves performance. Another trick, which is very commonly used, and it's another thing that is caused by views, wanting and needing to be very general, is the count query. As soon as you have a view that needs a count and that would usually mean either full pager or somewhere in the footer or the header of the view, the total number of items being displayed, it doubles the execution time. And it does that because in order to get the count, it takes the query that it has already to catch you whatever you need and just puts count around it and runs it again. Which means that if you have a slow query that takes 10 seconds to execute, you just added another 10 seconds on top of it. So this is one of those low-hanging fruits that we see. If there is a slow query that is hard to optimize and we want to have immediate improvement, we just suggest, would you be happy using mini pager instead of full pager? Because mini pager doesn't need count because it doesn't have first, last, numbered pages, it's just back and forth and you go forward until nothing is displayed. So it doesn't need to know how many items there will be. It's really okay to use, to custom code your block, your formator. Views are great for prototyping, for a lot of things, but sometimes when you have more complex things, going custom way is the better approach. Also, measure what you're doing. When you're building a view, enable that setting that displays the query below the view and that gives you the performance statistics. And you will see how long your query will take. And if you add, by using develop generate or something like that, a semi-realistic data set in your table, you will have a rough idea how long will it take for that view to execute. And if you see that even in development it takes a few seconds, that's probably not okay. So we have to figure out some other way to do it. Another one that is views related is overly complex queries. And this can, it's easy to click things together and not look at the query. Then if you do, you see that it's like this. And then even if you throw contrary modules into the mix, it can get even worse. It was easy to configure and it looks good in UI, doesn't equal, it's well done and it will perform well. I remember a case where we had a view that had a really complex language, fallback options, conditions, and it was hard to do. But then there was a contrary module that did it. In order to achieve it, the conditions sections of the view was like this big. But it worked and it performed well. And then somebody found a module that did the same thing, kind of. And that module was used and that old condition set that was used before was removed and just like a single line in the conditions section was added. It looked great. It was way better because it looked smaller. But the query that that module created was awful. So it was actually way, way worse. Things like that. So again, same recommendations. Look at the query while you're building the view. Use explain on the query to figure out what it's doing, whether the size of the data sets, all those things. I also always recommend make this a part of a peer review process. There is a significant change to some query, to some view. Add a comment. This is covered by this index. Add the explain output into the issue so that reviewers can see that, can review if, no, it actually is covered by the index. The explain does indeed look good. It's about a culture. If you really want to achieve great performance, it also needs to become the culture in the team, and it has to be part of the day-to-day process, and it has to be constantly thought about. This one kind of goes against that there is a module for that mentality in Drupal. But while this is true, again, Contrib Space, it's awesome. Drupal wouldn't be the same without it. But if you just blindly install 500 modules on your site, you're doing yourself this favor. Because in general, more modules means more complexity, means slower site because it's heavier, everything is more complex. And then, on the other hand, you also have to be aware that Contrib is not perfect. Even core gets weird bugs sometimes, weird regressions. And Contrib is even worse. In Contrib, this is even more frequent because there are less eyes looking at it. Sometimes a module is being maintained and built by a single dev, and nobody ever reviews it. When was the last time when you installed a module on your site that you actually, before doing it, you actually reviewed it and you try to understand what it does. And if everybody does that, yeah, great. And I'm guilty of that as well, right? But if everybody is just blindly installing modules and there is just a single person that is working on it, there is not a lot of quality assurance going on. And there are things that can sneak into, not like smaller modules, but like quite widely used modules. One example that I was really surprised about is context module that is still being used. It's probably not as much as in Drupal 7, but I've seen it being used also in D8910. It has a bug that destroys auto place-holding that Drupal provides. This is the thing that I mentioned before, where you have a piece of the page that is updated frequently or it varies for every user. Drupal detects that, removes it from the page, and then renders it separately and just injects it into the page at the end so it can cache the rest of the page. Context module has a bug that completely disables that. So if you have like a card block that varies by every user, it will ruin the cacheability of every page that this card will appear on, for example. It also completely prevents or completely disables big pipe. So if you have context module and big pipe, you're probably basically not using big pipe at all. And this issue has been open for six years and there is a patch. So if you're using context, just use that patch, but it's still not committed. So my recommendation is don't be afraid. First, the thing that I mentioned earlier, when you are bringing your contributed module into your project, treat it as a custom module initially and do a review on it and try to understand what it does and try to figure out if there are anything that are potentially problematic and try to fix them. Work with the maintainer, provide a patch and whatnot. Also, it's not a scene to have custom modules on your project. Like if the decision is between some really five line fix in a custom module and this huge extra contributed module that you will need to install, go with the first option. It will be easier to maintain long term and cause less problems down the road. The problem with this is when time goes on and you keep accumulating, it's really hard to scale back because even your team members will change. There will be a module that at some point nobody knows why it's there and you will be afraid to disable it because you never know what it will break. Also, when you don't need something, disable it, remove it from the code base and it's clear, it's not used anymore. The last one and the hardest one to fix are data model issues. In Drupal, you create things in UI and you rely on Drupal to create a data model and we are coming back to the field stable and stuff like that. Also using nodes for everything as we've seen can be problematic. Using complex field types like paragraphs for things that they were not meant to be used for, it's also wrong. Once I had a situation where we had a Drupal instance that was data storage for data scientists and then they were using APIs built with views for these data scientists to pull the data from this Drupal instance and to work on it. And in order to get nice filters in views, they used paragraphs for nested complex data which as soon as you had a decently large data set you started using filters on those APIs endpoints. It just took forever to query. On the other hand, if you would think about this before, you could use, for example, a custom field type with multiple properties because most of those paragraphs were exactly that. A few fields on another field or something like that. And that would be much easier to handle with. The problem with this one is if you don't do it in the architecture phase, when you have the site live and you have real data in, it's really expensive to fix. You basically have to redo the entire architecture, you have to migrate the data, which costs money, it's time consuming to do. Basically, at some point, you're rebuilding your entire site again, which it's not ideal. I promoted custom entity types before and custom field types just now and this is one of the solutions for this. And don't blindly trust Drupal to generate a good data model for you with content types that you create, modules that you install. Do it and then check what's in the database and see what happens. It could be fine. Or you could find some problems that would bring you a lot of headache down the road. To conclude, the type of site matters. All the things that I've been telling about right now were with an enterprise project in mind. You have to be pragmatic. If you're building a hobby site, like a site for a small local sports club or something like that, it probably doesn't matter. You can do all of those and it will be fine. It's still nice to fix the lowest hanging fruit, but it will probably be fine. On the other hand, if you're building an enterprise thing or something that you can expect that could become an enterprise thing in the future, you absolutely have to think about those things, because otherwise, when you will notice that there are problems, it will cost you a lot to fix them. Never guess, always measure, or blindly trust. When you're testing performance, only change one thing at a time. Otherwise, you won't know what brought the improvement that you're seeing. When you're measuring, measuring measuring realistic data sets, use the available tools that we mentioned, build it into a peer review process and integrate it into your culture. Don't be afraid of custom code and custom entities, and you always have to be learning, because there's always something new to learn. This is basically the most important fix. Speaking about tools, I would like to mention Goose, an open source load testing framework that we are developing at Tag1. It's built in Rust, but we love it, and there are also examples to use it on Drupal, so check it out. We are also building Gander, which is a new thing in Drupal Core that is bringing performance testing to Drupal Core, which should, in the long term, prevent us from performance regression sneaking into the core itself. But it's open source. There is a base test class in core, and it will be coming out in 10.2, so you can also start using it to performance test your websites either immediately by using the patch in the issue, or if you wait until 10.2, you won't be able to patch. And especially if you already have CI and tests running for your project, it's really simple to do. Just look into core, look at these issues, and there are a few example tests already in core. To perform a test like a single patch, you need four or five lines. So if you already have this running, it's really easy to add it. If you want to learn more, there is a blog post on the Tag1 website where we have links and a little bit of background and all that. And, yeah. Thank you for your attention, and we have five questions. For questions, there is a microphone there, or I can repeat the question. Yes? I will repeat it. You mean like a different module? Okay, so are you reusing? Reusing, okay. So the question was about paragraphs. If you reuse paragraphs, if that would help. Yeah, in general, I think it would, because if you would reuse them a lot, your dataset would become smaller. So yeah, I guess it really depends on how much you would be able to reuse. But in general, the answer is yes. I would also add that paragraphs are not, are great if you're using them as components. Like if you have a paragraph, and then when you display content and you use paragraphs to display there on the note page, it's great. It works fine. The problem with paragraphs is if you start using them in listings, and you need to add where conditions on paragraphs. Because then what it means, you have a note, and then there is a paragraph filled on the note. It's one join. Then you have to join potentially the main paragraph table. It's another join. You have to join the field on the paragraph. It's another join. And then you have condition on that. So that doesn't work really well. But if you're using paragraphs as a component tool, it works great. It's not a problem. No, when you're just retrieving values, it's not a problem. It's when you're trying to filter on the values in paragraph. There's also, like, I've seen pages that used paragraphs as components. But it used, like, hundreds of paragraph entities. That was the problem. Because then it needed to load hundreds of entities to display the page. Obviously, it was rendering forever. But if you're not overdoing it, and if you're using it as a component tool, I think it's a great tool. Yeah, so the question is about AJAX performance, specifically about AJAX forms. Because the AJAX request on forms can sometimes be... slow. The thing is, if you do a lot of things about that AJAX request, the take time, of course, it will be slow. So it comes down to back in performance. You need to make sure that the things that you are doing are fast. It's obvious. But then also sometimes, when you're doing AJAX, you usually update just a part of the page. And maybe there are things that you are doing, because every time when AJAX form thingy goes, the entire form is rebuilt. So if you're doing some compute heavy things into the form build, that are not needed for that specific AJAX use case, maybe you can make sure that those things are not executed at all. So to repeat the comment, there is a proposal to fix that because the problem is that every AJAX request rebuilds the entire page, a.k.a. the entire form. And there is an idea, a proposal to change that to only build whatever needs to be built. And it's not done yet, but if you want to have fun, you're more welcome to do. The problem with the joints is only for filters and sorts, but not for displaying deep fields or something. And I didn't see this edit to the query. And one way to avoid also the joints is to use a search API, I guess. And then you can index the paragraph fields. So you can go three levels into the paragraph and configure your search index. Of course, I guess if you go too deep and you have this super nested big thing, then maybe you get the pollution of your index stuff. And I also had this problem on the display side that you had to index some stuff just for display. The search API maybe needs to be improved in that way. So that for display, we actually load the real entity and just look at that. And for filtering, we use the indexed data. You're exactly right with everything you said and you just made me realize that I have to update my slides to mention the elastics last, search or solar or whatever. Sorry, we don't have time for questions. We're out of time. Thank you for coming. Have a nice evening.