Wow, the room is full, just the beginning. That's great. So good morning. We'll start with our first talk. Anil is coming from India, and he will introduce the jam-concurrent Ruby. He's a freelancer. He's programming in different languages, Java, Node.js, but also Ruby. He started recently. Alex here is very interested into concurrency issues, and that's why he started to dig into the concurrent Ruby jam. And I think he wants to share with you his discoveries and understanding. And so please welcome him. Hello. Good morning. So yeah, I'm going to talk about concurrent Ruby modern tools. So basically, I want to understand like, have you done like Ruby threading or anything like that? So if yes, can you raise hands? Okay. So quite a few guys. Okay. So, all right. So am I audible? Okay. Okay. So I'm Anil. I'm from India. I started freelancing since November. I'm interested in understanding like concurrency of various languages, concurrency paradigms, and I'm trying to use concurrency abstractions from these languages into the applications. So my talk is about, I'm going to give like, overview of concurrency models and their comparison, then a little bit theory about concurrency models, then what is concurrent Ruby library, then general purpose concurrency abstractions in concurrent Ruby library, third safe variables, third safe value objects, structures and collections, then third safe variables, third pools, then third synchronization classes and algorithms and each features of concurrent Ruby library. So concurrency models. So in different languages, we have different concurrency models. So these are main concurrency models that we know. First is threads and mute access. So Java, Ruby has support of threads and also has mute access. So this is very low level concurrency model that we use to write our programs concurrently. Then next is software transactional memory. This is not very common, but languages like Clojure has adopted software transactional memory. Then actors. So Erlang has been doing actors for long time and language like Elixir is written on top of Erlang is using actor model. Then we have event concurrency, which is followed by Node.js or event machine in Ruby. Then core routines, Python has core routines, which is one of the way to do concurrency and we have CSP, which is also very old style concurrency. The paper was written in 20 years back and followed by languages like Golang and we have processes and IPC. So we can run our programs as processes and still achieve concurrency. So this is table, which kind of compares different concurrency models. So we have mute access, software transactional memory, processes and IPC, CSP actors, features and promises, core routine event. So for mute access, the execution model says that scheduling is preemptive scheduling. So what is preemptive scheduling? Preemptive scheduling is if active process or task or thread can be temporarily suspended to execute more important process or task or thread. It's preemptive scheduling. Non-preemptive scheduling is if the active process or task or thread can not be suspended, it's run to completion, then it's non-preemptive scheduling. And cooperative scheduling is when currently running process voluntarily gives up executing to allow another process to run. So there are three types of scheduling. So basically threads uses mute access and it follows preemptive scheduling, then STM follows preemptive scheduling, CSP actors also follow preemptive scheduling, then we have features and promises which follows cooperative scheduling. So communication is shared memory in threads or mute access, STM again is shared memory, process and IPC shared memory, then CSP it's by message passing, actors it's also by message passing, features and promises it's also by message passing. So we have different implementations. So like first we have mute access in languages like Java, STM is implemented by Clojure, then we have like processes and IPC, we have like rescue workers. So like we create many different workers processes. So that's like processes and IPC. So let's see first kind of concurrency which is like threads. So issue with threads is that we share memory between multiple threads. So that's the evil like they say shared mutability is the root of all evil. So because of threading and shared mutability we get issues like deadlocks and disk conditions. So our deadlocks and disk conditions we have mute access and locks or synchronization techniques and this is very low level way of doing it. So there are lots of issues. So pros are no scheduling needed by a program because it's preemptive scheduling. Operating system does it for you. So in operating system like Windows or Linux when we do threads, so OS keeps switching context. So like it's a preemptive scheduling. So we don't have to worry about that. Then it's most commonly used. Cons are context switching. So operating system keeps switching the context and because of that it has to store the thread data and so that's scheduling overhead. Then there are deadlocks and disk conditions because of this and then synchronization and locking issues arise. So there is a law called Amdell's law. It's used to predict the theoretical maximum speed up for a program. So basically there is cost in creating a thread and switching context between threads. Too many threads is bad. So Amdell's law defines speed up. So if we have a program which is not, can't be paralyzed if it has sequential part. So even if you have multicore processors, still we can't achieve the speed up. So you can see if there are number of processors and that's the speed up. So even if you increase the number of processors, that program speed up doesn't go up because the parallel portion is not very high. So we have to have more parallel portion so that we can achieve better speed up. So this is not achieving any speed up because parallel portion is just 50% and it can just utilize. So speed up is not going high. So parallel portion of the program defines the speed up. So software transactional memory as per Wikipedia, so it's different than threads. So in software transactional memory, like the highlighted part verifies that other threads have not concurrently made changes. So if there are multiple threads, STM verifies that other thread has not concurrently made any changes. If it has made any change, then it doesn't write. So let's see a small code, pseudo code. So here it's STM. So thread one has read a variable and then incremented a variable and written a variable. At the same time, if thread two goes and tries to modify the variable and if it sees that thread one has incremented the variable, it doesn't like it just rolls back and it retries. So in STM, the concurrency is achieved in a different manner where it has different way of coordinating the multiple concurrent threads. Next is actor model. So it's a mathematical model of concurrent computation. The actor model treats actors as universal primitives of concurrent digital computation. Actors communicate with messages. In response to messages that it receives, actor can make local decisions. So airline follows actor model and so actor model was, the paper was published in 1973 by Carl Helmut Peter Bishop and Richard Stieger. But airline accidentally implemented actor model. So airline kind of does it. It's very old way of doing concurrency and also there was paper called CSP, Communicating Sequential Processes. It was written by Tony Ho in 1978. So what is CSP? CSP is a way of coordinating multiple processes or threads. It's a way of doing concurrency. There are processes and there are channels. So there are no threads. There is no shared memory and fixed number of processes are there and the processes communicate with channels. So languages like Go and Limbo implement CSP. So in Go we have GoRoutines which are processes and channels. Like GoRoutines talk with each other with the help of channels. So CSP is kind of, so the style, the message passing style of programming is also followed by airline. It's not, airline doesn't follow CSP but the style of message passing is done by airline and also languages like OCaml, Go, Clojure does that with channels. So pros of community creating sequential processes is that users message passing and channels heavily, alternative to locks. We don't have to do synchronization or locks. Cons is that handling very big messages. So messages are big. Instead of sharing memory where we have shared memory, now we are sharing big messages and because of lots of messages, unbounded buffers are there. So that's bad and messaging is essentially a copy of shared data. So actor model versus CSP. So in CSP send and receive may block. So in actor model only receive blocks. So also CSP synchronous, actor is message passing. CSP works on single machine, actor works on multiple machines, lacks fault tolerance in CSP. In actor model there is fault tolerance. So this is like many comparison of actor model and CSP. So let's move to Ruby threads. So Ruby has threads for doing concurrency. So we use thread.new. That's basic abstraction that we used to create multiple threads. And because of threads, there is high chance that we have deadlocks and disk conditions because there is shared memory. And Ruby has global VM lock or it's called global interpreter lock. So what is GVL? So GVL is a lock. So what happens with GVL? With GVL only one thread executes a time. Thread must request a lock. If lock is available it is acquired. If not the thread blocks and waits for the lock to become available. Ruby's runtime guarantees thread safety but it makes no guarantees about your code. So blocking or long running operations happens outside of GVL. So any blocking operations or long running applications which is which is not CPU bounded happens outside of GVL. So you can still write performance concurrent code like in Java or in Node.js. If your application is just doing IO, network IO or file IO, Ruby is still performing. It gives the same performance as the other languages. But for CPU request GVL is the issue because one thread has to get the GVL and then only that thread executes. So in Ruby, Ruby is Ruby can't utilize your all course of your machine because GVL allows only one thread to execute per code. But Ruby is fast enough for IO on heavy applications like network and file or database. So why GVL? So GVL makes developers life easier. So Mads says like he can't trim GVL because without GVL you will have race conditions because there are C extensions. It makes C extensions developer development easier. Most C libraries are not thread safe. Parts of Ruby's implementation are not thread safe. So Ruby lacks better concurrency abstractions. Java has utility lot, Java dot utility lot concurrent but Ruby doesn't have something like that. Ruby didn't have actor model or stm or better concurrency abstractions. Ruby has concurrent gem now. So there is package called Java dot utility lot concurrent in Java that has high level abstraction to do concurrency. With concurrent Ruby, we get that now. So what is concurrent Ruby? It's modern concurrency tools for Ruby. It's inspired from airline closures, Scala, Haskell, C-Sharp, Java and classic concurrency patterns. Design goals is be an unopened tool box that provides useful utilities without debating which is better and why. Stay true to the spirit of languages, powering inspiration. Keep the semantics as idiomatic Ruby as possible. Then support features that make sense in Ruby. Exit features that don't make sense in Ruby. Be small, lean and loosely coupled. Also, concurrent Ruby is supported by MRI. So concurrent Ruby works on MRI, JRuby 1.7x in 1.9 mode, then JRuby 9000, then Rubinius 2.x is also supported. So thread safety, so it has strongest thread, sub-t guarantees. It also has published memory model. So Ruby language doesn't have any published memory model, but concurrent Ruby has their own published memory model. So every abstraction in concurrent Ruby is thread safe. Similarly, all are deadlock free. Many are full lock free. Specific thread safety guarantees are documented with this abstraction. Then Ruby is a language of mutable references. So no concurrency library for Ruby can prevent the user from making the thread safety mistakes. All library can do is provide a safe abstraction which encourages safe practices. So concurrent Ruby provides more safe concurrency abstraction than any other Ruby library. So it follows the mantra of do not communicate by sharing memory, instead share memory by communicating. So only Ruby library which provides a full set of threads of mutable variable types and structures. So let's see like some concurrency abstractions in concurrent Ruby. So these are four, concurrent async, concurrent future. These are five, concurrent future, concurrent promise, concurrent scheduler task, concurrent timer task. So this is the example of concurrent async. In a model, if you include the concurrent async, in a class if you include concurrent async model, then this class becomes async, this class gets async behavior. And this turns into a simple actor. So this async and await are inspired from Erlang Gen server. So now you can call the method eco with like horn dot async dot eco. So this is non-blocking thread shapes. It returns an eyewear. Eyewear is a type of class object in a pending state. And await actually is synchronous. Waits till it gets result and it's also thread shape. So there are two ways to do call the methods. So that was one of the concurrency abstraction. Second is concurrent future. Future represents a promise to complete an action at some time in future. The action is atomic and permanent. So future, in a typical application, we need to do some tasks which happen in background, which doesn't execute in current. So we can use future. So this is one of the example, a ticker class, which fetches something from web, like a tick mark for from Yahoo final site. So this is the network call. So we can use future to do this in parallel in another thread. So by default state is pending, but after some time you get the value. So this task happens in background. So this is filled future where value is like exception. So we can see Rails snippet. So Rails is using future. So this is like action cables, client test class. So we can see this abstraction is being used by Rails framework. So next is promise. So promise is similar to futures, but it's far more robust. Can be changed in a tree structure with each promise. So it may have zero or more children. So this is example of chaining. So similar to future, it does something in background and we get result after some time, like after some delay we get result. So promise gets fulfilled after some time. So this is example of code snippet in Rails source code where they are using promises. So next is concurrent schedule task. So schedule task is it's similar to future, but we can schedule it to execute after some delay. And this is similar example, but we can pass the delay execute and then the two is nothing but the delay that we pass it so that it gets executed after some time. So this is error case where if there is an error we get schedule task with an error. So this is Rails source code using schedule task. So next is timer task. So it's a common concurrency pattern to perform task at regular intervals. Can be done with threads, but an exception can cause thread to abnormally end. But when timer task is launched it starts a thread for monitoring the execution interval. The timer task thread does not perform the task, however instead the timer task launches the task on another thread. So we can add observer class. So this is just observer class for timer class. And then when the timer gets executed with the default or set execution interval and timeout interval, we get the class executed after some time. So this is one of the Rails source example which is using timer task. So next concurrency abstraction is threads of value objects and structures and collection. So we have array, hash, concurrent map, concurrent tuple. So concurrent array and concurrent hash is a third step surplus of like one is from array and one is from hash. It locks against the object itself for every method call and ensures only one method can be reading or writing at a time. Concurrent map is hash like object, have much better performance characteristics especially under high concurrency than concurrent hash, not strictly, semantically equivalent to a Ruby hash. So this is example of concurrent hash in Rails source code. So Rails is using that in one of the active supports class. So this is concurrent map. Active supports time zone class is using concurrent map. So value objects inspired by other languages. So concurrent maybe and concurrent delay are the value objects which are inspired from other languages. So concurrent maybe is third step immutable maybe which encapsulates an optional value, maybe either contains a value or it is empty. Concurrent delay is resolution of a block yielding an immutable result. These are useful for doing expensive operations that may never be needed. So next concurrency abstractions are like structure classes developed from Ruby struct. So we have immutable struct, mutable struct and setable struct. So these are developed from Ruby struct and these are third step. So immutable struct can be set only once. Mutable struct can be set at any time during the object lifecycle and setable struct can be set at its initialization or with the setter method. But once it is set, you cannot reset it again. It will throw immutable error, concurrent immutably error. So third step variables, we have concurrent agent, concurrent atom, concurrent atomic Boolean, concurrent atomic fixedum, concurrent atomic reference. Also we have concurrent exchanger mware, thread, local wire, pware. So agent is inspired by Clojure's agent function. Agent is shared mutable variable providing independent uncoordinated synchronous change of individual values. Based use when the value will undergo frequent complex updates, suitable when the result of an update does not need to be known immediately. Agent action dispatches are made using the various same methods. So basically agent is inspired from Clojure and it does, it is a variable where we can do operations on it and it sets f. So we can get, and it is also asynchronous. So we have one function called next Fibonacci and then we created the agent variable. Then we five times call the agent variable which gets updated and after when we call await we get the value. It is asynchronous, but with await we get the result computed and with value we get value out. Similar to that there is atom. Atoms forward way to manage shared synchronous independent state. At any time the value of an atom can be synchronously unsafely changed. Suitable when the result of an update must be known immediately. So there are two ways to change the value of an atom. There is compare and set and swap. So it is inspired from Clojure and it is synchronous. Unlike agent atom we can call atom and we can immediately get value and it internally retries like if there are two threads which are using atom. If one thread like modifies one of the atom the another thread will retry and get the result out like it is synchronous. So next we have atomic thread safe variables. We have atomic Boolean, atomic fixnum, atomic reference. So reads and writes are thread safe and guaranteed to succeed. Reads and writes may block briefly, but no explicit blocking is required. So this is the real source code example using atomic fixnum. This is atomic Boolean used by rails in active support. So this next abstraction is very interesting concurrent exchanger. It is a synchronization point at which threads can pair and swap elements objects within pairs based on Java's exchanger. So if there are two threads want to exchange object they can use exchanger and the object is safely exchanged. So this is one thread this is another thread and then they can swap the objects. So this is code snippet basically the third one and third two. Then third two is calling passing bar and third one is calling foods but we can see objects exchange there. So next is threads of wires. We have mware, thread local wire and tware. So mware is a synchronous single element container taking a value from mware blocks as does putting a value into a full one like blocking Q of length one. So mware is like a blocking Q. So if you know blocking Q so it is like that and tware is a transactional variable and thread local wire is a variable where the value is different for each thread. So we can initialize tware and then for each thread we can have different values for thread local wire. Tware as I said it is a transactional variables and it can be used in bulk like if there are like multiple twares we can use it in a single transaction. So it will make sure that all twares are properly used and properly updated. So we have thread pools. So we have fixed thread pool, cashed thread pool, thread pool executor, immediate executor, serialized execution, single thread pool executor. So thread pool is nothing but a way to create multiple threads. So we reuse threads. Instead of creating threads we use thread pool. So it is high level abstraction to use threads and there is thread pool executor and then there is immediate executor. So these are examples from Rails application which are using thread pools. And there are different behaviors of each thread pool. So some immediately executes your task, some has fixed size thread pool like only four threads let's say in a pool. Then they reuse the same thread to perform the task. Then there is cashed thread pool, then single thread executor. So next set of concurrency abstraction is thread synchronization classes and algorithms. So we have countdown latch, psychic barrier, event, eyewear, retrite lock, re-entrant, retrite lock, semaphore. So countdown latch. So this is also interesting. So if there are two threads or more than two threads who wants to do like who want to synchronize to wait on each other. So we can use countdown latch. The thread will wait. So if there is one thread which waits, creates a countdown latch and set the initial value normally equal to the number of other threads. The initiating thread passes the latch to other threads, then waits for other threads by calling the wait method. When the latch counter reaches zero the waiting thread is unlocked and continues with its work. Countdown latch can be used only once its values cannot be reset. So this is example of countdown latch where we created a waiter, then this is decrementer which decrements the latch. So as we have created a countdown latch of three, we have to decrement it three times. Only when decremented decrements the latch, waiter thread gets released till it waits and stops at wait. So one of the snippet of rails is using countdown latch. So we have cyclic barrier. So two threads can, two or more threads can wait for cyclic barrier. So if they reach at first cyclic barrier they continue. So all threads stop at barrier. So a synchronization aid that allows a set of threads to wait for each other to reach a common barrier point. So this is example of cyclic barrier. So we have created a barrier then there are random slip times and I have created multiple threads. So with different slip times but all threads wait at barrier. Even the slip for any time they will wait at barrier one and then they will wait at barrier two. So we can see like three threads executed at the same time again second time they executed at the same time. So they waited at the barrier and then once the barrier reached they all started executing. So this is rail source code example which is using cyclic barrier. So my school transaction test is using it. So concurrent event. So it's old school kernel style event and again like two-thirds can use this concurrent event like once the event gets executed or the other thread will get to know and then other thread will execute till that time other thread will wait. So this is rail's source code which is using concurrent event. So we have eyewear. Eyewear is like a future that you can assign. As a future is a value that is being computed that you can wait on and eyewear is a value that is waiting to be assigned that you can wait on. Eyewear are single assignment and deterministic. So this is very simple example. You can't set eyewear multiple times. If you try to set it it will throw an error. So next is read write lock allows any number of concurrent readers but only one concurrent writer. If the write lock is taken any readers who come along will have to wait. Then we have reentrant read write lock. Any number of concurrent readers allows any number of concurrent readers but only one concurrent writer. While the write lock is taken no read locks can be obtained either. Hence the write lock can also be called an execute exclusive lock. If another thread has taken a read lock any thread which wants a write lock will block until all the readers release their locks. So we saw reentrant read write lock. So next abstraction is concurrent semaphore. Most of us know semaphore. So it's counting semaphore. It maintains a setup permits. Each aquire blocks if necessary until a permit is available and then takes it. Each release adds a permit potentially releasing a blocking aquirer. So basically we create a semaphore with some count and then threads acquire that semaphore and then if like the count is reached then until another thread releases that semaphore any other thread can't acquire the semaphore. So it keeps waiting for the semaphore. So it's another way another way to lock the threads. So rail source code is using concurrent semaphore. So this is the action cable client test example. So we saw schedule task timer task events. So these are available in concurrent Ruby gem but there is a concurrent Ruby edge library. It's part of concurrent Ruby but these features you have to require library with concurrent edge. It sort of require concurrent. If you require concurrent edge you get these edge features. These are not fully complete but some of those like promises which is almost stable is going to be merged in the concurrent stable version. But some of the abstractions you saw are going to get replaced with this edge features. So we have new promises frameworks. We have actor implementation. We have channels. We have laser register, atomic markable reference, lock free links set, lock free stack. So basically new promises framework unifies concurrent future, promise, Ivar, event, data flow, delay, timer task. So it exclusively uses the new synchronization layer to make all threads lock free. And with new promises frameworks we can combine different abstractions together and those will work and promises can branch. So we'll let's see. So this is one of the example of new concurrent promises where like we saw future, it's the new way of doing future with concurrent promises. This is error case. If you get error we get the value and reason. Then we can do chaining. Obviously we used to do chaining but with new promises we can do chaining. Then we can do branching. We can do branching and zipping. So if you have worked with JavaScript, there is JavaScript promises. So concurrent promises is having similar API but it's just not just the implementation of another promises library. It has minimum features. So error handling. So we can do error handling with new promises framework. Then we can do error handling with rescue. So if there is an error, rescue will get executed. And if there is no error, rescue doesn't get executed. So then we can use chaining. Then we have error handling. So zip is rejected if any of the zip future is. So this is doing zip. So delayed future. So we can create delays, delay tasks with new promises. Then sometimes it is needed to wait on our inner future. So we can, if you call value it blocks. So it's not good way to use dot value. So we can use flattening. So if there are promises of promises like combined promises, then we can use flat. With flat we get the value out without blocking. Then we have scheduling like schedule tasks. We can schedule like that with timing passed. Then we can use chaining as well. We can schedule and then we can chain. Then we can use time object in scheduling instead of just count. We can actually use time dot now and then pass the time plus, time dot now plus 10. Then we have concurrent actor. So promises we have. We also have concurrent actor, which is pretty stable but I didn't find much documentation. I am trying to use it for one of my side project. So Erlang has actors. So now with concurrent actor we can create actors in Ruby. And it's lightweighted running processes which run on thread pool. It's inspired by Erlang and Akka. And it's also modular. So this is example of actor. So we create actor context. So this counter is actor class and on message is with act on message. So actor has inbox and when we receive message we process that message. And then so here we can create a named actor and then we call the message to it and then we see what is the value of the actor. Next is concurrent channel. So concurrent channel as told by Petr is not very stable but we have that it replicates Go's behavior like Golang has channel. So concurrent Ruby Git repository has all the examples of tour of Go and Go by example replicated in Ruby. So it's not stable but we can use those APIs. So it can be called experimental. We have that. So hope somebody contributes and makes it stable. So we can use channels. So this is default selection. So this is a buffer channel. Then this is default selection. And next is we have laser register. So laser register is another concept section.  So we saw channels, we saw actors, we saw promises. So these are new. And so concurrent Ruby library is used by SideKick, SuckerPunch and Rails. So there are many libraries which are dependent on concurrent Ruby. So just now I discussed with Petr and he says like 80% of the Ruby gems are transitive dependencies of concurrent Ruby. So there is like somewhere they depend on some gem and that it depends on concurrent Ruby. So SideKick uses concurrent Ruby, SuckerPunch uses concurrent Ruby, Rails uses concurrent Ruby and hopefully many other libraries start using it instead of like previously Rails used to use threads like used to add sleep. So that was doing a bad way of concurrency. But now with concurrent Ruby we can do better concurrency without bugs and a better way of handling concurrency issues. So concurrent Ruby is maintenance or like Petr who is here, then Jerry, then Chris, also Charles, Oliver Nutter, he is here. So his thread safe gem and atomic gem is merged back to concurrent Ruby. So I see these contributors contributing to this library, but I hope many contributors joins and we make this library better so that we will have better concurrency abstractions in Ruby. Then so use concurrent Ruby, use high level abstractions to write concurrent code, choose from different options such as actor, channel, promises, combine them. So the good part is that we can combine some of those abstractions. We can stick to one of the abstractions like but we can actually combine these abstractions in application. Also build maintainable software. So if you write threads, if you do concurrency with threads, there is a high chance you write like a bug written code. But with concurrent Ruby your code is mostly going to be mostly going to be safe thread safe. So yeah, thanks.


Excellent. We demystify what goes on behind the therapy room door. Join us on this voyage of discovery and co-creative conversations. This is The Therapy Show. Behind closed doors podcast with Bob Cook and Jackie Jones. Welcome back to Episodes. Are you ready for this, Bob? No. 136. Oh my God. I know. January 11th, I said on your email. I think it said January the 11th it goes out on. Yes. Yeah. So the title of this is Blind Spots in Therapy. Okay. Interesting title. So are we recording as we speak? We are recording as we speak. It's all systems go, Bob. Okay. Blind spots and derby. Before I go on about blind spots and derby, I would have said at the last podcast, but I hope you all had a good new year and you are enjoying yourself, especially as you listen to this podcast. I hope you are. Okay. Blind spots and derby. So when you think of blind spots and derby, Jackie, what do you think of? I'm thinking about maybe what potentially gaps in our knowledge. Do you mean the therapist or the client or both? Both. Both maybe. Yeah. So when you say that, what comes next in your thinking then? Around that. Maybe personal bias. Maybe that's a good one because I think that's something that both the therapist and the client has. You mean prejudice? Yeah. You're talking about the frames of reference. Yes. Yeah. Filtrumming out certain things. I would personal beliefs and all that sort of stuff. It also leads to counter-transmissions, doesn't it? Yeah. Yeah. Yeah. That's how I see it when we talk about blind spots and derby. It's certainly around both people's frames of reference. So as you know, and I think I've said on these podcasts, I do all the assessments at the Institute. People ring up and want half an hour assessment with me. That's fine. And we go ahead with that. And then I pass them on to one of the therapists would suit them. There's about 30 therapists at the Institute. Part of my job is to match people up. But one of the things that I think about a lot, and I believe is true, is that therapy always works better if the therapist and the client get on with each other. Absolutely. So in other words, I don't have to have equal frames of reference. But if they perhaps come from the same ballpark, then they're more likely, if you like. That's not always the case, but in terms of a sort of thumb rule to sort of get on with people. Yeah. So that's important to think about as is the cultural implications. Yeah. People, you know, they don't always have to... The therapist and client don't always have the same cultural processes. I know. But it's something I think about in terms of cultural compatibility, if you want to put it that way. And I think it's the same blind spot you see. If people come from different frames of reference or different types of script, which you could get onto in a minute, might be more likely to have blind spots, which would include things like prejudice, being things being outside of their awareness. It leads on to transference issues, of course. So I think trying to match people up, I think terms of reference, cultural implications are important to think of in terms of effective psychotherapy. There's a fine line, isn't there?  But there's a chance of crossing over on that. I think there's always that dilemma. Yeah. When you're talking about that, where you get sort of overwrite or you might get over-identification versus, you know, blind spots or versus incompatibility. Yeah. Different terms of references. So it's important to think about it that way. Now, we'll talk about the idea of script a lot, haven't we? Yes, we have. But people who haven't been on these podcasts before or haven't listened to us, when we define a script, it really comes from TA theory, but when we define script or that term, it means an unconscious life plan decided early on with a beginning, middle, end, really. I think Bern changes definition, but unconscious life plan will do for me. Yeah. And then what we do is we fit other people into the way that we think about ourselves other people in the world. So if you think about it from that frame, you will surround yourself with people that will fit into your script. Absolutely. Yeah, yeah. So when you do couples therapy, one of the things I think about as a therapist is how the couples have interlocking scripts or don't. So people, as they go on in life, according to the decisions they've made about themselves and other people will pick friends to fit into their own script. Yeah. And surround themselves with people who fit into their own way of thinking, if you like. Yeah. When you're talking like this, it sounds like when we're picking people to fit into our script that life runs very smoothly, but that's not always the case. No, and I'll tell you why it's not always the case.  Yeah. So in other words, the more dysfunctional, unhealthy the environment that the person's been brought up into will be determining factor. Yeah. Making the decisions which form the hub of their script. Yeah. Now, as they continue on in life and grow up and that script may be part of their personality, they continue to pick people or may do that fit into those early survival decisions. Absolutely. Yeah. You're not okay. I'm okay. You are okay. You know, those existential life positions. Now, sometimes it could be more detailed than that, but it's very elementary in some ways. So as the person grows up, they may move into areas or meet people where those ways of thinking or coping actually brings them more challenges than they thought they might. So in other words, maybe those coping mechanisms, those early decisions need updating or at least revised and reflected on so they can find more healthy decisions now they've moved away from their dysfunctional heritage. Yeah. If that makes sense. Yeah. Yeah. It's just, you know, I always think that I was script. It's familiar even though it can be negative. Do you know what it is? So picking the wrong people to be around that puts us in a bad, you know, state of mind a lot of the time can be part of our script. Definitely. Yeah. The therapy and just may say, well, I know things are wrong. I don't feel happy or I feel hopeless or I feel depressed and I can't get out of it. I feel not, you know, I'm not content in life or whatever it is. And quite often they're keeping to this script, which was a survival script early on in life, but actually has become more like a burden around their neck. Yeah. Because of their unhappiness in life. And so they go to a therapist and the therapist, you know, thinks about scripts or thinks about the idea about the past effects of the present. They will help the person explore their earlier life and the decisions they made. And whether those decisions are useful anymore in the different situation 20 years later. Yeah. Now, if that and it usually is where those early decisions actually aren't helpful anymore, then the therapist will help them put the past and present together and develop a new type of script and help them put that on the road. Yeah. An updated version. Updated version. Now that takes time. Absolutely. Yeah. But when we talk about blind spots and therapy, those blind spots are often created out of the script that the person's decided on in these difficult circumstances. And therefore, those blind spots, if you want to call them blind spots in this way, they're certainly outside their awareness, will continue. Yeah. Until life events happen where those blind spots lead the person to have such a distressful quality of life that they turn up in therapy or people may confront them or whatever. Yeah. I think for me one of the things that happens a lot with clients is they'll come because of repeated patterns. Yeah. They're doing the same thing over and over in different relationships. And that's what kind of brings them that this always happens to me. That's right. Whatever that is. Yeah. So an example I might give of what a blind spot we're talking about is for somebody believes that everybody that lives in Scotland or Scottish are mean. Yeah. Well, when you think about that, that means that they might never go to Scotland. Yeah. They may never surround themselves with people who have come from Scotland. They think of Scottish people as mean, not okay people.  Yeah. Now if they keep with that belief system and they meet somebody that didn't know came to Scotland and fell in love with them or really, and then they find out they come from Scotland, you've got a problem in your hands, haven't you? Yeah. It's perhaps an extreme example, but it's an example of what we're talking about here that their blind spot, which you might want to call prejudiced if you want, has led them down the line where their life is more narrow, unfulfilled than if they saw the world in what is actually what we're talking about here is an updated belief system needs changing if you like. Yeah. Yeah. Absolutely. Our blind spot becomes part of a script decision that gets played out and doesn't help that person. Yeah. Which for me as well links into another blind spot being lack of self-awareness. Yeah. When we're not aware that we have these prejudices or that we've got these parts of our script or whatever, which again, I know we do this in TA about having our own personal therapy. So hopefully we've kind of worked through a lot of things and we are a lot more self-aware.  We could give lots of examples. Yeah. People might call prejudiced or decisions made outside people's awareness, but they're usually made because they've been passed down by their significant other people or they're made in terms of protecting themselves. Yeah. And the blind spots because they're in our subconscious. We don't consciously know that they're there. It's not something that, you know, we're aware of after the time until it presents itself somehow in front of us. Yeah. So these belief systems which are clearly prejudiced to other people. Yeah. The need of dating. Yeah. It might be harmful in some ways. The person who's got the blind spot, A isn't aware of it and B will hang on to that contaminated process or that prejudice for dear life because it was made such a long time ago and it's linked to their identity and productivity in life. So they're not, so they won't easily give that up. Yeah. I had a conversation this week with a client and we were talking about affirmations and I kind of, every so often I'll post on social media and I put three affirmations and she sent me a message and she said, it's really funny, but I said those affirmations and two of them, I had a reaction to them. I was saying it, but I felt like it wasn't true. And that to me is exactly what we're talking about that it's that deep rooted. We don't even know it's there until somebody crosses the line or it's brought to our attention. Very true. So somebody walks in for therapy at 33 years of age and they've just had kids and the kids now are two or three, let's say. And they say, you know, I'm in trouble because my marriage is not working. I've just had children and my partner believes my parenting is not very good and doesn't help the quality of life for their children. Anyway, after a few more sessions, we invite in the husband or partner and he says, yes, it's terrible. She insists on making sure that the kids go to bed far earlier than they should do and you know, she doesn't see them as important at all and then you turn to the woman and the woman says, that's just not true. I mean, I love them very dearly and we play a lot in xxxx and as we go further into the conversation, we find out that one of her belief systems which was not only passed down to her but she believed was reality was kids should be seen and not heard because as a child, not only was not passed down to her but she was treated in ways whether she wasn't important as a child and she's carrying on with the same decision as if reality. So her own kids, if she carried on with this would have the same implications that they would probably feel not important whether they were not heard whether they would feel that values are not to be steamed as useful and the father of course didn't have those, didn't have that thought process, those belief systems and could see the damage that was happening and so we had some therapy happening yeah, not only between the both of them but for her on these out of awareness blind spots Yeah I think if we go into therapy thinking that we've got all our bases covered and things like this won't actually come up as part of the therapeutic process I think we're onto a loser Yeah, we're onto a loser definitely because we have scripts which are made out of survival reasons with our significant other people, parents they have their own scripts and it's almost like a generational process and then we come into the world meet other people with different scripts or similar scripts and then we're into these challenges in relationships I love that, I'm not sure whether people would have picked up on that hot potato literally, it's like a game I'm not sure whether it's just a British game that we play where you catch the ball and you have to pass it on as quick as you can and a lot of the time that's what I would believe systems are based on they come from our parents we just pick it up without question and then we throw it on and it is generational and a solution Jackie, therapeutically is to enable the client and empowered enough to hand back the hot potato where it came from It's a big one that one Bob What do you mean it's a big one? I'm saying that because I've literally this past few weeks had a personal experience of this and it is really difficult to hand it back Oh, yeah Do you mean difficult in psychologically, is that what you mean? Yeah, it to let something that I feel is part of me go that it's not mine so I can let it go but when you've lived with it for 57 years it feels intrinsically part of me when my logical brain knows it's passed down from my mum 100% So giving back that hot potato or that process feels like part of yourself is going Yeah and it's the scariness of being in a world without it I'll tell you what it is Bob just so that you can can be clearer My oncologist I need to have a conversation with my oncologist where I'm questioning his decisions and it feels really really uncomfortable for me to do that and I know that that comes from my mum and we don't question people in authority or professional people There's a blind spot then but you've become conscious of it Absolutely, yeah More importantly you've become conscious of where that belief systems come from Absolutely, and I had a conversation with my mum about it as well I wonder if it went back to her mum and dad but that's interesting Yeah, but it was one of those things that as soon as I realised what I was doing and the fear that I had about this conversation that I need to have I knew straight away where it came from I can't look a police officer in the eye do you know what I mean because I always feel guilty it's literally people of status rank a lot higher than me in my family So have you decided what you're going to do about this then Yeah, I'm going to put my big girl pants on Yeah And have a conversation with my oncologist next week when I need to see him Yeah Because in the end of the day I believe your own beliefs and values are just as important as his or hers Yeah The psychological example of passing the hot potato back I meant passing back the mother but of course she talked about the mother and the next thing of course would be to action out what you're talking about Yeah For me personally I'm sure you've had it as well Bob When I'm going through something myself everything seems a lot clearer Do you know what I mean It's hard to explain it to a client if we've got an example where we can kind of explain it to them so that they hopefully get an understanding of what we mean because a lot of this is kind of it's a bit out there isn't it unless we can use a metaphor or an example it's hard to explain sometimes Yes and here's one then If some parent or significant other person early in childhood where the power dynamic is loaded towards a person tells the other the child either in words or non-verbal behaviours you are stupid You're stupid You're stupid You're stupid they will change the you into an I Yeah And they all knit The you becomes an I Therefore I am stupid and that becomes their belief system and you're correct earlier in the podcast when you said out of awareness because what becomes out of awareness is where the where the message started so you feel as if your belief system is you know from you actually the belief system comes from somewhere else and this is very very very common when we're talking about shame Yes Yeah Yeah absolutely They have these belief system this is all about themselves and it's because they've been over defined they've been told certain messages which actually aren't true they've turned the you to an I and then they believe X Instead of what is the real reality Yeah and I think it's really important what you said as well Bob but sometimes this isn't you know verbally directly told to us it's the non verbal insinuations within families and how we're treated and all that sort of stuff that we pick this up it's very rare I think that a parent directly says this sort of stuff to us Absolutely true if a chart an infant is born into a family where the mother is depressed so that they're in bed most of the day or they aren't able some of the time to look after the infant because they're so low or they feel so down and they stay in bed or they can't be joyful with the infant or the infants will receive information about their mother or significant whether which is they're not being looked after they're not being played they're not being fed all these things because the parent isn't able to move away from their depression then the infant will make a decision about that and they may make a decision which says something like well I'm obviously not okay because the other person this is the mother in the case isn't playing with me but it is in response to the non-verbal messages of what's almost passed on by osmosis of in this case depressed mother I'm not worthy of all those sorts of things that affects our self-worth our self-esteem and everything going forward Absolutely It's so out of awareness if you want to put it that way that we start to believe fundamentally what was said what was decided as if it was about ourselves Yeah So then what might actually happen later in childhood as we grow up we start to act depressed just like our mother who passed a hot potato of depression down Depression is often modelled Anxieties as well I think I can remember having a conversation with my sister who suffers a lot from anxiety she made an awful lot of assumptions that her daughter who had anxiety had the same anxiety as what she did and I can remember saying to her you can't say that because everybody's different your anxiety is your anxiety and hers is hers don't assume that she's scared of the same things that you are Absolutely So these become blind spots Yeah People have because they've decided things a long time ago to survive and often they're not true Absolutely Because they're built on a different reality than the common reality Now the only thing about blind spots for therapists and for clients is in the world of transfers Yeah So all of us every one of us live in a world of projections We project something and say oh well that person's not thinking well of me there not smiling or frowning or something must be wrong So we project out our fears, thoughts onto the other person Yeah that's what I mean by projections Yeah Projections are the glue for transference and transference is another world together which is built on assumptions and built on a bilateral sense of communication where we're thinking and feeling what the other person's you know is like, usually built on our experiences from the past Yeah Which we then transfer onto the therapist Now if we talk about counter-transference it'll be who is the client for the therapist and on therapist through projection or we usually would transfer onto the client something that isn't real at all but has a basis in their own history Yeah That is the ground for blind spots And this is where it gets really complicated in the therapy room It's like the matrix there's so many different layers of things that are going on Because actually what's happening is both parties often are trying to resolve issues which aren't in the present at all They have their etiology in the past 99% of the stuff that goes on there isn't in the present it's got one foot in the past or the future maybe So you know you're a therapist and you've been adopted for example when a new area is fostered if you like and in comes a client and the issues they want to work on is loss, bereavement, adoption and foster Yeah Or the therapist has whole history about that and they've come to decisions about all those issues you just talked about through experience and then out of awareness they may transfer over their own historical experience in connection with what we're just talking about obviously the client who may not have had those experiences at all even though they lived in a similar world Yeah Then therapy goes down the wrong way Yeah Blind spots In that situation as the therapist would you bring that up? Well different therapists are going to respond different ways but as you're asking me I think it would depend on timing and awareness in the psychotherapy process in other words if it was right at the beginning working relationship hasn't really been formed probably not because it's too early for that type of confrontation the relationship might not be strong enough to hold that I'll call it confrontation but that challenge so if I'm going to talk about transference or talk about my own history being projected onto the other all those things I think I would only start to go down that direction if the relationship with the client was strong enough to be able to take that type of intervention Yeah So whatever I did would be my first thought would be is this in the client's best service clinically for me to share this Yeah It's a really interesting topic Yeah because if you choose to share something like your own history so you know I've been thinking about this because of my own history and actually I might be projecting some of my own stuff on you and I've been thinking about this and I wanted to say this to you because it might not be your own history you wouldn't do that in the first few sessions No absolutely not I'd do that 10 sessions in though you'd have to think about and the other thing you'd have to think about is why you were doing it in the first place Yeah it has to be for the client's best interest but there's also something about if we are so aware of the transference and counter transference that's going on if we can't work through that that we need sometimes to refer a client on Oh Absolutely I don't think people should be working with people Let's give the example I gave So somebody's been adopted or fostered and then the client walks in the door and they want to work on adoption issues or fostered issues or work through all their issues regarding to what we're talking about here and it's not in a place where they can come from adult rather than their own child or parent they definitely shouldn't take them on the first place The unfortunate thing with some clients is that they spring things on us weeks down the line They fall in a difficult position because it's like if they spring things on say 3 or 4 months, 6 months on then you've got to weigh up the ethicality of this Yeah Because they've built a good relationship with you And whether it's for the best of the client to refer them on or whether that's going to fracture the relationship or not, yeah, yeah There's a lot in that But I think the world of transference is a fertile ground for the emergence of blind spots Yeah And it's just to just bring this episode to a close I think the important thing is to be aware of the fact that we have blind spots Oh, everybody does You know what I mean So it's like just knowing that they're there and being aware of what our blind spots potentially are There's certain clients that I won't take on because I know my knowledge, I haven't got enough knowledge around it And I think we're really, before we finish I think a really important place for supervision Yes, yeah Your own therapy, but certainly supervision because for lots of reasons, but you have another level of protection put in there and another level of eyes which is above the transferential matrix which can help the person move their out of awareness blind spot into more of a sort of scene reality So until next time, Bob Interesting subject that though, isn't it? Yes, and the podcast title that we're going to follow on to, I think links in with this, it's the danger of assumption in the therapy process Oh my gosh, well I won't assume too much and I look forward to conversation next week Until next time, Bob, thank you Bye-bye


Hi everyone and welcome back to another episode of our road to ranked roulette series I hope you're all doing well. Thank you so much for tuning in and we are kicking off today with Activating our bonus buttons. So we have four bonus buttons left to activate this week and we haven't done so far this week So here we are today. I'm gonna activate three of our bonus buttons We're gonna activate a switch up a randomizer and a legend maker now a good backfire on us We've had an incredible run with the team so far this week and talking about the incredible run If you'd like to go back and check out the run so far with the team that we selected Got thrown out by that roulette wheel at the start of the week click up here I'll put a card in for you check those games out and then come back into today's episode and then catch up From there on out because I feel like we're gonna have a bit of a switch up now Like I say it could backfire on us the team is doing so well at the minute I'm tempted just to sit on it for the rest of the week But I'm mindful that we have to activate these buttons by the end of the week And we need to try and push on above that 1500 so on the road to 1500 I feel like we can do it as well things are going well Hopefully it doesn't backfire too much, but the first button that I'm gonna activate today is gonna be that Switch up one. I think that's the one I want to do because that's a sure bet I can get rid of one Pokemon of my selection and then we can have the wheels throw us out a new one So I'm gonna nominate a Rangaroo. It's not really featured too much this week Unfortunately, I think it just doesn't suit the team as well as I would have liked it to Hopefully we have a nomination later on in coming weeks where it does get nominated and fits in with the team a lot better So I'm gonna throw out a Rangaroo We're gonna shoot over to the wheel right now and see what the replacement is So please will give us something good. Let's see what the wheel reveals It's an electric type. It is one of the coolest intimidators in the game I've forgotten about intimidator, but it will be so valuable for the team Just protecting things like that Zernius going forward helping it get those boosts of getting big damage off looks Areas an incredible Pokemon. It's gonna be really cool to adapt it into the team So I'm really excited about that. Thank you to so much for the nomination wanna play hugs I think was the person that nominated to be on the screen right now, but that is a great start for us So I'm really pleased about that looks right is a very cool Pokemon, right now. I'm gonna activate the Randomizer so this is a bit well this is where it gets a bit tricky So it will nominate a particular Pokemon from the team and then we will have a new one in place So let's head over to the wheel see which Pokemon gets nominated to be thrown out. Let's go and see Let's go jump. Oh You know what go jump has been such like a secret like undercover MVP to the team It's been dealing and working so well with so many threats in this format and I Don't know I felt like you know when I say it could backfire I feel like this is a little bit backfire So I guess we're gonna have to go over to the wheel now and see which Pokemon comes out from the new selection Let's go to the wheel and see what we get in place of God Chomp Dragonite I know there's a bunch of you out there that want dragonite and have been nominating it for the past three weeks So to finally get it in and it kind of works Over go jump it gets access to earthquakes so we can totally use it. It's gonna be great. It's got multi-scale It has speed controls, so we've got lots of options there great selection again Thank you for the nominations from all of you guys for dragonite and it's a pretty cool Pokemon again It fits into that same league as Luxury a very cool Pokemon and from the original 150 as well So it's got the bonus points there and finally before we get into today's games We're gonna activate our legend maker now This could be pretty tricky because we've got two Pokemon that we can have selected from the wheel One of them will be selected to go out and the other one will be you know kept safe So I don't really know which one I prefer to keep because both evaltel and zernius have been doing such good work Let's go over to the wheel and see which one we're gonna lose this week. Oh, it's sad. It's sad It's evaltel. Okay. Um, I don't mind it too much I think because zernius gives us the ability to boost up. It's a fairy type as well It was kind of otherwise lacking so Evaltel, we've got the flying type now with dragonite, which gives us that ground immunity So it does help us out a bit. So we've got a select a new Restricted Pokemon. Let's go over to the wheel. Come on. Let's get something fantastic. Let's make up for it Let's see what the wheel throws out Every one of you are gonna be like it's a fix. It's a bit. It's swear down. It's not a fix Okay, we get primal ground on that is incredible. We've got zernius ground on Now if we're ever gonna get over 1500 we have to do it with these changes We've got one more change. We've got one more bonus button We'll activate that tomorrow to see what we get in place of something on our team We're gonna have to do a random switch out and then random switch in with the patreon button as well Remember that so we'll do that tomorrow get all these buttons activated, but going forward. We've got a pretty decent team Let's take a look at what we've got So we're gonna lose the oranguru get the luxe array lose the guard chomp get the dragonite Lucy Veltel get ground on. Here's the new team. It looks pretty decent to be honest I like the look of it. We still got mega binette. At least we haven't lost mega binette That's the one thing and purr ugly as well who've been doing so much work this week So the team is always revamped down in the description below. There's a road paste poker paste Let me know your thoughts on it. Do try it out if you like some fun Sure will be a lot of fun and today's episode is gonna be great fun Remember as well guys this week we are running a giveaway a little thanks to you as a community for supporting the channel We're giving away this lovely iHeart flinch flat p-cap to one of you lucky lucky viewers out there All you need to do is leave a comment and a like on any of the videos this week And you'll be entered into the draw which will be done on Monday next week So make sure if you do enter or leave a comment You tune into Monday's episode to see if you are one of the lucky people to get that hat posted straight out To yourself from myself, so The wheels always so stressful I feel stressed out now I need to just de-stress a minute just de-stress Absorb what we've done. I don't know if it's a good thing or a bad thing. I mean growdowns not bad Is it I mean it's probably one of the better Pokemon in the format. Let's select some music We're nearly at the 1500 mark as well. Please let this not backfire. Hopefully it doesn't take too long to find our first opponent today Let's celebrate with no cross my version two I'm excited to use dragonite though dragonite dragon dance. We've got tailwind there. It's got multi-scale So it is a bit of a beast obviously ground on We get really lucky because we lose one ground type we get the the the primal ground on in of a lapping there So that's really nice Obviously if not we could have still went with an earthquake set maybe on dragonite It would have been difficult to utilize though because we don't really have anything else flying or flirty that we can earthquake next to But see how this first team gets on we've got our first opponent of the day. So let's jump straight into team preview Okay, so first opponent today is running a team of Groudon, Lunala, Empolion, Neganadel, Togacus and the Lucario So it's quite a nice composition here. You've got the restricted combination of Groudon, Lunala You're gonna probably see more of a trick room theme, but there will be an underlying tailwind theme to this team So probably a dual mode. We can't underestimate either one Lunala If anything is probably gonna have trick room here to support the Groudon But again, Neganadel and the Togacus have access to tailwind to support pretty much everything as well as that Lunala You're gonna have the defined ability also on that Empolion Which does make it a bit of a risk for bringing Something like Luxoré that we would want to shut down the Groudon with to the match Now Luxoré can actually do a lot of work here in this match So it is something I'm really kind of looking at to say yeah We can do we can do some good work here with that Pokemon, but it's just getting it in and not activating that Empolion's ability Okay, I think we want Perugly It's fake out Mon, let's go Xerneas Let's go Luxoré Do we want Groudon or do we want Dragonite? Because Dragonite could be pretty decent here. I think Let's go Dragonite. Let's bring it I feel like I've just rushed that team preview. Pokemon about the other team fought too much That's what I don't blame it on that. I can't blame it on that. I don't know Probably needed Groudon here That definitely needed Groudon here, I think we might be alright. We might be alright. I don't know So we can do Lunala Lucario Maybe we do have We have changed the setup on Perugly So we do have access to a dark type attack now If this is mega Lucario, it does put on a lot of pressure on both both Pokemon we got out on the field right now We can fake the Lucario out, of course But we can also get Luxoré onto the field as well And get an Intimidate off which might be Quite good. I don't know if we won't do that just yet though We can go fake out into the Lucario. I mean it might not even mega evolve That's the thing it might not mega evolve and if it does have inner focus where we might be better off Just bringing Luxoré in and just protecting with Xernius and just scouting out what my opponents going to do off and rushing in and Loosing too quickly. I think that could be Something not so good Luxoré we have put the assault vest on it. So It will be able to take special attacks a little bit better than some of the other options that we've got on the team. Lucario is revealing that it is Mega Lucario. The Intimidate probably is helping out quite a bit here. I'm just kind of kicking myself that we didn't go for the fake out. Oh wow, yeah. Meteor Mash and Tailwind. Okay, so there's a speed control.  It might be the best thing to do to break the Shadow Shield on the Lunala. Do we bring in Dragonite? Or do we just attack? Cos then you'll probably take a Meteor Mash from the Lucario. But Dragonite feels like good fodder at the minute to just come in and take a potential Meteor Mash and maybe the double up from the Lunala as well. But the Lunala might, I don't know, do you toggle it down? Double into the Xenius? Probably. Are you kidding? Lucario gets a speed boost. We're going to see the Z-Moon from the Lunala now. We're going to have to cut this obviously because it's copyright. I just feel like Groudon would have been the better call here. Okay, so we'll be right back when this connects. Okay, there's a Z-Move into Luxury. We should take this with our Assault Vestal. It's a strong Z-Move, but man, yeah, it's still doing too much damage. We do get the Snarl off. Not really going to help too much against the Lucario, of course, but we do get that attack onto the Lunala. I think what we can maybe try and do now is shuffle around this Intimidate because we really need to get the Lucario minus one. It is neutral at the minute. I'm going to bring in Pyrogly, and I'm going to try and get the Tailwind off with Dragonite. A multi-scale has a boost now. But I think to get rid of the Dragonite, you probably have to double into it because I think we'll take an attack from Lucario and definitely an attack from Lunala here. So I feel confident unless you double in on the Dragonite, we should get our Tailwind up, which puts us in a way better position going forward. 100%. So let's get Pyrogly onto the field. Meteor Mash coming out. We're going to be Dragonite. We take it just about, and there's the Moonlight Beast, and we get the Tailwind. Man, things looking a little bit better for us right now. Okay, so we can fake out the Lucario. And did we just Dragonclaw the Lunala? Just to get some damage onto it. Yeah, because Xernius can come in and totally wreck the Lucario. We've got Throat Chop to potentially take down that Lunala the next turn once their Tailwind runs out, which is what we kind of want. If we can get the Dragonclaw into Lunala, that'll be ideal. But I don't now. We're not going to be able to. We are going to. That Tailwind does Pitter Pitter Pitter out. So, it's just tough with that Lucario. Now, does the Lucario protect here and the Lunala go for a Tailwind? That would be my best bet. Which makes me think, do we just go for the Lunala with the Z-Move and bring in Luxury once again. I think it might be better doing that. So, let's bring in Luxury. Let's go for the Z-Move last into Lunala to try and get rid of it. I'm going to say the Lucario protects here. Because I think it's too easy a target for us to pick up the knockout. And even if it goes for a Meteor Mash, at least getting the Intimidate onto it now will put it down to minus one again. So we should be in a better place to take it. I feel still like this game is slowly slipping away from us though. I think the Groudon was definitely needed in this match. We probably made a bit of a mistake by not bringing it. But there's nothing we can do now. We can just play to what we've got. We do get Luxury back onto the field though. Getting that Intimidate, which is so valuable. We just need that Lucario to protect. Withdraws, so that's... Yeah, I mean, that's fine. I can cope with that. Groudon's going to be real difficult to deal with though. And I don't... Yeah, it's going to be extremely difficult to deal with. We are going to be able to get rid of the Lunala unless it protects here. But I would imagine it probably tries to go for the Tailwind. Yeah, no, it protects. So this will be more than enough to get the Lunala. So there's one Pokemon down. Yeah, the Groudon's going to be so difficult for us to deal with here. In hindsight as well, we could have actually went for probably the Zgeomancy as well here, which might have been better for us in the long run. Potentially. We did get rid of the Lunala though. I don't really feel like the Luxury has got too much it can do to the Groudon though. Lucario coming back onto the field. Now the Lucario probably protects here. We've got two... Oh, this is our last turn, the Tailwind. Hmm. We could bring in Pyrogly and just protect Zernius, expecting Lucario to protect here. What does it protect? I mean, we didn't target the Lucario last time, so my opponent might get cheeky and think, well, we could just attack it. But then... Yeah, let's do it. Let's attack. Let's Moonblast. Moonblast, this could be the downfall of us, but I think if I'm my opponent and might get cheeky and think, well, we could actually... We should probably, yeah, get the Lucario, so we actually do get it. Okay, so all not lost just yet. Let's see if it's a Precipice Blades or a Fire Punch. Precipice Blades does connect. Zernius bulky enough to take at least another one to two. But it depends what my opponent's last Pokemon is for sure. Let's see, what have they got? It's Naganadel.  Then we can fake out Naganadel and Moonblast it. But I just don't think we've got enough to take down the Groudon at this point, which is the third thing. Yeah, I just think our selection was just not correct. Forcing the Dragonite. It kind of did a job, but just not the job we needed to. So we're getting a little bit punished for that, which is not ideal. But we'll see. Ah, yeah, protecting. That makes things even worse. Yeah. No protect from the Groudon. It's a nice play for my opponent. I mean, even if we get this, I still don't think we'll be able to do very much. We do avoid the Precipice Blades here, but the Naganadel is going to be able to pick up the knockout on two zonis pretty easily this next turn anyway. I think in hindsight, if we went for the ZG Mancy, it probably would have been a better call at the time rather than getting the Lunara. But it's always... It's always hindsight. It's always a beautiful thing, isn't it? Sometimes. Oh, we're going to take a loss, I think. Yes, indeed, sir. Right. What have we got? What can we do? Wonder how much an ice fang I'll do to an Naganadel. We've got to rely on a Precipice Blades miss. On our Luxury, of course, as well. And hopefully, like, I guess we'll probably need a crit on the Naganadel if it's not sashed, which it likely is, I'd imagine. So let's see. Naganadel's Ludge Bomb. Into the Protect. Precipice Blades. Fire Punch. Oh, it's into Luxury. So, yeah, it's going to be more than enough. And that's game over. Game set and match. We'll give my opponent all the glory, though. We'll not forfeit. We'll let them get the Kill of Low, and we'll see what we can do with the Moon Blast into Naganadel. Now, if they're cheeky, they protect Naganadel and go Fire Punch into Xernius. But I don't know if you really need to do that, do you? You probably don't need to do that at this point. Sludge Bomb. Like I say, it will be enough. It should be. Yeah, okay. So, very good game to my opponent. A little bit sad that we switched things up and it hasn't really went away. But, like I say, I think the big problem there was not bringing our own Groudon to this match. If we had our own Groudon, we have a way to hit Lucario. We have a way to hit Groudon. We have a way to hit Naganadel. It's a massive oversight on our side of things, my side of things. So, no one to blame but ourselves. But all we can do is come back from that. We're not going to let it get us down. We've got potentially three matches, maybe four, depending on times and things left. So, let's continue on. I think it's enough to actually get to 1,500 over 1,500. So, we're sitting on a rating of 1449. Let's get some inspiration. Let's go across my version two. I know I always put it on, but it's times like this where we need it. We've got Roy, I, or Roy the First, whichever. Let's get into team preview and see what we can do here. Okay, so we've got a Ryoga team, Kyoga, Ryquaza, Incineroar, Landerous, the Gengar, and the Whimsicott. So, double mega obviously going to be between the Ryquaza and the Gengar. Montlain to probably, well, I think you probably go down a route of mega Gengar and then utilize the Ryquaza just as a regular Pokemon going forward. Do I want to bring? I think Perugly. Luxury is kind of appealing here to be honest because just with its Assault Vest, it's Intimidate as well. It can really disrupt a lot of what my opponent's trying to do. I think we definitely need our Groudon, for sure. We could go by Net as well. And then Xernius for sure in the back. I feel a little bit vulnerable though with Xernius without this... without the pile herb. Maybe we need to put that back on but I feel like we can't change it right in the middle of an episode. Although it would be good. Although we've got to stick with our Z-Move, I think. Stick with the Z-Move. Let's see how we can get on. Just not got a tilt. Not got a tilt. Whimsicott Kyoga coming out from my opponent. Which is fine. You're going to see a Tailwind for sure from the Whimsicott. I think that's what I would expect from the Winnie. I probably want to try and prevent that Tailwind if I can and attack into the Kyoga. Yeah. I think that's the best idea potentially going forward. I don't know if he's Snarl. Are we going to get more out of a Snarl or more out of a Wild Charge? Probably more out of a Wild Charge. It would put the Kyoga in range for a gig of impact the next turn. But it could also just go for a Protect here. If it protects, yeah. It does protect this turn. We've got to watch out for an Encore as well. This next turn from the the Whimsicott. But we do have a pretty seamless switch into Groudon. Which we can do. I think we probably want to do now. And do we go Wild Charge? It depends on the build of the Kyoga as well. If the Kyoga is not super bulky, then then a Wild Charge will potentially take it down. We'll get Groudon in. This is risky because if the Whimsicott switches out for the Requaza, I don't think it is because it will outspeed probably or should outspeed probably. So it would have switched out first. I mean getting the Kyoga now would be pretty big for us. Okay. The Kyoga is going to switch out. Going to see. That's a really nice switch from my opponent. In all honesty. That's a really nice switch. Yeah. And there's a tailwind. This mixing is pretty awkward for us. Definitely pretty awkward. Right. Let's protect Groudon. We have to really bring in pretty ugly. For Luxury, we can't keep either of these Pokemon out on the field. Especially in front of the Landerous. Threatening these ground type attacks. If we can cycle intimidate. This is, this is difficult now I think. This is where a Dragonite would have been good for the tailwind. But again. Let's see what my opponent goes for. Is he on call, fails and then hits quick. Okay. So you're going to hit your own Whimsicott. It does reveal that it has got on the corner as well. Probably taking some big damage there. Groudon at least not taking any damage. The thing we could potentially do here is go for an eruption. Fake out into the Landerous. It's risky though because we could potentially see the Kyogre coming and then we would be in a lot of trouble. And even if we get the fake out eruption onto the Landerous. We're giving the Kyogre a free switch in the next turn which still puts us in a little bit of a tricky position. But again. Not the worst I don't think. I'm going to go for for it. I'm going to go for it. I'm going to go for the fake out into the Landerous and eruption. Try and pull it off. I don't know. We do actually get it. What? This is crazy. On call. Oh we don't get it because of the on call. Okay. Now we are in trouble. Okay. Let's protect Groudon because that's all we can do. We'll definitely get a protect off here. And then we bring in Luxoray. We'll get an Intimidate off. Which will be useful. And we might have been better off just sacking per ugly there. At the same time we'll kind of wait in a way the tailwind turns. How I missy Veltel. In times like this. Is it another earthquake? Luxoray should take this.  Okay. What's this? The Whimsicott's got a berry. Man. What is this? What is this? Tailwind pit us out. Okay. Groudon can't really do anything. I think if we switch in Xerneas and switch in per ugly. Yeah. We've got to do it. We'll probably lose per ugly on the switching. We need to reset this. It's on cold all. And try and preserve our Intimidate. I guess it's like our only way to neuter this Landerous as well. We've probably seen other tailwind earthquake here. At least Xerneas has kind of taken that pretty well. It's taken it amazingly well. I guess Luxor is the one that we have to bring in, get another Intimidate onto this Landerous. And it will allow us to be in a decent position to start throwing out damage onto their side of the field at least. I don't know if we want a ZG here. We could just Dazzling Gleam and then bring in Groudon. It'd be nice if we saw the Landerous switch but we're not obviously going to see that now. They would have even switched out. You've got to think that the Rayquaza and the Kyogre are in the back so it makes it even more difficult. Going for a taunt and that too much Landerous going for another earthquake. This combined with the Dazzling Gleam will get that Whimsicott. Groudon taking that. It's not so bad. I guess the problem is now that we can't protect with Zernius. Which makes things even more difficult because if we could protect then we can switch Groudon out. Sack Lux Array. But we can't really do that. We have to have Groudon as our last Pokemon which we can't. This is really frustrating. I mean we could go for the ZG so you get at least a plus one across the board. But this is after taking a waterspout I just don't think we can do that. Just try it. I try to protect. The best thing we can do is switch in Lux Array. Get the Landerous down too. Minus three will sack probably both Pokemon here though unfortunately. We're still going to expend another turn in the neck. The following turn we're going for the Geomancy that we can't go for because we're taunted. We have a little bit of a lifeline that Origin plus missing. That's pretty big for us. Might have been better going for. I don't know. I don't really know. The Request is definitely in the back. It comes in at extreme speed range like Zernius is going to be in. Regardless here. And I think the problem with the next turn is that we have to expend a turn so that Rare gets a free switch in for the Landerous. The Kyogre probably just Origin pluses again. Unless you haven't bought the Rare which is crazy. But there's no way my opponent hasn't bought the Rare I don't think. It'd be great if it just turned into like a one turn boost so we could just Moonblast here. The Precious Blades are the re-eruption. Probably Precious Blades into the Kyogre just to try and get damage off onto it. Yeah. Here comes the Ray. We're fully in extreme speed territory from the Zernius. Origin Pulse. Yeah. And that's it. That's an unfortunate end to the episode. So 5 wins 3 losses. That 1500 mark is seemingly slipping away from us which is really unfortunate. Okay. Let's not got too downbeat about it. We've got one more bonus button that we can activate. Hopefully that will be the one that flips everything around and we can make things better tomorrow with that switch. So we're going to end it there guys. Thank you so much for tuning in. Remember to get your comments in, likes in to get into the draw for this hat. I'm going to go away. Consol myself after today's two losses after the start of the week we had which was incredible. The bonus buttons backfired completely but we're not going to let it get us down. We're going to finish positive tomorrow. We're going to come back, finish the week up in style. So do tune in for tomorrow's episode. Have a great rest of your day, whatever you're up to and I'll see you all for the next one guys. Until then take care and bye bye.


Hello and welcome to the session. In this session we discussed the following question which says, proof that if a line is drawn parallel to one side of a triangle to intersect the other two sides in distinct points, the other two sides are divided in the same ratio. Using the above result, do the following. In the given figure, DE is parallel to BC and BD is equal to CE, proof that triangle ABC is an isosceles triangle. Let's recall one fact according to which we have triangles on the same base on equal basis and between the same panels are equal in area. This is the key idea to be used in this question. Let's proceed with the solution now. Consider this figure. We are given a triangle ABC in which we have DE is parallel to BC. That is we are given that a line is drawn parallel to one side of a triangle to intersect the other two sides in distinct points and we need to prove that the other two sides are divided in the same ratio. That is we have to prove AD upon DB is equal to AE upon EC. First of all, we will join BE and CD. Next we draw DM perpendicular to AC, EN perpendicular to AB. So we have EN perpendicular to AB and DM perpendicular to AC. Next we consider the area of the triangle ADE. This is equal to half into base which is AD into height that is EN. In the same way we have area of the triangle BDE is equal to half into base that is BD into height that is EN. Area of triangle ADE can also be written as half into base. We can take the base now as AE into height that is DM. Then the area of triangle DEC is equal to half into base which is EC into height that is DM. Next we have area of triangle ADE upon area of triangle BDE is equal to half into AD into EN. This hole upon half into BD into EN. Now half half cancels EN EN cancels and this is equal to AD upon BD. That is area of triangle ADE upon area of triangle BDE is equal to AD upon BD. Let this be 1. Next we have area of triangle ADE upon the area of triangle DEC is equal to half into AE into DM. Hold upon half into EC into DM. Half half cancels DM DM cancels and this is equal to AE upon EC that is we have area of triangle ADE upon area of triangle DEC is equal to AE upon EC that this be 2. Now from the figure you can see that triangle BDE triangle DEC are on the same base which is DE between the same parallels that is DE and BC as it is given in the question that DE is parallel to BC. Therefore we see that area of triangle BDE is equal to the area of triangle DEC according to the result stated in the key idea which says the triangles on the same base and between the same parallels are equal in area. Now since area of triangles BDE and DEC are equal therefore from 1 and 2 we get that AD upon BD is equal to AE upon EC or you can say we have AD upon DB is equal to AE upon EC hence proved so we have proved the result. Now the other part of the question says that we are given a triangle ABC where we have DE is parallel to BC and BDE is equal to CE now we have to prove that triangle ABC is an isosceles triangle let's see the proof now triangle ABC DE is parallel to BC so using the above result we have AD upon BDE is equal to AE upon EC we have used this result since we are given that a line is drawn parallel to the side BC and this line intersects the other two sides of the triangle ABC at distinct points D and E so the other two sides are divided in the same ratio thus we get this now since we are given that BD is equal to CE therefore we have AD upon CE is equal to AE upon EC or CE this means we get AD is equal to AE let this be 1 now we are given that BD is equal to EC let this be question 2 then adding equations 1 and 2 we get AD plus BD is equal to AE plus EC so from the figure we have AD plus BD is AB and AE plus EC is AC so we get AB is equal to AC this means that triangle ABC is an isosceles triangle this is what we were supposed to prove so hence proved this completes the session hope you have understood the solution of this question