My name is Eddie Zaneski. I'm joined by Macha Shulik and Katrina Viri. And Katrina just ran here from her previous talk. So check out that recording. It was sold out. So we all work at a bunch of different companies, but we all work on Kubernetes together, which is kind of the beauty of open source. OK. And what we do, so basically we are responsible for development and standardization and maintenance of everything CLI related. And that also includes making sure that we maintain stability of kubectl, especially if you have kubectl running in your CI-CD pipelines or anywhere in the production, you care about the stability most importantly. So we put a lot of effort not to break you and at any point in time. So the projects that we maintain, that will be kubectl. So I'm pretty sure that you all already heard about kubectl. If you have not, please check it out. It's pretty cool. There are a couple more projects like Customize. Katrina is doing a ton of great work. If you haven't tried Customize, please try it. It is amazingly easy to be used and it's super customizable. Katrina is such an amazing person so much you can learn from her. I'm doing that every single day. And I'm very green in Customize. Crew and crew index, if you work with kubectl and you've noticed that it's missing something, we open kubectl to write plugins. But Ahmed was so brave enough and figure out that we also need something like a plug-in manager. So he wrote crew. We also have libraries. I did mention that to write good CLIs, kubectl, compatible CLIs, we expose libraries. So CLI runtime, CLI experimental. Although the other one is we try a lot of different experiments. So be brave and have lots of time because we break everything in experimental. KRM functions, that related with Customize, lots of funny client-side functions. Please check it out if you have a little bit of time. Yeah, you can find us on the CIG CLI Slack in Kubernetes Slack. And we have a mailing list. And we have some other contact information in our GitHub repo there. I should have started. Are people familiar how the Kubernetes project is organized in terms of CIGs? No. So CIGs are special interest groups. So Kubernetes has a very large code base that we've carved out into different groups that own different parts of the code base. And so we work on the CLI tooling for that. So the projects match they went through. And it's all open source. And you can join us at our meetings, which are right here. So if you'd like to get involved with any of the stuff we're working on, you have questions, want to talk through things, join us for our meetings. There was online, on Zoom, open to the public. And we also do a bug scrub every other week, one for Kube Control and then one for Customize. So that's a great chance to come, get involved, kind of hear how we talk through issues. We say no to a knot a lot. And it's not because we're jerks. It's just that Kube Control is a very old code base with lots of people depending on it. So making breaking changes is very difficult for us to do with. Everyone's, go ahead. And if you have time next Wednesday, that's the bug scrub Wednesday this time. Yes. Anyone seen the XKCD comic? I should have put it in here, where it's like, I fixed a bug where holding down space power would cause the CPU to overheat and turn off.  The control key is hard to reach for me. So I've programmed an Emacs macro to count a increased temperature as the controlled key. Please, please add a flag back. So that's the kind of stuff we deal with. We have some updates to go through from our recent releases. OK, I hope I won't break anything. There's something that I broke in a minute. So some time ago, we figured out that people add more and more containers to their pots. And whenever you're trying to reach the locks, it's super irritating that you have to specify the container name every single time. Especially if you have multiple of them, you have to remember what's the name of the containers. Of course, KubeCuttle will tell you nicely that, oh, there are this many containers. These are the names. But you still have to remember that. If you're trying to debug in production, you're under stress, there's no time to, oh, which one was it? And especially if they are similar, that is problematic. There's an annotation that you can put on a pot that allows you to pick the default container that works for KubeCuttle locks, port forward, exec, and anything else that picks a specific container within a pot. And if it's not working, let us know. We have to fix it because that's an important thing. KubeCuttle events. So get is cool because it allows you to read anything in a cluster. The problem with that is get is generic. It does not allow you to be specific about certain resources. So we figured out that events are rather, ah, they allow you to get a lot of information. So it will be handy if we allow a little bit more information filtering sorting around the events, especially if you know the KubeCuttle. Under the KubeCuttle describe, we will usually show you the events related with a particular resource. So we would like to be able for a user to have a little bit more control around that. Initially, we played with the idea of expanding get just for events, but then it was like, yeah, but that means that we will turn get into a fronkin monster that will behave differently for a different command. So we eventually settled on the events command. And one of the fun things about events is that when people were doing KubeCuttle get events watch, they would complain that they would see duplicated events. And what was actually happening is that you would see the deletion event for the record, and then they would see another deletion event like 10 minutes later. And that was actually the event getting deleted, which creates its own deletion event, right? So there's a lot of things that are involved with the events, which is why we built a whole sub command for it. I'm not gonna go through the highlights from 126, but big shout outs to Mark. He's doing an amazing job for the past. Good couple releases with everything related with completions for KubeCuttle. He's put a ton and ton of hours, so big shout out to him. Big shout out to Brian. Brian has been a core contributor to KubeCuttle for numerous releases. He's leading a lot of efforts within KubeCuttle. Big shout out to Shyam for his work. If you wanna know more details, the slides will be available in the schedule afterwards so you can go read about those details a little bit more. A couple more, that was too fast. A couple more shout outs to Marley, to Alex for server side changes, for hiding everything that is sensitive because we were purposely showing a little bit too much. And we are also adding new commands and we're slowly building the scope of what KubeCuttle has to offer. Yeah, and that auth to MI command is really cool if you haven't used it yet. The plan to expand it is really good but just knowing who you're making a request as when you're doing a lot with OIDC and other identity, really cool command. 127 just got cut a few weeks ago so we had a couple commands here. Sub-resources have landed in beta now so if you haven't used the dash dash sub-resource flag, forget you can now get a sub-resource on a pod, right? So Kubernetes API has the different resources that you can walk down. So pods also have a sub-resource of, what's a good example, of status. So you can get pod slash status and so now you can just do KubeCuttle get pods dash dash sub-resource status to get more about that. I think scale is a sub-resource or resources so you can kind of do a lot more with scripting and filtering there. Aggregated discovery is a big one for us. Discovery is that phase where your client will have to go figure out what APIs are available on your cluster and so it has to walk basically the entire open API tree so it makes hundreds of requests. If you ever do KubeCuttle any command like get pods or something dash v10 you'll see just all these requests go by where it would cache these and so what we ran into especially with our friends at crossplane for I had a bunch of CRDs for all their resources is we would hit the QPS limit and exhaust it and then it would get rate limited and throttled. So there's been a lot of work done by some great folks to make discovery a lot better so instead of caching the entire discovery we can now cache individual resources so it should clear up discovery and speed up that first KubeCuttle get command for a while. So that's really cool. Open API v3 was shipped for, when did that actually hit like 124 or five? Roughly around that. Yeah so now we have support for it and explain. It's beta, open API v3 has a lot more metadata and other cool stuff you can do there. Apply set is a new command which we're gonna talk about in a little bit with Katrina and then we want to create sub plugins so for QubeCuttle create those work with generators and so we have to kind of like have a hard coded generator that says when you wanna create a cluster role binding or something it has to know about that and so we want users to be able to create plugins for create so you can create your own resources for maybe your controllers or CRDs. So check those out. And then change log highlights. We're doing a lot of work with QubeCuttle debug, some debugging profiles has been added. Customize, so customize is actually bundled in QubeCTL so you can do QubeCTL apply dash K. Is QubeCTL customize the command too? Yeah so you can access customize directly from QubeCTL a lot of work goes into upgrading that and especially the initial one which we talked about a few years ago. There's a lot of internal libraries and state there. We promoted the who am I plug in so it's no longer alpha for 127. I didn't know that, that's great actually. And then different prune. Did you wanna say anything about different prune? There's a lot there. Yeah there was just a particular bug that we fixed in the. Okay yeah there was a bug so. It was a pretty bad one. 128, 128 hasn't started yet. I checked the dates, I'm pretty sure about that one. The release cycle has it's open. The release cycle, yes. So master is open but we're talking about Hensman's mode. Sorry to fuss. So we already know and are aware that these are the stuff that we want to work on 128 if you have any particular requests, demands or you wanna fix something. Let us know ahead of time. The cycle hasn't started. The sooner you get your caps discussed, reviewed and approved, the better for you. It's very hard to get cap approvals in the last week where we have to go through multiple of them and it's not fun. We would like to push the kubrc so that's a configuration file which will allow you to tweak, mix and match and whatever you wanna, magical things you wanna do with kubectl and we have a couple proof of concepts. Marley had one, I had one, Brian had one. We have different ideas. Some of them are differing opinions about how things should be implemented if you wanna help with that. Let us know, there's an issue. Have a look at the POCs if you wanna work on it. That's even better. Yeah and we'll have lots of time for Q and A where we can talk through some of these if you wanna learn more. And with that we'll hand over to Katrina to talk about apply sets. Thanks, yeah so apply set is a new feature that we introduced in alpha four in 127 so we wanted to take the time to go over it. Not very tall. So the history of this feature is that it's basically new iteration on a feature that's existed since 1.5 so really, really old. It's qctl apply dash dash prune. And that was added to allow people to declaratively manage the deletion of the resources as well so they could have a set of resources under management and say in git and apply those and when they delete something from their configuration system and apply again, the resources automatically be cleaned up and have to go and manually go and find it otherwise have leaked stuff that they did not actually want in their cluster. So that is a common need and the basic approach that was taken to implement this was an allow list. So you provide a list of types that you want to sort of manage via a flag. The actual selection of which resources to delete though was a bit more complicated than that. This selection would be based not only on the allow list or its defaults that would be used if you didn't provide that flag but also on the namespace flag and visited namespaces. What visited means is you have your configuration set. Those resources, a bunch of them probably belong to namespaces so we'd keep track of which namespaces we had seen in your set and we would also consider resources and those namespaces for deletion. Optionally you could also add label selectors as a flag to constrain the set that we would consider and the annotation that apply, client side apply, important actually client side apply uses this annotation and we would use that as a filter to sort of judge whether or not the resource belongs to apply so we would never delete anything that was missing this. Unfortunately this approach had a number of pretty bad problems and that's the reason why it's still in alpha even though we're at version 127 at this point. The biggest one is correctness. It would do the wrong thing sometimes and when we're talking about deletion, that's very bad. So there are a couple different ways to trigger this problem. One is by having a mismatch in the group version kind allow list that you're providing. So that is a hard-coded list whether you're using the default or whether you're having it in your command line invocation and it is not found in any way to what you're actually deploying either in the previous set or in the current set. It could be a completely different list of types. So if there's a mismatch there you're not gonna clean up what you expect. And then it can also happen with the namespace because as I was saying we add in the namespaces that we've seen but say you have a resource set that has two namespaces in it at the first time and then it has one namespace in it at the second time. Well, what you wanted was all the stuff from the second namespace to be cleaned up but now this invocation doesn't even see that namespace. It's not in the set anymore so it just forgets about it which is not what you wanted. Another problem is with scalability because of this approach of sort of querying a large number of GVKs some of which might not even be relevant. It is very expensive to do and if you try to mitigate the correctness issues by composing a list of every type under the sun under your cluster and making Q pedal visit all of them just to be sure it makes the performance issue even worse. And the invocation even worse. Oh yeah, and the invocation becomes a very huge line at that point. Yeah, another problem with this approach was as I mentioned it is relying on a detail of client side apply for its selection which means that if you switch over to server side apply any new objects that you create using that strategy won't be considered because they're not, don't bear that invitation. And there's also a bunch of user experience issues where strictly speaking it's behaving as intended but it's not really intuitive or not really what the user wanted. So a lot of these come from unintended changes related to the flags that you have to provide all those flags that I went through at the beginning. So if you change the flag set from one invocation to another you're re-scoping your command and chances are something strange might happen because you had a different scope in the one command and the second scope in the other and they're not actually related because what we're operating on here is really trying to deduce the previous set. You can also inadvertently over select resources in a couple of ways. One is that you could accidentally use overlapping label selectors from two different deploy pipelines or just overlap the scope that you specify in any of the ways and say some operator comes in and manually creates a resource with Q pedal apply. Well, that's gonna have the apply annotation. It might be in scope of one of your commands. Did you want that cleaned up or not? It's not clear because it's not actually there's no explicit set involved. We're always trying to sort of guess so you can get unexpected results. It's also difficult to use with custom resources. The built-in list will never include any but you can configure just like any other resource but then you have to manage that list, right? You have to add all of your custom resources to every invocation of the command line which is a pain and easy to get wrong. So the history of this was that we saw this problem. We get issues about it all the time that we couldn't fix because they're pretty fundamental to how it was designed. And the first step to try to do something about this was an experiment in the CLI Utils repo that we mentioned back in 2019. And that was successful. It was a good proof of concept of what an alternative design could look like but it couldn't be brought directly back into Qt Control for technical reasons. So it was used by other projects in the ecosystem so that was great. But we still had like the stagnation of the built-in approach. So at the KubeCon North America 2022 Contributor Summit Sean Sullivan and I led a session on how do we move forward with this? This is a big problem for our users and we were happily able to reach consensus that yes, we do need to do something about this. We can't leave this permanent alpha in here for 20 plus releases and just have it be continuing to cause problems for folks. So we're gonna go with a new independent implementation instead of trying to somehow fix all those problems that were very fundamental. And we're gonna do it based on a low-level standard that other tools can adopt. So we're also doing sort of an ecosystem play here. We can help the tools that need the sort of functionality work better together. And after that, myself and Justin, who is in the room today, hi Justin, worked on a KEP for version 127 and we did get the MVP features in to that release so you can go try it. So how does the new feature work? We went over the details of the old one. What are we doing different now? Now we have a concept called apply set. That's really the central key concept that we're working from here to make this better. Apply set is a group of resources that are applied to a cluster by tool. So it's what you're passing to Qt control in our case, that set of resources that you're trying to manage. Group membership is tracked both in and by reference to what we're calling a parent object and that parent object is persisted to the cluster. That state is managed by Qt control itself. You don't have to deal with it. The parent object can be a secret or it can figment by default but you can also configure your cluster in a way that I'll show in a moment to allow certain custom resource types who used as parent objects as well if you have an existing aggregate object, for example. A given object can only be part of one apply set which is a constraint that is new to this implementation and we did do that in some cases where we felt that although we wanna accommodate as much of the original use case as possible we also really wanna make sure that this time is a lot more intuitive and safe to use. So this is an example of one of the constraints that we added. So the specification is really based on metadata and you can go to the Kepp for full details on this but this is just gonna be kind of like a whirlwind tour of what it is. There's a bunch of labels and annotations that go either on the parent object or on the member object. So the parent and the most important one is that gets labeled with an ID that we generate and that is what makes it a parent object. It also accepts a series of annotations that help it interrupt better with other tooling and have appropriate scoping and the ones at the bottom there are basically hints to help it know where to look for its children because we aren't actually inventorying the full children as the source of truth here. We are, okay, yeah. We are annotating the child with an annotational show in a moment and that is the source of truth of its set membership. Like it says I'm part of this set. So we need to go find it and make sure that it is in fact part of that one set before we consider it. Yeah, all part of that. So we still need to know where to go look for it and the last two annotations are hints to keep control to go find it and we can reconstruct them so that we can have a way to correct the set if ever something got messed up in your cluster or manual changes perhaps intervened with the set that you were trying to manage. Those last two are under discussion and might change in 128, particularly the one I have grayed out a section because we're considering between resource and kind based on our experience in the alpha. So as I mentioned, the actual source of truth from set membership is a label on the object. So we can do a label query to find all the children and you can also configure CRD types to be allowed as parents by just labeling, sorry, CR instances. You label the parent CRD that defines the type and that allows the instances of the type to be used as apply sets. So the important part, how do you use it? Since this is an alpha you're going to have to set an environment variable to use it to just keep control of price that equals true. And then you use the prune flag as usual but you add this new flag instead of all those other ones. You just put apply set and you choose a name for your apply set. There are docs on this that you can find at the link. Let's go into more detail. And one thing to mention though, of course, this is an alpha. Please give it a try. Give us your feedback, especially if you're using the old implementation let us know if this works for you. But it is an alpha so be careful about using in production as with any alpha. And that's all. So we have some time for Q and A, I believe. Yeah, and a quick shout out. There's a SIG meet and greet happening immediately after this. It's 12.30 to 2.30. It's downstairs, I believe, in the Euro four or one. All the Kubernetes SIGs will be there. So you can talk to different folks at different parts of the code base and find out how you can get involved too. So definitely make sure to stop by. Grab some lunch and come see us, so yeah. Any questions, things you wanna complain about, talk through, feature requests? Yes. Are you planning to add any ways so I will be able to control the caching better except for aggregated, for example, how long do I want the object that the discovery have seen to stay in the cache and stuff like that? I'd be curious to hear you use cases for the caching side of things. Theoretically, we would prefer users do not manually manage the caches because it usually causes problems. You can always invalidate the cache by invoking API resources or API versions. That invocations removes the file from the disk and retrieves the entire discovery at once. The problem that we were going with with the majority of the discovery was to ensure that especially if you're trying to use kubectl in a pod, the initial discussion, the initial discussion, sorry. Yeah, well, it's a discussion with the cluster. The initial request, as I mentioned, the more CRDs you will have in a cluster, the bigger the initial query it is and it is very frequently causing issues for a lot of the users. So that was the main reason why we wanted to squash the amount of stuff that you have to read initially to speed up the first request, especially when you're running or creating a pod to do something simple. And especially if those are short-lived pods which only do one, two, three tasks and they are done. And then again, we will bring new one and you're wasting, I don't know, up to 30 seconds to a minute, I have customers that complain that they're really waiting to two minutes, to three minutes because the entire discovery was taking this long. So we intentionally, because there was a time where the cache was valid for roughly 10 or 15 minutes. So we intentionally pushed that limit over to six hours for the majority of use cases that we identified, that will be perfect and it should not cost issues for the majority of the users. That's why I would prefer to hear use cases, why we would jump to do that. You can always do, like I said, manually by invoking API or manually just deleting cube.cube.cache directory. You can also set the cache directory to DevNol and that will cache every single request or fetch every single request. So I had one question which calls back to your previous talk, Katrina, about the KRM functions. I've seen that you have a bunch of Kips for composition and catalog and stuff, which all look amazing. I'm just curious if you have some sort of status update on that whole thing. There isn't mostly because we don't have enough folks to work on them. If you want to use that feature, if you think it's great, then we could use your help with those. Those Kips are all implementable, I believe. It's just that the folks who were originally working on it moved on to other opportunities and we just don't have anyone to implement them right now. The catalog one in particular is the one that's most likely to get attention anytime soon. That one is very important to the sort of long-term plugin strategy for Customize. So we might work on that one somewhat this year, but composition itself, we're more focused on, if anything, some of the features that are required to use that in Customize we had an implementation, but we don't want to merge it until we're sure that folks need it and that all the pieces are in place for it. So yeah, I would suggest if you're interested in any one of those, catalog is the one that has the most traction at the moment, but yeah, let us know if you're interested in working on it because we need more folks. We got like seven, eight minutes left. Any other questions? Things you want to talk through, features? Hi, you mentioned that Kip CTL code base is relatively old and thus it's, you don't want to make breaking changes. Are there any CLIs code base that would be a bit more approachable for beginners and folks who have less experience writing both go and CLIs? Customize. Customize? Okay. I mean, Customize is one thing, but if you think about Kip CTL as a whole, yes, it's a big code base. But the important benefit of getting involved with 6CLI and Kip Cuddle itself is that you can literally limit yourself to a particular command. Please do not use get. It seems simple, it is not. But there are multiple other commands where in the worst case, you'll end up in a single directory with two or three files that you have to work. In the best case, it could be literally just one file. There are some commands that are missing tests, like simple unit tests. And that is a perfect opportunity for someone to start. There's at least a couple of ongoing rewrites that we are trying to slowly push because there was a bunch of commands and a bunch of approaches that we took over the years, how Kip Cuddle commands should look like. Eventually we settle with one that is easy to maintain, easy to read, and easy to test, most importantly. And we're slowly going through the commands and rewriting a lot of them. There has been multiple presentations that I did in the past, Eddie did, Katrina did, about how the flow of developing with any Kip Cuddle commands works. So if you have some time, just check out one of the previous recordings from 6CLI from KubeCons. We've done that a couple of times. Nothing has changed since then, and it's still up to date, or ping us during the box crop, or during one of the meetings, or just on Slack mailing list. And we can point you to the issues that are describing because we literally, what we did is in the issue we described, the weight command is literally the best example of how a perfect KubeCuddle command should look like. Slowly, all the new commands that we are adding are required to follow the same patterns, and events literally follows the same pattern. What was the other new addition? Who am I in the auth as well? And those are rather simple commands, and we will be promoting events to stable because I realized when preparing this presentation that we overslept. And it should have been promoted to GA in 127, but we'll catch up in 128. Yeah, but yeah, the code base is old and there are lots of dragons, but there's also lots of approachable pieces. A good chunk of the code, so I don't know if a lot of people know this, but Kubernetes internally doesn't talk YAML. Everyone complains about YAML with Kubernetes, but Kubernetes only understands JSON internally. And so a lot of the code that we traverse in our journey is going from JSON to YAML to JSON to YAML, and then back to your client, and then in reverse when you give us YAML. So that's where a lot of the dragons lie, and my favorite one is the cube control config command, where you can edit parts and get parts of your cube config. That was all done through insane go reflection, where it looks up the original struct definition for go and interpolates the JSON metadata tags that are there to validate what data you're giving it. So it was written a long time ago when people were learning go, and then it's a use of heavy reflection in the code base that we'd like to replace one day. And Marley did great work there too. Yeah, and we still have unstructured, don't forget about that one, which is a map of maps, of maps which represents a JSON. If you're talking with a dynamic client, you're getting unstructured. We basically have to take that JSON and that unstructured struct that comes in and then figure out what go struct we can marshal it into. And that is several layers of abstraction and fun to understand. You don't have to touch that as a beginner. Yeah, but Eddie, don't forget about them. Don't forget about them. I think they are freaked out enough. Any other questions or thoughts? Nope. Cool. Well, thank you all for joining us. We really appreciate people coming to the maintainer session. If you could please review it so they let us keep doing these. It's awesome. And be sure to come by the SIG meet in Greek to meet some of the other SIGs and enjoy the rest of the week in beautiful Amsterdam. So, thanks everyone.


Hello, hello, hello, hello, hello. Hi, everyone. As you're coming in, if you're free to turn your cameras on, say hello. Thank you so much for joining us again. Hello, hello, hello. Lots of people are live streaming. Hello, hello, hello. Thank you so much for being in the space. Thank you so much for being here. Hopefully some more people will be trickling in. This is our third week of our Afro Latine Super Friends Playwriting Hour. And we have an incredible playwright with us today. Rachel, thank you so much for joining us. I want to, before we start, I want to acknowledge as I have in the past couple sessions that we have done a land acknowledgement and where I am right now. And I want to recognize the history and the location and the relationship to the indigenous communities of Los Angeles, where we acknowledge the Tongva people as the traditional land caretakers of a Tagongar. And also the importance of the traditional ancestral and unceded land that we stand on. This is very important to me. And I recently took a workshop, as I had mentioned last week, where I learned that even the language that we're using, the Tongva and the Tongvar, or the Gabrielino people, is language that is colonized. And the record of languages of who the people and how folks self-identified isn't necessarily there. And the importance of acknowledging that as well, that even as we do a land acknowledgement, that even some of the language within the land acknowledgement is sometimes aligned with the colonizer. I also want to acknowledge that folks are still striking and the Writers Guild is standing strong and they are asking folks to please come and join them while they pick it in multiple different cities. So if you live in LA, New York, or any other cities where folks are striking and they're at the picket lines, please come in and join folks, because it's very, very important. For those of you who are Writers in the space and taking a moment to celebrate your own writing and not the Writers Strike, that's okay if you're celebrating your own writing for yourself. And especially if you're a playwright, but again, really important to acknowledge the importance of Writers and what they provide for us. With that said, I also want to introduce the folks in our space. Today we have two ASL interpreters. We have Gregorio and we have Tanya. So they will both be jumping in and out and being our ASL interpreters for the session. I also want to acknowledge Miranda who's doing our live captioning and Theo for being able to manage everything behind the scenes. And with that, I am going to turn over, oh yes, I'm seeing some people hadn't seen last week, I'm so excited. I'm turning it over to Rachel and I will place Rachel's incredible bio in our chat for everyone to see. But just recently, just to share some joy, Rachel, you've been commissioned by Yale and I mean, just that's such amazing, incredible. So I'm just so excited along with Guadalisa. We have two Afro-Latine playwrights who have been commissioned, which is like a first and so exciting. So with that joy, I pass it on to you and I will place your bio in the chat. So thank you so much. Thank you, yeah, I'm super excited. All right, so I'm going to jump right in. I'm going to share a PowerPoint. I know that in the world of Zoom, whether you think we're post-pandemic or mid-pandemic, it's annoying to look at PowerPoints, but I'm a reader and I like to be able to have things to see. So I hope that that's okay. I'm going to do that now. This was so much smoother earlier. It always does this, doesn't it? Okay, there we go. Every time, every time. And I'm going to also move you out. Okay, great. So today we're going to talk about Joy Not Trauma. This is a workshop that I've been developing for a couple of years. And yeah, I'm excited to get into it with all of you and we're going to go over a couple of things. So first, disagreements and acknowledgments. I wanted to set up expectations. There is a mini lecture that's in here. We're going to go back pretty deep into basics that you all know and then kind of curve around it. There will be timed writing exercises. So please, if you can, if you have a pencil and paper, a computer, I will keep track of time for you. And then in the end, we'll end with the Q and A. And I'm going to hope to give you enough time for Q and A to where it's not so much time in the world to stay in each other, but enough time where you can ask me anything you want. You can ask me about the workshop. You can ask me about Yale. You can ask me about the strike. I'm one of the WGA writers right now striking. Anything you want to ask me, you can ask me. I do ask that you stay muted until the end and to save your questions until the end or during the writing exercises via the chat. We're humans.  I will turn my camera on. You can do whatever you want to do with your camera. Please feel free to do that. I do have cats that will show up randomly in the Zoom. I live at home. These are my cats and I love them. So if they grace you with their presence, you're welcome. I also want to quickly acknowledge a bias. I am speaking from my perspective, from my learned experience. We all have our own learned experiences. If there's something that happens in here where you're like, Rachel, I disagree with that. I do not believe that there's such thing as a single right answer or there are many right answers. So if there's something where you're like, nah, that doesn't ring true. Let's talk about it. I want to talk about it at the end. I think defensiveness gets in the way of progress. I just want to know, I want to talk. I want to have a conversation. I am not a perfect person and I am a very busy person. I usually make these PowerPoints at 2 a.m. So there's probably a typo in here. Just going to be honest. There might be a typo. I'm sorry in advance. That's like a big deal to some people. I have a long rant about why I don't think it should be, but we do not have the time for that. I also just want to say that this is the beginning of a conversation. It is not the complete discourse. It's an hour. And I hope that we can be in community together. The final thing that I like to do is something I really like to do to start off. And I will pull out a timer. It's just take a minute to just do whatever breathing exercise you like to do. If you want to take a couple deep breaths, do whatever you can to kind of place you in the moment and place you here so that you can be here and here and absorb as much as you can. I don't like to lead guided meditations because what works for some people doesn't work for other people. So I'm going to start my timer now. Please take this minute to do whatever. You can turn your camera off.  Do whatever breathing exercises you like to do and I'll pop back on when the minute's over. Hey, thank you. Hope that minute was rewarding and helpful in helping you ground yourself a little. Okay, next. So whenever I actually used to have this slide deeper in the PowerPoint and like I've had to push it forward because I've had so many people be like, try one more time. And so I want to just start off with it. I want to front load it. I've been asked a lot, Rachel, what's your beef with trauma? Like trauma is important. Trauma is how we tell stories. Trauma is conflict, which we're going to talk about all of that. But I want to start off just by saying there's difference between trauma and trauma-informed storytelling. And what I'm talking about when I say joy versus trauma is trauma-informed storytelling. It's just for anyone who's ever done a workshop before, the shorter the title, the easier to get people to spell it correctly and to get all the words in there. So it's really joy, not trauma-informed storytelling. We all have being a person of color in the United States means living in existence of some sort of trauma.  I'm not asking you to not acknowledge that. And I will talk about how trauma does work in storytelling. Trauma-informed storytelling is what I have a problem with and what I'm going to be actively talking about today. So you're probably like, well, what is trauma-informed storytelling? So trauma-informed storytelling is where the point of the story is to traumatize the audience or to incite a trauma. So it's not trauma. So when we talk about trauma, which that's a whole other definition that I don't have time to get into. So I'm going to be a really base thing. We talk about, let's say bad thing happened, which again, this is not trauma and being very simplistic. Bad thing happened. If I write a play and bad thing happens and the play, the action of the play is about the characters trying to work together as a community to fight against that bad thing and to grow, that's not trauma-informed storytelling but it still has a trauma in it. Trauma-informed storytelling is we see the bad thing happen over and over and over and over again. And as an audience, you're kind of left with like a whiplash feeling of, you feel like you're carrying someone else's weight. So that's trauma-informed storytelling. I see this a lot. There's like the theater of cruelty practices that we see. I'm going to try not to theater nerd out too much. But essentially trauma-informed storytelling is where the point of the story is to traumatize the audience. Where the point of the story, the flow of the story, the resolution of the story ends in trauma or it's throughout the thing we see acts of trauma in a way that some people say wake up the audience and I think personally traumatizes the audience. So the difference between conflict and trauma we're going to talk about later but I just wanted to jump in and say that. I also want to say I'm not saying we shouldn't have tragedies anymore. We shouldn't have dramas anymore. I'm just saying that we should find a way to talk about our traumas without it having to be the main event. And that we can talk more about collective storytelling and not only rooting in trauma. I've seen a lot of like, I have slowly come to accept that I like horror movies for a very long time like to say I didn't and I now have to accept that I do. And I think that like, there are some horror movies that you watch and you're just like any Ari Aster film where you're just traumatized the entire time, right? Like Midsommar versus like something like bodies, bodies, bodies, which like traumatic things happen in that but the point is not to traumatize the audience at all. And so those are kind of like my two references of framework here of what I'm saying when I say you can have conflict without it being traumatic. I also don't think that trauma-informed storytelling is inclusive, but we will talk about that later. I think it's actually incredibly exclusive. So just front-loading with this. Again, this used to be deeper in but this became the main event. So this is where we're going to roll back a little bit. So I know that when I was first coming to playwriting I was told the gold standard was this set up, right? There's stasis, something happens. And then rising action happens. Boom, climax, falling action, resolution. And then that's that storytelling. That's the perfect way to tell a story, right?   I've always hated it. I will continue to hate it. My problem with stasis, my biggest problem is it assumes there's such thing as stasis in your life. I do not think any person in the United States has stasis in their lives. We do not know waking up at the beginning of the day what is going to happen at the end of the day even if we have our day scheduled out. I don't think anybody does, quite frankly, but I definitely especially not people of color. You cannot plan something horrible happening to you that is completely out of your control because of your lack of privilege in the United States. So to have a calm before the storm is nonsense. It's like it's rather you're picking which explosion to lean towards rather than a singular explosion that sets off the story. So that's my biggest problem with stasis. I also think stasis assumes before there to be stasis you have to be part of the status quo. And if you're not part of that status quo you're automatically excluded from that. Rising and falling actions. The example that I like to give is the way that we tell the story of like the American Revolution, right?  That's not what happened at all. That's just what we were told. It's very linear. We like to tell history in a very linear way or like I like to think about the way we talk about like the Civil Rights Act, right? It was like, first there was slavery and then there was segregation and then we had the Civil Rights Act and we all fixed it, we did it and we keep like to build on things but that's not how history works. That's not how storytelling actually works. And so to force a story in that I think does a great disservice to it because you're leaving out so many of the complicated ebbs and flows that I think actually in itself creates more conflict. So crisis is a swarm, it's not a line. And I think that's something that's really important to me in my storytelling. My problem with resolution and like I've gotten a lot of fights with the historians about this and so this is a thing where my email address is going to be available at the end of this PowerPoint. We can talk about it because I have been told that I did not understand this correctly and I disagree. So again, I'm open to disagreements. It assumes that there is an end, not a literal end, but a solution. Like I have this problem. I slept with my mom and now I'm gonna gouge my eyes out, right? Like I did not, that's a story, that's a real story. Like it assumes that there's like some sort of like end to things and at least a solution or just denoment or whatever, but I hate that word. So I don't agree with that. I don't think that that's what existence looks like. I don't think what that's what our lives look like. And so my life's just not that neat and I don't think anybody's lines are that neat. So I want to talk about a different kind of storytelling. So this is the way that I write most of my plays before I get into it. I don't think everyone has to write plays this way. I don't think that- And I don't think that- And these are the only clays that should exist, but I think we have- So I want to talk about a different kind, not enough to tell this. So this is the way that I write most of my plays before I get into it. I don't think everyone has to write this way. I studied Black 32 Street in the 1970s- that these are the only places that should exist. I think we have too many of the other of the other setting coming out of this kind. Where their characters seem more balanced. And it's Joy and community focus.  I hate that question.  Like when we think about story telling. Like it's our story.  Like who's the main character. So, but what if instead of trying to tell a story telling story, that Joy told it from the perspective? I hate that question.  Like it burns my people. It's like it's our story. They don't like that answer, by the way. How does that change the way in which we're telling these stories? But what if instead of trying to tell a story telling a story telling a show, that Joy told it from a trauma, if instead of focusing on one bad thing happening to one person, and instead of this happening to a community? How does that change the way in which we're telling these stories? And how does that change the way we show suffering and anti-trauma and suffering? If instead of focusing on one bad thing happening to one bad person, and instead of this happening to a community? I do think more plays need to be written this way. And how do we make it collective? And we've gotten to become the collective. Let's get to it. I promise to you be writing. We're going to jump in and we're going to write. Again, I hope you track your own story. I think that we're going to write that. I do think more plays need to be written. And please take as much of the time as you can. And if you're not ready to come back. Let's get to it. I promise to you be writing. We're going to jump in. We're going to write. This is what she's writing. Again, I will keep track of time. Don't worry about that. Right off the bat. And please take as much of the time as you can. What are three things that bring you joy right now in your life? And how important is that joy to you? What would you do to keep it? Right off the bat, I want you to focus on the now. And you will not have to choose. What are three things that bring you joy right now in your life? And how important is that joy to you? What would you do to keep it? What did you do to get it? And you will not have to share this. And timer starts now. I'm going to keep writing. Next, I want you to think of three sacrifices. I want you to think of a time that something brought you great joy in the end, which you had to sacrifice something for it to get it. You had to lose something to keep writing. An example that I like to give. This is my silly example because you're not sharing this. Please be way more serious. I want you to think of a time that something brought great joy in the end. And sacrifice something for it to get it. We may lose something. That's been an item that I've always liked to give. This is my silly example because you're not sharing this. It's been a great day together. But then my best friend was like, hey, do you want to go to Disney World for your birthday? And I was like, husband and I always spend my birthday together. Oh my God, it's a big deal. We're all spending our birthday together. But then my best friend was like, hey, do you want to go to Disney World for your birthday? And I was like, and so, heck yeah. Oh my God. For me, that was a big sacrifice. It was something I had to give up. That was actually really important to me. And that was kind of being nutritious for us. But that is one of the best. My birthday with my dad, it brought me so much great joy. And I think I made the right choice. For me, that was a big sacrifice. It was something I had to give up. That was actually really important to me. So I want you to think of something for us. But that is one of the best for you to have. It brought me so much great joy. In order for this joy, you've got to have. I've joked that's why we've got to pour something. But again, that's not the real reason. This was a silly example. So I want you to think of something three times that you had to sacrifice something in order for this joy that you got to have. But it meant something. It cost you something. And again, this was a silly example. Please, since you don't have to share these, think a little bit deeper. Okay, one more. Three communities. So I've got a cat screaming. So I'm sorry if you hear him. Three communities that you belong to. So before I get into it, I want to say that playwriting is world building.  A coffee shop in Brooklyn is not the same thing as a coffee shop in LA. And it really bothers me that people say world building, like it's this very specific like fantasy world. Anytime you write a story, you're world building. It does not matter if you go, if you and I both go sit in the same Starbucks, we will not write the same play, even if we're writing with the same characters, the same people, the same circumstance. Everything we do is world building. And so part of that is building the communities that exist in those worlds. So that rant aside, I want you to think about three communities that you belong to and what you feel like you owe these communities and what you don't owe these communities. Again, I'll time you, but something that I really want to say is that you can be as specific as you want, or you can be as general as you want. So like I like to say that I'm Afro-Latina, but I'm also an ex-athlete. I'm also left-handed and I'm very strongly attached to my left-handed community. I love being left-handed. I'm a cat person and I love other cat people. I'm an animal person really, but that's for later for the Q and A. So yeah, three communities that you belong to, what do you owe to them and what do you not owe to them? Great, great. So I think that we all decide what we owe and what we don't owe our communities. So I'll switch to the process again. This is my personal belief, but I believe that I didn't tell you any story and anything that is our responsibility to represent our community in the way that both challenges and it lifts them. It's not about praise, but it's also not about showing open-cut either. What I mean by this is the reality of the way that my shows are formed right now is majority of those audiences are white. They are not their straight white people. I mean none of those things. I'm a non-binary queer, I was the next person like, that's not me. And so I'm gonna talk about my community which is what I want to do. I want to create more spaces the reason why I haven't been writing in the first place was because I was told that there were no queer Black writers. When I was in undergrad, I was like, absolutely not. I don't know that I'd be able to say that to anybody ever again. And then that's why I got in and so I'm always gonna write about queer Black and Brown people. I'm always gonna write about trans and non-binary people. That's just who I am and that's what I'm gonna do. But as I do that, I have to recognize who's watching my work. And the people that are watching my work are gonna go home and they, and I know this is not a fair burden to carry and I'm not seeing anyone else to carry it. For me, they're gonna go home and they're gonna say, I watched that one Rachel in that play and now I understand people who grew up in immigrant home adults in Spanish. But no you don't, you understand one story. Not every story, but that's, I can't help but that's the perception that people are gonna take away. And we're gonna talk about that at the end too. And so for me, when I show my communities on stage, I think for me, I'm not gonna share something that I see as an open cut or something that I think is something we need to talk about privately, that is not a public conversation. And if I do say this is a private conversation I'm having publicly, I let my audience know that. In a play of mine called Apologies, I straight up say white people, you can stay if you want to, but this is not for you. That is how the place starts. And I think that that's a really important thing for me to do. And so that's something that I always think about when I write, and I think that is something that we should carry on with us. Regardless of what, even if it's your left-handed community, what are you saying about the left-handed community that a right-handed person's gonna go home and say? It's something I think about. Another thing that I wanna share, the best advice I've ever gotten in theater is that you are the therapist, not the patient. I do not think you are literally a therapist. I've gotten questions about this. Licensed therapists are invaluable. If you are not in therapy or you've never gone to therapy, I highly recommend it. I love therapy. Me and my therapist are pals. That said, what this means is a metaphor is that your job is to help not to hurt. You cannot leave your baggage at the feet of your audience and walk away. You cannot say, here's all these horrible things that happened to me, lights out. It needs to be, to me personally, theater is about collective growth. And as the controller of the narrative, you are the facilitator of that growth. So what that means to me is, especially if people are paying, it is unfair to charge people $100 a ticket to talk about something that you could go talk about in therapy. Like we don't, if you have something unresolved or something you need to work through, yes, write those plays for yourself. But to me personally, until you are on that healing journey, don't pull other people into that rough sea with you. Let yourself first chart those waters so that you can help solicit someone else's growth who might be charting the same waters need in that audience with you. You don't know what people are bringing into your shows. And we don't know, regardless of what artists or directors tell us, what people will be taking away from them. And so the best we can do is kind of hopefully guide people in the direction that we want them to go. Okay, again, feel over. So thinking back to your sacrifices or your joys, just because it costs you something doesn't mean it didn't bring you joy. Inherent conflict is interesting. Inherent conflict is compelling. When I think about the most interesting stories that I've been told by my friends, the ones that are pretty linear like, oh, this guy cheated on me or whatever, this woman cheated on me, whoever's cheating. I'm like, okay, but if it's like, let me tell you, oh my God. And it's like, and then this happened and this everything happened. I love those stories. Those are my favorite kinds of like gossip stories to tell. And I think that that's just what I grew up with. And so trying to find that story that has that inherent conflict and it is really important to me.  I was very strongly affected by the pulse shooting. And so I wrote Last Night shortly after that happened. And then that play is about a bar trying to rebuild after a shooting takes place there. It's a lesbian bar that is trying to rebuild. There is a lot of trauma in that sentence that I just said but the whole play is about reclamation of joy. The whole play is about pride and being a queer person and pride and like being able to not let anything knock you down and how just like existing and happiness is an active resistance of resistance in itself. And that to me is what I mean by the difference between trauma and trauma informed.  The takeaway is my existence is an active resistance. My joy is an active resistance. And I think that if there's nothing else that you get from this workshop is consider the ways in which your joy in itself is an active resistance and how can that be shown in your work? We're gonna write some more. Okay, so what I'm gonna ask you to do is to come up with two characters. No one ever listens to me, but I'm gonna say it anyway. It is best to come up with two brand new characters. Try not to use characters you've already created that you already have. This exercise doesn't work as well when they already exist. But again, you're free adults to do what you choose to do. You're gonna create two brand new characters.  What do they like? What do they dislike? What makes them happy? What makes them sad? A joke that I like to say is like, if this was a dating profile, what's on their dating profile? What's not on their dating profile? What do they leave it off? And then also do the three joys, three sacrifices and three communities. Exercise that you did for yourself for each of your characters. What are these characters willing to do for joy? What are they willing to risk for their joy? It's supposed to be two. I did not mention that in the slide, but I do wanna say it is two characters that you are creating. If you have time to create more than two, have at it, live your wildest life, but two characters preferably for this exercise. I'll start timing you and now. Okay, keep writing. I just bring a circle of time. I wanna jump to the next thing while you're doing it. In a single sentence from each of your characters point of view, I want you to write, I want, this is their need, that they need more than anything in the world and I'm willing to sacrifice what for it. And it needs to be beyond willing to die for it. I think that that's kind of like we, as people who are mortal, death is an end, right? It is the biggest thing. Unfortunately for characters, death is kind of an out.  So unfortunately in storytelling, if you die, you don't have to live with the consequences because unless you bring them back, which is thought twist, you can definitely do that. But for the most part, think a little bit beyond willing to die for it for that sacrifice. And I'm gonna keep timing you. Also for the sake of time, I'm gonna do three minutes and not five. Okay, we're not gonna do this part because I wanna make sure that we have time for the Q&A but I do want you to know about it. So now you have your characters. What's the story here? If these two characters are trapped in a room together, what would they talk about? What would they disagree about? What would they agree about? I want you later when you do this exercise hopefully because again, I wanna have enough time for the Q&A because I really think that's important. I swear this workshop's usually like 30 minutes. I don't know why it's so much longer this time. I'm rambling I guess. Take some time to write five to seven sentences of what the play could be but stop at the most heightened moment. This is your climax of your story. So when you do this exercise, don't end the story. Stop at the climax. Here's why. I've been told that I start my plays at end of play. So with your sentences, when you do this later, instead of starting with how you started before, start the climax. Make that the beginning of the story. How does that change the structure of the way that you tell the story? What if all of that everything that happened before your climax, that was their conversations and they're getting into it, their heat was all just still exposition and you're just starting the story at the most heightened moment. I love writing plays this way. I love in apologies, the war has already happened. They're just chilling on their backyard, right? Like they've already dealt with the trauma and the tension and Black Mexican, one of my characters who is kind of being abused by her professor, a lot of that abuse we don't see in the play, we just hear about it after we hear about it when one of a different student is like, ah, something in the chicken grease don't smell right there. And so starting a play much later, starting a play, starting the play from the climax and seeing how you go from there when you start from the most heightened place, I think immediately changes my problem with stasis and rising action is that you're starting from a place of chaos and not stasis and then finding your way to the joy, which is I think a really important and way of telling story. So do that. A couple more things that I wanna share before we get into the Q and A. This is bad advice that I've gotten throughout my years as a playwright that sounded like really good advice and I'm gonna explain all of them. My first one is be a good egg. I don't like this advice. I think that, yes, we shouldn't be jerks, we should be nice people, but too many times have people tried to cross my boundaries and then pushed it with, come on, be a good egg, come on, do the right thing, do what the Sarcastic Director's telling you to do even though it damages your play. And so I really wish that someone had said to me the power of no instead of be a good egg, learn that no is a complete sentence. Know that you can say, no, I'm not comfortable with that and know your worth that you can walk away. I like to tell the story that I got commissioned to write a play and I had taken the money and then they've certainly changed the deals of the contract and I was like, no, absolutely not. I gave them the money back, I was like, I'm not doing that. And they're like, you'll be lucky if you'll find somebody else to do this play. I've tripled the money that I was gonna make from them with this play. Know your worth and know that you can say no if something does not feel right. The next thing is the best plays happen around special events. That can happen, that's true. But as I've talked about, you don't need a wedding, a funeral or a graduation. A play can start at dinner, right? Think about how many polluter winning plays are just a dinner. They don't always have to be the same events. Playwright shouldn't speak when getting feedback. I think that you should hear and have an open ear and be willing to discuss and talk about things with people. But I think the silencing, especially if playwrights of color that happens in MFA programs is dangerous. And we need to really start to think about who we're getting the feedback from, whether or not they're part of our communities and should absolutely be able to speak back and say, yeah, no, I don't think you got it. And that's not you being defensive. That's you standing up for not just you but also the way your community is represented. Everything needs to make sense by the end of the play. Nonsense, no, it doesn't. No, it doesn't. Tell a lie. Jose Rivera says he like tell one lie in every single play. I like to say have something unexplainable. Have something that when someone says, I don't like, this doesn't make sense. That's fine. That's okay. I think give people something to work through, something to chew on when they leave. And if everything makes sense, what are they chewing on? What are they talking about at the bar? I kind of hinted at this earlier where I said that I hate when artistic directors ask you, what is the audience supposed to walk away with? What are you making the audience feel?  Because you are not there, I don't think personally, to manipulate an audience in that way. I think theater should be a conversation. I don't think theater should be a lecture. I think that we need to remember that our audience are part of the performance. And what they walk away with is what they choose to walk away with. And if they walk away with something radically different than what you intended, that is not your fault as the artist. Your job is to present something, not to dictate. And that is something that's really, really important. And so when people start asking you that, I've stopped saying, I don't know what they're gonna walk away with. I don't, that's not on me.  It's not on me to decide what their takeaway is. I know what the story I'm trying to tell and what someone takes away from that is beyond me. That is outside of my reach. Okay. So because I really wanted to leave time for questions, I'm gonna stop share. Please, if you wanna turn your cameras back on, please come back. In these next 10 minutes, this is a time to ask me, absolutely anything you wanna ask me, have I said something where you're like, you're out of pocket, tell me I'm out of pocket. Welcome. I first wanna start by saying, thank you. I love this notion of like resistance, right? Like that our work and I just, I was like, yes, yes, yes. Being in the space, the writing, it brought me so much joy. And I was like, yes. I just wanted to open up with that. And I'd love to hear from folks in the space. Thank you. I think, thank you so much. This was an amazing workshop. And I think I just had like a curiosity question of like, did you find yourself writing a different type of play that made you get to this exploration of like, not using, you know, of like finding your, this model of joy rather than trauma in four plays. And like, if that happened from an experience or if you had, you, you know, like more just anecdotally, like how did the root of like, okay, I'm gonna shift my focus into this emphasized type of playwriting occur because I think it's very interesting. Like, was it a specific experience or just like, you know, from you watching too many of those types of plays and being like, I'm done or I don't know, whatever you else could, you could, she left. Oh, she said that my Zoom cut out trying to jump on now. All right, right in the most important. They will be joining. She's rejoining now. Yes. Okay, good. Yay! You are muted, so make sure you're on mute. Rachel, you are muted to making sure that we can have you. Okay, here we go. Yes. Okay, I'm so sorry. My computer just started making a crazy sound. I'm so sorry.  And then all of a sudden, it's okay, you're back. Yes. So what inspired you to write these stories? I think it's basically one of the, you know, what made you turn to this focus? I got really tired of, so the very specific thing that happened was I kind of had a breakdown where I had to play, I was in street car named Desire and I just saw that the way that it, like, and we tried to do it like a color conscious way, which I have strong feelings about. And it just, I watched how it weighed on all of the actors every single night. And I just remember thinking, I don't want to write stories like this. Like, and I'm not saying that it's not a great play, but that's just not the kind of stories. I like, I was an actor, I love actors. And I think a lot about what is the baggage that you have to carry when they go home after doing these roles. And I don't want my actors to feel uplifted and celebrated. And so that's kind of what inspired me and kind of how I started on this. And the need of that, especially right mom, it's always needed, but I think right now even more so. Angel's asking a question in the chat. Could you talk more about the soul aesthetic fragmented musicals? Sure. It didn't do super well. I don't have enough time. The shortest thing about it is the soul aesthetic and fragmented musicals was they were, it's kind of like hair is unfortunately a really good example of some musical that steals that aesthetic where the whole point wasn't a plot. The fragmented musicals were all about just to show different members of a community and different things. Like the idea of like plays are all monologues. We have, thanks to the fragmented musicals from the soul era. And the idea was to highlight the specific characters, but there was no plot. There wasn't conflict in the way that we traditionally see it. Please email me and to talk to more about that. I just, I want to be conscious of time. So, but the idea was to show people not story is a really simplistic way of talking about it while also involving music and community and community driven storytelling. I just learned something new. Angel, thank you so much for asking that question. Yes, Krista, please. Hi, thank you so much, Rachel and Stephanie. I'm curious, who are you reading either playwright or novelist or nonfiction writer that you feel embodies this methodology of storytelling? Yeah, I read your plays. I love them. Let's see. I mean, I'm reading a lot of my contemporaries. I think Adrian Dawes, who I think is doing next week or two weeks. They might be our last session. Okay. Thank you. Oh, Stacey Rose. I'm, my brain's always blanking whenever I ask this. I think what's really important to me is reading people that are writing right now. I really, really love the work of Jose Rivera. I've mentioned him reading about, I haven't been, I'll be super honest. Like I needed to take a little bit of a break from theater. So the last six months I haven't been reading plays and I'm excited to get back into them. A book that I read that I think embraces this idea. It takes its time. It's called If I Survive You by Jonathan Escafri and like highly recommend it, highly, highly recommend it. It's a character really struggling to find joy. And the ending I think is really poignant. And I'm happy to provide a list of playwrights after I've got so many on my blog, but my brain is fully blanking because I'm paranoid about my computer. I'm sorry. How do we find your blog so that anyone who's looking to we make sure that we can go straight to it? Well, we'll put it in the chat for you. But is it under your name? Is it? Ooh, that's a good question. It's really hard to find now because I made it hard to find. I actually, I've learned a lot in your blog. You've had some amazing posts that you put in about playwriting and play selections and things of the sort. So we will have to go on a search. I think that you can do it. So my blog is called, But Am I Famous Yet? And if you Google, But Am I Famous Yet? Blog, Rachel Lynette, it'll pop up. It's not on my website anymore. And I am happy if anyone wants to talk to me in my email about that, why I took it off my website. But yeah, I'm pretty sure if you Google, But Am I Famous Yet? Rachel Lynette blog, it should pop up. Thank you. There we go, boom. We have time possibly for one more question. Does anyone else have any questions that they would like to ask? So not so much a question, but definitely a comment on, you know, about the trauma-informed storytelling. I did write one of my first pieces. It was, I guess, a story about my father and I, but very exaggerated, very like stretched out just for the purpose of telling our story. But then I noticed that it was just trauma. It was just trauma, trauma, trauma, trauma. So then by my second rewrite, I just, I wanted to keep the trauma because it was very important to tell the conflict story, but I needed to find the moments of joy. I needed to find the moments of love and really bring that out from this family in order for the trauma to not be so traumatic for the audience. I always felt like as an audience member, you wanna kind of feel some kind of catharsis, some kind of joy, some kind of resolution. And then I recently had a conversation with a friend of mine who wrote a play.   Like I wanna beat them up. And he goes, good, I did my job. And I was like, but where's the resolution? All I saw was trauma on the side of the abused. And all I saw was the abuser get his way. And I was just so angry. He goes, get good, I want that. I wanted that for my audience. So it's just very different for me to want a resolution and having a playwright say, no, I want you to feel angry. I want you to have that frustration. Thank you. Aw. Thank you. All right, we are almost completely out of time. So again, thank you everyone so much for being in this space. Next week, Josefina Baez is gonna be joining us. They are an incredible performing artist and playwright, Afro Latine, incredible human being. Let's please give Rachel a big round of applause for everyone. Thank you, thank you, thank you, thank you. And also a big thank you to our ASL interpreters and Miranda for doing our live captioning. Thank you everyone so much. And hopefully y'all can join us next week and come on and spend some time loving yourself and writing. Bye everyone, bye-bye, bye-bye. Thank you, thank you, thank you, bye.