Hi there, this is James Swannick and you're listening to the alcohol-free lifestyle podcast where you learn how to take back control over alcohol and live a life of health wealth love and happiness We've got another reader question here on the alcohol-free lifestyle podcast. This question comes from Matt Proud And Matt is in the 30-day no alcohol challenge Facebook group and he posted this question inside of that group Man asks James a lot of the positive habits and methods for quitting drinking are based around things That you can control in your own life sleep diet Exercise etc. My experience with two little kids is that when they come into your life? They take away some of that control disrupting your sleep Interrupting your routines and adding an extra element of stress in balancing everything Often the sheer shock of fatherhood Motherhood alone can be a trigger for some people to use alcohol to cope Do you have any specific guidance or tactics? Targeted at new parents or is the advice and methods still the same? Matt, thank you so much for your question. I am actually pretty well versed to speak on this because I have a partner and she has a six-year-old son and I guess you could say I've been a de facto father now for some months living in the same home And all of a sudden parenthood has been thrust upon me or rather I've chosen to step into to parenthood and so it's amazing how Distracting a six-year-old can be when you have a home office, especially with COVID-19 lockdown quarantine going on and There's no office to go to even if I did have an office. I don't really have an office I always work from home anyway, but when you're sharing a home and all of a sudden now There is a partner and there is a child and the child wants to play with you and wants him to tackle you and Or wants you to tackle him rather and kick the football and do all these kind of things While you're trying to put out the alcohol free lifestyle podcast and run the project 90 program and run this one he's blue-eyed blocking glasses business and Coaching business and do all these other things It can get a little bit stressful and hectic. So Matt, I totally get you Here's the thing you ask the question do I have specific guidance or tactics Around quitting drinking or around alcohol use targeted at new parents or is the advice and methods still the same? It's not a sexy answer. The answer is the advice and methods really are still the same There's always going to be distraction. There's always going to be stress There's always going to be anxiety and even if you have the most perfect family life where Your partner and your children Uh Don't distract you and your child falls asleep on cue and never screams and doesn't throw toys out of the pram and Always says always does what you ask them to do even if you have that perfect life scenario You will you will still find things to be stressed and anxious about it might not be With family might not be with the kids It might be with something that's going on with work It might be something to do with your health. It might be something to do with the state of the world's economy or Whatever triggers you I know the like relationship with your mom like a whole bunch of stuff Anything and everything there's always going to be excuses or reasons For you to justify having a drink to relieve yourself of stress and anxiety And here's the thing if you are looking at alcohol to relieve you of stress and anxiety Whether it comes from kids or family or or elsewhere Then You still haven't quite got it and that's okay because societal conditioning Uh has had you believe your entire adult life that alcohol is something desirable and something that relieves Your stress is something that you drink to celebrate and it's preposterous When you wake up and realize that you've been in a matrix the whole time Because alcohol actually keeps you more stressed and more anxious It borrows joy from tomorrow and creates Temporary and illusionary feelings of relief or joy or pleasure But it's not it's keeping you stuck in a vicious vicious cycle. It's actually perpetuating your stress and anxiety Lots of different ways to reduce stress and anxiety to handle stress and anxiety notice I'm not saying eliminate stress and anxiety because Speaking from my own experience. I don't think it's possible for us to completely eliminate stress and anxiety Unless you're a buddhist monk and you've been meditating for 20 something years. I as I understand it. They have eliminated it I have not But I've reduced it Many ways to do that including breathing exercise writing things that you're grateful for Even just identifying that you are stressed and anxious. So rather than saying i'm stressed and anxious Just even stopping going. Oh, i'm feeling stressed and anxious is enough for you to separate from that stress and anxiety And the stress and anxiety therefore starts to subside I'll say that again just in case Um, I didn't explain it particularly well Even the fact that you just stop for a second and go wow, I am feeling or i'm noticing stress and anxiety Is So much more powerful for you to reduce your stress and anxiety than if you just say i'm stressed i'm anxious And you're associating yourself with that pain and that suffering So it's observing how you are feeling rather than associating how you're feeling it's observing it's like oh i'm feeling anger in this moment as opposed to i'm angry It's noticing or i'm feeling uh irritated I'm feeling really irritated by my kids Right now as opposed to i'm so irritated by my kids and family right now Even if you're just inserting the words i feel in front of it is a level of self-awareness that That that almost like gives you a little time out from those from those feelings.  It's oh i'm noticing that i'm feeling pissed off and irritated that Simple little distinction there that simple little separation that simple little addition of the words like i'm noticing that i'm feeling that i'm experiencing that will Reduce your feelings of stress and anxiety will reduce your cravings to have a glass Have alcohol will reduce your um Yeah, your need to to seek this temporary relief with a glass of attractively packaged poison um Now Matt was asking the question around alcohol if you if he had asked me a question about specific guidance targeted at new parents about how to Reduce your stress and anxiety that didn't involve alcohol. Well, I would give probably a different answer Uh, and we'll leave that for the relationship podcast And at a later date, but in specifically relating to quitting drinking There's always going to be reasons excuses. There's always going to be kids or wives or husbands or injuries or You know disappointments or all these kind of things are going to come up and they're always Going to cause us to feel something Right, it's never going to end. It's always going to be coming and like I said before even if we if we You know, you have the perfect wife and the perfect children and all the perfect husband and perfect kids perfect family life There's still going to be all these other issues that are coming up. So and it's the same methodology for dealing with family Uh issues or dealing with your alcohol cravings if it's triggered by family and dealing with alcohol cravings if it's triggered by something else Um, I hope that was helpful matt. I like to breathe.  Just do anything else Other than reach for the for the glass of alcohol breathing I think is the easiest quickest most effective way to do it because you can sit there and you can breathe in 30 seconds later You feel completely different Big breath in big breath out. I did this in a recent episode and when I was answering another another listeners question And uh, you know not to bang on about it, but Literally just moving getting up and moving writing something down big glass of water, uh, and then also just disassociating yourself from the uh anger or the sadness and just noticing that you're feeling anger or you're feeling sadness or you're feeling or you're noticing stress and anxiety that is A super super super effective way of reducing those cravings and ensuring that you don't drink So matt, I hope that was helpful Uh, congratulations on having two little kids. That sounds amazing Um, they're disrupting your sleep interrupting your routines and adding an extra element of stress and balancing everything. Yeah, I feel you Uh, I feel you Uh Why don't I get a guest on who specializes in family and communication and and things like that in a future episode? Would you like that? Let me know Uh, send me a dm on instagram at james swanick. You can email me at james at james swanick.com Would you please leave a review? In itunes if you're listening on itunes the um the show is available on spotify and on the itunes You can watch the video version of this on youtube um Yeah, living a review actually really helps promote the show in the itunes rankings And that means we can get more listeners and potentially help more people with these type of things um, so you writing a review as you uh, directly helping someone else to Completely transform their life and heal their relationships and their health. So Um, may I request that you leave a review? I would so appreciate that. I'll give you a big shout out when I see your review Uh, thank you so much for listening Send in more of your questions and we'll keep doing this. I'd love some feedback and I will catch you on the next one Thank you so much for listening. I have some free stuff for you If you go to james swanick.com forward slash guide I will send you my formula for reducing or quitting alcohol If you'd like to watch the video versions of these episodes Then you can watch them at my youtube channel, which is at james swanick If you'd like to send me a direct message on instagram You can do so at james swanick if you would like to try a three day challenge a free three day challenge You can go to james swanick.com forward slash three day challenge If you would like to try the 30 day no alcohol challenge You can go to 30 day no alcohol challenge If you would like to schedule a 15 minute exploratory call with one of my coaches to see how we may be able to Help you in your alcohol free journey. You can go to james swanick.com forward slash schedule And my request is if indeed you enjoyed this episode or you have enjoyed the podcast Would you please go ahead and rate the show in itunes? And would you please write a review a review might just be a sentence saying great. Listen. Hey, this was fantastic Oh, I really enjoyed this whenever you give a rating whenever you write a review It surges our podcast up in the rankings enabling more people to see it and hear it and potentially Inspiring someone out there to reduce or quit alcohol and potentially transform their life So yes while it does help me to get ratings and to get reviews You will actually be directly contributing to helping someone's life by having them discover this podcast So if you are open to inspiring others and to helping me in the process Would you please go ahead and give this episode a ranking and would you please write a review? Thank you so much for listening and I will catch you on the next one


The ashes are still smoldering after an early Saturday morning fire destroyed St. Mary's Church in Red Lake. Our Josh Peterson shares with us the memories and how the church will move forward after the fire. What was once a historic landmark in Red Lake, in a matter of moments, was reduced to a pile of rubble after an early morning fire Saturday. St. Mary's Mission Church was still smoldering Sunday just over 24 hours after the fire was put out. For members of the congregation, the site of the church reduced to ashes was heartbreaking. The comments yesterday were about personal sadness, sorrow, even devastation about hearing that the church had burned down. Over the weekend, many community members came to view the site of what was once the center of Red Lake. Many stood in disbelief at what had happened. For many, it was a chance to reflect and remember. We've had baptisms and confirmations, and my husband and I were married here. So I'm 70 years old and my entire life has been entwined with the church. As the ashes still smolder, church went on as usual at the school next door, bringing not only a congregation but a community together. Father Jerry Rogers describes the fire as if it was the death of an elder, saying that members in the community need time to grieve and reflect. That church has been a source of wisdom for over a century, and not only that, it's where wisdom resided because for us as Catholics, wisdom is Jesus. Father Rogers, along with members of his congregation, feel that this is a time that will bring people together and strengthen the spiritual community. The church is not burnt, the church is very much alive. It's in the hearts of our people, and I am assured that the future will have a hopeful future. I think it will be a renewal and reinvigorating of the church, of the people who are the church. Father Rogers asks for everyone to pray for all the members of his church. At a time when all seems lost, the love and saving grace of God is found working within each member of the congregation and rising up to meet any challenge head on. In Red Lake, Josh Peterson, Lakeland News. The cause of the fire is still under investigation. No foul play is suspected. If you've enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland Public Television.


I'll say a little bit more about the film itself before we show it, but I'm really excited to be showing it here at the Segal Center. Segal Center has been one of the places that I felt like really got the ball rolling with this sort of reza apto renaissance brand. About 15 years ago, I really felt like Reza just wasn't getting his adieu, and things began to start on a group level, and Frank was always putting together, you know, weekends about Reza. He screened the Adam Soch's terrific documentary about Reza, so it feels really fitting that we're here. And another really important, you know, crucial instigator of the rezaissance, if you could call it, was the Dune Magazine, which co-curated the amazing show at MoMA PS1, which really put Reza back in the conversation in a very large way. So I'm really happy that Elizabeth White from the Dune Magazine is going to start things off with a little presentation, giving a little background on Reza's life at work. So, Elizabeth, what's going on? Hi, everyone. Thank you, Tony, for inviting me here to speak a little bit about Reza. My name is Elizabeth White. I am a contributing editor at the Dune, and I'm here to give you just a little bit of a brief overview about Reza's life and work so that you have some context as you go into viewing a father with a peculiar man. As Tony mentioned, at the Dune, we did a show on Reza's work at MoMA PS1 in 2018, and that was followed by a truly outsized, appropriately maximalist book about Reza that we published in 2021. And much of my presentation today is drawn from the research that we did for the book. And much of that research wasn't just archival work. It wasn't just with secondary materials, but a lot of it involved very expansive, extensive oral history with Reza's company members. And so as much as I'm the only one here speaking right now, I think there's going to be a sense of polyvocality here too, at least I hope there will be. Reza Abdo created this really intense, sensually referential, monumental pieces of avant-garde theater that defy the conventions of the form. He pushed his actors to the limits, bringing together source material, both ancient and contemporary, high and low, to critique the political realities of his time, including governmental indifference to AIDS, genocide in Europe, and war in the Middle East. To some, he represented the second coming of Peter Sellers or Antonin Arcobe.  He was a queer HIV positive Iranian immigrant in Reagan's America. His outsider status was threefold, but that very outsider status allowed him to challenge our culture's most deeply seated values and beliefs. Reza was born in February 1963 in Tehran to Ali Abdo and Homa Mohajari. Ali, excuse me, Ali by that point was about 35 years old. He was Iranian, but he had gone to college in the United States and lived there for nearly a decade. He was a very successful entrepreneur who was close to the last Shah, Mohamed Reza Pahlavi. He was also profoundly athletic. As you can see here, there was an old magazine issue of life that profiled his successful one-man defeat of an entire American volleyball team. He took these athletic interests back to Iran, where he founded the Persepolis Football Club, as well as an entertainment center named Bowling Abdo. Ali, through his business endeavors, amassed quite a bit of wealth as well as influence. But it was Reza's mother, Homa, who really represented Iran's old money, its old guard. It was to his mother and her family that Reza attributed his artistic sensibility. His mother, he said, could have been a great poet. Her cousins, her nieces and nephews became scholars and artists. And so you have this sort of dichotomy, this binary emerge in Reza's self mythologization. His dad was the brutish athlete whose sole purpose was to acquire wealth and power. His mother was the sensitive, civilizing force who valued art, that at least is how they are presented in Reza's work. I should also mention that Homa was many years younger than Ali was when they married, which caused some conflict, which was exacerbated in 1979, when Ali basically lost all of his money after the Shah's regime fell through revolutionary forces. Around that time, Homa asked him for a divorce. He granted her one, on one term, that she stay in Iran while he fled to Los Angeles with their three sons, Reza Salah did. Reza, at the time, was enrolled in the Wellington boarding school in England. He had received an elite Western education, which ended up heavily influencing his theater work. The star reversal of fortune that his family experienced during the revolution is one that I imagine he personally likened to a Greek tragedy. Soon after the family's arrival in California, Ali suffered a heart attack.  Reza was only 17, and suddenly he found himself having to care for two younger brothers. He worked menial jobs at gas stations or at the front desks of hotels. If you believe the stories of Tom Fitzpatrick or Brendan Doyle, and we have no reason not to, Reza even hustled to survive. Though he enrolled at the University of Southern California, he dropped out soon after. But at the same time that all of this uncertainty and upheaval was happening, Reza somehow discovered his life's calling. He wanted to make theater. Lacking academic training in theater in any meaningful way, and barely out of his teams, but preternaturally talented, Reza quickly developed a reputation as the LA theater scenes wonderkin. Perhaps owing to his boarding school education, he began by staging classic and recent plays from the European dramatic canon. He directed a trio of hollard-brenton plays at the hole in the wall of the state theater in 1983. He did a sort of nushkin-inspired production of King Lear at the gangway performance center in 1985. He did a production of Franzaver Croats's The Farm Yard at the theater upstairs on Hollywood Boulevard. Also, oops, I just realized I went too far. You just got a little bit of a preview of what I'm going to talk about next. Actually, hold on. Did I have a shifter in the wrong order? Excuse me. He directed a trio of hollard-brenton plays at the hole in the wall at the state theater in 1983. He did a nushkin-inspired production of King Lear at the gangway performance center in 1985. He did a production of Franzaver Croats's The Farm Yard at the theater upstairs on Hollywood Boulevard also in 1985. But it was really with 1986's Amadea, the requiem for a boy with a white white toy that I think we see as his mature aesthetics start to germinate. As implied by its title, Amadea drew from Euripides' famous play about a scorned wife's choice to murder her children in an act of retaliation against her husband for cheating on her. But it wasn't a straightforward adaptation. Rather, it wove together excerpts from Euripides' script with selections from Shakespeare's Macbeth, Tennessee Williams' Cat on a Hot Tin Roof, Dear Abbey Letters, Children's Story Are You My Mother, Bertrude Stein Verses, an original writing from Abdo and a woman named Miralani Oglesby. Taken together, this source material alpha-mised into a play not about a mother's murder of her children, but about a child's grief about losing their mother. It is easy to read Reza's separation from Homa into this work. Even so, mother figures largely exist on the periphery of Reza's canon. It is, instead, the father, the patriarch, who looms large over and in most of Reza's major works. This patriarch, as some of you might know, is almost always played by Fitzpatrick. Here's the slide you already saw. He's the farmer in the farmyard. He's crayon and big daddy in Amadea. He's crayon and King Oedipus. Juan Cuarón and Eva Cuarón, Dr. Gene Scott and Peep Show, the father and bogeyman, Warren Maxwell and tight right white, and the dual symbol of American patriarchy, the Puritan and the businessman, and Reza's final work, Quotations from a Ruin City. And father was a peculiar man, Tampitz is Fyodor Pavlovich Kalamazov, who, like Ali Abdo, was the father to three sons, Dimitri, Alyosha, and Ivan. I think we would all caution against a two simple biographical reading of Reza's work, but Ali, who bullied Reza for not living up to his expectations of what an oldest son should be, Ali, physically violent, he thought Reza was too queer, too bookish, too effete, too unathletic, had clearly lodged himself into Reza's psyche. Yet what Reza does so brilliantly in father, as well as in plays like bogeyman, is link his personal experiences, his personal traumas, to larger social, cultural, and even mythic issues, doubles, triples, even quadruples abound in Reza's work. The patriarch and father is not just Fyodor Kalamazov, it is also the benevolent John of Kennedy and the not so benevolent Donald J. Trump. Reza uses his experiences at the hands of his particular father as ammunition in a larger battle against the perniciousness of patriarchy as such. Given the deeply personal nature of the work, there's no doubt that Reza himself was responsible for generating much of the material for his plays, but it should be noted that he wasn't a playwright in the traditional sense. He was ultimately a director, an artist whose great skill lie in bringing together disparate images, gestures, sounds, and written material, literary, news, stories, court transcripts, popular songs, one-off words uttered by his company members in startling and unusual combinations. Reza was a collage artist. He was the ideas guy. He had the vision. And while he did write a good amount of the text of his plays, it's important to stress that he also relied on collaborators, such as dramaturgs or other playwrights. I mentioned Miralani Oglesby in passing. She was his primary collaborator in his early years in Los Angeles. She worked with him on the text for Amidia, Minamata, Keep Show, Father was a peculiar man, and likely other works from that period as well. The chemistry between Reza and Miralani was electric.  Here I want to flag something really important. Reza's company members, the members of Dara Luz, are some of the most astute critics we have on Reza's work. And so in describing Reza's working relationship with Miralani, I actually wanted to refer to some words from Tony. When we were doing the book, he told us, quote, the thing with Miralani was that she could really claim to be an equal standing with Reza as co-creator of the shows. He was a writer. The plays are full of these insanely fantastic lines that are pure Reza. But he was more this methodical sifter of gold, where Miralani was a volcano of text. I think Reza was perfectly happy working with her, as long as she remained a font of usable text that he could do whatever he wanted with. When he started feeling pushback from her, that created a conflict, end quote. Father, for reasons that I will delve into further as I close out this talk, was a transitional piece for Reza. It marked the shift from his early work in LA storefront theaters to his mature work at the Los Angeles Theater Center and his work in New York. One of the reasons it's transitional is because it was his last full collaboration with Miralani. In his final years, he'd shipped to writing with his brother Salar. I'd like to now pivot a bit and talk about Reza's use of space, especially because it's so important for a site-specific piece like Father. As a director, he's really known for two things. His main stage productions and the LATC's Presenium Theater, and then his site-specific productions that made use of unusual spaces in unusual ways. A medea, which I mentioned previously, was staged in a rec center in a gym in Los Angeles. Passes in La Obscuridad, which Reza would do for the Los Angeles Festival, not too long after Father, was staged in the terrace room of the Park Plaza Hotel. But it is Peep Show, which was staged at the courtesy in North Highland Avenue in Los Angeles in April 1988 that I think provides the most interesting point of comparison for Father. This was a true piece of site-specific theater. As mentioned, it took place in a hotel, specifically six hotel rooms, where six different scenarios about power and subjugation played out. Audience members moved from room to room, an egg timer marking the pace. Each scene lasted 25 minutes. We have little extent documentation from this piece, but I imagine that the experience must have felt a bit cramped for viewers. As its title implies, it was also intended to feel voyeuristic. Viewers squeezed onto beds together to watch scenes that felt private, intimate, like something that should be kept out of view. They shared the same space with the actors, but something about the drama felt uncomfortably alienating, like watching the marriage of Artel and Black. Father both extends and revises this use of space. Like Peep Show, it asked its audience to share space with the actors, but the space itself was much different. Traded for the cramped motel rooms of Peep Show were the sprawling cobblestone streets of the Meatpacking District in New York create gentrification. Passers-by and residents bore unwitting witness to the action. It drew on the tradition of the medieval pageant, the roving mystery play cycles that both delighted and instructed common citizens by presenting stories from the Christian Bible. The cobblestone streets evoke the 19th century spirit of the Father's Karamatsa, the Dostoevsky novel on which the play was roughly based. According to the critic Marvin Carlson, quote, almost all of the play shared the same general shape, a more or less guided procession to a new location defined by a number of theatrical set pieces, this location serving as a central gathering spot for a variety of images, events, and speeches, end quote. The Meatpacking District was, at the time, a bit of a no man's land.  It was also one of the most popular sites for gay cruising and public sex in New York prior to the AIDS crisis. In his review of the play, David Kaufman described the culminating scene of Father, called Ivan's Nightmare, by comparing it to the sex club The Mindshaft, which had been located close by. Ivan's Nightmare evoked the voyeurism of peep show, but it placed it in a specifically sexual and queer context.  In the main room, a number of naked men were washing themselves, being washed, or involved in a variety of SNM activities. One was hanging upside down and being whipped by another. Still another was sprawled naked and tied to a bed where clothes pins were applied over different portions of his body, end quote. For those who know Reza's work, it's easy to see and hear shades of the cramped scenes of SNM that we will go on to see in Boogie Man and The Law of Remains. We're not entirely sure when exactly Reza found out he was HIV positive. We do know that he made this fact publicly known a few months after Father was produced, while doing press for his play, The Hip Hop Vaults of Eurydice. Critics and Darlu's company members alike have argued that the HIV diagnosis caused the dramatic shift that we see between the early works and the pieces he did with Darlu's. Amidia, Father, and Passo's were all sprawling, durational works, coughing in at about three hours each. But the Darlu's works, such as Boogie Man, The Law of Remains, and Tight Right White, are much tighter. They cram three hours worth of material into an intense 90 minutes. Part of this was due to logistics. After dealing with significant walkouts during intermissions for Amidia, Reza decided he would never do an intermission again. But when he came to the LATC, Bill Bushnell told him he needed intermissions if he wanted to do three-hour shows. Reza didn't like this, so 90 minutes it was. But the argument could also be made that Reza knew he was racing against time. He would die from AIDS-related complications in 1995 at the age of 32. In the span of a decade, he created more work than many directors create in a lifetime. The extreme condensation of time, the extreme speed of the Darlu's productions, was part of this. He was creating as much and as fast as possible. Father was a peculiar man, was either created right before or during the period that Reza found out he had HIV. It is the last of the sprawling early works. It is the last of the plays written in full with Miralani. To go back to my earlier point about how it is the transitional piece in his canon, it is also the bridge between his early unnamed company, which was centered around the actress Microshevska, and the company with which we now associate him, Darlu's. The actors in the earlier company were a bit older, were often formally trained. Darlu's were younger, punkier, and a bit rar, who were willing to go to the extremes that Reza wanted to push them to. For those of us who consider ourselves to be Reza nerds, there's something a bit startling about watching Tony's film of father, because we see an actress like Meg, and an actress like Giuliana Francis Kelly, together sharing the same screen. So much of Reza's early work feels like it is lost to history. It is the Eurydice that has slipped from our grasp. We didn't yet have Adam there to document it all. And so, to borrow somewhat liberally from ancient myth, which we know Reza was obsessed by. To me, Tony's film feels like the fairy man Karen, leading us down the river sticks into the Hades of Reza's untapped, understudied early works. It is the beginning of an important journey backwards. And so without further ado, I'll turn it back to him. So when we did Father in the summer of 1990, that hot, intense summer of 1990, the videographer Ami Storm, who is here with us tonight, showed up many times during the month that we performed and shot tons of video. There's 13 hours of this incredible footage. But the piece itself is a maximalist sprawling piece. And so the 13 hours are also maximalist and sprawling. One of the things that's really exceptional to me about the footage, it really kind of captures the feeling of a person wandering through this amazing wild landscape. And I think that that amazing wild viewer, their quality, prevented it from being cut for many years because people who didn't really know the show intimately would look at it. And they were like, I can't figure out how this all fits together. But I'm very fortunate that I had a really fun role, but a very, I didn't have much lines. They spent most of my time in the play sitting watching what was going on. So I've actually been looking to work with material for, I don't know if you know this, Ami Storm, but back in the 90s, I actually got my hands on some jobs of it. And I tried to cut together an early version just with two VHS decks, trying to figure it out. So when Patty Abar at Brown University got a grant to do a project documenting this work in particular, since it's really the work that has, that's never really come together. The footage has never really been documented before. I finally had my opportunity to fulfill my obsession with going to this material. We have a lot of original cast members here tonight. This is really exciting. So we're going to have a talk back afterwards. And the other thing I did, which I just want to let you know is that I decided to do the whole movie as a split screen, because with this piece, it's so sprawling. How could you ever choose where to put the viewer's attention? So I decided to just lean into an experiential way of being in the piece.  There's no way to really be a successful audience member in a Reza piece without just letting yourself go into the experience, let it wash over you, and then maybe two weeks later you'll wake up in the middle of the night and go, oh my god, that's what that moment meant. So just give me breath, try not to hold on too much to anything like what's going on, just let it happen. And that's it. I'm going to get it going. Just give me a moment to figure out the video. So I heard the piece was three hours long, but the video is only two hours long. So that's one of the advantages of doing a split screen. We can fit four hours with the footage into two hours long. See what I'm doing over here. For Pete's death, I'll tell you in the story that I've been terrible. Order. Order, tell. Order. Order, tell. Order, tell. I've been terrible, brandy of my self, first formally sitting in the paddle of hour, by after the war with Poland in the dampest first life, these were scattered conspiracy everywhere. Fits of rage, alternated with periods of repentance and prayer, while in one of his fifths, he killed his own son, was the man of God. He doesn't need that number, he's wise, he was the problem and everything about many times. Bring himself upon wrongs by forcing them to go on the ground, or religion, but they're murderers. His body is put off the heel of the name, and the devil can't see the name. Maybe he didn't do such a thing during his reign. He teased on the order to meet them, to survive the dark, on his favor. Or, excuse me, on paying the power. Now, every time I said that, oh, to the range of the murder, I'll feed on the younger brother and he'll need you to get the power. Don't believe that. He's such a good-looking man in the name. That's your teeth, that's worth it. Most of all, Madonna is a symbol of the 20th century pocketed, a thesis by Yvonne Karamazov. I think the point is simply this, that all these crosses, should we talk for a while, I think, at the early age, when she started this, that it was kind of like history. She was spitting on our Christian narratives that these symbols were, this was making fun of the people, clearly she is not. We know in 1990, she's going for the big time. She is Christ. She is taking over and becoming our religious center. I think Yvonne, I think she has a very interesting philosophy. It's tied clearly with the California U.S. and not to be yourself.  But the masses that he is practicing, it is over. Well, it's far more than Christ ever did. Far more than the Jewish community. Australia, Austria, Europe, Japan, everywhere, it's about Madonna. The latest, Judy, hold on to the latest, the one that I like about her, now like a prayer. Here again, the image she is holding right now.  Not in the video, but in the song. It's clearly, you call my name, it's like a prayer. I reveal you in the arm and all. The blow job and it's a prayer. So Madonna now, in the age, age and age, is incorporating sexual imagery. Now this is not, by my price, price two, seeing naked in our culture. Seen in rags and making 20th century go, oh no, no, he's not sexy. Jesus is not sexy. He is sexy. Clearly, the sexuality and spirituality relationship has been evident for a night always. Madonna is playing on it now. The difference is that Madonna is not going to die.    We don't have an honor. She's out there. She will grow old with us. We will all grow old together. We will not die. In this way, she is our redeemer, I believe. I never thought that she'd ever die. I never thought that she'd ever die. I never thought that she'd ever die. Women who break the engagements, forget the romances. We make them white with their haze. Lips over teeth, arms dying. Nose on the tail, fist there. Beautiful, relaxed, disappointed, legs turning black, falling off trees in a small town somewhere in a safe place and melt. In a safe place for wicked women. I gave women no meaning to talk to her. I didn't know what to do. I didn't know what to do. I didn't know what to do. I needed to go lose her and I'm not in this story. It would be sad when I do become a good boy and I love my family.  I have to versilosis. Also, I can hit bottom, check the law. My parents, when I met a country, it's what the doctor came up with to do to me anyway. He said that there was nothing he could do for me, that I'm his daughter. My brother came to see me and they brought me dog and a cat. My mom really liked the cat, but my father had taken away from me when she started putting it in her mouth. My mom has all the time. My one sister's got multiple strokes and she's got her own integrity. And sometimes that bugs me, but I understand we're a pretty safe family, I guess. But we all really love each other. At the beginning, at the end, back, we try not to stop. You're going to stop, I'm always talking about it. Mommy, can we buy a handkerchief? No, dear, not under your desk. If you stop, I'm sweeter. We should buy a good cloth. God gives me what we need. Can I help you? I feel sorry for my mom. She knew what she was going to say. She married Donald Trump. Every guy is like Donald Trump, at least a part of his history. With some, it lasts longer than the others. Nighttime. Backyard. Oh, my goodness. Things are hard, and I literally cannot stop. And this is my backyard. But it did you well.  I don't even know I'm loved, and I'm not. I'm not going to have to meet you. I'm not going to have to meet you. Go ahead. The devil's dating me. The devil's dating me. When I'm in the right mood, I enjoy discussing. The devil's dating me. Making the most out of them first. My oldest son, and he'd be a daughter of his, threatened to kill me. Can you imagine that?  I loved her. They say I didn't, but I did. I loved her because I know she was a spoiled, arrogant girl.  In front of me shall lead you by 35 pounds. The third station is all of me. She could have me online, but it's on the floor, on a two-second flat, begging for mercy. I could use her to rule instead of your father. Who are you? She wanted me to fail. Because she wanted to fail. She was overleaved. I believed in her, and I told her if you were wrong, and I told her wrong. I said totally wrong. I believed in her, and I told her that she and her children had the courage to do the same thing to you. But you know, when your father did, when he did for the pizza, the food of his time, he would rebel. I made a fool of myself. I believed I'm priceless, and I'm doing it because I don't want to. I also don't want to take a car. I don't want to take anybody. I believe in the family, but you are not in the school, and you're doing it. I am not in the school either. But you are not, and you're doing it. And why? Because I'm between them.  And I know why. Yeah, yeah, yeah, yeah. Yes, but what are you dealing about her? About her why? About her why? About her, about her why? Let's do this. No, he's going to hurt someone. He's going to hurt someone. He's got so many mothers. He's got a lot of children. He didn't like the group that had ever told her to feed her, but she didn't even shout on the frat like a dog. I'm not going to get out of there. He didn't tell her to feed her, but I don't care. He said, I don't even know what I was talking about. There's got to be a theater response team. They didn't even encourage the group of men to play ringer out early. Miss Stingham was about it. That person was about to say it was like, and she became confused, and it became clear that the men were not children. When we handed her the money, she just jumped in and mouthinated. I'm just going to say it was funny. Jesus, it's so hot right now. I was just getting super cold. I mean I just wanted to be someone, but not real. I shouldn't have been more specific. Gentle, sensitive. I found an item that And you might Professor right. Don't tell me screenplays, But the church, she did to deserve my contempt. I'm a generous man. I'm generous than you are, but I'm not good for money. Some people never worry about parking tickets. Some people never worry about parking tickets. Some people never worry about parking tickets. Some people never worry about parking tickets. And I'm gonna tell you that he didn't get it on him, and he didn't even put him on the plane. Don't have to be a truck. I'm a truck queen. I'm standing right here. I'm standing right here. How do you do it tonight? You know it's a signal not 3 times on the window.  No, I won't let you. She's a beautiful woman. She's beautiful. She's a beautiful woman. She's a beautiful woman. I'm sorry, Katja. I blew it with you. I'm sorry. I'm sorry. I'm sorry. You blew it too. Energy is a wonderful thing, but sometimes it goes, yeah, hey, my little one. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman.  It's just an intellectual idea. This is a time to live, not a time to die. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman. She's a beautiful woman.


I'm going to find out its price performance. Let me just see for a second. So Halliburton was Dick Cheney's company. And he was made vice president. And he left Halliburton. So in 2000, the price of Halliburton stock was $19.22. When Dick Cheney, on January 18th of 2002, it dropped to $5 a share. By 2005, it was up to $36. It hit a new high. By June 27th of 2008, it went up to $52 a share. So when he left office, it was worth $52. When he took office, it was $21 a share. When he left, it doubled in eight years. That's not nothing. That's not nothing. Well, and you're not nothing. Jenny Rowland is research and advocacy associate for public lands at the Center for American Progress. Her recent piece, How Exxon Won the 2016 Election, is available over at AmericanProgress.org. She joined us today from Washington. Thank you for being so generous with your time. Yeah, thank you for having me on. You're listening to Highlights from the David Feldman Show, heard nationwide on Pacifica Radio, or as a podcast on iTunes, Stitcher, and now YouTube. Please subscribe to this channel. For more information, go to davidfeldmanshow.com. Thank you for listening.


Good morning. Good morning. So we are ready for a fishbowl. We're going to get started with the fishbowl. Quickly explain how the fishbowl works. The idea with the fishbowl is we're going to have the commuters on the stage, like we had last evening, but we have two additional chairs, which basically means that anyone from the audience can come up and take a chair whenever you feel that you have a better answer or you have something more to contribute than what was already spoken. So you can come up here, grab a chair and give your two cents, add your two cents into this. The rule of the fishbowl is at any given point in time, one chair needs to be empty. So these guys, they put clues on the chairs, so they're going to be stuck. They can't move, but between the two chairs, we can have one person come up and when the second person comes up, the first person will have to leave. So they keep one chair empty. Make sense? So we have basically room for one person to come up, the second person can come up and the first person can leave. So let's invite our commuters on stage. We're missing Sandy. So that leaves more chairs for people to come up. All right, do you guys want to say something before we get started? Good morning, everyone. Are we having a fun conference? Who's not having a fun conference? Okay, I think we're all having fun. All right, so who has the first question for the day? One request is please keep your questions short. That'll help answer more questions. Right? We'll go here and then there. Okay, hello, Rupiti. So myself, Amit. So I have a question. There's an open bug in the bug list. Like we cannot hook the Serium code into an existing browser, which is open manual. So sometimes we face while executing a very long transaction-based scenario where to debug that particular point, we need to take around five minutes to reach there. So sometimes it would be easy if we can have this. So if not possible, just wanted to understand the restriction. So the reason that it's not possible currently and is difficult to attach to a running browser instance is that the WebDriver library has to communicate with each browser somehow, right? And that communication channel is usually some sort of a TCP board. And the only way that the browser, you can instruct the browser to listen on that TCP board is to do it when you launch the browser. The browser by itself doesn't have the ability to just, hey, start listening on TCP board when, I don't know, when you flip a switch in the UI. There's no way to let it do that. So in the case of Firefox, we have to use a profile to do that. In the case of Chrome, there's a command line switch that has to be added to Chrome or that the Chrome driver adds to Chrome to start listening on a port. Interestingly, Internet Explorer is a little different. There is a possibility that you could, in theory, connect into an existing browser. I have been reluctant to add something like that, specifically that's IE-specific, because I believe that our API is and should continue to be cross-platform. So there is, however, a really easy way to solve this problem, which is to not solve it. If you put the lifecycle of the browser under the control of Selenium, like if you start the browser that you're going to use for the manual section with WebDriver, then you already have that connection up and running. And when you hit the end and it's like, ah, now I need to be able to poke around in the browser and control it, because you've already started a browser session, you'll be able to do that. If you're using the Selenium server or something like that, you could probably use Python to give you a REPL or even Ruby, right? So you don't need to code everything up. You can have a completely interactive session. And that might actually save you a lot of time and effort. And you could do it today and it would work for all browsers. Thank you so much. Namaste. This is Bharat. I represent a company called Railocas. First of all, the reason why I came here is to make sure that I wanted to thank you people for having this Selenium project keep going. The reason is just that, the reason why Railocas exists after two years of being founded. I'm sorry, get to your question. Yeah, I'm getting to it. The question is simple. I wanted to know what is the plans about the HTML5 related to the API with respect to web driver? First of all, I'm really, really pleased to hear and very humbled by your comments. Thank you very much. HTML5, that's a big beast, right? And it's composed of a number of different moving pieces. Like CSS3 probably hooks in there as well with the 3D transforms and the horror that that entails. So let's break it down into the various bits and pieces. HTML5 is an evolution of the HTML standard. It's presented in the browsers. It's still got the DOM. Web driver will continue to work with those things. The next thing we're probably going to come across is the fact that it's got new form elements that people use. We have, in a standard, had several discussions about how we're going to handle those and we just need to write some utility classes to make that work the way we want it to. But effectively, each of the new HTML form elements has a sort of string serialization that it sends across the wire and we will make it easy so that if you do send keys with that string serialization, the correct thing will happen in the HTML5 form element. Do you want to come up here and just sort of talk to us about the things you want to see in HTML5? You don't have to. Okay, that's a very wise man. What other things in HTML5 would you like to see us support? So the form elements. We have plans for supporting those in an elegant way, but for now it'll ultimately boil down to calling send keys, but we'll put wrapper classes around that to make it easier and nicer to use. Excellent. Okay. So yes, HTML5. Wonderful thing. We will support it. Relative to the HTML5, you're talking about shadow DOMs. Is it a problem? But actually, my question is, as for HTML, probably more like JavaScript, will there be a support for... We see now a single page application and more stale exceptions. People have to write their own code, read drives, the page factory isn't perfect for every solution right now. So will there be focus on that topic? And the second question is something, we've already been asking this, and I didn't hang out, but that was a discussion about the image capturing that I know everybody's picking on you, because it's not your fault. But it's kind of... Okay, there's a standard. You decide on the standard, but every browser takes different screenshots. Only the viewport, some cool canvas. And will there... At home, until home driver number two, it didn't work full screen, and now it doesn't. I know everybody keeps complaining, and you can see that it's almost like the HTTP response. That's it, so. Okay, so the first question is around stale element exception. Sit upon. Single page applications. Single page applications and stale element exception. Yeah, it's interesting, right? I mean, I've worked on projects where we've kept the chain all the way back in a web element, and if we fail to interact with something, we do one look up. That always upsets me a little bit, because it means that I've lost control of my application, like I have no idea really what's going on. Until something like React came out, I think that was a perfectly reasonable position to have. I don't mean I'm a commudant, right? So it's a commudantly reasonable position to have. But nowadays it's getting increasingly difficult to tell when the underlying DOM has changed. I don't know is the answer. If we do do something, it'll be done on the local end. So it'll be like, hey, I tried to interact with it, and now I failed and say, here's some retry logic or whatever it is. Which is fairly easy to write. None of it's too complicated. And so I'm left to do something like that, because every time I put something in the library, people start leaning on it, and they start going, like, ah, here's an example of how things do. The expected conditions I put in there is here's a sample of how you would use the weight, and people are going, well, there isn't an expected condition for the thing that I want, and so here's a patch that gives it to you, and like the expected condition is now like a bit bajillion things long, right? And it's like, it was just meant to be an example to show you what you could do for yourself. But maybe, I mean, it is something that comes up frequently. Santi, did you want to add anything about stale element exceptions? No, I think I'm good. I was just wondering, when you tried this, look up after failure, did things just work? No. It alleviated some of the pain, but it didn't work consistently, right? And that's because, actually, you'd lost control of the page. You didn't really know what was going on. And the better thing to do was to go, okay, I'm now going to use an explicit weight. I'm going to look for that element again, and away we go. And the reason why we were doing that is because we'd performed some interaction on the page that had caused the page to be updated using JavaScript. And people normally think of, like, using the expected conditions, the explicit weights, when you do a full page reload. But really, it's like, I've done something that I expected caused the DOM to mutate. That mutation doesn't happen in real time. You've got a race condition going on. So it's always best to, like, cause a mutation to happen, wait for it to be done, then continue moving.  But the way I went around solving that was to basically wrap every action into implicit weight for HX to finish and for the animations to finish. And that way, if you have a form that you're filling out, the typing action sets the text and then waits for everything to finish loading and only then proceeds. So having those implicit weights and then the second thing is to not have a reference to any element in memory and look it up every single time you are trying to interact with everything. So start basically from beginning and that way you get the fresh element every single time. But again, it's not a pretty solution. That reminds of Selenium 1. Okay, I love K. Congratulations, yeah. The first idea I've applied in a similar way without implicit weights, but by putting application-specific wrappers around form elements. So I've created my own text field, for example, which is where the fact that, hey, look, there's some validation that goes on or there's some JavaScript that gets done or it auto-corrects my spelling of whatever word it is. The second idea will murder your speed, particularly if you're using a service such as Source where you're not running on your local host, but you've got the entire Internet three times between you and each request you make.  Oh, four times. You know, the speed of light is fast. But if every single request you make is an RPC and you've got like two times the Internet between you and getting that response, it's going to murder your performance, right? So I probably would not hold a reference to an element, but I would have custom wrappers around classes. So you're only halfway thrown off the stage. Hey. Hey, Salman. So my name is Krishna. I come from PayPal. So I have two questions around the even-firing WebDriver. So one, the Java bindings. So why does the even-firing WebDriver use a proxy pattern in order to, you know, in an instant? It was demo code. It was like, here's how you could use, here's how you could track everything that WebDriver does. Okay. And proxy, the dynamic proxies is how you do that in Java. Okay. So the second question is, why doesn't even-firing WebDriver support the actions class? As in, like, you know, whenever I use the even-firing WebDriver and do some M and some find element or some click and all of that, all of the hooks get called on. But every time I do something using the actions class, nothing happens. I've been trying to find this one for a couple of days, a couple of months now. I mean, I haven't been able to figure it out. So I thought I'd probably ask you... Yeah, it's probably going through a method that we haven't proxied. Like, we proxies several things, but we don't have hooks for, like, on X for every single method. And it's probable that we just missed it. Because, like, the event-firing WebDriver was a case of, like, someone coming up to me going, like, I don't know how to log all the things that are happening in it. And it's like, well, this is ridiculously easy. I don't know how to do it. And so it's like... You could do it at the command executor level that goes, ah, that's a two-level level. And it's like, well, here's how you would do it with the dynamic proxy. And it was, like, useful code, but it's pretty old, right? It predates the actions API. And so it's not there. If you send me a pull request, I will pull it in, and then it will be available for everyone. So check out the code, send me a pull request. That I will definitely do. I mean, yesterday after you said that, I'm going to be needing some help with the documentation for the part.  I would love that. That would be awesome. In the genuine sense of the phrase, awesome. You know, you're welcome to come up here, guys, if you want to have, like, a conversation with us and kick things off. Like, there could be something really controversial. I don't know. Have we got the API right? Does the web driver API feel good? Would you prefer the old Selenium one? Would you prefer Watan's one? Would you... Oh, I don't know. What would be exciting? Proxy handling. Have we got that right? Okay. Assuming no one wants to... Sandy has a question about that. No, I'm kidding. Do you want to? No? Okay. Okay. I guess we'll take another question from the floor if no one wants to come up. We very seldom bite. Hi, my name is Anto. I have a quick question. So the file upload of the Selenium, I mean, Safari browser is not working. So the weird thing is, if I run a JavaScript code to click on that input type file from the control of the Safari, it works. The same code, when I try to run from the JavaScript executor of the Selenium library, it doesn't work. And the only way we are doing right now is using Apple script. So if you go via Apple script, then parallel mode can't be done. So we are slapped. So I need an answer. Is the question, why is the Safari driver not that good? Or, I mean, in the lightest possible way? Yeah. I mean, the main question is, why can't it be able to click on the input which of type file? Through JavaScript. Right. Yes. So, Jim, go for it. So, to answer that question, you kind of have to understand a little bit about how the Safari driver is built and how it works. The Safari driver is a JavaScript, mainly a JavaScript implementation. And in JavaScript, when you call a method, or a JavaScript function, that brings up a modal dialogue on the UI thread, the JavaScript thread, the JavaScript execution is blocked. And so, for uploading a file, that is exactly the case that that describes. You call a JavaScript function that then brings up a modal dialogue on the UI thread. That is the file selection dialogue. And the JavaScript is blocked until that dialogue is dismissed. It's the same reason that the Safari driver doesn't support alerts, the alerts API, is because we don't have a good way right now to not block the JavaScript thread when the modal dialogue is presented on the UI thread. It just is a limitation of the way JavaScript works in modern browsers. Other drivers don't have this problem because they're not JavaScript implementations inside the running UI thread like the Safari driver is. And Safari driver is unique in that respect. Yeah, the Safari driver is basically a hack. We needed Safari support. Everyone needs Safari support. But it's very similar to the original Chrome driver, which was like it runs as an extension in the browser, but it doesn't have access to the internals of the browser. It can't do insecure operations and things like that. It's limited by the extension's API that Apple offer. The real nice thing that would happen is if Apple were to step up to the plate and do their own implementation, and I think for them to do that, we need to finish the specification. I think that's the thing that would help Apple move forward. So yeah, we should get on with that spec at some point. That's what we should. Thank you. I expect we should. I expect we should. So the question, by the way, the question for those who may be watching this later was, do we have a relationship with the Safari team? Do we know anybody there is the question? We run into the culture of companies, right? Talking to Google, Google has a very open culture, so does Mozilla, where people are willing and able to communicate and participate in open source. Microsoft have, over the years, become more and more open and they come to the face-to-face meetings. They discuss things with us. They are writing their own implementation, which is brilliant. But they have a corporate culture that is concerned about open source for reasons that they're worried about, you know, if some of it gets in and the viral nature of the GPL, what happens to their crown jewels? And so they're quite sensitively protecting things in the best way that they believe is possible. The corporate culture at Apple is a more closed one, right? I mean, you know, Apple famously don't really leak very well. They were a company that leaked from the top, right? It would be like Steve Jobs back in the day going, like, oh, by the way, we've got this amazing, oh, crikey, I shouldn't have said that, right? The lower levels in the engineering levels in Apple are incredibly disciplined about maintaining the strictures that they have of their corporate NDAs. So we talk to the Apple team. We obviously, you know, I run into members of them. David does. We communicate with them, but the culture of the company isn't one where they will come out and say to us, oh, by the way, we're doing this. We are following the steps that we are meant to do in order to do the right things. So, like, David Burns has filed an issue on the WebKit radar going, like, could we please have WebDriver support? And, like, that's the end of the public face of Apple, right? It's just the way the company is. I'm not saying anything good or bad about them. I just think that's the way their company works. My expectation is that Apple are a company that do a good job with standards implementation. Like, Safari knocked it out of the park when it came out, right? It was, like, Opera had a fantastic standards implementation, and then WebKit came out and just also did a really excellent job.  So they understand standards and the importance of it. And my expectation and hope is that when we get the standard out, the specification, then there's going to be that concrete thing which allows Apple to participate in the browser automation community in a way that currently I don't think we've enabled them to do. Yeah, and, yeah, for those of you not listening, that provides context for how important this back is. Did anyone up here want to add anything to that? Okay. Hi, my name is Tarkesh. I'm from EMC. I just have a small question. This question is to Simon. Can you share little details about the Selenium landscape in Facebook? What kind of tests do you run? How many tests do you run to keep us happy? I don't know the numbers off the top of my head. Rather interestingly, at Facebook, which is a company I work at as a software engineer, I work on our build tool instead of browser automation. Like, I arrived, the first project I worked on was helping set up some of the end-to-end testing for mobile for Android for iOS. I rolled off that project about a year, 14 months after I joined, and I'm now working full-time on the build tool team. The build tool, by the way, is Buc, B-U-C-K. It's open source. It's on GitHub. It's like a next-generation build tool. If you build at any Java, take a look at it. It's blazing fast. I'll stop advertising things now. My second question is, we all face so many challenges day in and day out working with Selenium. Do people at least have one challenge working with Selenium? One challenge in implementing Selenium. I think... So, I'll pass the microphone down, because I think we can all answer this one, right? For me, Paul Hammond had it right when he called me insane when I started down the path of tightly integrating with the browser instead of doing the JavaScript thing that Selenium RC, Selenium Core did. And he was entirely and completely correct that it was an absolutely bonkers thing to have done. And if I'd realized how hard it was, I wouldn't have started, but I was young and foolish and did it anyway. Big challenge. That was the original C++ code if you didn't hear what Simon said. That was a challenge. I think for me, probably the biggest challenge was not a technical one for me. The biggest challenge was simply... was social on my part, just getting over the hump of thinking, wow, can I really do this? Am I able? Do I have the ability to do the things that needed to be done in the project? And, you know, that to me is something that I think was a real challenge for me to overcome, to just dig in and do it and start. And if I wasn't up to it, then I wasn't up to it, and that was probably my biggest challenge. I think for me would be how extensive the code base is. It's actually definitely challenging every once in a while. You have to get reminded of the structure and where things are, the fact that there are about six clients, seven clients. Every code change you want to do, you have to apply it. If you go on the client side to seven clients, talk to seven people who own them, and push them through a huge, immense crowd of people who will be testing them. So it's a big challenge for sure. For me, it's pretty much the same story. Every time you get on a new project that has a Selenium build inside of the build tool, and the fact that Selenium build is always the last one to run, and it is 90% bread, because there's one or two tests that constantly flake out for whatever reason. And so it's easy to think about this as a technical problem. Oh, we need to stabilize the build. We need to put these AJAX things, and we need to do this, this, this. But in fact, a majority of the testability seems to be a cultural problem, where the developers or the team, the QA team, whoever does not really respect the Selenium build enough to actively maintain it. And so having to convince the whole team, hey, guys, this is important. It's a first-class citizen in the build queue, and once you move it up, though, once it's no longer this last thing that runs that nobody cares about, and get it to run every single build and then convince the team to help you out and root out all the little flakiness and everything, once you get to a point where it's 99% green, it takes a year or two to complete that cultural shift, but once that happens, it's quite an amazing result. The result where Selenium build fails, and several developers just completely jump up and start to freak out, like, what did I do wrong? What did I do wrong instead of eh? It's whatever. I'm going to ask you to hang on, because this gentleman here has had the mic and has been trying to ask a question for the last three or four people, and so I'm going to stop you and say, go ahead. So thanks, everyone, for being here. So my question is two questions there. First question is, when I try to cast IE driver to even firing web driver, I get series of exceptions. I mean, is it a known issue, or is it something related to my implementation? Second question is, if you could add one feature to Selenium on one click, what it would be? So I'm sorry, your first question was, when you try to cast... When I try to cast IE driver to even firing web driver. To even firing... Okay, right, right, right. Because the reason that doesn't work is because whenever you try to cast something, it's an is-a relationship. So you can think of it as IE, the Internet Explorer driver is an event firing web driver, and it's not, right? It's not one, so you can't do the direct cast. If you want to use event firing web driver, then what you do is you take your Internet Explorer driver instance and you create the event firing web driver wrapper by calling the constructor and passing in the driver instance, and that's how event firing web driver is supposed to work. The second question, one feature. I guess we can all answer that. If I had one feature that I could magically put in, it would probably be... I would magically add a way to get the operating system identifier of either the browser process or the browser window itself, because all operating systems have the concept of some way to uniquely identify each window element or each window in its window manager and each process that's running. And if I had the ability to get that, then that would open up a whole wealth of possibilities for companion projects to the Selenium project, but that is probably never going to happen, so that would be the one feature that I would add. If I could add a magical feature that does not make any sense, that would be useful. I think it would be recording videos at a Selenium. I found it to be extremely useful when you have a failure to be able to see four frames a second or 12 frames a second exactly what happened in your application throughout the execution. So that'd be mine. My friend, do I have a project for you? Right now, my biggest gripe and pain point is trying to simulate hovers in different browsers, and part of the biggest, I personally believe that one of the biggest reasons that Internet Explorer is so horribly unstable for my build right now is that we have to inject some JavaScript snippet into the DOM to simulate a hover. It's so complicated. So my feature would be to say, hey, there's this link element. I want to move the real mouse right on top of this element, and instead of simulating the hover to actually have a hover, that would be awesome. That's already there. Oops. It was fast. We just did it. While you were asking for it, we went ahead and wrote it. I think the thing that I would want would be a really elegant API, like where you look at it and you go, yeah, that's how it's meant to be. WebDriver started off like that. The API was really, really tiny, and it's grown a little bit. WebElement is still that way. The two areas where I'd really want that elegance right now where we don't have it is around simulating user interaction using the advanced user interactions, like the actions in a new actions in your personal driver, that stuff. That is inelegant and feels clunky, and I don't know how to make it beautiful, and that would be nice. And then the other thing that's coming is the HTML5 specification has a bunch of things like Shadow DOM and web workers and things like that, where it will be really nice to be able to interact with it, and I'm not sure how that API should feel either. Right? And so it's an aesthetic thing, and we did pretty well with the sort of, I think we did pretty well with the feel of the API to begin with, and I'd like to continue that, and I'd like to sort of move that forward into the next generation of APIs that are coming, and I don't know how to do it. This is going to be a little bit of fumbling as we figure it out. Yeah, this is Sai Kumar. When I worked with the Selenium RC, I used one of CSS selector like Duke contains, Duke colon contains, especially while targeting IE, so to avoid expats. So I used to use this, especially if my application is an X-based application. So such format is not allowing in web driver nowadays. So what is the constraint, like it is from HTML standards or it's in part of web drive? So let me see if I understand correctly. You're asking about the contains pseudo selector for CSS selectors? Yes. Okay, great. That's not a standard CSS selector. It's not, it doesn't appear in any CSS standard that's put out by the W3C. Now, it's been made very popular because jQuery, which has its own CSS selector engine written in JavaScript, it does the standard, the CSS standard selectors, but it also adds some extra ones for convenience sake. One of those extra ones that it adds is contains. Now in Selenium RC, I believe in some cases we used to inject the jQuery in Internet Explorer, we used to inject the CISL CSS selector engine, which is jQuery CSS selector and it was called CISL. We would inject it into, because at the time, Internet Explorer didn't support CSS selectors, so we used it as a polyfill. And of course, that gave you the ability to use anything that the jQuery library would let you use, including things that were not standard CSS. Now that Internet Explorer does have a native CSS selector engine, so we always delegate down to the native CSS selector engine if it exists, and so we rely on whatever that allows us to do, which means that for some versions of IE, some of the CSS3 selectors don't work, like Nth of type doesn't work in some versions of IE because Internet Explorer doesn't support it in their CSS selector engine for that version. And contains doesn't in any browser because it's not a standard CSS selector. It's simply one that was implemented by the folks who created jQuery. Fortunately, you can download Sizzle as a library and you can inject it onto a page yourself, and then you can use Sizzle directly in a locator, right? So although we don't ship it inside the browsers, you can grab hold of a copy and you can use it pretty easily. And there are examples on the web of how to do that in a buy, for example, where it is and it will work the way you expect it to. Okay. I have a second question. Especially when I trigger a suit against IE. So somehow the connection is, you know, losing in between a browser and a web driver. The session is, you know, it is getting expiring or it's somehow it's losing its connection. So what could be that cause or is there any work around the browser? So it's losing, the driver is losing the connection to Internet Explorer. That's what you're seeing. By script is containing its execution but the browser is not responding. So is this an RC or in WebDriver? In WebDriver. Especially for IE. So I can think of some reasons why that would be the case with Internet Explorer in particular. I'm not sure what losing the connection actually means in this context. But I do know that protected mode settings are a big, big hiccup for Internet Explorer. The way the Internet Explorer driver works. This goes back to the history of when IE7 shipped and they introduced user access control in Windows Vista. One of the things that changed radically was that they introduced the notion of Internet zones or security zones and the concept of protected mode. When you're using the COM interfaces to drive Internet Explorer and you cross a protected mode boundary, so if you go into protected mode or out of protected mode what happens is that if you're using COM to drive the browser, when you cross that protected mode boundary the COM interface pointer goes away. It comes orphaned and it goes away. One of the other scenes is it abandons the original browser, creates a new one to navigate within the new protected mode zone. It can't switch zones like that. You have to kill one and start another one. So your COM object pointer becomes orphaned. We work around that problem in the IE driver by saying and we enforce that by saying that we look in the registry and look at your protected mode settings and see if they're set to the same because if you set the protected mode settings the same for all of your zones it doesn't matter what site you navigate to you will always be either in or out of protected mode depending on how you set them. Because that was a thing that was difficult to explain to people we ended up and by we I mean I had the browser throw an exception when it read the registry and say your protected mode settings are different for these zones. You need to set them all the same. So we would throw an exception but that introduced another layer of problems in that some people can't change the settings on their browser because they're locked down by their IT department for some unknown reason. It boggles the mind that they're not able to set the settings on their own machine. But so we added a capability that bypasses the registry check for people in that instance or in that who are in that case who can't change their protected mode settings but still need to run the Internet Explorer driver. We tried really hard to make this capability in the language bindings scream out that this is something you should never use. The name in Java the name of the capability is introduce flakiness by ignoring security zones. You're actually saying I'm going to introduce flakiness in my test. In the .NET bindings the capability is introduce instability. I mean we've actually tried to make it blatantly obvious blazingly clear that you should never use this capability unless you absolutely have to and if you have to realize that you're just asking for trouble to come with Internet Explorer the right way to handle it is set your protected mode settings to the same for all zones and that's just the only way that is truly supported for Internet Explorer. There's one other case that we might have some challenges with sort of losing the connection to the browser and that was introduced by Internet Explorer 11. There are some instances where the protected mode boundary can be crossed in IE 11 even if you have the protected mode settings set properly and there's a registry key you can set to prevent that from happening that's documented on our Wiki page for Internet Explorer for configuring the IE driver. So I hope that at least gives you some places to look and I really want to make clear the background of it seems arbitrary why should I have to mess with my protected mode settings well there's a very good technical reason why and that's it because otherwise we do lose the connection to the browser when you cross the protected mode boundary. There's a gentleman at the back in a green top who had his hand up Yes if you're super shouty oh have you got a microphone? No, okay just shout okay so to repeat the question Chrome has an option in its developer console that allows you to emulate a mobile phone in Chrome would we expose that and the second one was is it safe to do mobile testing using a desktop browser? First one I'm not sure I can't see why not but it would be through a capability that you pass to the Chrome driver and the Chromium team own the Chrome driver right this is one of the interesting and exciting and potentially frustrating things is that as browser vendors take ownership of their own drivers we get less ability to go like oh yeah definitely yeah we'll do that on the other hand the browser vendors really do want you to have an excellent experience automating on their browsers and so they're pulling their things out they're doing an excellent job so if you file a task and ask they may or may not do something and you can do that on the Chrome driver project page second question is it a good idea to test mobile on a desktop browser it depends on the level of fidelity that you're after if it's a does it render nicely in a screen this size sure why not if it's will this work in the browser on a device I don't know you might be comfortable you might be using light layers like GWT or jQuery or XJS which paper over the cracks and give you a consistent experience between devices and therefore if it works on the size screen it should be fine but then if you're using Chrome you could probably spin up an x86 Android emulator instance enable the Chrome web view stuff and use the same Chrome driver to drive the web view there so you've given yourself an artificial constraint which doesn't need to be in place does someone else want to add something to that yeah one of the things that would not be representative is going to be performance right going to be running on a full desktop environment with multiple cores and multiple gigabytes of RAM and that will not be representative of a mobile device on a 3G connection with limited resources and battery power so keep that in mind regarding exposing that the Chrome options are really extensive in those high capabilities so you may be able to make it happen with things like flags to start Chrome it depends on how you're using it but you may be able to hack it with tools that already exist someone's coming up give him a round of applause so yeah just to answer your question actually I already did this thing usually in the developer toolbar there are three options which Chrome gives to simulate the geolocations to simulate the screen size the viewport size and the third one is simulate the user region so I think these are the three things which are really important and you can also control the user region so what we did so in the Selenium you can easily use the options to set the user region to any user region and you can also play around with the viewport size we have a driver managed API so you can change the screen size so if your website is responsive it will exactly looks like the way it looks like on a mobile browser but for the simulating the geolocations you can use profiles in Chrome so yeah so we are doing this so it exactly the website looks like a mobile browser so yeah this way you can utilize the Selenium scripts to see whether your scripts work on a responsive UI which looks on a mobile browser there's a service out there too that you could use can I go ahead so I just had a quick it's more of a query so you know that the mobile browsers have a new version of a mobile browser so what would be your first thought when you know that a new version of a mobile a browser is coming up I'm sorry can you repeat that I'm not quite sure I understand the question so my question was like there's a new version of a browser that's coming up every month so what would be your first thought when you know that another version of a browser is going to be launched so you're asking what our approach is with new versions of browsers that come up you mean like for example a new version of Firefox that comes out every six weeks or a new version of Chrome that comes out I guess they ship every six weeks and how we approach that or how it would be better for you to approach that what would be your first thought when you know that a new version is coming up what are our thoughts about that yeah in my case you know I it's case by case basis as far as the the browser itself goes depending on which browser it is for Chrome I get less concerned about Chrome shipping a lot because it's really hard not to be on the most recent version of Chrome you've got to go through some hoops in order to not have Chrome auto update itself so you're almost always running the latest version Firefox I we have some challenges with Firefox because of the architecture of the Firefox driver and it requires a binary component that is based on the Gecko SDK that's tied uniquely to the version of Firefox that's being released and so there are challenges associated with that that should be mitigated largely when you've heard people talk about Mary Annette over the course of the last couple of days which is the next Firefox driver that is owned by Mozilla that's provided by Mozilla that would mitigate a lot of those pain points for us Internet Explorer has a pretty slow release cycle so they don't update nearly as often so I don't see that as a real there's some scrambling to catch up and make sure things work with a newer version of the driver of the browser but in the main there aren't a whole lot of issues with that particular browser anybody else want to I was going to add considering the speed of their release process you would be great if browser vendors provided tooling to actually be able to download or install programmatically their stuff we have projects at Sauce Labs it's our job to always give you the latest browsers and it's a really really complicated task to get the right installer and automatically install it in your virtual machines it's been a lot of work to get that down and I would love it if the vendors would actually provide this tooling for everyone to consume and not just have to hack it and get it started in different parts I noticed that the time has crept by or lept by actually to be more honest it's gone really fast for us up here it's now about 10 o'clock and I think the session was meant to finish at 10 so we're going to be around for the rest of the day I guess you are as well you'll be able to come ask us questions talk to us if there's something we get to that you want to then do come and have a chat most of us are lovely people thank you very much for listening guys


What's up YouTube? Mike the Coda here. Today, we're going to go over one of the recent problems on the last week's leak code contest. Largest number after digit swaps by parity. I don't know why so many people downloaded this. It's like so many people got like, uh, there's like 119 downvotes, and there's only 96 upvotes. So this is pretty, I don't know why this is downloaded. But anyway, let's go to the problem. So you're given a positive integer num, and you want to swap, you may swap two digits of num that have the same parity. So what that means is that they're either both odd or both even. Okay, so that means that you cannot swap like an even or odd, and you cannot swap an odd or even. So you may only swap any two digits of num that have the same parity. And then our job is to return the largest possible value of num after any number of swaps. So if we were to go to draw this out here, this, this problem isn't really that difficult. But as you can see here, let's say we have one, two, three, four, right. And we want to find the largest possible value of num after swapping two digits of the same parity. So, so what is, so if we start from here, right, we could swap two digits have the same parity, and we want the largest possible value of num after any number swaps. So if I want to find the largest possible value of any swaps, what should I do? So like, let's say I start from this digit one, and I'm allowed to swap values that are have the same parity. So what I have to do is what I should find the largest digit, that is the same parity. So since number one is odd, I just have to find the largest odd number. That is, yeah, just have find the largest odd number. That's what I have to do, right, and then swap it with one. So in this case, what is the largest odd number that I see here, that's after it? It's three, right? So then if I just swap one with three, so I swap these two, I would get three, two, one, four. Okay. And then another thing is like, then after I'm done swapping this, I could swap more numbers. So it's already swapped one, that's fine. Now I'm on number two. Right. And we can swap any two numbers that have the same parity. So since we want the largest possible value, and it's the number, the digit two, here, two is even, right? We should find the largest even digit. That's larger than two, right? The largest even digits that's larger than two. So if we loop to the right, we could find that four is the largest even digit that's greater than two. So it could swap with two and four, right? So then this would give us three, four, one and two. And then when we reach one, there's no odd values afterwards that are larger than it. So we could just leave out there. And when we reach two, there's no odd, no even values after that are larger than it. So then our answer would just be three, four, one, two. Okay, so that's their output here. And yeah, that's essentially the gist of the algorithm. So I'll just show you guys a code now. So here's what I did. I first converted it into a string because I didn't want to deal with like modding numbers and stuff like that.  So here, then I had the number swapped because they're asking, what are they asking? Oh, wait, I never even use swaps. That's kind of crazy. I could just take that out. But anyway, um, yeah, so I loop through from zero to the end of the string. So that's just essentially looping through here to the end, right?  So currently, I just get this digit. I have a variable called largest number and I just get the current digit. And minus, minus quotation zeros is a way to convert the current string into its equivalent digit, right? Okay, and then I set my largest index to be I. Okay, then what I'm going to do is I'm going to loop from J is going to equal to I plus one. So what this is doing is that so if I go back all the way back down here, what it's doing is here I'm looping through here to here, right? I is going to loop from here to here. And then J is going to loop from here to here. And I just want to find the largest number, not largest digit, have the same parity as one, and then I could swap it. So that's what I'm doing here. And then here, I'm just getting the digit at J. So it would go through like 234, try to find whichever digit it is. Okay, if the current digit is greater than or equal to the largest number, right? And they have the same parity. So digit mod by two is equal to largest number mod by two. So this statement, digit mod by two means that we're just making sure that both of the two digits are the same parity. So they're either both even or they're both odd. And a way to do that is just by modding by two. And that gives tells us if it's even or odd. Okay, so if digit mod by two is equal to largest number mod by two, so that means both the digits are the same. I just set the largest digit, the largest number equal to that corresponding digit. And then I just get the also set my large index equal to J. So now after this loop is done, I just swap the two digits. So I swapped x at largest index index with x of i. So that's going to swap the two, the two numbers here one and three, they're just going to get swapped here, right? Because once I get the index of where the largest number is, largest digit to have the same parity, just swap them. And then we're good to go. And we go on to the next one and next one. And so we're done. Then at the end, at the end, I convert this number into an actual number, because they want us to put out the actual number, right, they want us to give us an actual number. So the string s tall s toy converts the equivalent C string into a to a corresponding number. And then that's the largest integer that you could return. So yeah, that this problem got a seed. And yeah, that's pretty much just as a code. I hope you guys enjoyed this video. Rate, comment, subscribe. I'll check you guys later.


Hi everyone, Joe for Jaspy's casebreaks.com coming at you with 2020-2021 Mosaic Basketball Serial box break number 53. Number 54, I just posted it, that's the last one we got to do to unlock that Immaculate Basketball break. So let's make that happen. So we'll do the break first and that at the end will re-randomize everybody's names. Top 6, get random number block spots for Immaculate Basketball. The top three will get into the slightly more expensive one and the next three will get into that $170 one featuring those teams right there. Big thanks, first we're going to do the break though, big thanks to this group for making it happen and let's roll it and randomize it four and a three, seven times for names and teams. One, two, three, four, five, six and seventh and final time, four and a three, seven times for the teams, one, two, three, four, five, six and seventh and final time. So there's the first half of the list right over there and then the second half of the list right down there. No trade windows in these filler breaks, it's alphabetized by team and let's print and rip. Here's Weissman rookie card, nothing too crazy here but what's crazy, it's just about the price of a really nice hit. Who's going to get those number block spots? Let's gather everybody's names again, one through thirty, Sean down to Alex and everyone in between, that was from a different break, it gets New Dice and New List and it's going to be the top six, you're going to get those spots right there. So again the top three will get the Pistons Magic Cavs, et cetera, et cetera, number block and the next three will get Rocket Raptors Bulls. Let's roll it, let's randomize it, two and a six, eight times, top six after eight, good luck. One, two, three, four, five, six, seven and eighth and final time after eight. So we have some sad faces here from seven through, sorry Jeff, very close, seven through thirty sad times but I do appreciate everybody giving this a shot, we do have to do one more of these so if you feel like giving it another shot, jessbyscasebreaks.com. Thanks for trying, top six, happy times for you, you're in the next round, Michael is happy, so is Sean, Gregory, Bradley, Bradley, Craig, congrats to the top six, once that other filler sells out we'll be able to do those random number block randomizers and then ultimately unlock Immaculate. So Craig and Brad, you're in that Pistons number block, Greg, Sean and Michael you're in that Rockets Raptors number block among other teams, there are a lot of teams in each one. There you go, thanks everybody, I'll see you next time for the next one, bye bye.