I love standing between you guys and lunch that's awesome so I've already got the warnings flying so hopefully I don't go too long so in case you're like who the heck am I right this is my second DevOps days I did attend last year and I really loved it so I'm really excited that they actually brought me back to do a talk so who the heck am I my name is Angela Dugan I'm kind of all over Twitter and conferences and I thank you so I tend to speak at a lot of local events some personal things about me that you may know if you follow me on Twitter's I love Halloween I have chickens yes I live in Oak Park and we raise chickens and I have an awesome husband who supports me now this talk is on imposter syndrome and the reason I bring that up is because like you look at the bottom right and you see all these things that I do right so Microsoft MVP I've got all these certifications so you would think that I was like hey I'm a pretty smart person right like look at all this stuff that I've done look at all these cool things that I do but this is not necessarily how I see myself right so so how many people how many people in the room have at least heard of imposter syndrome and maybe you have an idea what it is so quite a few good good good there might be and hopefully there's more by the end of the talk so I don't necessarily expect everyone to raise their hand for this how many people are willing to admit that this is something they definitely feel not quite all the same hands but that's okay right and honestly that's actually more than I usually get when I do this talk which makes me really happy that people are there's not as big of a stigma around us I think they're there used to be and I think part of it is because so many people are starting to talk about it so again kind of all this stuff right and I think about like who do I feel like most days right and it's it's more like this right I feel like I feel like this person I feel like kind of a phony like somehow all those certifications and all those things that I do are just kind of a mask to hide how I really feel about about who I am and what I know and what I contribute and I used to work at Microsoft as you can imagine working at a place like that can be pretty daunting right you literally work with some of the smartest people on the planet and I remember I'd been there for probably four or five years and I work with someone named Scott Hansen but not everyone's gonna know who that is I think he's a little more popular in the dev circles but he's pretty amazing right he's one of those people that can get up on a stage totally own it he's smart he's funny he somehow manages to be cool and work at Microsoft so he's he's kind of the unicorn right so I was reading his blog and I ran across this post and I was like huh really Scott really and I started to read through it and essentially someone had written had written to him and said hey you know I'm having kind of a crisis of conscience here I feel like I'm stuck I feel like I can't I can't push through and kind of make progress in my career and I don't know what to do and that's when my ears perked up because I was like dude that is totally me and I feel like that describes a lot of people at some point in their career maybe not all the time it's certainly at some point and then he responded so so the guy kind of goes through like here's all my qualifications right that laundry list of everything they've done right CS degrees and worked at Microsoft and blah blah blah and Scott's response was pretty amazing right like you're not alone I'm like what seriously like really and it actually was was kind of comforting that it wasn't just me that someone who projects all this charisma and confidence also has those feelings sometimes too and so you know he specifically called out this thing called imposter syndrome and I got really curious I started looking it up now this is not meant to be a psychology talk I have a CS degree I don't have a degree in psychology I'm not an expert on any of these by any means but I was definitely curious I wanted to dig into it a little more and I'd find these websites where they had quizzes right you know all those quizzes you take on the internet totally legit behavioral science stuff right totally but but some of these things really did start to hit home right and I started seeing some questions like you know hey when people praise you for things you've accomplished you're like oh man don't say that because now you're gonna expect me to do better next time right like you're constantly kind of building up this this image that you have to live up to right I'm afraid that that people are gonna find out I'm not really as capable as they think I am right I really do a project or task as well as I'd like to do it right this goes beyond perfectionism but someone this morning used a quote that if I do the longer version of this talk I often bring up which is that perfection is the enemy of good right sometimes we get in these you know that they talk about analysis paralysis and that's part of it you're so concerned with things being perfect that you spend all this time you don't really focus on on just being good and then comparing yourselves to others right that can be really toxic depending on where you're working imagine working at a place like Microsoft and constantly comparing yourself to everyone around you it gets really hard to feel good about yourself and to feel like like you're really enough and I feel like that's the word that comes up a lot when you hear about imposter syndrome is it's feeling like you're not enough somehow so then I found some even more scientific charts and diagrams from Buzzfeed but they're pretty amazing and I wanted to share them because if you're still sitting there going yeah I'm not buying this I really don't know that this this affects me or that this is something that's even relevant to what we do here but this is just a few of them that I picked out that I thought were particularly good right so think about when you receive a compliment what is your immediate response right is it that's probably someone who's lying to me or they're just being nice they have no idea what they're talking about like my mom is gonna be like oh honey that imposter syndrome talk was so good cuz she's my mom right and and she does she does that kind of stuff and you're always like oh she doesn't know she's not technology right think about getting thrown into a new job right be a consultant I feel like you're kind of if this is how you feel this can almost feel like masochism right because you're constantly being thrown into new jobs so that first day how are you feeling right are you feeling like my boss is gonna realize this was a huge mistake sending me here I totally do not belong here right or maybe it's my boss is gonna realize it's a huge mistake I totally don't belong here right thoughts you have whenever you need to succeed at a job right that's that's the killer like hey we're putting you on this project cuz it needs to go really well like this needs to be a home run and you're like oh jeez right and you start thinking well fuck shit maybe you'd not take it down a notch right and maybe the third one is well that was fun while it lasted cuz I am totally losing my job after this right like you know it I've seen enough people laughing that I have to assume that some of this resonates right maybe you didn't call it that maybe you're like oh I'm posture syndrome that sounds like something you need medication for right that is totally not me right it's it's not though this isn't a disease right this isn't something that you need to be to be cured of right let's talk just about a couple more and then we're gonna move on cuz some of these were just too good to not include right things you beat yourself up for and I know for me as someone who does a lot of conference speaking I am constantly beating myself up about stuff and these are really true for me right so if you kind of look at that that smallest slice right things you beat yourself up for stuff completely out of your control right like it was too cold in the room the projection system didn't work I know we're getting a lot of feedback on the mic stuff that you really you can't do anything about we look at that slightly bigger piece stuff everyone else has literally already forgotten about this happens to be all the time where I'm like yeah I remember that one talk I gave like 18 years ago on source control and I kept it like nobody remembers that but you right but you'll beat yourself up because it wasn't perfect and then the biggest one stuff no one else even noticed right but it's in your little Rolodex right of things that you're like oh man that was awful so bad and like no one even noticed so how you tend to feel about yourself right a hot crazy truck fire mess of a person who disappoints important people right and again I'm not saying I feel like this all the time but this definitely crops up right it's one of those things that kind of comes up and nags at me and and really the reality of this is that everybody thinks you're just cool and fine right you're the one you've kind of internalized this and you're feeling it and you might be like hey I don't understand like why are you guys why are you even saying this you're up there giving this talk right clearly you don't have issues with confidence and blah blah blah anyone who knows me can tell you that is totally not true and I was panicking about this talk until the minute I got up here because I'm so afraid that I'm going to disappoint you guys hopefully I've not so far so types of people who can have imposter syndrome literally anybody in this room right it could be anybody I used to think well it must be just certain people in certain types of roles or or you know things like that so those those four statements that I talked about earlier disappointing people I never do things good enough that was actually came from a test again super scientific test but it was still interesting and so I was really curious because I'm like well how bad is my imposter syndrome you know like so I took the test there was something like 40 questions if you're interested actually have a link to it in the presentation that you guys can grab if you want to take it and see how you do and so I'm all about grades like hey how did I do did I get an A I don't know what that means is a high score good and so I took the test and it essentially kind of broke down to a certain certain ranges right and essentially 61 to 80 was the second to highest bucket right and it was responding you know the people frequently have imposter syndrome they weren't quite in the top notch but they were close right and I took the score and I got a 77 and I'm like I don't know how is that this I can see you right on the grading scale I don't know but then I was really curious because I was like well how does that stack up against how the people that I know have scored right and so I sent it around put on Facebook put it on Twitter I had a lot more responses in this but I just got lazy and didn't feel like putting more stuff on the slide but it essentially came down to like most of the people I know had struggled with it right so then I then I get kids honestly say like I don't feel alone anymore right this isn't something that I struggle with alone and something else that was interesting is it ranged all careers it ranged ages genders like the bold ones are women the non-bold ones are men I didn't really find any pattern right it seemed to be pretty pervasive and it was really interesting because just sending the quiz out you know I said hey I won't use your name so I'm not going to share any of that information and I started getting messages from people saying like just taking that quiz turned my stomach it made me so nervous and it made me anxious because it started making me remember things like about work right situations that have been bad and and I have to say like the same thing happened to me you know I started taking this quiz and I started kind of thinking about thinking back to things and I started to realize it's not necessarily just internal either right some of this is actually happening because of the environments we're in or because of the people that we work with and so specifically I think about things like you know when I did work at Microsoft I think because there were certain expectations that you literally did know everything you'd go to a client right they'd start peppering you with questions I wouldn't necessarily know all the answers because I'm not like you know I'm not Wikipedia here and every once in a while I would get that bad feedback right like how I don't bring Angela back she doesn't know anything and I'm like I spent three hours answering questions until I finally ran out of stuff that I could tell you but those are the types of things that start to kind of trigger it in people right not everyone is going to internalize things but that's part of the reason I bring it up when I first started talking about imposter syndrome it was about a year and a half ago I kind of mostly focused internally right like how do we see it in ourselves and how do we not fix it right because again I don't think it's something you need to fix but how do we internally kind of deal with it and handle it and then I started to realize it's just as much about the people around us right and how you can kind of recognize how it affects people and the reason this is a big deal is because I started looking up actual scientific stats and I have some some references in here if you're curious there's some actual stats on this right where they kind of talked to people and just said hey how often are you feeling these things and you know I think about even my last DevOps stage so last year was my first year here and I remember I remember walking in and feeling like okay I haven't really written code in a while I'm really more of kind of a process person right now like I do agile coaching I do I do like if I do any kind of implementation stuff it's with TFS and no one here is talking about this stuff and I just felt like who the heck am I like why would anyone want me even here I felt like I did not belong and yet I started sitting through the talks and I was like holy cow these talks are absolutely they're about culture and they're not just about you know all the DevOps tools and things I don't necessarily understand and I remember when the open spaces thing came up I was like huh I've given this imposter syndrome talk like once maybe I'll do it as an open space because that's less intimidating right that's not too bad like probably no one will show up so it'll be fine that's always my thought no one will show up it'll be fine so I so I pitched the open space and and it got accepted I was like oh crap now I actually have to do it right and so I was like that's fine that's not many people are gonna show up there's a lot of other really good ones no one will come to mind and we ran out of chairs I was so overwhelmed I was like I assumed that I was gonna come to the DevOps conference and everyone's just gonna be like we're totally confident everybody knows exactly what they're doing because I think that's the assumption I take with me everywhere I go right like if you think about a bubble of what everybody knows I always feel like I'm like way over here with this tiny little bubble and everyone else in the world has got this huge bubble over here nowhere related to mine and I couldn't possibly have anything to offer and having that experience last year was pretty amazing and it's backed up by the stats which is that you know from what people are seeing right there's no exact numbers and people argue left and right as to what the reality is here but up to 70% of people have felt these effects and if you think about what you saw on those slides think about how stifling those effects could be right you could have if you think about 70% of your people if you have 10 people on your team there's a good chance that you know seven of the 10 people at some point while you're working on a project while you're sitting in meetings maybe while you're out having lunch have felt like they're not enough to really be able to contribute they don't feel like they're worthy of speaking up and kind of sharing their opinions and that can be kind of a scary thing right this the whole point right one of my favorite things that comes out of it has come out of these DevOps conferences is it's all about collaboration how do we improve and how do we work together to build on each other's strengths but that kind of assumes that everyone is openly sharing right and that everyone is willing to participate and bring everything that they know to the table they're not afraid of disappointing people they're not afraid of having negative feedback if they say the wrong thing if they throw out a crazy idea that maybe really isn't so crazy but it just doesn't align with what people want to work on and then you think about it in general right and I mean I think about I think about when I started back in you know the early 90s right back in college I was doing mainframe stuff I wasn't even doing client server and I think about how much things have changed since then and I feel like it just keeps expanding faster and faster every single year you think about the new types of tools that come up the new processes that come up like you know several years ago if someone would have described a container to me and I would have been like that I what that's not even a thing like you can't do that like you think about the amazing things that we can do but you think about how much you really need to grasp sometimes to understand those big pictures it can be pretty you can be pretty daunting right and then you start to wonder like how can you not make mistakes right and I feel like it's kind of a good segue from the first few speakers that we've had because everybody's brought that up like you're gonna make mistakes right it's not going to be perfect all that really matters is that you're working you're learning and you're trying to get better right who's gonna argue with this guy right yeah I fell in yield aggressive Tyson on Twitter but this was brilliant right if you never make mistakes then you're not on the frontier of discovery for that is where mistakes are made all the time right we really only get those amazing solutions when we do crazy stuff and it either doesn't work and we're like well we're not doing that again or we go you know that didn't work but maybe if we do this other thing right we'll have this awesome solution but you need to be in environment where people feel like they can actually make those mistakes right and the biggest kind of I think crippler there is is absolutely fear right fear can be pervasive not everyone feels imposter syndrome levels of fear but it's absolutely something that you might notice on your teams right as an agile coach that's absolutely something I have to look for right if I see that something is not working on a team sometimes it's well I can see the issue is we have a couple people on the team that don't feel like they can contribute and you have to kind of dig into that and figure out what is it right is it the culture is it maybe I like to say PTSD from a previous client or for a previous team right where they don't feel like they can share they don't feel like they can take risks so yeah fear is absolutely pervasive in IT and it will kill collaboration every time right how can you really truly be collaborative that people are afraid to take those risks and if they're afraid to kind of open up and sometimes be vulnerable right I feel like that's a that just makes me feel weird to say that word right you think about like I have to possibly put myself out there and say something that might be perceived as dumb or brilliant right you have to be you know not only willing to do that but have a team that will support you in doing that think about anything that we talked about trying out new tools trying out new processes right adopting you know scrum on the team one of the things about it is man it starts to shine a light on dysfunctions so fast you start finding out like are there people on the team who discourage people from taking risks right are there people who you know maybe inadvertently discourage people from making mistakes by calling them out in meetings or just joking right I get that all the time like oh that was so dumb right they're totally kidding but other people on the team might see that go yeah I'm not gonna say anything because I don't want that guy making fun of me right so you have to start thinking about those types of things so the talk isn't really about necessarily your own imposter syndrome it's also about looking at your team and making sure you're recognizing it in others because again it can kill all of these amazing plans that that you can make in terms of how to improve and and how to change things within your culture some of you guys may remember this this was actually kind of a pretty big deal not just on Twitter obviously spend a lot of time on Twitter but you know it's been a big thing in the open source community as well right people do something like you know they do a pull request into some github project and someone tears them a new ass because they're new right they don't know maybe this is the first time they've ever done it and they were all stoked and they were pumped and they have great ideas but it wasn't the the most elegant solution and someone literally just quashed their their passion to do this maybe they're not gonna do it anymore right and it's easy to be that person that goes oh I worked so hard and you just screwed something up did we really not all do that at some point I mean I think about myself that my first year out of college I thought I knew everything right right my classic ASP and my VB6 com like yeah that was I'm sure if I look back at that stuff it was so awful but I thought that I was amazing and I knew everything it was almost like I didn't know enough to know that I didn't know anything right and so you have to kind of be empathetic to the people who are new to the community because you're setting the stage for them right for how they interact with others as well you know so what are we all what are we so afraid of right we're afraid of making mistakes we're afraid of having the wrong answer right we're afraid of people calling us out humiliating us making us making us feel you know bad about not being perfect so we also have to be careful that we're not stoking the fires for other people so I think this might actually be my last Twitter thing because again I love this one I thought this one was so good is that often we tend to forget about the people who are watching us as well right because whether or not you realize it people are watching you right new guys on the team interns other people right they're kind of watching you going okay so that's what we do when someone screws up that's what we do when people have good ideas you also have to think about how you're setting examples right and and honestly one of the things I normally go to and and I cut it and now I'm kind of regretting cutting it so I'm just gonna talk about it is so there's another conference that I work at called that conference and we have a kids track and I think about how amazing it is that we had something like 13 or 14 girls under the age of 14 teaching classes at that conference right they haven't even learned right that girls don't do it or things like that like no one has said those things to them yet it doesn't happen that often but it only needs to happen once for someone to kind of go okay maybe this isn't what I should be doing and I think about the fact that they've always had such great examples right they come to this conference every year they get this great experience right we give them we give them applause we encourage them and then they come back the next year and they keep doing it right and so even if you don't think about your coworkers think about your kids your friends kids like we also want to make sure we're setting a good example for them as well so that's giving us an opportunity right to kind of be heroes right be good examples set a good stage make sure that you're welcoming new people to the team and helping people understand how they should act how they should treat each other right and help them kind of you know channel their powers for good right so I feel like this is kind of harkening back to to the first talk right so be a beginner be okay with other people being a beginner and not always knowing all the answers right be fearless right don't be afraid to share things right and if you get a response that isn't an appropriate one don't let that stuff slide right don't let don't let that slide with if you see someone else doing it as well right so hey come on we all screw up this is how we learn be passionate right the whole again the whole idea of discoveries we have to have that passion and at least for me I feel like my imposter syndrome I kind of use it to fuel my passion I always feel like well I don't want to walk in the room and disappoint I'm never gonna know everything but I'm gonna work as hard as I can to learn the relevant things and it pushes me where other people might just give up right and so for me I actually see it as a positive thing but I do have to be careful to make sure that it doesn't overwhelm me right and and last but not least right if you're gonna be anything right be excellent to each other that's the lesson here right it's all about making sure that we're being awesome to our team members that we're fostering collaboration and that we're doing the things that will really help our teams to thrive and improve and grow and that's it so thank you


Five things that make the narcissist return to you. Sometimes the narcissist will return to you. They will hoover you. They will come back. Especially if one or more of these things are happening. One, if you are still susceptible to their manipulation. If you are still susceptible to the narcissist's manipulation, They will return to you. If you still have hope. If you have a feeling of expectation or desire. For a particular thing to happen. If you still trust them. If you still believe that things will change or improve. They will sense this. They will sense that you are still attached to them. And this will make them want to return to you. They will return to you because they know that you still believe in them. They know that you would be willing to give them another chance. If the narcissist knows that you're no longer susceptible to their manipulation. They're not going to return to you. They're not going to put themselves in a position where they could be rejected. Where they could be humiliated. The narcissist wants to be around people who believe in their lies and false promises. People who believe in their future faking. They don't want to be around people who don't believe in them. It's your belief that gives them the power to take advantage of you. They can't manipulate you if you don't believe in anything they're saying or doing. Which is why they will only come back if you still believe. If you're still susceptible to their manipulation. Two.  The narcissist will only come back if they believe that you're still susceptible to their manipulation. And even if they do come back. It's not because they miss you. It's not because they love or care about you. Narcissists are self-absorbed and lack empathy. They only care about their own needs. And if they believe that you can fulfill those needs. They will return to you. Especially if you have recently received a lot of money. That will normally trigger a hoover from the narcissist. Narcissists love money. So they will definitely come back to try and get something out of you.   But after a while they get bored of doing it with the same person. It's too familiar and predictable. And if they haven't seen you for a while. That will be another reason why they will come back. But even then.  They don't even see you as a real person. You're just an object to them. You're just a tool that they use to pleasure themselves. And that's why it's so easy for them to leave you. That's why it's so easy for them to forget about you. Like you never existed. Because you're just an object.  And once they've used you for the purpose that they've assigned you to. You're discardable. You have no use to them after they've got what they wanted from you. Free. When you find someone else. When you find someone else. The narcissist will often return to you. Not because they want to be with you. But because they're jealous and insecure. They can't stand to see you being with someone else. But once they know that you're with someone else. They no longer look at you in the same way. They no longer see you as their property. As their primary source of supply. Now they feel as though they're trying to take you from someone else. Which means that they might treat you differently. They're no longer going to treat you as if you were their property. Now they're just going to be more open about using you. For whatever purpose they have assigned to you. Because narcissists really don't respect relationships. They just see it as though someone else is using you. And taking advantage of you. They're not going to take you as seriously as they once did. They're not going to be as attached to the outcome. But if they can take advantage of any arguments or disagreements. You're having with your new partner. They will. This is when the narcissist will return. A hero. Someone to save you from any arguments you might be having. Even things that may be a normal part of a relationship. Things that naturally occur. The narcissist will blow it up.  In an attempt to win you back. For when you break up with someone. If you break up with someone. This is something the narcissist will take advantage of. Especially if they are the cause of the breakup. Because you're likely to be in a vulnerable place. So it will be much easier for them to exploit you. For them to get what they weren't from you. Narcissists love to leech off people. Who are in a vulnerable place. It's easy pick ins. They don't really like people who are strong and have firm boundaries. Because that would be a hindrance to what they're trying to accomplish. So they will be lurking somewhere. Waiting for you to break up. They see it as an opportunity for them to get in. But acting as though they're trying to help or support you. Acting as though they have your best interest in mind. When really they're just there to use you. They're just there to take advantage of you. While you're still hurt. While you're still vulnerable. Because they know at that moment. You would be willing to trust anyone. You would be willing to give them another chance. You would be willing to give them another chance. But they will only show you why trusting them is a big mistake. Five. When the narcissist gets bored of their new source. When the narcissist gets bored of their new source. They will either look for another source. Or hoover old sources. So there is a chance that they might come back to you. Especially if you were grade A supply. If you gave the narcissist whatever they wanted without resistance to lay-off obstruction. Of course they're going to come back to you. Because that's exactly what a narcissist looks for. When they target a new source. But rather than putting in the extra effort to groom someone new. If you're already preconditioned to be what they want you to be. They will return to you. The grass is always greener on the other side. They always see their current situation as less desirable. So if there was someone else. It's only a matter of time until they see the grass being greener without you. With you. It's like that the new source may have confronted them on their behaviour already. Maybe the narcissist has begun devaluing them. So they will be lucky for someone to replace them. When the narcissist gets bored of their new source. That is when they are likely to return to you. It really depends on how susceptible their new source is to their manipulation. If the new source is a doormat. And does whatever the narcissist wants them to do. Then the narcissist is unlikely to leave anytime soon.  They need someone that they can trick and deceive. Someone to believe in them. And if the new source is foolish enough to believe in them. Then why would they ever leave?  By giving the narcissist another chance. Be wise. Learn from your experience, knowledge and good judgement. Learn from the mistakes that the new source has made. So that you can make healthier decisions. And live a better life without the narcissist. Thank you for watching. I hope this video wears out of you. Please like, comment, share and subscribe. Click the bell icon to receive notifications for my future videos. Check out the new Narc Survivor website at www.narcsurvivor.co.uk Where you can read my blog posts, book coaching sessions and join a support forum. If you would like to donate, my PayPal link is in the video description. Coaching Inquiries, you can email me at coachedatnarcsurvivor.co.uk Thank you for watching and I'll talk to you soon.


Alright. I really don't like talking about things like that. Alright, here we go. A clean, hierarchical, model, view, controller, pattern for Android. Also dependency injection and Kotlin and basically too much stuff for a single talk and also terrible, terrible title. Welcome to progress. Alright. I'll start with a warning. There's too much stuff in here for a single talk. This is a project that I was playing with for over like a week and I basically started testing out too many new things at once and they all got embedded in here. I was hoping to be able to clean it up a bit, but it wasn't the case. So, warning number two. This may contain a lot of Android stuff but not everyone in the audience is so familiar with it. So, any questions, please ask. But the general pattern here is actually applicable to iOS or automobile devices and probably beyond that as well. Maming is hard. Yes. I went with hierarchical, model, view, controller because after going through a gazillion variations on NBC, this kind of fits. Apparently this is a copy of something that was called pack which is presenter abstraction something and never mind. Let's not focus too much on the names of stuff but I'm open to suggestions on better naming for a lot of what comes next. So, to start, this is a to-do app to frontend for the standard to-do application and I'll go through some of the tools and frameworks I used and especially the ones that will be mentioned and are more or less important later on. Also, to get some of the terminology out of the way. All right. First, I use Kotlin to write this app. So, I might ask why did I choose to use Kotlin? I answer, why are you still using Java? There's no point in doing this. I don't think I need to sell Kotlin itself. You can use it side-by-side with any other Java class in your project. Just take one of your classes, convert to Kotlin and you can figure out the rest. That said, if you do have questions about the code that isn't Kotlin, you just ask me, save us the Android stuff. Dagger 2. Dagger is dependency injection framework. Well, who here is not familiar with dependency injection? All right. Okay. So, I'll go over a lot more in detail about this later because it's an important part of having a clean project and all that stuff. But in terms of terminology, if you see inject along the code, especially it's an annotation, it means that whatever that field is, whatever that object is, it's going to appear by magic. Somebody is going to put it there. It's not really magic. It's completely deterministic, which is important. It's an important detail. Components are what dagger uses to provide dependencies. The important scopes will go more in detail about this. There's also a dagger thing. We're using reactive extensions. RxJava, in particular, because there's variations for many other languages. We're also using RxJava. In Android, there's a bunch of different libraries on this line. RxJava basically provides with asynchronous and event-based programming. The idea is that you have observables that emit events. This might be something like I started a network call and it comes back with a result and that gets emitted. This could be events like I click on a button and that gets emitted as an event. There are also subscribers, which is basically the action you'll take on the observable when an event gets emitted. A short example, because we've seen things like this a lot. Over here we have a method called notify near home. It takes in this parameter an observable of locations. This means that this locations variable will be or object will be emitting locations. It could be that I'm walking around with my phone, you know, I have the GPS on. Every time there's a switch and change the framework says, hey, here's a new location, here's where you are now. RxJava lets you do things like take this location, map it, figure out am I near my home? Is it near home? I'll map it to a boolean to the falls. I'd say only the changes from true to false, etc. I throttle first, which is kind of like debalancing and eventually I subscribe and say, whenever this happens, notify your near home. RxJava has a steep birthing curve, I'm not going to lie, but once you get used to it and to the names of some of the functions, actually that's you. Yes, nice laser pointer. It lets you do things that are succinct in language, especially for UI stuff that can help a lot. I'm using conductor. This is probably the least important thing in this talk. I mention it because people are familiar with Android. This will look very strange to them. Conductor is a small framework that kind of aims to replace fragments in Android. Android has these things that are called activities, which is basically a screen on your phone and fragments which are sections of views and they're both kind of plagued with very difficult lifecycle issues. Conductor is a framework that tries to abstract that out. View-based Android applications, they provide controllers which sit on a view on your view tree, and they control the subtree of that. There's also routers which basically are in charge of moving from one controller to the next or from one screen to the next on the application. Okay, the motivation for this whole thing. I've worked so far in seeing a fair number of Android projects. A lot of them are horror stories. A lot of them are not, but all in all they tend to end up being very messy. This happens actually with just about any kind of programming. You end up getting very messy stuff. But when you have something like a mobile project and your messiness starts affecting the performance of your app, that's particularly important when you have to run your app on a low-power device. These are the kind of places where you actually want to have very good control of what your application is doing. Also, testing apps on a mobile device is extremely hard, much more than other frameworks. A lot of the time because it's very tightly coupled with the mobile framework itself. In the case of Android, you run tests, you can run tests on the device so you have access to the full Android operating system. But if you really want to do fast unit tests, which is the only kind of test that you write over time because the other ones take too long, then you need to do things without having the framework. And mocking the framework out is not easy, especially because Android has these God objects, like the context, which does absolutely everything. And if your object has a dependency on a context, yeah, you're not going to be doing unit tests anytime soon. Integration tests are possible, where you just run the whole test on the device, where you open views and you click on things, but they tend to be slow and reliable, and at the end of the day it's not good testing. So, recently I worked on a project that was using this framework called PIRMBC, which attempts to separate these things properly. After this, I concluded that PIRMBC is a little bit outdated at this point. The Java implementation is not that good, but the idea behind it was very good. I tried to create something more modern using all these other tools. So, I started, I opened Android Studio and said, give me a new project, make it a master detail flow, because it's a to-do app, you're not going to have a list of to-dos, and I can see the details, it seems like it's not. And Android Studio gave me this. It's called to-do front-end, it doesn't have to do yet, but this is basically the vanilla app with a very, very minimal change of like one line of code here. It's a list in an activity that is called to-do list activity, and to be honest, the whole structure of this template project is a little bit weird, but let's start looking at what's going on here in the onCreate. So, onCreate, for those who don't know, is the callback the Android gives you to set up your view hierarchy, especially when the activity means set up the whole screen. Put the views there, and more often than not, do some bindings. At the beginning here, we say set content view, this is basically saying, I'm going to choose this view layout. It's in a different file, it doesn't matter. It gives me all these things. There's a mention of setting up the toolbar, which is putting the title up here. It looks weird, but that's just how it is. At the bottom, there's something more interesting. It says find view by ID, and it says if I have, basically it's saying, if I have this to-do detail container, then I'm working with a two pane application. This is because this template, when you run it on the tablet, is supposed to show the list on one side, and the details on another. This is like the master flow, master detail flow thing. So, this is actually not an usual pattern. Android has some smarts behind that, it'll, layouts can be overloaded to show different things on different cases. So, let's see. What's next? In middle here, however, we're setting up the floating action button. There's nothing too weird looking here. In fact, this is something that you'll see in almost any Android app. Don't pick a button, don't find it, and don't attach an un-click listener. So, one thing to observe here, even though it's very common, is if I want to unit test this activity, what's the next thing I need to do? Let's say I want to unit test, what happens when I click on the floating action button down here? You're dependency on a snack bar. Yes, I do. I have a dependency on a snack bar. It's worse than that. This is a static method call. There's not even a dependency being passed in, there's not even like an object that I can mock out. If I were to try to mock this in a test, I would have to do something like power mock. Right? Which, you know, does some really weird stuff with behind the scenes. And hey look, it's chained, it's make and then set action, and goodness. Even if I did go through the trouble of setting this up with a power mock, this is happening in middle of my onCreate. So basically, to set this binding, I need to make sure that everything on onCreate can be run. So I need to make sure that findViewById for the toolbar, for example, or for this to-do list also works. That findViewById, by the way, is a method on the activity. So to unitize the activity, I need to spy on the activity, and yeah. So... Exactly.  Except that get onCreateListener is not a method onView. You can only set them. You cannot retrieve them later. You could run instrumentation test. Starts up the whole thing, clicks the fab, and then I can look for something that looks like a snack bar that appears on screen. Yeah. Imagine if you have like a network dependency on this. This is also going to start hitting the network. Yeah, never mind. Next, the RecyclerView. RecyclerView is a fancy term for a list view in Android. That's it. Again, nothing too weird here. There's a circle. It's kind of strange, but never mind. Then says, RecyclerView setAdapter. Adapter is basically the data source for this view in Android. It's this one. We're creating a new adapter and passing it this dummy content items. Once again, this is not injected. So I have no way of knocking this out of the test. This adapter is actually an inner class that's further down this file. This inner class takes care of, for example, each one of these rows individually. So here, on BuyingViewHolder, ViewHolder is just the name of one of these rows. It sets some values, but it also has an un-click list now because when you click on it, it does something, right? Yeah. Now, if you thought that one was interesting, let's look at this. If you click on one of these rows, the adapter set of listeners says, if you are too pain, well, let's say it's not because we're not, so let's just stick down here. If it's not too pain, like in this case, we're going to get a context from the view of the plot object. They're going to create an intent, which is basically saying, I want to go to a new screen and then we're going to start that new activity up here. If you are too pain, there's something that looks even more complicated, but it's basically similar. It's just that it's using a fragment instead. Okay. This view has code that's directly controlling the flow of your application. It's not telling the activity, for example, hey, move to an activity. It's like deliberately embedding the view. It knows about things that it shouldn't know about. Yeah. For example, it knows if this application is configured as a too pain or a single pain application. The only reason it knows about this is because it's an inner class of the activity. Again, if you wanted to call this out, now you need to know. You can't. It knows two ways of doing this thing. It knows how to build the arguments for this fragment and for this activity. It knows a method like new activity and has the argument. It's basically putting extras and treating them like a map. It knows what the keys for these arguments are. If I were to... I don't even know how it starts in the testings. From now on, in this situation, I'm going to make cut. Yeah. Now, code like this is fine in many cases when you're sketching things out. When you want to pass a code snippet to somebody to show somebody. But giving a developer this as their template for a new application is just setting bad precedence. So, let's start cleaning this stuff up. There's going to be two things that we're going to do for this. One is dependency injection and the other is having a model of view controller or a more linear separation of concerns. We'll get back to that second part later. We're going to start with dependency injection. What is dependency injection? You can probably have a full two-hour talk on dependency injection alone. I'm going to attempt to summarize this. Here we have a class. It's a whole notifyer. It knows how to do something. It knows how to notify when you're near home. It needs something to do that. It needs like a location source. Right? And in this case, he knows how to get what he needs. Right? He's saying, I just go to the location source and get the instance that exists. So, I would say that in a nutshell, dependency injection is getting rid of .3. Now we pass in what he needs to do the job. It's kind of as simple as that. Now, why? Dependency injection pushes you to keep things separate. It keeps you a bit more honest about saying this is what this object should be doing and it's not about doing other things. Once you have a lot of those location get instance, they usually end up covered around your code. When you have a bunch of variables that tell you, like, these are my dependencies, well, it's much clearer to see that. It also lets you know when your class has, you know, 20 dependencies. It's like, maybe something is wrong with this class. Maybe this needs to be broken down. And all these things are easier to see once you can clearly visualize what I need to do my job. Right? It allows you also to do some things like inject an interface that provides, you know, the actual implementation without having to know who exactly is doing the implementation. And just say what? What type of object are you using instead? It's... Yeah, it actually simplifies your code because, you know, you say how to get dependencies, that's no longer there. And the case that we saw just now, that was like a very trivial change. But there are cases in which, you know, having whoever is providing the dependency depends on the state of your application or other configurations and taking that away from this object simplifies code, provides easier refactoring with the caveat that once you're using a framework to do your dependency injection, it becomes that simple to add new dependencies and you don't have to change 20 call sites, you know, to say, hey, this guy now needs one of those added in. That was interesting. Unit testing. Now we're getting to the really nice stuff. When you have an object that takes a dependency, in a unit test you can provide a mock for that dependency very cleanly. For integration tests, is this interesting?  You can have an alternate implementation of whatever the data source, for example, of your app is and make it not hit the network, make it return some kind of responses. And the rest of your code doesn't need to know that you're providing a different implementation. And in the case of Android in particular, you know, getting rid of dependencies, direct dependencies to the framework stuff, like if you depend on stuff and that. System service or a lot of static calls because there's a possibility of those or a context, you can wrap those up. Dagger 2 is the framework we're using for this. It's a work of Dagger, the original one. The original Dagger, I mean, from Square is actually still incredibly popular. I think it's probably used a lot more than Dagger 2. What's interesting about Dagger 2 in particular is that all its work is done in an annotation pre-processors and cogeneration. There's absolutely no reflection used which a lot of dependency injection frameworks actually do use. In Android this is important because reflection is costly and especially an older version older devices or lower power devices they make things very slow. Dagger also can handle nested dependency scopes which is very useful. A dependency scope for example, could be in this case like there's a dependency, there's a component a Dagger component that's providing things that are at the application level across the whole application like for Android an application object which is a singleton so you actually have one. An HTTP client. It's also a singleton, a client to an API. You can also have things that are not scoped like in HTTP requests. You get a new one of these that are able to provide new instances every time you ask for them. This is already very good sometimes you some dependencies require additional state or additional setup that you won't always have access to. So for example in an app where you can log in once you've logged in you have access to a user object you might provide new things like now maybe you can instantiate a friend's manager which is associated with the user or you can create authenticated requests to the API which you didn't so the idea of the scopes is this you can have different scopes of dependencies depending on how what additional objects you're able to provide the dependency to the dependency injection in Dagger these are also components and without further ado these are the scopes or the components that are going to be using the application there's a singleton component in this case the data source for example like the list of to-dos is actually provided here there is an activity component which you only will have available once you actually have a UI if I had this thing running in the background for example I would not be able to create an active component because I won't have a UI this one provides navigation for example now that I'm at the stubble and controller components controllers are for a specific area of the screen like one of the views in this case the controller for this particular view could provide the adapter for this data so now we have that set up finally we move into this hierarchical model view controller of sorts again I'm not going to get too hung up on the name the controller is just as before we were talking about controller is something that lives on a view node or part of your view hierarchy and just controls that node it will instantiate its view tree and it's then seems actually it will have access to model and a lot of other things that are needed for business logic basically now there's a pre-center which is basically wrapping around the view and simplifies the interface to it especially if you have a lot of nested views and trees getting or making changes to inner ones might be pretty difficult so the pre-center is basically an interface that runs around it just shows a simple API and we have a mediator which is in charge of the business logic and basically this guy binds to the view pre-center now this is all very abstract and it's hierarchical because you can have these guys nested because you can have controllers in different parts of each view tree nevermind it's a little bit easier to see so for this screen this is the detail view this is the mediator for the detail view he's in charge of tying together basically getting whatever data you need and tying it together with the view stuff he has the interfaces for means of navigating the navigator and he defines the interface as a pre-center he knows what controls it needs on the view and what events it needs from the view to actually do its job so it defines this interface and he defines the navigator because he knows when he should be moving to a different part what is a navigation event sorry he gets by injection a data source basically in this case he takes an identifier for it to do and once he gets the item he sets the title on the view which is up there the details for it to do and on clicks on this floating action button he is going to go to edit this to do so this little bit here reads very thinly and for purposes of testing this guy needs a navigator interface needs a pre-center and a string mocking these guys out is extremely simple providing a fully mocked implementation of this is really simple as well observables are not tied to particular sources they just emit events this is the pre-center for this view so he wraps around the actual view stuff and there is a tool bar a detailed view there is a fab all this is abstracted out of the way when the mediator wants to set title text behind the scenes we go and set the title on the application bar which is up here the detailed text is more simple it's just like a text view we are going to set the text directly on it the clicks observable are clicks the floating action button come from here clicks basically just emit every single click that happens on it and I'm just going to emit these things until the view gets detached so we don't get weird state the way I'm seeing this is that the presenter is giving you an abstraction layer one higher than the android view layer so that if you want to test the interactions with your view you can test at that level of abstraction you don't have to worry about bind view r by id you don't have to find those just like the mediator I could do it with a pure job I'm going to test I could actually create an android view for the presenter for example in which it's slower make clicks on objects and see if these events happen or as expected and finally there is the controller he's in charge of the dependence injection he gets his component over here the component does a lot more than just this but the controller itself only needs these two methods and when he does this it's also pretty direct on create view he just attaches a view tree and when the event of attaching this view happens he gets the component the injection component wraps the view in the presenter and then takes the mediator and binds it to that and that is pretty much all it does in this case at least so the nice thing here is that each one of these components reads a lot easier to itself looking at it you can tell what it needs to do it doesn't it's not all taught to get into a similar kind of file but you're worried more about the what and less about the how yes exactly and honestly in future controllers this thing gets repeated over and over again abstract into a base class because it's very repetitive let's take a look at the list view wow it doesn't actually fit in the screen this is because this guy is actually two mediators in one there's two parts in this view one is the larger screen in which in this case he's binding to the data source of items whenever it gets a new set of to-dos just notify us that this has to be redrawn and this floating action button here which takes me to the create controller is outside of the preview of the list itself and there's like a second mediator sort of hidden inside which is the one that deals with each one of these rows so whenever I get to you know I grab the actual to-do titles etc on clicks I go to the details controller but there's an error I warn this part is a bit more interesting is the first write operation we see whenever there's a click on the checkbox or when there is a change on the checks on the checkbox I will take my data source a copy of this to-do in which I just training the state of the computer sorry can I just ask take until is it observable thing yes take until in this case every presenter has this observable wixity patches which is just an event whenever it's taking away from the screen so you get unsubscribed for free yes exactly for a lot of like the clicks it's implicit because it comes from the presenter this one actually this one I can also remove it there's another case in the previous screen where I it was more important like data source right here I'm binding to the data source that I want to make sure that I stop binding to it when the presenter attaches because it's actually in a point and then I'll be leaking stuff this is the presenter for it again there's like two actually one for the list which I'm just skipping this is boring and there's an item for each one inside what's a little bit more interesting on this guy is this is checked which you know you could think of it as just the checkbox but it was checked or not but actually this presenter goes through trouble of doing a bit extra effort and putting a strike through on the text right this is something that is just visual the mediator itself doesn't care in this case he's just sitting with whether this presenter's hole is marked check or not but behind the scenes we just add a little bit of extra we don't put a strike through flag on the text or we take it away the question for me is why are you doing that presentation style work in what to me looks like a getter oh this is not a getter this is a property it's a getter and a setter I get it yes I can see that the get actually does only check whether the view has a check mark and whenever you change it you're not just setting the boolean flag where you're also repainting a program yeah cool this is the controller the basis of controller I just skipped what's interesting here is once again this is a little bit like a the adapter here works a bit like a nested controller because he's in charge of each one of these views and even though it was not planned he ended up doing pretty much the same thing uncreate this is like a method from the android adapters uncreate view holder I'm just instantiating the view unbind I'm actually calling bind in the mediator just as before so it acts pretty much exactly as controller even though it's called an adapter and this enters into a little bit of the idea that there's some nestedness going on here like there's controllers mediators and presenters happening at different points of the view hierarchy inside alright the edit view here we're going to flip around let's start with the edit controller it's poorly named this one actually when you create it you may or may not pass a URL like your eye if you don't this actually creates which is why this guy says new if not it would say edit otherwise it's like a very standard controller so we just skip it again very standard for center the only thing interesting in this guy is that other than setting and getting the title text as before we also have changes because these are now editable fields so now we also throwing those out as events and it doesn't fit again let's split this into two parts the mediator when binding basically depending on whether he has a URI he decides whether this is going to be a bind for create or for edit honestly in retrospect I probably should have moved that into the controller part but it kind of works though if it's for create I set the title to be new to do then I bind the fields and if it's for edit I set edit I get the data for what it to do and then I keep a reference to it set the initial values to field and then I finally bind the fields either way I first start by and this is again business logic this is a little bit of validation that's going on here I'm saying I only want to actually create to do's I have a title I don't want empty titles for this so since this is a very simple validation I've been in line if you had a lot of fields and a lot of validations you could probably wrap that up in a separate class that can be tested by itself in this case it's called a new to do validator yeah yeah yeah it could be something on the line yeah I have it or just to do validator right if it's empty I'll just start by setting the state of this button to you know whether it's disabled or not depending on how things are I subscribe to title changes whenever the title changes I check whether I should be able to submit basically then I keep a reference to the stream what it currently is and finally when I click if it's enabled I disable to prevent double clicks on this stuff and I submit which will basically go back to the data source I'm either going to create or update one of the to do's and then I'm going to say navigate or navigate back if I had like a network in between I could very easily throw in more UI show me a dialogue that is you know the progress indicators which will impact that would be like presenter.show async waiting and that would be right on the here do on subscribe async waiting and then do on complete and finally I go back so we've been seeing these navigator stuff here in places the navigators they're all in this case implemented in the activity itself activity does very little it's it creates its base component it creates a router just for conductor that's where everything all the other controllers it puts an initial controller on it and then it will have implementations for each one of the navigation methods since it has the router and it's at that point of the view hierarchy it knows how to move things around I didn't have time to implement the dual pane one but basically it would be very similar like everybody else would just call on an navigator the same methods they're calling now and then the activity would be deciding for example push dv controller if I'm too pain and now it really is like if I have two pains then instead of replacing one controller with another I could just push controller on my details pain or something on that line and that is that and I didn't have time to put in all the reference under yes I will it's already on github available yes skate I like your argument that the default template generated by injured studio is inappropriate because the code that we have today is a code we copy dish tomorrow and this is setting up developers for more pain down the track do you think that it is the way it is because this does require more concepts to learn it is more moving parts and like there's a as developers sometimes we have this we want to push away things that we say oh that's too complex but the hard part is figuring out like is it actually complexity right or is it like you're just tightly coupling all your shit together and that actually makes your life harder later and so you should there's some complexity you should deal with and like so is it the appropriate amount of complexity that's my question I agree like it's very easy and this is part of when you're starting and you start with this pattern it's kind of easy and when your application is still small to just throw everything in together and to be honest to get as I was playing around with to this level of separating in these particular parts like the controller the mediator the presenter and all that it took me quite some time to figure out what was interesting is that once I had those three pretty well defined adding the form for example the edit one took me like half an hour to an hour and otherwise how long would it take I don't know forms are like one of the things that I most push away from like I hate dealing with the forms they usually have a lot of complexity and it ended up being really simple once I was used to the pattern of having these things in three parts starting just creating a mediator not even worrying about how it's going to come to be or what the presenter view is going to be like and just saying your needs these things to work this is logic right unit is for it and once it was all completed I actually started implementing here's a view and controller for it and they all came out very naturally I'm sure there's points in which this will end up looking more complicated than that but it's definitely something that I want to try from the start in whatever my next full-fledged app is going to be I think like in general Android doesn't describe any folder structure like all of you controllers right and anybody having to do a control app is going to grapple with this issue and I guess it's the same thing with IOS they don't type okay this is how you structure your thing they just say okay this is a recycler view you need an adapter with a view holder like that's it the rest is very helpful sir there's a lot of life cycle so what you showed us maybe it's just a board that you showed us which is all about setting it up and you use it a lot while it's Java and I was using when you do something like take until it's all there and do something with that so how does it clean up are it's Java in particular or in general for example does the controller get destroyed, which in turn will go and cascade into other things the controller actually is is surprisingly long-lived sometimes a controller and this is just a constituency of conductor if you're using fragments it wouldn't be the case but a controller might outlive an activity, it might the same instance might like if you rotate a phone on an android your activity actually gets destroyed and a new one gets created but the controller might be detached from the first one and put on the second one so you have to be aware of those things to make sure that you're not holding references other than that debuts themselves as you see like I'm not holding I'm not keeping fields on the controller we're saying hey these are my views so I don't need to do a cleanup and that is partially because I am using rxjava if I weren't I probably would be keeping a few fields on detach or on destroy view I would be removing those as well now interestingly particularly with views because another thing that's common in android is that you have an activity or fragment and you have a whole number of fields that have views that are directly on there so on destroy view you have to go and clear all of them up once you have a pre-center that is just encapsulating all your views instead you have reference to one pre-center or whatever you just say pre-center dot equals to null and it goes away it is the reference to all of them so it actually makes cleaning up a lot easier thank you I was testing android security to see if I could make a text message to all of them


Hey folks! We are answering frequently asked questions from the Okta Customer Identity Cloud community and today we are going to discuss troubleshooting issues related to You may have pressed the back button. Let's get started. This error is often caused by certain user behaviors that interrupt the session created during the login flow. Take for example, if a user bookmarks the login page when an application initiates the login process it navigates to your domain slash authorize with a set of required parameters. Auth0 then redirects end users to your domain slash login page with a URL that looks like your domain slash login along with a state query parameter. This state parameter points to a record in an internal database where Auth0 keeps track of the status of an authorization transaction. This record is deleted from the internal database when the transaction completes or after one hour when the login transaction expires. You will likely want to make it so users do not see this error page at all. Let's take a look at how to accomplish this. This error page can be avoided in most cases by implementing a default login route. The default login route is a URL that is intended to essentially restart the login flow from the beginning. This default login route should point to a route in your application that ends up redirecting to Auth0's authorized endpoint. The default login route can be configured either at the application level or at the tenant level. If an application does not have a default login route configured the tenant level one will be used instead. To configure a default login route for an application go to the dashboard and to applications and applications again. Open your application and on the settings page scroll down to the field that says application login URI and enter your login route. Currently only the HTTPS scheme is supported and it cannot point to a local host though it can include query parameters and a URI fragment. If you have a native application and your login route uses a scheme other than HTTPS the recommended workaround is to set the application login URI to an HTTPS page which in turn issues a redirect to the native application via the custom scheme which would handle the invocation on its own and launch the universal login page. This intermediate HTTPS page would need to be hosted by your application to set a default login route at the tenant level. Go to the dashboard then to the settings and over to the advanced settings tab. In the login and logout section you will see the field for the tenant login URI. To test that this is now working we can go to a bookmarked login page and see that the error page no longer appears and a redirect back to our application login URI has occurred. Today we looked at troubleshooting issues related to you may have pressed the back button. If you found this video helpful please like and subscribe to us on YouTube and join us for more content on community.auth0.com


Welcome to Toffy TV. It is the match preview. It is the Merseyside Derby, and it is that time again. Of the Merseyside Derby? Just that general time again, where people get overly worried about a game of football, which isn't any more important than the last one we played or the next one we played. Just three points. Just three points. I mean, if you win, don't get me wrong, it's like amazing. A John Dice could make himself the Emperor of the World if we were to win this game. But it's a big game just in terms of the situation we find ourselves in as well. Seven points from our first batch of games, and now we go into a little bit more of a sticky period where we're obviously playing two tough games this week. We stand the following week away and then brighten our home. It's important, isn't it, for this game that we go out and we show the best of ourselves? Yeah, absolutely. The... No, I was going to say, in some respect, the performance is more important than the results are. I don't care if you play awful on one. But it is about turning up and performing in what is a very difficult game. It's not a happy hunting ground for everything, you know, not putting it madly. But it is an opportunity to go and to show people that they are now on the upward trajectory. You know, the man that did a point to the DXG and the chances we've had at home and all that, we haven't got our rewards for that. You know, we're currently lying at less than a point a game, which has got to be fixed. But going into a block of fixes that you just said Westam next week, Brighton, then Palace, and there's also a home cup game against Burnley before the next international break, we've got to go in and perform in all of these games now. You know, we've had the biggest underperforming team points wise in the XG table. Oh, yeah. If you want to do the expected points table, everything would be seventh, I think it is, in the league or eighth, seventh or eighth, if they've got what the performance should have merited, but now in a difficult block of games, we've got to go and start performing in these games. Yeah, absolutely. I suppose there's two ways to look at it, isn't it? The negative point of view is where we've played teams who should have beaten and now we're going to a tough spell and you could look back on them and go, that was a great opportunity while the team is finding its feet. But then the other way of looking at it is now the team looks like it's found its feet. I mean, three wins out the last four games is that we've got much more to take on these teams. I mean, I'd be honest, I'd have the points in the bag, I really would. I'd have the points in the bag, I'd have to be sitting here with, you know, 11, 12 points maybe to think, and yeah, we've had a good start of the season and the team is still jailed and all those things, but, you know, the manager obviously feels like he's obviously very even keeled Disney, he keeps everything on the same level, no matter what. He sees that the team is going in the right way, that the team has progressed, that we are making chances, that players have come back to fitness and we're only missing really, that like the shameless Coleman now. I have no stock in Delhi, I don't think he'll ever play for ever, never again. And so pretty much the squad is what the squad is, just need to add James Coleman to it. So he'll look at it thinking, these are the games, Andy, and we certainly look at it both the same ways. This is the game where you go out and think, right, we need a performance like we played against Benford, we need a performance like we played the first hour against Villar away, we need those kind of performances and if we get those kind of performances and we can see that there is that level, that pushing in good stead, of course you're playing on a good side in Liverpool and Liverpool are on a good side of course, we've got lots of firepower to hit us but if we go out and we do have that level of performance that we can put in weekend and week out then you can feel good about the situation we're in and that we will improve and things will even out because things like XG say they will. Yeah, it is level of performance, that's where you get your feeling from, that's where you get the look of the team from, it's level of performance. Evan have been far too inconsistent over the past. You could even include Carlo last season even though we did quite well, we didn't do what we should have done, you know, we'd win tough away games and come home and get beat by a team that was relegated and things like that so we have struggled for that level of consistency but more, you know, a bigger example of that rather will be the last two seasons where we have had the odd game where they've looked like they can do stuff and then the next minute they're getting beaten, can't win for weeks so the manager is trying to get into that level of performance and we have to see it in all the games and if you do that and you play that way for most weeks you will get the results, you will, you know, put it this way, if Evan play like they have in three of the last four and you can even include Luton even though I was frustrated and it was a terrible result, you still had enough chances to win it, if Evan do extrapolate that over the next 30 games Evan will be mid-table, it's as simple as that, there will be no danger to go on that but it has to transform into goals and victories though, it's great, there's no point to Evan playing really well for the next 30 games and winning three of them and going well we've been unlucky, we've got to win games and Liverpool are in the same boat with going for trying to get top four and going after trophies, they've got to have a level but we know that, we've been to Amffield on too many occasions and we just haven't done ourselves justice, whether we get beat or we don't there's been a lot of derby's, we've gone in soon, you've gone, if we play like we can, we might get a chance here and we turn up and we look like a team we've never seen before, that's been my problem and we spoke about that a lot of times on here, Evan we've done opposition previews and we've done well and we've gone over and gone oh you know what, we're doing well and this midfield is doing really well and we seem to be calm and this play is doing this and then we turn up and they're like what are you on about, use a rubbish or use bottle that today and I felt like that in a way last season when we went to Amffield and it was only a second game and there was no, there was only the Arsenal game to really point out from his team but it really annoyed me Liverpool was struggling on a bit though, it really annoyed me how we turned up at that game and how limp we were and all I really want to see from this game is that level of performance where people go, the opposition say we're in a game here and it's not easy and Liverpool last season when we played them it was far too easy there was only ever going to be one win and we made it so simple for them both goals were big mistakes from our players you know, turn over in possession and break counter attacking on us and it was just too easy, I just want to see us go there and give them a tough game like we have at other places and I think that's got to be the message or certainly that's the message that's been drilled into them by then and I think he's got enough games now to sort of, we doubt the wrong way but just find out where the strengths are in the side I think that's why someone like Dan Dume is not really in the side at the moment is because the manager's made the decision that he needs plays you can work both ways and he hasn't got, he can't be doing with the pressure he plays but he's got good enough quality to not have him in the side so I think he's figured out what he's starting at 11 I know there's still question marks on the sentiment field which will be interesting does he bring Ghana game for this or does he leave James Ghana or Nanna and what's interesting about that is if he does have James Ghana or Nanna and they play well, that will give everyone confidence that they can go forward and you can start sort of giving less game time to a dish of Ghana game One of the, and again just on top of that because it's right because if you first thought this, you'll put a dish back in and you'll push James Ghana out of the right but Liverpool have lost Andrew Robertson for this game and he's a huge attack and threat for Liverpool Symic is a proper play I'm not saying he's not a good player because he's decent and that almost gives Jack Harrison an opportunity to get at him he's not, you know, Robertson's been ever present for Liverpool this season so that gives Symicus a short on playing games for Liverpool and you've got Jack Harrison who's come in as excellent for us and scored obviously against Bournemouth so I think that should give Sean Dight a bit of confidence to actually potentially just leave that midfield as it is and have Harrison, because Harrison works hard as well but he can also maybe get a Symicus a little bit just while he's not fully up to speed when playing every week so that's what's in it I mean it's a difficult game and it's not, I don't think he's going to make loads he's not going to make changes, let's be honest the core will change slightly the way he plays but he'll play more in the natural way he plays away from home anyway which has got plenty of goals playing that style we've got Donbac in there obviously allows us to have that focal point and it'll be, the game will be I wouldn't say one and lost in centre midfield but it's going to be a big part of it and that's why that's why the question mark is over what does he do as I said I don't think you can just shift James Garner to right midfield anymore you've got Jack Harrison who's better than them there can do that role and his intelligence enough to play in that position and that's going to give the manager now the last game he decided it was going to be on on there's different speculation of why O'nana was left out of that game but the manager himself came out and said it was tactics nothing else, nothing else so it will be interesting and maybe just the fact that a Dysart Garnergate is coming back from a knock might just make his mind up, might give him that extra time in the week to work with the plays he wouldn't have had O'nana obviously but it does give him extra time to figure out how he's going to stop Liverpool in those positions and he could have found Sam Allardyce because apparently he's got the answers he's got the key and he's got the secret so fair play to you but what have we thought what are our thoughts on Liverpool because obviously a lot was talked about there we've both spoken to poor major today but a lot was made of their summer and how it was a disaster and in typical Liverpool fashion it's all turned out alright what are our thoughts on them so far? I think Liverpool in the attacking third I've probably got the best selection of forward players as a collection I'm saying someone like Harland wouldn't get a course he'll get a Liverpool team and there's different other players so I think when you've got and I know that Jota Suspender for this one isn't he back for this isn't he well Paul mightn't know me so that's my red so whatever if Jota's available then they've got Jota and I know Gacpo hasn't played but he's trained again so he's a threat they've got Salar who's incredible they've got Darwin Nunes who's flying back for him Salt America and apparently he looked a bit leggy like he came back for him international duty just with the duration of the flight and all that Liverpool are a real threat in the final third I think the midfield has been better than people give it credit for so far this season you know Sublau C or Sub Sly or however you say his name he's an excellent player I think Alexis McAllister's brilliant but he hasn't really been used he's been used more in the defensive midfields role so it's whether they put him like Gravenberg into midfield but what I do think for Liverpool is their most vulnerable bit at the moment it's the back four and they are conceding goals and I think everyone can get at that but the biggest threat is their form of players who I think are brilliant I think Jota is available by the way he is available Paul Mates you shouldn't be telling Paul Mates because I did include Jota Jota is available Kates of Jones is not available at the game the Liverpool players all flew back I think Tuesday night but after the walls game the last international break after the game Klopp said he shouldn't have played McAllister because he was dead on his feet so that'll be interesting to see because Klopp hasn't treated this with much respect to be fair to Darby he's just mixed the teams up fair play to him if he thinks he's got bigger games then fair play to him but what's interesting is there's no Champions League game in the week to take your mind off or anything so it'll be interesting to see what team Liverpool do play for this game but Gachpo is back in training Nunes scored and got an assist against Brazil for Yorogwai so McAllister so it'll be interesting but they start considering what was made of this summer and missing out on Beringham Coseidaw no, no, Coseidaw and almost falling into some of the other players it will be interesting to see what they go with yeah, I mean we'll have a look this is the team that started the last game that Liverpool play before the break and actually the back four of Alexander-Arnold matter van Robertson so we know that Robertson will be the change and then the midfield is McAllister and Harvey Elliott and then the front three is Salah Nunes and Diaz but when you look at that one talk and what will Liverpool's front players you've got Salah, Diaz, Giote, Nunes and then Gachpo and you don't matter if Gachpo if Dave do include them in the squad it's only going to be as a sub you've got my back, my knee injury and only just training again but that they are the threat that will be Mohammed Salah and this is obviously his statistic from this season he's got five goals in eight games from a next year 5.2 so he's slightly below it but he's also got four assists when he's left foot of goals there five and Diaz is his map as you can see he's just been incredible since Liverpool bottom in all things he's going to get in he plays all the game scores every week real threats let's get it right absolutely get in the dressing room and you always see these why is he playing with keys I don't know why has he got pockets he's got pockets in shorts that have wallet keys and a player he's gone on he could have had all kinds in his pocket I think this is where football is missing the trick I think football's shorts should have pockets in them just to put plays in because you know when you wear footy you have a board to pair of footy shorts and you haven't got anywhere to put your phone in your keys why don't they make them so they've got pockets for normal people do you make any sense when are you wearing footy shorts I'm not saying me you're the market you're in Florida you're swanning around you're swanning around magic kingdom you want to wear everything short you want to wear the short why haven't they got pockets in them for normal people you're not doing slight tackles I appreciate that no but I'm saying then they can wear normal ones they should make them with pockets for us so we have got keys, mobile phones and mokesally that's all I'm saying let's hope Michelin co does enter the pockets and mokesally is in there but I think better players than Michelin co struggle to keep mokesally side quiet the evidence side last time we played against Bournemouth and the victory this was the line up do you see much changing from this no I don't see him changing the team I really doubt it I think as I said the corey's position will be slightly deeper like he plays in most away games I've gone against the only one but that brings in like we've just said what do you do with James Gannon and you're not shifting him to the right there's just no way he shouldn't do no but if he does he's it'd be lunacy one thing he did say in his press conference he was asked about that and he said but I do like the versatility of him and that just makes me think oh why because you know Jack Harrison is going to work himself after bollocks they're just starting then just after bollocks they start James Gannon if you're loving so much bakinghead's finest leave him in there and let's just go with it let's just go with it because you've got it that core's going to have to be made at some point anyway especially you know diminishing returns from the Disagana african nations coming up as well you're going to have to make that why not go into a maze side Dabi and say right we trust O'nana we trust James Gannon we trust the corey he's the most important player we've got two players wide bollocks off up and down ok what are you missing yet you're missing that little dog to go trying to find the ball but we've seen it before a Ramfield leave his position and they were able to score this might not be the game this might not be the game but you could also the other thing as well is you're having a player who's quite energetic on the bench then and if the game is tight and they were able to look as though on the top of it then you've got somebody you can drop in and it also sends a message as well it sends a message of confidence to James Gannon that even though this fella's back I'm still getting picked in this position and be it a message to the other players that even when there's a player who is regarded as a first choice player available again you've done well so you'll keep your place this is the my only thing is really is actually young Nathan Patterson thing that's a boat the worry is whoever actually goes up against its pace but then Nathan Patterson has got pace but hasn't got the experience and some signs falls apart in these games so it is, I think it will be actually young I don't think the manager's going to change that team from what people have I really don't so I think that's what we'll go with be tweaked of course tactically just go give us a performance give us some I mean number one go on win the game just go on win the game just win it's not hard is it I mean it's been hard there's three results there's three results two thirds of them I'm happy with there's just one so are you getting the two thirds play, yeah play the percentages win or draw, don't lose I don't see how hard that is I don't understand how hard that is the only thing that makes it difficult is Europe is a good team but just are you getting the two thirds that's all you have to say as you're walking out just say that I've walked into the dressing room I've shown Dyson and said two thirds and the other thing I want is pocketing me short and I think that could get us a reason I think you're asking big you're asking the important questions Mike bastard to be proud of there you go eh it's another mayside but listen it'll all be over by about three o'clock the way the odd time on it I'm feeling you know the script keep playing keep playing that keep playing that we did say it's at least eight minutes and now we play twenty three we said at least we're playing till that stadium stand is built whatever comes first there you go make sure you check out Baz over on Red Men TV's opposition preview Paul Machin is on our opposition preview make sure you check out the start on eleven show and make sure you check out all the content after the game be interesting it always is it always is there you go thanks for watching give this video like subscribe if you haven't already and listen you you live a pool fan so just subscribe subscribe you're always watching us so why don't you just subscribe get us over that £100,000 you just can do it for us we're asking you for a favour another way we give you a favour by creating your football club for you and giving you a stadium pay it back pay it back to us and more than a game go over there and subscribe to that month even and become a premier member and watch our daily joy watch our daily joy the link is in the description qr calls on the screen see you later bye be good