and welcome. I'm James Milan. This is our series on the ABCs of LGBTQ Plus, and I'm joined in our studio today by two guests who I'm going to ask to introduce themselves. I'm going to give you their names. Andy Rubenson is on the far side and Valerie Overton is right here, but tell us a little bit just briefly about what you do and what organizations you represent. Great, yeah. I'm Andy Rubenson, a resident of Arlington and a commissioner on Arlington's Rainbow Commission. I also have past experience as a member of the local steering committee for the Human Rights Campaign as well as the International Board of Governors. Great. And I'm Valerie Overton, my pronounce her she her. I'm co-chair of Lex Pride, which is an organization in Lexington that works to advance social justice for LGBTQ people and all people. And I've also been an activist for civil rights and social justice for about 50 years. All right, well you just mentioned social justice Valerie and that's perfect because our topic for today is advancing social justice, you know, within the realm of LGBTQ life and rights. So I'd like to start by first identifying the kinds of areas we in another segment in this series, we talked about the legal aspects and legal protections against discrimination, but I'd like to dig down a little bit more into, you know, the everyday lived experience of people within the LGBTQ plus community and what kinds of discrimination, of hostility, of perhaps even oppression. Are experienced on a day-to-day basis and in what context. So feel free, either one of you to jump in to identify. Maybe focusing on the positives, like what are ways that we can do to make things more inclusive. So yes, there is a lot of discrimination, but it's things like how do we make our schools safer, how do we make our communities more welcoming, which Lex Pride and the Arlington Rainbow Commission, kind of our goal is to do that, to make people feel that they have a place and they're welcome in our communities. Things like families and being able to adopt children, have recognition of the family units and spousal relationships for people seeking medical care. So there are things like that that, you know, still have a ways to go, I think. Society has to kind of grow more into that. Right, exactly. I think that, you know, there are issues both at the systemic level, you know, in terms of agencies and schools and the policies around families and so forth. And then, you know, you think about the interpersonal and the community level as well. And so, for example, you know, when you are gender non-binary and there are no restrooms that are all gender, or when people, when you maybe go to the gardening club, right, and people assume that you're heterosexual and that you have an opposite sex spouse and so forth. You know, there are just ways of becoming more welcoming by thinking about your assumptions, the assumptions that you make about someone's sexual orientation and gender identity. And kind of checking those so that the language that you use and the questions that you ask and the programming that you offer, whether that's films and books and things like are those reflecting the full diversity of our community rather than a more narrow look at our community. So there are a lot of ways kind of at the interpersonal and community levels as well as kind of the systemic levels which are super important because they do affect people's everyday lives. And I think it's kind of in greening these practices. Yesterday, I got a, I sent out a work email and I have my pronouns that he has, pronouns in my email and this was actually somebody that lives in France and they're like, hey, what does this mean? And so it's even just creating kind of a social norm for things where, you know, gender neutral restrooms, the use of pronouns and by getting everyone to share those and use it, it becomes commonplace because then it's not putting people in an awkward position of having, it's like, why is this person sharing their pronouns with me? It's like, no, that's just how you do it. Right, normalizing all of this stuff is really one of the goals for advancing social justice, it seems to for sure. I'm glad you mentioned the word assumptions now because I think that that's a place where we all can do a lot more work. I think one of the things I'm always struck by when it comes to the LGBTQ community as a vulnerable community in the same way as others might be, it's just so much less visible a lot of the times for people that you are carrying this as part of your identity around with you through the world. I'm wondering if you thought, you know, what you guys have noted around assumptions that people make when again a perhaps a difference or at least a distinction about somebody else is not kind of readily visible or perceptible. Right, so we hear a lot, I mean, I think that there's both as you were talking about the systemic level and the kind of interpersonal level, you know, for example, in schools and in other settings, you know, sometimes people, whether it's educators or employers or whatever, use kind of the legal name that's on the birth certificate and those pronouns rather than the your preferred name and pronouns. And that is, you know, very the opposite of affirming, shall we say, the opposite of welcoming. And in a workplace, for example, like for some of us, it can be difficult either internally or with clients to say, well, you know, it's okay for my colleague to talk about the barbecue that they went to with their husband, but is it okay for me to talk about, you know, with my partner, what we have done and over the weekend, and or is that going to be considered like, you know, flaunting one's sexuality. Too much information. Too much information. So there's a huge disconnect between what is acceptable for heterosexual people to talk about and what is acceptable for LGBTQ people to talk about. And do you think that the onus, for instance, let's just let's suppose a hypothetical situation where I'm meeting a new person. And I'm a heterosexual man. I don't know how this person identifies him or herself or their selves. Is the should the onus be on me to seek to find that out? Or is the onus on that person say he or she is a member of the LGBTQ community who goes by certain pronouns? Should the onus be on that person to make that clear right from the outset? How how how, you know, I know we're really kind of digging into the into the weeds here. But how does that how does that work? I mean, I think people very, you know, they're very different. So some people are very forthcoming. And some people, you know, it's a journey through time.  But, you know, I think that the key thing is kind of try to reduce your presumptions. Like when you are asking somebody, you know, you talk about the Oh, is your spouse or, you know, so don't don't presume that like, Oh, you must be like I see you have a wedding ring on, you must be married to a to a woman. And I think that you often hear some terminology that's recently become more prevalent is like cis is like appearing to be kind of like the the norm of what you would expect a typical male to be. And not everyone is that way. And it's kind of the realization that there are folks that are gender non binary or people that that are just don't don't have that that cis appearance. And you have to just be considerate of them. So it's using consideration and also being a little more broad and and opening to other things other than your norm. Exactly. Yeah. And I think with pronouns in particular, and gender identity in particular, I think you're right that that is an area that can be really confusing for a lot of people. And so I think it really depends on context.  It depends on kind of context and relationship. And so if it's a situation where that understanding and the relationship is one where you want to kind of be respectful of that information, you know, one way to do that is just to model using your own pronouns so that if someone else wants to share that information, they can, but not pushing it, right? So, you know, want to insist that someone share that information with you if they don't want to. Right.  I will work and have been working not to make presumptions or assumptions about somebody else in the way that he or she might identify themselves. I also would never think that to exchange that. In other words, if you were to introduce yourself to me, I'm Valerie, my pronouns are she, her, I don't think to myself, oh, okay, so I'm James and I'm he, him. I don't do that, you know? Should I? I guess. Do you think that that would ease, you know, again, if I'm trying hard to be a good person in these interactions, is that something that would ease that? Yeah, I mean, I think that, you know, as you said, trying to make things more the normal thing to do, I think it also depends a little bit on the environment you're in. You know, so we always open with our pronouns, but it's not something that I'm necessarily like when we've introduced ourselves for the segment, you know, I don't automatically think to do it, but I've automatically added to me. So it's something that I need to build on too. So it's, you know, don't feel it's a journey to be doing that. And I should be making that more of the norm, especially in situations like these. Yeah, I think that, again, it depends on context. If it's a situation where you want to learn more about someone, then I think that offering your pronouns is helpful. Or if it's a situation where perhaps you're in a meeting and people, everybody's introducing themselves, I think that's a situation where it would be good for all of us to get into the habit of introducing ourselves with pronouns. And it does take practice. It feels very awkward at first for most people. But once you get into the swing of using your pronouns for introductions, it really does become easier. So I think that sometimes what we, what I like to say is, you know, embrace the uncomfortable. You know, sometimes things are awkward and uncomfortable at first, and that's okay. It doesn't, we don't have to start out feeling comfortable and easy with all of these things. It's just a matter of, you know, working on it. But being even like being engaged with someone where you do ask about a spouse versus a husband or wife makes just, just seeing your awareness that like the society, I'm not being specific, makes it feel more comfortable for that person to be able to say, oh, it's actually my husband. Right. And I do think that that is something that regardless of the context, I do think that using non-gendered language to refer to people's spouses or families or friends and those kinds of things signifies that you're not making assumptions. So, you know, even who's in your family is really different from like, so who's your wife and those kinds of things. So clearly avoiding presumptions and assumptions, being open to, again, what kind of language will make the other person comfortable in terms of, however much they want to reveal about themselves in their situation. These are keys. Yeah. And I think that, you know, one thing that's helpful for to recognize also is that people vary a lot in their gender expression. So for example, you know, sometimes historically, like the stereotype of a lesbian has been kind of the butch, you know, more masculine presenting woman. And that's true in some cases and not in other cases.  And if you're transgender, your gender expression can be anywhere on the spectrum. And so I think that's another area where not making assumptions and recognizing that that might vary by person, whether or not you're cisgender or transgender, and also by culture. I think it's really important to recognize that gender expression and other kinds of identity look can look different based on your cultural background. I just wanted before we wrap things up, I wanted to make sure that on the topic of advancing social justice for LGBTQ people that we haven't left anything unsaid that needs to be said. So I just wanted to invite you in an open way to add anything in that we haven't covered. Well, you know, one thing I'd like to say, a little call out to the Rainbow Commission is, you know, the whole purpose of having the Arlington Rainbow Commission is to create a more welcoming community. So we're able to do things like hold a pride event and other community events. Tonight we're doing karaoke and cocoa at the senior center. But we have we have ongoing events. We have craft stays and things where we bring people of all ages together to do things. And just it's kind of creating that community and making people know that they are welcome. So I think that's one one important thing that we can do as a community to kind of support one another. Yeah, I think that's really important. And I think that a lot of these events, you don't have to be LGBTQ to go to them. It's like allies. We love our allies, right? And so bringing people together is really important. And also whether it's through the Arlington Rainbow Commission or through Lex Pride, there are a lot of resources available. So you can look on our websites for resources. And we also offer educational events, awareness events, trainings, either for general audiences or professional development workshops on these topics. And also, you know, there are things like book lists and movie lists and things like that so that if you are someone who's working in a community organization who has these kinds of offerings, just to remember to kind of try to be inclusive in your offerings. And I love the fact that you've both described the organizations that you work with primarily as inclusive that you, as you say, love your allies, etc. Because as we well know, people's identities, partake of many different facets, and one sexual orientation, one gender identity, and you know, many other things go into that. So there's nothing, you know, nobody wants to be identified only by one of the things that they that they that is true about themselves. So all right, well, thank you very much for the work that you do. And thanks also for sharing your your knowledge, your expertise, your understanding and compassion with us today. Okay, thank you for Andy Rubinson and Valerie Overton. I'm James Milan. Thank you for joining us. And we'll see you next time.


Today we're in chapter four here in the book of 1 Peter. We're going to look at verses seven through nine And so let's begin reading together in first Peter chapter four at verse seven I'll read to verse nine and we'll get into our study first Peter chapter four verses seven through nine The Apostle Peter writes but the end of all things is at hand Therefore be serious and watchful in your prayers and Above all things have fervent love for one another for love will cover a multitude of sins Be hospitable to one another without grumbling And so as we've been looking at first Peter the Apostle has already mentioned the fact that he's writing to a church or churches That are undergoing persecution and he's been exhorting the believers to remain steadfast in the face of opposition In order to establish why that is an important thing to do He's already spoken of how Jesus himself Suffered on our behalf if you look real briefly into chapter two for a moment verses 20 and 21 I'd refresh your memory by drawing your attention to those verses where it says for what credit is it if When you are beaten for your faults you take it patiently But when you do good and suffer for it if you take it patiently this is commendable before God For to this you were called because Christ also suffered for us leaving us an example that you should follow his steps So he's already pointed out that the Lord Jesus Christ suffered on our behalf and therefore we should follow his example By following his example one who's already suffered on our behalf This will enable us to endure our times of pain and our times of suffering and the variety of things that we go through as believers The times when people speak Poorly of us they gossip about us or the times that they they confront us to our face Or even the times that you may have a physical attack that takes place because of your faith in the Lord Jesus Christ He's saying what we as believers are intended to do is just continue in doing good But also to look back at what Jesus Christ has done for us He is our example and therefore we ought to follow his example completely Jesus Strengthens us and gives us the power to endure our times of pain It reminds me of what the writer in Hebrews had in chapter 12 in the book of Hebrews verse 2 Where he's speaking there in verses 1 and 2 as if the Christian life is a race and He says in verse 2 looking unto Jesus the author and finisher of our faith who for the joy that was set before him Endured the cross the spicing the shame and has sat down at the right hand of the throne of God And so he's saying as if we're running a race the course is set before us and we're running it with endurance And as we do so There's a finish line that that we can see and the finish line he's speaking about is Jesus himself We're looking unto Jesus. He's the one that we're running towards during this race and as we're running in this race We're gonna run without distraction The only thing that should be before us is the finish line So he's saying that that if we're going to be successful in our life and Endure the suffering that we sometimes will find ourselves in We need to make sure that we take our eyes off ourselves We need to take our eyes off of our circumstances our needs and we need to look unto him And the reason we do so is because Jesus is referred to as the author and the finisher of our faith The word author speaks of him being the originator of our faith and the finisher speaks of him being the one who brings it into maturity and completeness And therefore without looking at distractions around us Even when we're reviled even when people are are speaking ill of us to our faces or or behind our back Or when they're hurting us even when they're doing those things We're looking beyond what is it we're experiencing at that moment looking past it because we're enduring it because of the joy That is set before us. That's what he had said who for the joy that was set before him endured the cross despising the shame So Jesus endured the agony of the cross because he had the joy finishing his course He knew he would finish his course. He also knew he'd obtained salvation and he was going home And so that should be our motivation that we should be pleasing to him. What do I run for? Why am I in this race and what is the prize? Well, the prize isn't heaven because heaven is really my home. It became my home when I got saved Living in heaven is actually a gift. It's an inheritance. It's not a prize that is won by trying hard Paul said in Philippians 3 20 and 21 our citizenship is in heaven and from it We await a savior the Lord Jesus Christ who will transform our lowly body to be like his glorious body by the power That enables him even to subject all things to himself Heaven is our home What I'm running for is the joy of glorifying God by being faithful to him and that's why we remain steadfast in the face of Suffering and that's why Peter had already said in verse 1 that we're to arm ourselves with the same mind that Jesus had What we do is we have a willingness to suffer while doing the will of God Because in that way God refines our faith and he grows up grows us up as believers That knowledge is something precious to us, but isn't always understood by those who don't know the Lord And so we've already seen those verses and he's continuing that thought into verse 7 here in first Peter chapter 4 By saying but the end of all things is at hand Therefore be serious and watchful in your prayers So remain steadfast the end is coming the end of all things When he speaks of the end the end is a word that refers to the result or the goal It's it's the end of some condition some state of being and what he's saying is that things are going to conclude and it's going to conclude soon and Therefore when Jesus returns we ought to look to him because we're going to one day be with him So if Jesus is returning how then should we live? Well, we should live as if we believe that Jesus is returning that is actually returning to planet earth now When I first got saved People were speaking about the fact that Jesus promised to return It isn't something that was invented in you know the 1800s 1900s It's it's something that we find in Scripture. Jesus made those promises in John 14 for example verses 1 through 3 Jesus said let not your heart be troubled you believe in God believe also in me in my father's house There are many mansions if it were not so I would have told you I go and prepare a place for you And if I go and prepare a place for you I'll come again receive you into myself that where I am there you may be also I will come again and receive you into myself That's a promise from the Lord Jesus taught that while he was still alive on the face of the earth And he says I'm going to return and so he gave us the promise of his return Not only that Jesus speak concern is returned But angels reminded us of his return because in Acts chapter 1 after that Jesus had spoken to his disciples And he had said you shall receive power after that the Holy Spirit has come upon you You shall be witnesses to me in Jerusalem Judea Samaria and unto the uttermost parts of the earth After speak to them concerning the power that God would give to them so that they could be witnesses to him The next thing we see in verse 9 is that after he said this he was taken up before their very eyes and a cloud Hit him from their sight They were looking intently up into the sky as he was going when suddenly two men dressed and wide stood beside them Men of Galilee. They said why do you stand here looking into the sky? The same Jesus who has been taken from you into heaven will come back in the same way You have seen him go into heaven So the promise was Jesus saying I will come in and receive you unto myself the angels reminded the disciples and This promise is something that is referred to throughout the New Testament The return of the Lord Jesus Christ is intended to stir us with an expectation that results in righteous living If Jesus is really returning then it ought to stir us to live in a certain way Romans 13 12 says the night is far spent the day is at hand Let us therefore cast off the works of darkness and let us put on the armor of light So the return of Christ can happen at any moment and therefore we should be ready at any moment in First Thessalonians 4 16 and 17 it says the Lord himself will come down from heaven with a commanding shout With the voice of the archangel with the trumpet call of God First the Christians who have died will rise from their graves Then together with them we who are still alive and remain on the earth will be caught up in the clouds to meet The Lord in the air then we will be with the Lord forever The Lord promises to return for us. It's a hope of the church. It's the expectation of believers He said he could return in the next prophecy on God's calendar to be fulfilled Is the rapture of the church for us to be gone and to be with him This is something that was poured into me from the day I got saved one of my friends George Adams I've shared this with you before but George Adams at that time was living in expectation of the soon return of Christ And he basically drummed that into me Jesus is returning you ought to live as if you expect him to return today And I can still remember as I've shared with you before how that one day he and I were driving to the store Pulled out of the driveway drove up to a stop sign I took a left turn as I took a left turn my passenger side door swung open when the door opened up George you always had his Bible on him and had his Bible on his lap when the door swung open George leaned out with both of his hands over his head holding the Bible And I slammed on the brakes and I said what are you doing? And he said I thought the rapture happened and Jesus is a gentleman and he opened my door for me I'll never forget that that was his expectation and the second thought to me was why was my door left closed? You know I I'm not quite sure how that works, but that was the expectation. That's what we were trained in That's what the Bible teaches. I will come again receive you into myself there where I am there You may be also men of Galilee. Why are you looking up into the sky? Jesus said he'd return even as you saw him go. How should we live?  The end of all things is at hand. How am I to live? Well, I'm to be serious. I'm to be watchful. I'm to be prayerful I'm to live in such a way as it demonstrates that I actually believe that the Lord is coming Now when he speaks about us being serious and watchful in our prayers to be serious-minded Speaks of exercising self-control in my life The return of Jesus isn't intended to make me into a date setter or a disaster hound It's intended to encourage me to patiently wait for him to be prepared that I might see him You see the Bible speaks concerning the church as if the church is the bride of Christ Paul speaks of himself as a father who has espoused his virgin bride to the husband And therefore he has a protective interest for this virgin bride who will one day be married to the husband And he tells us in Ephesians 5 that the husband is Jesus himself And so we the church the body of Christ are called by various metaphors in scripture But one is called the bride of Christ and the Bible teaches us that we are to be prepared to meet him And therefore we make ourselves prepared through the works that we do that demonstrate that we anticipate being with him I've done a lot of weddings in my day and I can tell you this the brides always are ready They're always prepared.  I mean the a bridal March She always looks good. She always looks beautiful. The bride has prepared herself. She's ready. She's meeting her husband It's her day. She always looks good.  That's the next day you came out looking good You came out looking fine, didn't you because it's your day your hair is done up the makeup just right the dress everything It's perfect Why because you took the time to prepare yourself because you're meeting your groom and you wanted to be prepared We can take that and use that as an illustration in our life. How then should we live? What should we be like we should be prepared? We should be ready We want to see him Everyone who has this hope in him purifies himself just as he is pure we're told in 1st John 3 3 Not only are we serious-minded, but we're also Going to be prayerful. We're gonna be watchful. We're calm and collected as we wait We're people of prayer depending on God waiting for him to deliver us in mark 13 33 through 37 It says take heed watch and pray for you do not know when the time is It's like a man going to a far country who left this house and gave authority to his servants and to each his work and commanded the doorkeeper to watch And therefore watch For you do not know when the master of the house is coming in the evening at midnight at the crowing of the rooster Or in the morning unless coming suddenly he finds you sleeping what I say to you I say to all watch That's why he says be serious be watchful and be prayerful wait it on the Lord who's to come Now in the midst of all this persecution and trying times that the believers are going through The apostle needs to encourage them to make it through by keeping their eyes on Jesus Christ Now as they keep their eyes on the Lord Jesus Christ, they also have duties They are responsibilities that they are enacting as a as they're on planet earth They're there the church of the body of Christ. How is the body of Christ to act? What is going to sustain them during the times of persecution and trying times? What is it going to be that I need to keep me strong? Well, he says in verse 8 and above all things have fervent love for one another for love will cover a multitude of sins Under persecution they're going under persecution. So under persecution It's easy to begin caring more about your own needs under trying times It's easier for you to begin caring for your own needs your own wants Your family's needs and so he's saying listen You're supposed to have fervent love for one another and this is above all things Because love is a supreme virtue Love is the identifying mark of a genuine believer of Jesus Christ A new commandment give I unto you that you love one another as I have loved you By this shall all men know that you are my disciples if you have love one to another The Bible makes it very clear greater love has no man than this that a man lay down his life for his friends The Lord Jesus Christ made it very clear that that we are to love one another and you find that throughout the scripture Colossians 3 14 says above all clothe yourselves with love which binds us together in perfect harmony The body of Christ is one body and therefore the body is knit together in the love of God and During times of hardship and persecution rather than caring simply for our own needs We care for the needs of other people. That's what he's called us to do in 1st John 4 7 The scripture says beloved let us love one another for love is of God and everyone who loves is born of God and knows God He goes on to say he who loves not knows not God for God is love It is the identifying mark of the believer This is my commandment that you love one another as I have loved you Jesus said in John 15 12 And so the Lord has called us to have love and it's not just this sentimental emotional But he says above all things have fervent love a fervent love That fervent love isn't an option It's central to our faith and it identifies us as believers This love is one that is passionate and strong He's already spoken of loving in a fervent fashion and that word fervency speaking of its intensity Speaks of it being a maximum effort and in other words put all your effort into this one thing That is to love one another He's already spoken of that kind of love in chapter 1 verse 22 when he said love one another fervently So make maximum effort to truly care about one another Your faith is going to be stretched to the limit To love in spite of insults in spite of injury In spite of misunderstandings Boy is that a message that the church is in need of remembering in these last days We live in such a fragmented society don't we we live in a society that Well that that families break up very easily and very quickly Promises that were made to love and cherish forever until death parts us Are just words that are spoken in front of people On that occasion but not necessarily that which rules our life and rules our marriages Some people look at marriage as if it's something that you While you have a start-up marriage you try it if it works out fine If it doesn't you can always start again with somebody else with the lessons that you've learned and that's the mentality That many people have brought into their marriages sadly they They break one another's hearts and then they break the hearts of the children that they abandon as they pursue their own courses of happiness The children who are raised in homes that have been busted up like that Don't really understand what love is they don't know what men really are They don't know what that men are supposed to keep their promises They don't know that wives are supposed to keep their promises. They simply know that these two didn't So they grow up in a in a home that has been fragmented and it's very sad and it's painful and this is no judgment It's just a fact. It's a reality That's true A lot of broken hearts a lot of broken hearted children a lot of anger that continues throughout not only childhood But into adulthood a lack of trust for one another a lack of willingness to to pour out or fervently pursue because We've seen that That love can hurt sometimes at least that's how we have interpreted love. It's a hurtful thing not necessarily something That's a healing thing So hearts are broken And we're afraid to unite with people. We're afraid to unite even with those who are closest to us We're afraid to disclose ourselves. We're afraid to Bear our souls. We're afraid to trust and hold nothing back And then you get saved and you get into a church and you hear messages about loving fervently the maximum effort and And you do your best to do that, but you never really seemed to think that You've ever really grabbed hold of that message. What does it mean to love fervently? You know, I can speak to a left side of the audience and I can speak to the right side of the audience And the right side of the church here may never meet the person on the left side of the church Never has opportunity or ever takes opportunity to We can actually segmentize ourselves into the preferential seating that we are disposed to So I choose to sit here and they choose to sit there Never the two shall meet. So how is it work in love? And what does it mean to fervently love one another when you're really strangers in reality? Well, you make a maximum effort You get involved you serve You get to know people You reach out across the aisle You know the times when when we say, okay, take the hand of the person next to you And that's the only time somebody's actually had somebody else hold their hand in the whole week It's the first time somebody actually reached down and touched them because they live alone They're by themselves constantly nobody ever reaches out and touches them at all So for them, it's a great thing for you. It may be an uncomfortable thing But for others it's something that that matters because this is human contact I haven't really had this And it's nice to have even if it's just for a moment And even if it's simply to remind me that I actually am part of something much bigger than my individual life love Love one another fervently I ask the lord, can you please help me to understand what that means lord to have a passion and intensity to stretch out to the limit What does that really mean and and you know what the lord did he brought to mind something that I see I see all the time He brought to me To my mind the love that my son david has for his daughter bella My little bella is a bella bella Turned three years old on the 28th of august three years old and You know as she became three, you know, naturally there's all the the honor given to this Three-year-old and so we went to chuckie cheese I only go for bella and my grandchildren. I wouldn't go for anything anything else So you know rats singing scare me but anyway Chuckie cheese And she had her little party and she was the guest of honor along with another little Child that was having their birthday there and the singing and all of that and it was a lot of fun for her But then again, she had to have another little get together and finally she had another get together And by then she was kind of tired of all of her parties and this and that and she's already partied herself to death She's three years old, you know and yet All this love and everything. I was watching my son david. I couldn't help but notice And and I spoke to him and I've told him this but I'll say it openly to you You know in my life a lot of people know that david rosales loves his wife and loves his children Everybody who knows me knows that's true, but I told my son david You know what you put me to shame when it comes to loving a baby My son david loves that little girl with an intensity And a passion and a maximum effort that I have never seen in another man in my entire life, including myself I have never seen that kind of devotion that kind of love that kind of sacrifice that kind of willingness As I've seen in my son with this little girl I am so in the lord proud of that young man for that love he has for her And god used him as an example to me of what it means to love with passion and to the maximum effort Because that's what he does. He loves that baby. There's nothing that he wouldn't do for her that is good for her He would give up anything for her. He does everything for her. He loves her and the lord was saying that's an example of love Why don't you see it and use it yourself? Why don't you learn to love like that? Because that to me has been a living epistle That's watching this man raising this little girl He's a single father watching him with he and his friend his girlfriend Who's a loving woman by the way and loves her baby too But I see david with with bella more than I see His girlfriend with her and I'll have to tell you It touches my heart to see that to see god's love through my son What an example to me what a fervency that he has and that's what the lord has called me to God has called me to love with a fervency You see when you love with that kind of love you actually will overlook certain things. It says love will cover a multitude of sins When you have a great love for for somebody then the petty annoyances and the various things that can destroy relationship are dealt with They aren't so large. It turns out. They're not that big a deal You actually are able to go through those things and these differences are kept at a minimum And what he's telling us to do is to choose to love because love preserves the unity of the body of christ So resist the the the temptation to become petty and self centered I've had people who've been upset at me because I didn't hug them. I didn't even see them But they've been angry at me You didn't hug me and they left the church and they let me know of how unloving I am I'm unloving that's true, but I didn't see them And and and we can be petty and we can get upset and we can make issues over things that just do not matter You see in persecution The fact is is these people had something going in their life that was a lot more important They were surviving and when you're surviving then the petty things that would normally cause Discord are dealt with and that's why he says love covers a multitude of sin It's not that love is going to forgive sin. It's not he's not saying that that you ignore it He's he's saying in relationship between me and somebody else He's saying that my love for that person is going to give me the opportunity to overlook the things that have been done Yes, we deal with the sin. We deal with issues, but it doesn't divide us And and in my relationship with somebody I have to love them enough to allow them to be human beings Not only that he goes on to say in verse 9 be hospitable to one another without grumbling Now under moses's law the jews were to be gracious to strangers. They were to be hospitable In deuteronomy 10 19 it says therefore love the stranger you were strangers in the land of egypt So this concern for others is to be out of a love for people So be so be concerned for other people have a hospitable heart be generous in your spirit once again My david I'm using him as an example again because he's been a good lesson to me He was around four or five years old.  We stopped in tijuana as we were there in tijuana We started walking and the kids had never been there So we're just walking in this one area and as we were walking david was next to me as he always was And as we were walking we walked by a lady and I noticed that david was looking at this lady because the lady was seated With her back against the wall. She was holding a baby. She had a can in front of her and she needed help And as we walked by I was watching my son and as I watched my son I watched him look at the lady and and to be honest with you we kept walking As we kept walking we got to a corner which was about 20 yards from where the lady was seated We crossed the street Then we began to make our way back down the other side towards in the same direction where this lady was And all this time I'm watching my son as he keeps looking back. We crossed the street I could see him looking towards her We crossed and started walking again and he's still looking in her direction And finally I stopped directly across from this woman and I stopped and I said to my son david David what's wrong?  And he looks at me and he said yes daddy and I said why? I said is it because of that lady with that baby and she needs help And he said yes dad And I said do you want to help her Dave? And he said yes So I put my hand in my wallet pulled out some money handed it to him and I said go give her something So he goes running up to the corner crosses the street crosses runs and I see him put this money in her hand He comes running back with the biggest smile in his face And the lord spoke to my heart To this day Spoke to my heart He said that's the heart that you're supposed to have A heart that sees pain and wants to help be hospitable It's easy to walk past be hospitable Care for those in need remember who you are and where you've come from don't forget When you have a brother in the context you have a brother or a sister who's in need A genuine need and their persecution was causing them to lose everything He said take care of them and do so without grumbling Without grumbling because you can do something good, but under your breath saying man Why do I have to do this again? Where's somebody else? How come they caught me? You know, you can grumble over that Again, my david is very generous. He's so generous. He'd give everything I own away if you could He's the kind of kid that when his friends would come over He'd go running up to the to the cupboard and open it up and he'd say do you want something friend Do you want something to eat and he'd pull things out daddy? Can you make this soup for them? I mean he was just that way. He'd give away my house if he could, you know, very generous But that's what he's talking about. I have a hospitable heart and don't crumble about it Don't be making issues over it. Don't be upset about it You need to have an attitude that goes beyond Just self satisfaction it needs to go beyond that And that attitude goes beyond providing food or a place to stay because what you do is you give out of a sincere heart You need to have a generous spirit that's grounded in the love of god and the love for others Hebrews 13 16 says do not forget to do good and to share for with such sacrifices. God is well Pleased as much as lies within you do good unto all men, especially to the household of faith. Paul told the Galatians Have a heart to give have a heart to care Have a heart that loves Be hospitable without rumbling Have a fervent love because love covers a multitude of sin Have an expectation because the lord jesus christ is returning and therefore be watchful And therefore be prayerful And be ready Because he's even at the door And love is that which cements us together Love makes it possible for us to withstand persecution Love enables us to live in harmony Even again as it says in Colossians 3 14 cloth yourselves with love which binds us together in perfect harmony It's the love of god the love of the spirit the love for one another the love that came from god That is extended to other people that god honors And in doing so the church will have an impact in a world that doesn't even think that jesus is returning But we know that he is he's even at the door and his reward is with him and one of these days before too long That trumpet will sound the voice of the archangel will ring out And we will be with him to behold his face forever and ever and ever In unity with him in love with him in a home prepared especially for us And it comes because we had faith in jesus christ He held fast to us and we held fast to him Love one another Fervently


Globular star cluster NGC 6397 is one of the oldest objects in the universe. It's estimated to be 13.4 billion years old. It's also one of the closest such star systems to Earth. In 2018, using the new spatial scanning-based parallax data, astronomers have, for the first time, precisely measured the distance to this globular cluster. The new measurement sets the cluster distance at 7,800 light years, with just a 3% margin of error. This is significantly better than the Hertzsprung-Russell diagram technique based on luminosities and star colors. The margin of error for HR diagram estimates range from 10 to 20%.


Thank you for coming. I know this talk is recorded, so I'm going to thank, before I get into any of the talk, I'm just going to thank my manager, Nate, for helping me create the topic and encouraging me along the way to apply to this conference. Thank you, Nate. Thank you to all the engineers and review trackers for going through the presentation and giving me really valuable feedback. Really appreciate you guys. But yeah, that is neither here nor there. I will get into the material. So you are here, again, at how to unflake flaky tests, a new hires toolkit. And the metaphor we will be using is a toolkit. We will not be using this other. This is one of the alternate talk titles I had. Keep the flakiness for your croissant, how to unflake your automated tests. So that is not the metaphor we're going for. It is not a talk with different kinds of croissants for your test. And this is also not the title of the talk. We will not be talking about cake. Each kind of concept will not be described with a different kind of cake. Because we've already eaten lunch. That is not the metaphor we're going for. It's tools. Oh yeah, and it is also not Taylor Swift themed talk. This is one of the other titles I was debating between, not Taylor Swift. And also, you don't want to hear me sing, because that would be really painful. So the talk is not going to be like 10 different Taylor Swift songs with each concept. No, it will be tools, tools are what we're talking about. Before I get into the talk, I'll just talk a little bit about review trackers, the company where I work. What we do at review trackers is, so let's say you're a business like Pizza Hut, and you have thousands of locations. And each of those locations has a Facebook page, a Google page, a Zomato page, a TripAdvisor page. And each of those pages is a place where users can leave reviews.  You use our platform review trackers, and you create an account. And we grab the reviews across the entire internet for you. And we give you a central place to look at all of them, give you kind of sentiment analysis of the review text, and allow you to respond to those reviews in a centralized place so that you can have a centralized brand messaging. It's a really great platform. Something else really great about review trackers engineering is that we have a microservice architecture, which means that the database is separate from the API, which is separate from asynchronous services, which is separate from the email services. And that makes it really great for me, a test engineer, to test those services. Everything's kind of separated in its own little microservice. So to actually run the review trackers application, it takes 14 microservices. I think that's pretty cool. I'll give a real quick warning before I get into any of the talk. So I am a Ruby developer and a Ruby test engineer. And so I'm not going to be using many code examples, but I just want you to know that I'm coming from a Ruby background. And I'm thinking about things in a Ruby kind of way. But I think even if you're a Java developer or a .NET developer, you'll still be able to get things out of this talk. Nothing is really Ruby specific. I just thought I'd throw that out there, though. One other thing is that I am somewhat new to programming. So that's me. I'm that little baby at the laptop. So please correct me if I'm wrong about anything at the end of the presentation and just know that I'm coming into this talk with kind of new eyes. I'll also describe our testing stack. Oh, yeah, and one other thing I wanted to mention is that I am coming at flakiness as a test engineer. Like, I'm not the developer of the application. Sometimes at organizations you have the developers. And the developers writing the application also write the tests. This talk is from a perspective of I am a test engineer and I maintain the Selenium tests. And I'm not making the application under test. I'll go real briefly into our test stack. So we use Ruby. We use Capybara, which is a DSL for using Selenium for Ruby. It's really great. It has kind of natural language so that the methods that you use sound like English. And you can read them in English. You can read the code that's running the test in a pretty easy way to understand it in English. So that even a project manager could read through the test and understand what's going on. Then we use Site Prism for our page object model. We use Parallel RSpec for our parallel test execution. We use Jenkins. That's our CI server. We also run our tests on a Selenium grid. 10 at the same time. And then we also use Docker. All our microservices are also dockerized. And the tests themselves are also dockerized. So before I get into it, I'll just talk about how I came up with this topic. And the reality of it is I've been a new hire three times in life. My first job was as a manual QA engineer. I did that for two and a half years. And while I was there, I kind of developed some programming skills and was doing kind of some of that exploratory unit testing that was talked about in the earlier keynotes. And then the other two jobs I had were as test engineers. And one of the things that I love about starting new jobs is you get these really fun tests or new hire checklists. I love new hire checklists. I love the feeling of going through it and checking it and being like, I did that. I know that piece of knowledge. I'm ready to start the actual job. I love checklists. However, when it's time to actually start the job, that's when you get the file cabinet thrown at you. It's time to start. And instead of writing new tests, you're often handed broken tests or flaky tests. And you're like, fix these. At each of the three jobs I've had, that's what's happened after I completed the checklist. So that's why I came up with this topic. I thought, let me pass on the lessons that I've learned and the things that I think are valuable to know at that stage so that you can fix your flaky test and then get on to writing new tests and providing further value for the application, get past the flakiness, shake it off, if you will. So some of the takeaways that I want you all to leave here with are confidence to uncover the flakiness in any of your tests. I also want you to have awareness of the breadth of issues that can happen in test systems. Because I won't cover all the things that can happen, but so many different things can happen. There are just so many variables when it comes to testing. But I want you to leave here with an awareness of some of the breadth of issues that can occur. And I also want you to all have persistence because don't let one flaky test get under your nail and be a thorn in your side. Like be persistent and tackle it. And hopefully you'll have the tools to do that at the end of this talk. And before I get into the tools, I'm gonna describe really quickly what I think is flakiness. This is my view and everybody might have their own definition of flakiness and it's totally all right for you to have your own definition. For me, the first thing that I think of when I think of flakiness is non-determinism. And what that means is let's say I have the same application under test and the same test script and I run it 10 times. And nine times out of 10 it passes, but one time out of 10 it fails. To me that's non-deterministic because nothing has changed in the ecosystem but a failure has been reported. Another thing that we think about when talking about flakiness is a false negative, right? So when that one out of 10 tests fails in your CI pipeline and you look at it, you're wondering like, is something actually wrong with the application or something wrong with the test code itself? And most of the time it's probably something is wrong with the test code. So that's a false negative. There's also the inverse situation that isn't quite flakiness but a false positive and it's something as a test engineer you need to keep in mind is possible. And that's when your test passes but it's not actually eliciting the behavior that you're trying to test. So as you're debugging, know that that's a thing that can happen. It's not quite flakiness but it's important to think about. And then another attribute I associate with flakiness is things that are hard to reproduce. Here's some of the common causes of flakiness. I think one of the biggest causes is change selectors. And there are a lot of talks at this conference about how to really nail down your selectors. So you should use those talks to nail down your selectors. Something else that's a common cause is change application behavior. You as a test engineer need to be aware that that's a thing that can happen. And it's possible if the application changes and your test is operating on the previous version of it that your test will fail. Waiting is a really common issue. I mean, if you were to Google like what is wrong with my test, like Selenium errors, people would be like, hey, are you waiting on the right thing? And as a test engineer, you really got to master waiting. You have to have your strategies in place. And I'm sure a lot of the talks at this conference talk about waiting strategies. And then there was also a talk earlier today by Dan from Sauce Labs about test order dependency where he talked about the idea of like an atomic test and if they're not atomic, that can cause flakiness. Same thing with test parallelization. You can run into unique issues when you try to parallelize your test. If let's say like your database isn't meant to handle that load or your login system isn't meant to handle that load. So there's all sorts of things that can happen when you try to parallelize your tests. That is kind of the same thing as test setup, right? Is there anything you're executing before your test? Maybe like factory data creation that can cause flakiness. And then the last thing, third-party code. So let's say like you have a third-party mail service that you use in production to send all your email and in your staging environments you use that same service but maybe you pay for a less expensive tier of it. Or so like in production you pay for the largest tier and you get all the bells and whistles that come with that but in your testing environment if it's less performant maybe it's possible that the third-party code in that case is what's causing the flakiness. Maybe that third-party service isn't performant. There's a number of things with third-party code that can cause flakiness and you just need to be aware that that's something you need to think about. I'll just cover really quick some of the common selenium errors that you can run into. Stale element reference, that's probably the most common error, right? So let's say you use selenium to grab an element and then JavaScript, unbeknownst to you, deleted that element and swapped it in with an element that has the same exact attributes and text in it, but selenium's definition of it is the prior definition so when you go to re-interact with that element, selenium has the old one and your stale. And there are a couple other things that can cause those stale element references. And then of course the element is not clickable at point x, y. You're trying to click something and maybe a modal supersedes what you're trying to click. You'll get this error. And element not found. As a test engineer, no doubt you have seen that before. And before I get into the tools, I just wanna show this quick video of a little bit of selenium silliness. My test script thinks I'm interacting with the first row but we actually put a flag on the third row and then did an action on the first row and that's because when the page loaded, we flagged what we thought was the first row but it was actually the third row. Because as the rows are loaded on this webpage, I mean you're not really seeing it in this video but the third one came in first in selenium's mind. So just know that selenium can be silly sometimes. All right, I've thrown a lot of information at you about definitions of flakiness and stuff like that. Now I want to get into the tools, how to debug that flakiness. And for me, it's really about having a bunch of things in your pocket to get rid of that flakiness, right? Like when I think of a toolkit, I think, okay, let's say I'm trying to hang something on the wall. I need a nail, I need a hammer and then I need a stud finder and what a stud finder does is it finds the area of the wall that has drywall behind it, not an area of the wall that has nothing behind it. So first you use the stud finder to find the proper area of the wall, then you put the nail in there because you know that's the area and then use the hammer. And it's the same thing with these tools I'm about to go into. Like you might use one technique to narrow it down and then you might use another technique to get even narrower. And yeah, so let's get into the tools except that I actually know nothing about tools. Those three things that I just talked about are the only tools that I know about.  I don't think I've ever actually hung anything on a wall. So tools are not the metaphor we're gonna be using. We're actually gonna be talking about hats. So we will have, this is the, or rather this is the new presentation, how to unflake flaky tests, a new hire's hat collection. I'll be going through you as a test engineer wearing 10 different hats. And each of those hats will be like a different technique for debugging flaky tests. This is our collection. As we go through, I'll continue to go to the slide so that you know where you are in the presentation. So the first hat is Selenium speed. So as a test engineer, you need to know that Selenium is faster than you. It can uncover actual bugs in your application. If your front end JavaScript code isn't meant to be interacted that quickly and you run a Selenium script to do a lot of things really quickly, it's possible that you can actually break your application. It's really important to know that that's a thing that can happen. I'm gonna show a really quick video where Selenium speed showed buggy behavior in our application. And the way this works is this initial screen is a review form that an end user would fill out to review this place, McDermott Chester, that's created from our factory. And then I'm gonna really quickly go into the application and look at that review that's registered. Something else to keep in mind is that this is an NPS survey, so it's zero out of 10, but in our platform, that zero out of 10 will be translated into a zero out of five. We normalize all the reviews in that kind of way. So that means if someone selects a six in our application, that'll be a three. And if someone selects a 10, that'll be a five. All right, so I'm gonna play the video. So notice that Selenium selected six and then 10 really quickly. And then the review in our platform actually shows three stars, which means the six was registered, not the 10. And something with this is the idea of debouncing. And what debouncing is, is it's a JavaScript technique such that actions are registered in the order that they happen and they don't break the system. So for example, let's say you have a submit button and you click twice. If that submit button is debounced, it will only honor the first click. In this case, we needed to remove some of our debouncing and honor that it's possible for the end user to switch reviews really quickly. So debouncing is something that you should think about as well. All right, so we've gone over Selenium speed. Here are some photos of people in headbands. I'm a really big tennis fan, so I love Andre Agassi. He's the guy on the, I guess you're right. He's pretty cool. All right, next hat. We will be talking about the super user hat. And by super user, I don't mean someone with admin privileges. I mean someone who is an expert in the application under test. Someone who maybe has done a lot of testing in that application and is familiar with the ins and outs from an end user perspective about how the application works. And when you wear this hat, you need to really think like our Selenium, for our Selenium test, is the test workflow that they're executing actually valid? Is the error that you're seeing foreseeable? And a good example of that is like, let's say you have an application with a form and the form has logic in it so that there's divergent paths. And let's say you see the Selenium path going down one path, but you actually intended in the test for it to go down another path. So you as a test engineer need to know that it's possible that maybe the Selenium selected the wrong radio button. And the reason why we're failing now is because we're going down an alternate path that's possible for our application. So like the routing maybe isn't broken. It's just that Selenium selected the wrong radio button and is going down the wrong path. And then something else to keep in mind with being a super user is that we're new hires at our company, right? So it's possible you're not yet a super user. What that means is you need to find a super user, find someone who's an expert in your application when it's time for you to debug and get them to help you. And so for our application review trackers, I consider myself a super user. And this is a part of our application where you can add a note to a review. And we have a modal that pops up if you enter the at sign. And so that means it's kind of like Twitter or anything else like you can refer to other people and then they get notifications that you refer to them. And me as a super user, when I saw the Selenium test fail, I knew what went wrong. And right now, so this test is happening in 20 times slow speed. And we entered a full name and the modal claps. And the reason it claps, and I know it claps is because the modal can't handle spaces. As soon as you enter a space, the modal breaks. But the engineer who wrote this test didn't know that. And here are some Sherlock Holmes's. All right. The third hat, the triage hat, the nursing hat. Triage is really important as a test engineer. You really need to be good at triage.  Also, the failure on this screen is a failure we're seeing in Jenkins. And this is just kind of the precise text of the failure. If you're lucky, you might work in an organization that has really nice reporting. So you can look at that failure in a more beautiful way. And I actually implemented this reporting. So I'm like giving myself a pat on the back mentioning that. But yeah, it's really nice when you're trying to triage something and you get syntactical highlighting. It can help you just triage that error a little bit quicker. All right, so in the endeavor of triaging, you're first gonna look at the stack trace. And I'll just go over really quickly this stack trace. The first thing to notice about it is that it's in English. It says, expected has export CSV to return true got false. And the fact that the error is in English in this way means that we're using a test framework. And we have an assertion failure as opposed to a code failure or like a zero division error or a method not found error, something more technical. So I think when you look at a stack trace, the first thing you need to ascertain is, is the code, is this a code error or is this an assertion error? And then you can look at that stack trace and you can find where precisely did it happen? Where in the tests did it happen? And then here's another stack trace and I'm showing this one because this is an example of a code error, not an assertion error. It's a no method error. It's an undefined method user link for nil class. And the reason why this error is happening is because this find operation, if it finds the content it's looking for, it'll return it. If it doesn't find the content it's looking for, it'll return nil. And then we're trying to do a dot user link on that nil. Therefore we're getting there. But really the important thing for me to know in this is that like the test hasn't even gotten to the point where it's testing the thing under test. Something has changed before we can even get to that point. Such that the script itself is failing. So we've looked at the stack trace. The next thing you might do is look at a screenshot. I think screenshots are great. If you're a test engineer and you haven't turned on screenshots for your framework I really encourage you to do it. It's a great place to start when you're debugging test failures. If you're really lucky your organization might provide you videos of the failures. If you use something like browser stack or Sauce Labs you will get those really nice videos. I encourage you to look at them. It's one of the first things you do before you go into the code. This video I'm about to show is one of the test failures that we encountered at Review Trackers. And I'll just describe the situation a little bit. So there is a text box on the right and there's a preview window on the left. And the text box, the text that you enter into the text box is reflected in the preview window with some default text added to it. And that is done through JavaScript. And what's gonna happen when I hit play is you're gonna see Selenium enter text into the text box and you're gonna see the JavaScript in the preview window kind of freak out. And I'm playing this at like 20 times slower speed than the actual test runs. So we just enter the text test message. Wait for it. And then the JavaScript adds the default text that it expects at the beginning of the page. So this was another one of those Selenium speed issues. The page wasn't actually fully ready to go because the JavaScript that handles the mirroring of the text box text into the preview window wasn't ready. So it overrode what we entered in the test. And really the only way I could triage that was by looking at the video or by running the test locally. There's no way you can know what was going on by just reading the error. Here are some nurses. All right, our fourth hat, the debugger hat. So they're kind of two pathways to debug when I think about debugging. You can debug your Selenium code, your test. And it's also possible to debug your application. To identify, hey, is there actually an issue with application under test? And the first thing I'm gonna talk about is debugging Selenium scripts. So one of the things that I love to do when I'm debugging a Selenium script is put breakpoints in the test. And this is kind of hard to see, but do you see the red dots on the right border? Those are the breakpoints that I put in the test. And you'll notice that they're kind of interspaced at like 10 to 15 lines each. And the reason I did that is because, yes, with using breakpoints, you can navigate line by line or you can even step into methods and debug that way. But for me, when I wanna get the feeling of a test script and understand what it's doing, I like to put breakpoints interspaced at like 10 to 15 lines and then watch Selenium execute those 10 to 15 lines. So I can kind of see what it's doing from a higher level. And I'll usually do that. That's the first way that I'll debug is I'll just see, hey, what is this test trying to achieve? And then from there, I'll put a breakpoint in a certain place and then I'll do kind of the more interactive debugging. But this is where I start.  It's something as an engineer, you always want to improve.  It's just really fun and it's a good way to become a better developer. So another thing you can do when you're debugging these test scripts is add those interspaced breakpoints. You can open up your local browser and open up the network traffic tab. And the reason that I like to do that is because if you run a test and you see 400s in the network tab or if you see 500s, you know something's wrong. Not only that, if you have a microservice architecture like I do, it's pretty easy to understand the API because it's a simple REST API. And if you look at the payloads of the API, it can be helpful because let's say you're looking at the page that has a list of reviews, right? There's supposed to be 30 reviews and you look at that payload and you only see 28 reviews. That will indicate to you maybe there's something wrong in the API layer, right? Like if you have a simple crowd application, looking at those payloads can be helpful. So I'm gonna show a video of me doing that very thing. So I'm in a breakpoint right now. I hit continue and we're reloading a new page and then here are all of the network calls and then I'm looking at the payload and I'm like, hmm, everything doesn't look good. And what happens here is I called one of my fellow engineers over and someone who was a subject matter expert in this area and he was like, oh yeah, you're right. We're missing the main data of this payload and that's what's wrong.  So you can test out your XPath selectors in the console. You don't have to do it in your script. And so I'm playing this video and I'm looking for a specific element. Here is the XPath that is under question and I'm just gonna enter it really quickly in the console. And one was returned. So it looks like that selector worked. Another thing you can do is use document.querySelectorAll. I've also heard of using dollar sign XX which is kind of like Chrome's way of allowing you to use CSS selectors in the DOM. And then in my breakpoint, I have 25 rows and I'm gonna execute that same CSS expression in the console and do a dot length on it and then okay, they're 25. There they are. So I like to use this pretty often. So just usually I'll start in the console to kind of narrow down what I wanna select it to be like and then I'll put it in the script. So another fun little tool that you can use is drawing a red box around the element in question. Sometimes your selector will return an element but you're like wait, is this actually the element that I think it's returning on the DOM? So this is a little JavaScript execute script line that you can do and it'll put a red border around the element in question. And you can use this technique for, you can use this in your debugging session and it's a cool thing you can do. So yeah, here's me doing it. I'm gonna do it on the header in there. Now it has a red box around it. So I've described some of the ways that I like to debug Selenium code. Now I'm gonna talk about debugging application code. The first place that you can start when you're debugging application code is looking at the application logs. This is a screenshot of me looking at the database logs for one of our test runs and it says could not connect to DB after some time investigate locally for the logs. So clearly something has gone wrong. Our DB isn't even up and I knew that instantly by looking at the application logs. If you don't have permission to look at your application logs, prod your developers to get you that permission because it's really important. Another thing you can do that is a more advanced technique but it's pretty cool is if you have access to your logs from the command line, one of the things I like to do is run the tests alongside piping the logs to the console and then so you can see the logs that are generated from your test session. Here's a video of me doing that right now. So we use Heroku and I'm now tailing the logs for our API server as the test is running on the left. And then you can do some really cool things. You can like grep for an error in those logs as your test is running and here's me doing that and look, there were a handful of errors as our test was running. So now we know, hey, there's something wrong with our API. And if you do this, your developers will thank you so much and they will appreciate your technical skills and your ability to really hunt down bugs in the application. Here's some debuggers. Yeah, this is one of my favorite photos for the entire presentation, it's pretty great. All right, the fifth hat. So this is the Diffing HTML hat. That actual text on the hat says bird nerd. So this is your ornithology hat. Your hat of someone who really appreciates birds and goes on bird watching expeditions and has binoculars and they really hunt in the HTML to find what is actually the changing element here? Like, what am I supposed to be waiting for in this Selenium script, such that my application under test is ready to proceed with the test? Because you don't wanna run your test while your application is still loading or the JavaScript code that your application depends on is still loading. You wanna ensure that the DOM is in the right place, the expected place, such that you can run your test. So one of the things you can do to kind of see the HTML changing as your test is running is you can open up the dev console and just look at all the changing elements as your test is running. It is a little bit overwhelming, I will say, to get kind of a mental map of what's changing by just looking at this. It kinda hurts my brain if I'm trying to investigate a fail. And I think it's because we're grabbing the wrong thing. And yeah, so I actually don't really recommend looking at this too much. One of the things I like to do is I like to use this little script to capture HTML changes. And the value of that is that you can know exactly what is changing in the application under test such that you can create a waiter that waits on the proper element. And I'm gonna go a little bit into details in the script so that you all understand what's going on. Okay, so the first thing it's doing is it's grabbing the entire page HTML as a string. Then it's gonna write that HTML to a file. Now we're doing a loop over seven seconds and we're gonna grab a new copy of the entire HTML page as a string. And then we're gonna compare that new copy to the old HTML that we just grabbed. And if they happen to be different, like a.k.a. the HTML has changed, we're gonna write it to a file. What that means is that, let's say you execute the script and nothing is changing in the DOM, you're just gonna get one HTML file written. However, if you execute the script and tons of things are changing in the DOM, you could get up to 20 files generated from the script.  And then once you have all those logs, you're like, how can they help me? So one of the things I like to do when it comes to analyzing those giant HTML pages is I like to run XML lint on the HTML files. And the reason I do that is because that prettifies them and then enables you to diff the HTML more effectively. And the reason why I use XML lint is because, well, I use a text editor and it has a pretty HTML feature, but every time I try to execute it on my giant HTML files, it crashes. So you really gotta use XML lint to format or to prettify those HTML files. And then once you have, let's say, two or three of those prettified HTML files, you can, or here's an example of the HTML before it's prettified and then after. And once you have those prettified HTML files, you can use KDIF to see the actual changes. And then once you identify the actual changes in your application, you can write proper waiters that wait for that changing thing to be gone. And then your test will be a lot more stable. And this is an example of me using KDIF. We have an element called isLoading and that indicates that the page is in a loading state and when it's gone, it's just called loading block. So we knew we have to wait until isLoading is gone. And here are some bird nerds. All right, the sixth hat, the application internals. It's really important that you as a test engineer understand your system architecture because you need to know like where the bodies are buried, right? Like where in your test, or where in the system is something commonly failing so that you know, oh, the database failed last week. Like that's probably the cause of this test fail right now. You need to know like which parts of the application are possibly really legacy such that they commonly fail and that's what's going wrong with their tests. It's also really good to know which flavor of JavaScript is your application using. Is it using React.js? Is it using Angular.js? It's usually, it usually will impress the developers if you know that you're using React and you know that IDs are dynamic so that you don't use those as locators. And they're also, when it comes to like googling errors and stuff like that, the flavor of JavaScript that's under test is an important variable. It's also really important to know who to ping in engineering. You definitely have to have friends in the engineering department that you can be like, hey, is that database issue still going on? It is? Okay, let's investigate that and see if that's the cause of the test fail. Here's some groundskeepers. All right, the seventh hat. This is your bookie hat. And I don't know if y'all are familiar with bookies. Those are people who do like sports betting and they collect all your money and they're in charge of the odds, right?  Or in my case, they never give me money. They just take my money. Yeah, so why is it important to wear the bookie hat? It's important to know where your application has changed. A place that you can look to see why a test is failing is the recent development logs. Is an area that's currently under development the reason for this test failure? Another place you can look is the release notes of your application and see is this a feature that we released three months ago that we're now seeing fails crop up in. In another place you can look is your bug database. You can see, oh, is this issue we're seeing now possibly a regression? Has something regressed in our application such that we knew about it, we thought we fixed it but it's not really fixed. So that is your bookie hat. Here's some bookies. All right, the eighth hat, your chef hat, your application versions hat. So it's really important as a test engineer to know that in the systems that we live in, the versions of things need to be compatible. Much like a chef, when they are preparing a meal needs to know which flavors pair with other flavors. They also need to make sure you got a good vintage of wine. Much like you have a vintage of selenium that you like to use. And just know that it's possible that if you have a combination of these things that don't work, you can hit issues. So this is a hat you wanna wear if you have recently made a change to your infrastructure. It's also an important hat to wear or I wore this hat at review trackers when one of our engineers was trying to run our test locally. And in our documentation, we tell them which version of Chrome driver to use because our tests work with a specific version of Chrome driver. And he downloaded a prior version of Chrome driver and we noticed that he wasn't able to log in running the selenium script locally. And the reason why was because the version of Chrome driver that he was using had a bug where the number three like wasn't going through, incend keys. So that was a wacky issue to debug. So you really gotta be wearing the chef hat sometimes. And yeah, here's this issue. And here are some chefs. All right, ninth hat, the headless hat. And or the complications of CI hat. And this is a really, it's just important to know that your tests run differently in your CI server than they do locally. It's possible that if you're not using something like Docker that your tests have different versions of Java on your CI server versus locally. So you probably wanna use some kind of version control to make sure that that stuff is the same. There's also different network latency when you run on your CI server versus your local connection. So know that that's something that can cause your tests to be flaky. Browser window size. So if you're not explicitly setting your browser window size, it's possible that when you run your tests headlessly in your CI server, it's using a smaller one than it would locally when you're running on your local computer. So make sure to set that. We also ran into a really weird issue at one of the companies I worked for where on our CI server, we noticed the application wasn't, it was loading, but some of the styling wasn't there. And the reason why some of the styling wasn't there is because there were security procedures on our CI server and one of the third-party JavaScript libraries was being blacklisted. So just know that if you have security measures on your CI servers, make sure that the applications that your test needs are not blacklisted. They're not prevented from being downloaded. And then every company I've worked for, time zones have always been an issue. So just be aware that it's possible your CI server is in a different time zone. Here's some headless men. All right, last hat, I'll go through really quickly, and it is the internet. And the internet is your friend and you always need to be Googling the issues that you're seeing if none of the other techniques have helped you.  A place I like to look is also Selenium HQ issue tracker. It's possible that someone else in the community has hit an issue that you're hitting. All right, here's some programmer hats. And that's the presentation. Thank you all for coming. Here are your hats. I hope you wear them in your day to day testing lives. Thank you very much.


Live from Las Vegas, it's theCUBE! Covering Informatica World 2018, brought to you by Informatica. Hey, welcome back, everyone. It's theCUBE's exclusive coverage of Informatica World 2018. We're here at the Venetian in Las Vegas live. I'm John Furrier, co-host with Peter Burris, co-hosting and head of analysts at Wikibon. It's looking at theCUBE. Our next guest is Shem Dadala, who's the Enterprise Analytics Architecture Engineer at the Sire Pharmaceutical and Sungnam Director of the Enterprise Analytics Solutions Lead at Sire as well. Great to have you guys. Thanks for joining us. Thanks for being here. So love getting the practitioner view of kind of the reality of what's going on. Obviously Informatica is their show.  You're looking at some of their products. Take a minute first to talk about what you guys do first. See, pharma, you got some stuff going on. Data's involved. Privacy's involved. You're in Europe in the U.S. GDPR is here. Take a minute to talk about what you guys do. Sure. So Sire Pharmaceuticals is the global leader in rare diseases. So there's about 350 million patients who are affected with rare diseases today. And so Art Group is within IT, Enterprise Analytics. So we're focused on making sure we bring the right technologies and capabilities around BI and analytics to the organization. So we look at products, tools, figure out how they fit into our ecosystem of BI stack of tools and make that available to our IT colleagues as well as our business colleagues. So rare disease, can you just explain kind of categorically what that is? Cause I'm assuming this with rare is not a lot of data on it or this data you got to figure out. What is that? How do you guys categorize that? So rare disease, majority of the rare disease are affected by the children. So that's kind of a critical aspect of what we do. Rare disease could be in immunology. It could be in oncology, GI. I mean, there's rare disease, typically, people who are affected probably less than a thousand or a couple of thousand, I think one of our drugs, the population is around 5,000 people. And these are chronic diseases. Typically they're chronic diseases. So they're diseases that affect the quality of life of an individual. So what you guys are doing is identifying what is it about the genealogy, et cetera, the genome associated with the disease, but then providing treatments that will allow, especially kids, an opportunity to have live a better life over an extended time. Yeah. And what do you guys do there in terms of the data side? Can you explain what your roles are? Yeah, so like I said, we're in the enterprise analytics. So we're focused on bringing technologies and capabilities around BI and analytics spaces. So how do we bring data in, ingest it? How do we curate the data? How do we do data visualizations? How do we do data discovery, advanced analytics? So all of those kind of capabilities we're responsible for. So what's your architecture today? You have some on-premises, they're cloud-involved. Can you just kind of lay out kind of the environment as much as you can share? I know maybe some confidential information, but for the most part, what's the current landscape internally for you guys? What are you dealing with, the data? Sure, so we've got a new next generation analytics. We called it our marketplace, our analytics marketplace. We're leveraging both on-prem as well as cloud technologies. So we're leveraging Microsoft Azure, the HDN sites for Hadoop, the big data technologies, as well as Informatica for data ingestion and bringing that data and transforming it. So there are many tools involved in that one. So it's like the whole ecosystem, we call it as marketplace which is backbone for shared enterprise analytics strategy and future. You guys put a policy around what tools people can bring to work, so to speak. And we're seeing a proliferation of tools. I mean, it's a tool vendor everywhere, we look around the big data. I got a tool for this, I got a tool for wrangling. I've seen everything. How do you guys deal with that onslaught of tools coming in, do you guys look at it more from a platform perspective? How are you guys handling that? Right, so look at a platform perspective. And we try to bring tools in and make that a standard within the organization. We look at security, is it enterprise grade technology? And yeah, it's a challenge. I mean, there's people who... You do basically certify it. You kick the tires, give it a pace, test through its paces. And then we have our own operations team so we can support that tool set, the platform itself. So people... And what do your customers do with the data? They do self-service, are they data scientists? Are they like just business analysts? What's the profile of the users and customers of your... We have all set of users. We have technical folks which they want to use the data like traditional EDL reality. So they are folks from the business they want to do like self-serve and analysts they want to do analysis on the data. So we have all the capabilities in our marketplace. So some tools, they enable those guys to get the data for the self-serve like the tools we have. And Dallabar does their own stuff like the ELT. Talk a little bit about the... One of the key challenges associated with pharmaceuticals especially in the types of rare disease, chronic young people types of things that you guys are mainly focused on. A big challenge has always been that people when they start taking a drug that can significantly improve their lives they start to feel better. And when they start to feel better they stop taking it. So how are you using big data to or are you using analytics to identify people, help describe potential treatments for them, help keep them on the regimen. How do you do, are you, first of all are you doing those things? And as you do it, how are you ensuring that you are compliant with basic ethical and privacy laws? And what types of tools are you using to do that? It's a big question. Yeah, yeah. So we are doing some of that. We have looked at things around persistence and adherence and understanding kind of what combination of drugs may work best for certain individuals or groups of people. Yeah, and definitely compliance is a big factor in that. So working close with a compliance group, understanding how we're allowed to use that data between which parts of the organization. Do you anticipate that you'll have a direct relationship with some of these customers or is there an, in other words, does analytics provide you an opportunity to start to alter the way that you engage the core users of your products and services? I believe so. I think one thing that we're looking at with strategic standpoint is how do we diagnose people sooner? A lot of these chronic diseases, they go through two, three years of undiagnosis. So they'll jump around from doctor to doctor trying to understand what the issue is. So I think one thing we're looking at is how do we use data and AI to more quickly be able to diagnose patients. Has a 360 view helped you guys of data? You guys have a 360 view? How do you, because most people look at that as terms of a channel selling a product and serving because we have a different perspective. What's the 360 view benefit that you guys are getting? Yeah, so we have kind of a customer care model, which is kind of a 360 for our customer. So understanding around just drug manufacturing, to making sure they have the right supply, to understanding is it working for the patients? So we've always been talking about the role of Big Data. You mentioned Hadoop. That Hadoop was supposed to be this whole industry and now it's a feature of data, right? So there's a variety of infrastructures of service, platformers of service, some say iPads and Big Data. How are you guys looking at that as builders of IT, next generation IT, the role of iPads and Big Data? We see it as a role enabler. I think what cloud brings us in the past type solutions is agility. We, as the market is evolving so quickly and there's new versions of new software coming out so quickly that everyone will be able to embrace that and leverage that. Give it a benefit of like, give it some sort of comparison. Old way versus cloud, like, has there been some immediate benefits that just pop out? Yeah, there are a lot more benefits with doing the old way and the cloud way because with the cloud, it brings a lot more scalability in olden days. To get like 10 servers, you need to work with the infrastructure team to get it like, it takes three months or two months to get it. With the cloud, based on your workload, you can scale up or scale down. So that's one thing, because you're talking about Big Data. You're getting the volume of data you're getting.  Yeah, you need compute, you need to jam on some compute, bring it out to the table and then you got to have the custom tooling for the visualization, all that kind of together, right? Talk about, from your perspective, the balance that you guys have to deal with every day. Like, you got to deal with the current situation. In IT, you got cloud, you got analytics, you got customers personas of people using the product. But you got to stay in the cutting edge of like, what's next, because if you're going down the cloud road, you're looking at containers, Kubernetes, service meshes, you know, a lot more stuff coming down the pike, if you will, coming down the road for you guys. How are you guys looking at that and how are you managing it? Do you have some Greenfield projects? Do you do a little, you know, R&D? Do you integrate it in? How are you dealing with this new cloud-native set of technologies? Yeah, it's definitely a balancing act. You know, I think we do a lot of POCs and we actually work with our business and IT counterparts to see, hey, if there's a new use case that is coming down, you know, how do we solve that use case with some of the newer technologies and we try a POC, we bring in a product to just see if it works and then see how do we, then do we then take that to the enterprise? So I got one final question for you guys and maybe you do as well, John, but in life and death businesses, like pharmaceuticals, is a life and death business. The quality of the data is really, really important. Getting it wrong has major implications. The fidelity of the system is really crucial. You say you're using Informatica for, for example, Ingest and other types of services. How has that choice made the business feel more certain about the quality of the data that you're using in your analytic systems? And just standardization. So, you know, between MDM, around mastering the data to ingesting data, transforming the data, just having that data lineage, having that standard around how that data gets transformed. Is that fundamentally a feature of the services that you're providing is you're not only, you know, the ability to do a visualization on data, but actually providing your scientists and your business people and your legal staff explicit knowledge about where this data came from and how trustworthy it is and whether they should be making these kind of very complex, very real, hardcore human level decisions on? Is that all helping? Because it seems like it would be a really crucial determination of what tools you guys would use. Right, it is, yeah, and absolutely. I think also as we move more to our self-service and having these people, having data scientists do their things on their own, being able to have the tools that can do that kind of audit and data lineage is crucial. Great to have you guys on. We had a wrap. I want to ask one more question. I heard you guys were an innovation awardee, Informatica, congratulations. Any advice for your peers out there who want to unleash the power of data and be on the cutting edge and potentially be an honoree? Yeah, I would say just definitely think outside the box and try new things, do POCs. There's so much new technologies coming down so quickly that it's hard to keep up, champ. It's like a moving target. You need to chase your moving target and based on POC that gets you what you want it to do. It's exciting. Yeah, it is. Get out front, don't keep your eye on the prize. Focus on task at hand. Bring in the new technologies. Guys, thanks so much for coming on. Great to hear the practitioners' reality from the trenches, certainly front lines. Life or death situation, the quality of the data matters. Scaling is important. It's the cloud era of data. I'm John Furrier. Peter Burris, more live coverage after this short break.