Welcome back to our channel as you can see by today's title I am going to be getting a tattoo of Mariah's name on my body at least that's what she's gonna think I'm doing So Mariah is currently out of the house. She's at a dentist appointment. She's only gonna be gone for a half hour now While she's gone I'm gonna be getting a tattoo a permanent ink tattoo on my arm right here on my bicep And I'm gonna be sending her a picture while she's out if you do not know I'm a good editor if you don't know some of my background I edited all of our YouTube videos all of our thumbnails to this day I still edit our thumbnails and everything and I've been really good in making pictures look like what they're not So what I'm gonna be doing is going on Google finding a picture of someone that already got in the name tattooed Mariah on them and I'm gonna be photoshopping it on to my bicep and then sending over the picture to Mariah for her to freak out or Do whatever she's gonna do because she's literally gonna think that I got a permanent ink tattoo of her name on my body This prank is gonna be insane guys make sure to give this video a thumbs up And I have to get into this really quick before she gets home because she did just arrived there And it usually doesn't take long for your cleaning So I'm gonna be sending Mariah two photos one of them at a tattoo shop So I'm actually gonna take a photo against this white wall and then I'm gonna crop out the white wall and make it look Like I'm standing in the tattoo shop that actually did the tattoo with the tattoo on my arm And then the second photo I'm gonna be taking on the couch at home of me just chilling with the same tattoo So it looks like I went to the shop got it done and now I'm home and it's still on my arm So let's take the first one first so when we can get this in the editing software And then I'm gonna take the second one as well. So then I could just send her that raw clip All right, I Gotta make it look as natural as possible too. Oh That looks so good Guys That when I added it into this tattoo shop is gonna look like I'm literally Standing in there and I don't know if you know this but a lot of the thumbnails that I've edited in the past like of me under Water or of me on something or next to a car a lot of that has been taking in our house And then I added it next to an object just because it makes for such a better picture and And if you're a good editor you can make it look real, but yeah fun fact I'm really good at photoshopping pictures. Alright, so for the second picture I want it to be more natural like someone didn't take it So I'm just gonna be taking a selfie and it's gonna be like a oh my god Look at this kind of picture like look what I did to my arm So it looks more legit rather than staged and I'm not taking it off of our nice camera because I wanted to look Obviously like I'm just like taking it off on the iPhone, but So this is the final picture of me at the house obviously I'm gonna edit the Mariah tattoo on my arm But this looks so natural and good She's literally gonna be freaking out like this might make Mariah like I don't know how she's gonna react She's gonna like it or if she's not I know a lot of people don't get tattoos of their significant other just in case Something happens or they break up which we're not gonna break up But like some people don't like their name on their significant other in a tattoo So like I feel like I have a 50-50 shot of this actually going well or her actually getting like pissed at me Like why didn't you talk to me before getting a whole tattoo on your arm that the world can see?  This is what I'm working with All right All I'm gonna do is copy this layer and I'm literally just gonna bring it over and paste it on here Trust the process guys You're literally seeing behind the scenes of what it looks like to be a good photo shop Editor basically and I'm not on the Photoshop program I'm I literally just like call it Photoshop, but look at that I haven't even color coordinated and it already looks like I'm standing in the tattoo shop It's literally that simple like you can make yourself look like you're meeting the president Like you're on a yacht when really you just took the picture at home and edited yourself into it Okay, so I've been editing this for about like five minutes And I noticed that it was very very blurry And that's because when the image was so big and I resized it down to a smaller image by just dragging it It makes it really pixelated so you can see right here. See how pixelated my face is Compared to this picture. This is Lex pixelated either way It's gonna look good because you know the further away it looks better But you can see the comparison between the right image and the left image this left image looks way sharper so I'm gonna redo basically everything I just did and Put this one in but I'm looking good I'm almost ready to actually put the tattoo on my arm So I will see you when I finish this and we can get tatted up and we'll be one step closer to being able to Send Mariah this I'm working. I'm working on a good time I'm like I'm like only ten minutes in and she's probably still has like a half hour before she gets home All right, I'm all done with this I feel like it looks really good the color I was trying to match her skin, but I know her skin is a little more like yellowy I'm just trying to match the lighting so it doesn't look like I'm taking it on a wall And I think this looks pretty good Like I think it looks good enough to be able to send a Mariah without her thinking that you know It's it's fake or that I added it myself in because it really does look like I'm standing there like it looks like this is knee height compared to where her knee is and I don't know. I feel like she'd be the same height as me So I was kind of going off of like how it looks any taller And I feel like I would just look like a giant compared to the room So I think this would be like right here would be perfect So I'm gonna start editing the Mariah tattoo now so we can get it on my arm So I'm having a really hard time reading the Mariah when she zooms in on it I wanted to actually say Mariah So what I'm gonna do is I'm actually gonna type it out and try to find a cursive Lettering that looks like it would be a tattoo because I feel like this is just it's too blurry And like the main part of this is the tattoo. It's just when it's really small You can't really see it, but I feel like this would be way better if I just maybe that All right, I got a good way I'm gonna draw it in like this this looks way better than typing it out typing it out look too fake So I'm literally just going to be going all over the cursive again with the same coloring that this tattoo is because it's not like Black like when tattoo go on your arm. It kind of gets faded. It's not like a Straight dark dark black I guess that looks way better. That looks way better I know you guys are thinking this is funky and the skin color is off But I'm gonna transfer it on to my skin right now. Oh my god, this is gonna look so good This is gonna look like she's gonna believe this I'm gonna make her believe this even if I have to spend every single ounce of my time on it right now All right, I'm not keeping this crown this crowd is way too hard to work with and it's it's so faded You can't even tell that it's a crown anymore It literally just looks like a blob like a pink blob on my arm So I don't think that's gonna look at all believable, but this definitely does like now that I kind of got it to where I want it. I just have to size it up All right, I think that looks pretty good like tell me right now like that I'm gonna tell her that the picture doesn't do justice like this like you have to see it in person because it looks freaking crazy But it does not look like I'm edited in this like at all and like she could still zoom in on the phone and see that it Obviously says Mariah and honestly it matches my skin like really well. It kind of looks like a tattoo It literally looks like a tattoo I mean it is it was a real tattoo at one point as you could see by it was on someone's arm But now I just have to add this one and then after I added this I'm gonna send her these pictures I don't want to send her anything until I Get them fully done because I don't want her like racing home or you know showing up and like being like You know why are you sitting at your computer filming because I want to set up all the cameras and stuff But this is an amazing amazing Editing job in my part comment down below what you think guys give this video a thumbs up because we're literally gonna get her reaction So good like we've never done anything like this actually I have I guess I totally forgot to mention I got her name tattooed or like Mimi which is like her nickname tattooed on my lip like what? December of last year I think oh my god It's over it's been over a year since I got the tattoo and it's still there it's half gone But that's the craziest thing I've done.  All right. I am all done. It's officially settled These are the final pics that you're looking at right now, so I'm gonna start with this one Obviously you've already seen it It's edited as well as I can do within the time period Mariah literally probably is almost done right now So I done with this one I wanted to try to make it be in the same spot obviously in the next photo as you can see here This one turned out way better like the tattoo on here is so much more cleaner and I'm just gonna zoom in you can see this tattoo it literally it looks like it's on my arm It looks like it was like literally just done now I'm not gonna make it any red because I know after you get a tattoo usually you get some like redness around it or Swollen I really don't think that plays a big factor in this one because it's Mariah's just gonna see it and then think that Like I literally just got her name tatted up on my arm. So I'm gonna send these to my phone right now We're gonna text Mariah and get her reaction to these final photos. How do they look guys comment down below I feel like this this one looks the most legit like I know this is in like the office and everything So it looks kind of cool, but this one to me. It's like holy He literally has a tattoo on his arm of my name like I I'm hoping she freaks out with this I know I don't even know what I'm saying. I know she's gonna freak out about this All right, so I got it all to my phone I just sent her like a long thing so you guys don't see our conversation before just because like, you know just like private stuff that you know, we we text but I'm gonna say babe and Probably like guess what babe guess what so the first pick up is send is the pick of me in the Actual tattoo when we call it parlor tattoo parlor. I think tattoo shop whatever. Should I just send it? All right, I said it oh Oh my god She read it. She's probably looking at it right now. She's probably she's really zooming in and see if it's real This is what it looks like on on text message. So it looks pretty real. She might be confused what it said No, she definitely knows it says Mariah dude. This picture looks so legit. It literally looks so good She said oh my god, what did you do? Oh my god? Is that my name? Yeah Surprise Surprise, I don't know whether she's like mad or whether she's like happy about it right now She said no, you didn't you didn't actually do that. Yeah. You literally see the pic She wants me to call her.  I'm going for her to call me if she does You literally see the pic She must be done she must be like like Finished because you wouldn't be on your phone obviously if you were in the chair and you would never get a tattoo right there Well, I did you don't like come on babe. I got this for you like I'm doing this for you How do you not like it to be honest? No way? That's way too big It's It's because my love for you is Huge so you're so the tattoos, but it's cute that you oh wait. Did she like I'm confused that she likes it or not All right, now it's the time to sign the second pic. Let's do it. Let's do it Just send her the second pic This one looks so good the second picture. I don't you guys can see it looks honestly Insane like it honestly looks real We she thinks it's sexy what I'm confused. I don't know how to read this I was not expecting this so she thinks it's sexy, but she doesn't like it Mariah dude. That looks so real guys My was oh She's calling them Hello What you did not do that, babe surprise I'm talking quite some still at the dentist.  Are you on your way home? I'm about to be on my way home. They're giving me they're like giving me stuff for my teeth. Do you like it? It's a surprise that's the whole point of not telling you So you actually like it I do but I'm just confused why you get my name tatted in the picture It's not red. It's not red yet because it takes she said it's probably gonna get red within an hour It'll swell up, but like I thought you would go with the one but that but that one looks sexy don't it But you like it I mean yeah, I come home and see come on hurry up. Okay. Well, I'll be home in like 15 minutes But bill 15 minutes All right, well, I'll see you when you get home and I'll show you more okay, and I'll explain everything and why I got it You did this you're so wild Well, I love you. All right. I don't need to all right see you a little bit.  She thinks it's sexy. She thinks it looks good I did not expect that like I put it huge on my arm for a reason because I didn't think she would like it But I guess 15 minutes. Let's go see how she reacts She's probably racing home right now as we speak because it takes about 15 minutes to get back from the dentist And I'm gonna see how she thinks about it Maybe I'll just have her run in and then I'll be like oh wait don't touch it But then I'll obviously show her that it's not there. I think this is a dub I think this is gonna be a dub for team bill right now All right, so I've been waiting here and Mariah literally just opened the garage doors So I'm just gonna film her reaction coming in and then probably just out the camera and like have her Discover that I don't actually have a tattoo on my arm. So yeah wish me luck Are you excited Okay, hold on hold on I gotta get your facial reaction on camera, okay? Wait, so I'm surprised you like it. Don't it's sensitive. Be careful. Let me see. I love you. Okay. Are you ready? Yes, I want to see your facial reaction on camera. So I'm gonna show you it this way ready. Yes, ready All right in three two Where is it?  You're actually the tattoo. I did. No, you didn't it's not even there. It's right there Where? Huh, I actually thought that was cute. I was really thinking about it on the car ride home of wow He really wants to represent me when he's at the gym Not so it's an edited photo that I just spent the past half I actually was really excited Are you dead ass? Like I just said when you were doing it Why would I get a tattoo of your name in that day? Listen when you're at the gym and there's girls looking at you They can see my name written on your buys and they would have been like Oh, so that's why she wanted she wanted to mark her territory if it I thought that was actually kind of cute.  I can get a tattoo Of your whole body On my arm Why? Okay, but I'm also kind of relieved You know like when you're in the middle of something Okay, so say you make plans for something And you want to go out But you don't want to go out But you'll be fine with whatever response they give you So if they say you're gonna go out You'll be like okay I'll go out But if they say they don't want to go out Then you're like okay good So either way the response Is like good no matter what it is What are you talking about Why are you talking about going out Oh my god I feel like my chest hurts What why Are you good? I know what you mean So it's like you'll be happy If I did get it but you would be happy If I didn't get it Well it's a joke and I added that I literally spent the whole time that you were gone That's when I started the video because I know you would only be like 45 minutes I know you got me back to back Let's see those teeth Let's see those clean teeth from the dentist Why? What did you eat I couldn't I was starving What did you eat without me What did you eat What did you get Twice in the one day You got Starbucks twice today Oh my god Oh my god Wow see this girl This girl oh you're lucky I made food Otherwise I'd be pissed Would you eat rice I left all of it out right there I feel like Justin is making it while I was waiting for you You're annoying Baby I'm sorry to prank you but did I get you Yes you got me I rushed home for you to see it And then you just friggin you just lie to me I'm sorry maybe maybe one day But not today He knows how to edit so good that looks so good Your first picture I was kind of like No he didn't and then the second picture It looks so legit like it was Picture perfect crisp I'm like okay I only had 20 minutes to edit That's why I had to edit myself In a tattoo parlor tattoo shop With a girl next to me And the tattoo on my arm it took me forever The second one actually took like 10 minutes Mama Scott I hope you guys enjoyed this video Literally I poured my soul into making this As good as I can with the time limit That I had I wish you went and got your hair done Because it would have gave me like hours To actually edit the photo but I think For what it is those came out Really good especially the second one The second one looked legit I could send that to my mom She'd probably be like what did you do Yeah you could you really could send that to your mom But guys we hope you enjoyed today's video Just know team Araya we'll be back I have something up my sleeve That I already know I already have it planned Whatever I'm not saying anything I don't care At least expect it you're not going to expect it Like this is going to be brilliant like trust me Bill I'm going to be getting you crying soon Okay well we'll see because you're slacking That's two that's two for me and zero For you this whole month I don't know because this thing I have up my sleeve Is something that's going to be Alright well we don't have to talk more about that Oh and next video? Next video is the video guys that we've been talking about When it comes to me and balding We are getting something done The day that you're watching this video Tomorrow we are getting the procedure I got to title the video Today is the day That's all we're saying if you haven't watched My balding videos make sure to go watch them We already posted two videos but We are going to be posting the video I think this Wednesday right? Wednesday maybe Friday Either way the video is coming out And you're going to see the before and after results Of my surgery that I'm getting done It's going to be freaking insane Make sure to subscribe if you haven't already Please give me a thumbs up Every single thumbs up helps support me during surgery And I love you guys I hope you enjoyed this video We will see you in the next video But until then peace love you guys


So, let's do this. Let's like the scandal. So, we're going to talk about extreme programming using open source tools. All right. And I'm Matt, and this is Luis. That's our contact infos, if you want to talk to us later, whatever. We're doing two talks at the, Luis is doing three.  But we're doing two talks around this kind of area of discussion. So, this one's about extreme programming. We're going to talk about a project that we open sourced from our black hat class that we taught for four days. And this is kind of an introduction to that project from the perspective of how the project was developed.  No names. All right. So, I'm Matt and I have done speaking and writing. Last time I spoke at DEF CON was in 2000 or 99. DEF CON 8, I think. 2000. And at that time, Luis and I did back to back presentations. And so I talked about testing IDSs and firewalls using open source tools and how to find exploitable bugs in firewalls and IDSs and other protocol parsing type things. And not a whole lot has changed since then. But even so, I'm going to talk about something different instead of rehashing the thing I talked about seven years ago, unlike some people. So, in that time, we released several exploitable security advisories. Luis and I worked together a lot of that kind of stuff. One of them was one of them. NetBSD, what was it, ICMP? Oh, yeah. NetBSD, an online ICMP option. We found one packet that would crash. NetBSD, openBSD or freeBSD was one packet. That was kind of fun. IE5 on Unix. Oh, and exploitable bug in Trillion 3.1, or any version of Trillion, really. And so various security advisories. Basically, we know what we're talking about on the exploitable side of the house. And so this might seem a little bit fruity, this whole extreme programming thing, but we're coming from a perspective of deep reverse engineering and very deep technical stuff. And so I've worked a lot on product stuff, on security products. I worked on network security scanners a long time ago. Worked on one of the first hybrid host-based intrusion detection systems. Does a little bit too ahead of its time. And of course, everyone's like, why would I put an IDS on my host? And of course, now, like, that's a gazillion dollar market. I also contribute a lot to open source, and I fund a good deal of open source development. One of the things I'm funding right now is PlayStation 2 emulator, so I can play it on my Xbox, because I don't want to give Sony a dime and I want to play Katamari. So I've been doing extreme programming and natural software development for about a little over four years now, and honing that and getting better and better at it. And so I'm going to talk from the perspective of a lot of experience with, like, seeing what goes wrong and course corrections and things like that. You can talk about yourself. So my name is Luis. I do a lot of reversing work. I'm doing another talk here at DEF CON on how to combine disassemblers and debuggers together to maximize your results, feedback, everything from your debugger back into your disassembly and create this kind of loop of information. And I've done a lot of hardware and software reversing and worked on different projects, some with Matt and other security projects. But really, I'm here today to talk about my experiences just starting out doing agile development. This whole project that we've been working on, we started, I started coding it about four weeks ago. I'd never touched C-Sharp or any type of XP programming before. And I was just giving some customer tests by Matt and based the whole project around that. And I thought XP programming was retarded. Like, when I first started doing it, I just thought it was all these really simple tests and it's just like people wasting time instead of like really doing coding. But as we'll go through this talk, I'll talk about how my opinions have changed and part of it, there's this great quote from Office Space when they're in the car and they just found out that they got like, I don't know, like $300,000 in their bank account and they're only supposed to be taking out pennies a day, right? And the Michael Bolton guy says, I always mess up the mundane details. And that's what this is all about. This gets rid of all those little bugs. So I'm going to hand it back off to Matt. All right, quick, quick, quick agenda thing. I got to like deep through this mic for this, for this to work. It's really strange. Yeah. Anyways, so extreme programming, we're going to talk about stories, which I know sounds really gay, but you'll understand in a second why it's useful to think about features in this way. Pair programming, test driven development, incremental design and continuous integration. And some of the tools that you can use to do remote pair programming and things like that. And these tools are very little bit with Luis leading up to the class when he was basically done with the code. And I've also used them when working with outsourced engineers basically to pair with outsourced engineers and do XP with people who are really far away. And so this is how this can kind of apply to open source projects where there's kind of a time disparity between members of the project. And then we're going to do a quick demo on the involving the code that the open source project we talked about that analyzes a x86 binary code to find exploitable security vulnerabilities automatically. And again, there's a second talk where we're going to go way deep down into that tool. But this talk is more about the process developing that tool, even so you're going to get a glimpse of it. Yeah. So extreme programming. The main thing with extreme programming and all agile software development is you have short release cycles. This is open sourcing of release early and release often, I think is what it is or whatever. That came from extreme programming and agile software development. That wasn't like an incredibly new thing. It seems to work really well in the open source world because you get a tight kind of feedback loop, you find bugs sooner, et cetera, et cetera, your users get a hold of it if they really want to and what have you. I think some people, a lot of open source projects sort of just release without even thinking about it. And so it's frustrating to the users because you go download something that's supposedly fixed. You have to go down like the daily snapshot or nightly snapshot that fixes a bug. It turns out it won't even run because it crashes when it starts because they don't do any testing. So but anyway, that's really one of things agile software development is all about is release early release often. And as a concept of weekly releases and quarterly releases quote unquote. And what they mean by weekly releases is basically you want to plan to have a complete, fully tested working release every week, maybe two weeks or depending on whatever, three to four weeks, but no more than a month. And by doing this, basically, you always make sure the code is always releasable. And basically, you have to maintain a very high level of quality to make this happen.  And this is the exact problem that commercial software has. This is why it takes people so long to respond to like simple security bugs where you look at the disassembly, you're like, why don't they just release a patch and fix this? It's because they don't have good quality processes. And so hopefully for the love of God, the open source community can like not make the same mistakes that the closed source commercial community makes one would hope quarter releases. So you want to use weekly releases, but you kind of batch things together and kind of like a conceptual continuity package of here we're adding like little features every week to, I don't know, say like add VoIP support to some Java client, let's say. And then at the end of that, you're going to do an official release with everything packaged together and really well integrated, et cetera, et cetera. And so you want to kind of plan like, okay, in three months, we're going to do a release of this Java client with VoIP support, let's say.  So the other thing with extreme programming, natural software development, documentation that is not in code, i.e. that is not code, i.e. you have to update documentation every time you change your code is a waste of time. Because A, you have to waste time not coding and you have to keep your documentation up to date if your documentation isn't in code. And B, if you don't do that, your documentation is worthless at best and misleading at worst. I don't know if anybody has ever seen some like open source API documentation that's totally wrong or read a book like I was reading a book on cruise control, which is an automated build thing. And the book was wrong because they were going off of the docs of cruise control and the cruise control docs were wrong.  So if documentation isn't in code and tests and you're on an open source project and you're trying to move fast, you're basically slowing yourself down if you don't put your documentation in your code. Automated tests show progress basically. So if you have automated system tests, and we'll talk about that in a second, for a feature, you know you're done with that feature when that test passes. Otherwise, you can continue to just like mentally masturbate or whatever and do all kinds of things that have nothing to do with closing the feature down and getting the feature done. It's really irritating when your users are waiting for a feature from open source or closed source project or fix a security bug or a security patch and you can't close it down because there's nothing to focus on. And so we're going to talk about doing the simplest thing that could possibly work and having automated tests focus your work a great deal. The other thing is evolutionary design is the concept of big design up front or BDUF as it is called. And so there's two kind of ways I've seen open source projects go either it's all the design and there's no code whatsoever and you're busy like tweaking a design, this utopian design for God's own whatever it is that you're working on or you should out code constantly and there's no cohesion, there's no coherence, it doesn't make any sense. Either extreme is really bad and so extreme program has an approach that basically an agile development has an approach where you let a design emerge by doing things intelligently. You think about it a little bit, it's not no design, it's the least amount of design that you can do and still have and still produce really good code basically. The other thing is XP and agile development balances short-term instincts and long-term kind of needs basically. Long-term needs are code that's not shit or you know stuff that doesn't crash when you run it or you know happy users or whatever short-term instincts are we have to get this feature done now we have to get the security patch out now and how do you balance these two things in a meaningful way without sort of shirking either one right how do you be responsive without like fucking your design to the point where you're going to have to rewrite it from scratch for instance and also between like all these things like pair programming and test-driven development all those things you have no fear how many people here have worked on code or worked on a product or worked on whatever where people say things like you know I could fix that but I'm afraid I might break something how many people have heard that yeah that's fucking bogus all right that that's a position of helplessness and that's fucked up I don't like to be in a position of helplessness especially when it comes to code I just fucking wrote and so no even an open source project no one should be able to like take away your position of kind of safety or security from that perspective and this is again where a lot of commercial software companies are with like they can't do anything it's not because bureaucracy necessary it's because they they're scared of their code they don't know all the nukes and crannies they don't have automated tests they didn't do a pair programming so the fearlessness makes us a bamfork how many people here know aquatine hunger force aquatine hunger force so so there is a episode called super computer so anybody has anybody seen this episode of aquatine three people all right it's three real fans in the audience so frolock won a name of super computer oogie mctar which is a Klingon name and shake suggestion was to call it bad-ass mother for a thousand twice as fast as your ass when you do XP it'll seem like you're going slow at first but here's the thing with all these things in place you fucking fast like that and you're always coding you're not debugging you're doing like worthless shit it feels really great so it seems slow at first but basically what it is it's actually very very quickly because you don't have any fear you're gonna break something or that you know whatever so stories are a short description of an end user goal and then use the goal like here's a small c program I want to detect the expletible format string bug in this particular program that's a story right and basically what it comes from the perspective is what what is the user what's the user goal what's the user trying to accomplish right in like what's like their primary goal basically and it sounds obvious but if you don't start from this point you're like yeah avoid jabber client never mind how people might want to use it right and then you make it so it's embedded on a USB key and you have to like hook it up to like you know to tin cans connected with string for it to work this is what happens right well-intentioned you know this would be a really cool tool this would be really cool you know whatever or library or whatever you don't think about like how it's actually gonna be used which a lot of people seemingly don't you're gonna produce something that no one wants to use and then you just wasted your time and a whole bunch of other people's time I personally don't like to do that maybe other people do but probably not so you take this story you're like okay how you know how hard is this basically instead of estimating in terms of hours or days or whatever you say how hard is this going to be so XP has a concept of points or you call whatever you want just don't use a time based thing say oh this is one difficulty point this is two difficulty points is three difficulty points right and so over time you start to figure out oh one difficulty point over time you know averaged out took takes about eight hours let's say or whatever but it's all points it's all abstract you want to like force people think oh god I've got to get it done in two days otherwise like I look lame or whatever this is one of the things that this is a total trap of software estimation by days or by hours or whatever because as you get closer and close you start taking more and more shortcuts so you can meet some deadline that doesn't really matter where the thing that matters is delivering working high-quality code as opposed to meeting a deadline of winning a race hypothetically speaking in this varies each story should take one to two days at the most right if a story is like if you if you can't think of like a way that the story might be completed in like one or two days it means it's too big of a story you need to split it up so instead of like the story is we did have a jabber VoIP client that's kind of a big story you're not going to finish that in two days most likely I don't care who you are at least not with high quality and and with tests and what have you so so you have to kind of like learn to break it up what's what's what's the minimal incremental step we could take that would deliver value basically that would be kind of useful right even if it's not releasable to the general public or whatever something we can get started with it's like the seed of whatever right so maybe like how about just like you know connecting to the VoIP network or connecting to the jabber network or whatever or finishing the first VoIP exchange never mind the codex just finishing the handshake or whatever and so breaking things up into these little kind of pieces and then when you like when you have these pieces you're focused on you make sure they work 100% instead of trying to like throw together an entire system all at once that's how you make sure that your code is really high quality and everything works incrementally as a unit instead of trying to throw it all together once and so the other thing that you do with stories is you come up with an automated test away you can automatically test and that test fails and when you are done implementing the functionality that you're trying to do the test passes you so you know when you're done and so you can focus on doing the simplest thing that could possibly work to make that pass sometimes that involves cheating but we'll talk about that in a minute and so in this context how to deal with bugs like here's up here's a problem of bugs bugs are like like fire alarms or whatever it's like stop everything you're doing we're gonna go fix bugs now that's worth it basically and that's not the way to develop good software because if people are gonna keep distracting with bugs and bugs and bugs you're not gonna finish your story you're gonna forget what you're doing you come back to your story and be kind of scatterbrained and that's not good just common sense basically so the way that you deal with bugs is bugs are also stories so if you have like one week iterations and there's like a and there's like a bug or whatever scheduled to the next iteration instead of the story if it's that important usually bugs aren't usually not actually that important when it comes into the grand scheme of things alright pair programming this is the most controversial part of XP for some goddamn reason I really don't know why but basically pair programming you're we're gonna do a demo you're gonna see it is two people programming at the same time you know like how the hell is that gonna work you know try to share the keyboard or is it two keyboards or what the hell will show you in the demo it's a lot easier to show than to describe but basically pair programming is like a constant code review effectively and so the general thing to remember is that code written by one person is readable by one person and code written by two people is readable by at least two people two different people alright how many people here have like worked on an open-source project and somebody contributes a big chunk of code and you can't read it basically okay how many of you have thrown away that code and rewrote it from scratch right that's a big fucking waste of time right you're gonna piss off the person who thought they were doing good right and so wasted your time because like that's a great feature and now you're distracted from working on the thing you are focusing on to fix somebody else's shitty code for the sake of you know whatever and so this helps avoid that problem and so one of the problems with pair programming open source stuff is the geographical disparity sort of time zone disparity like a temporal disparity if you will and so and and kind of like how do you deal with that so we're going to show remote pair programming thing using the VNC and we'll get into that when we get into tools but basically you can kind of like play ping-pong around the world or kind of like pass the torch around the world if you have like somebody who's in like you know on the west coast on the US on the east coast of the US and somebody who's in the UK and then somebody who's an indie and then someone who's an agent someone is whatever you can make sure that that's like everybody's pairing with someone as you go around the world or you don't have to pair all the time right you know you have to pair all the time there's a practicality that comes into play basically you know and so you want to just like kind of make make sure people knew the project or on the right track perhaps or you know make sure that they're always checking in tests TDD test of development which is I think the next slide is probably the most difficult part of extreme programming everyone focuses on pair programming and because I don't know it's the programming less about their ego or I'm not sure what the real sort of social problem is but TDD is much much more difficult to grasp as a technical concept and to execute upon another thing too is that it provides a sort of check and balances between when you have more than one person you have two people so you're not going to write crappy code when someone else is looking at at the same time and it keeps the standards up and you can also be like hey does this look cool am I like smoking crack or is this wrong is this right and you go back and forth and you brainstorm ideas and it works out quite well yeah the code basically ends up really bad ass right off the bat no time wasted no throwing out code like writing and then a re right if you're rewriting code you're fucking idiot if you're like well we're going to rewrite this in six months blah blah blah yeah why don't you just do it right now so that you can move on with your life basically I really don't understand why people choose to like take steps that are ultimately going to waste their time and produce code that no one wants to use or contribute to maybe it's some SNM thing like some kind of kink like you know I want to waste my time that's the only way I can come or something I don't know but anyways and so there's a kind of a pair of programs kind of like a ping pong that goes on basically it's like well and so one of the responses when I had a job ahead it's like something I was like I don't want to pay a program I don't want someone to watch me pair approach program all day I'm like no one wants to fucking watch you program all day all right this isn't about you like his response is like very kind of indicative of his kind of overall megalomania but you know what's a pro one of what nobody wants to watch you program all day you know it's an interaction it's a back and forth basically and you'll see in the demo when we pair program kind of what goes on and so one of the ways to like make sure it's kind of even is one person writes you know test the other person makes a pass right the other than the other person refactors and you kind of go back and forth anti-patterns you want to avoid our only one person the pair writes the tests that's that sucks just as much as watching somebody program basically or or you know or someone's a keyboard hog or whatever and so these issues are easy to get around if you're physically pair program with someone someone's like cogging the keyboard just like poking with the stick and say knock it off if it's remote you have to kind of just say over the VoIP or whatever that you're using and we'll get into that in a second is is this like hey you know why don't you sit on your hands for a second and why don't you tell me what you'd like me to do so I get a chance to type right it's a it's a it's a it's a ping pong thing it's a balanced thing if it's not basically if there's someone's a keyboard hog or I don't want to pair or the thing to avoid the real thing to avoid it's a real big social problem that's just gonna end in tears it's special people who don't need to pair because they're so fucking smart that they're programming dicks are so big that they don't have to pair with anyone but everybody else does that's that's that's fucking bogus that's that's completely bogus it generates bad feelings there's one smart person everybody else is dumb who's a couple smart people everybody else is dumb don't fall into that temptation I've worked at two jobs now that have done that it generates bad feelings about the people who are special and rightfully so someone doesn't want to pair kick them the fuck off I don't care how smart they are there's lots of smart people and you can find some with more humility the problem with people who don't have humility who won't pair is they won't admit to mistakes they'll cover up mistakes because they they have to sort of exude this image of being like the most awesomest programmer on the planet or whatever so these are the people who be who be like yeah select is broken on Solaris right my program's not fucked up select on Solaris is broken select not broken select is not broken your code is fucked up but this is kind of shit you hear from people who don't have humility it can't be my fault my programming big dick is this big right and if I admit to any mistakes yeah right it's just gonna like reduce me in the eyes of my peers this is a real social problem like joking about it but this is a real social problem if you see us on your project open source or otherwise get rid of that person either make them change or get rid of them it's it's ultimately poison test driven development I think is probably one of the best things to happen to software development since I don't know when since like 4gls or something it's really really quite amazing so let me try to go through this relatively quickly so the first thing you do to start with a failing system test like I said you have a feature like the negotiation has to finish right so how let's say it's a joy a joy Vabber client a jabber VoIP clients good thing I didn't drink any caffeine or otherwise it'd be totally incomprehensible so how would you write an automated system test for that well how do I not miss this but what you could start a server background the process a little basic kind of server starts your client basically and have them say hello to each other and you can verify that that works and then when the test is done when the client is done the server exits and etc etc right that's pretty easy so you start with that right and that you're failing sort of your failing system test that's going to do that your main goal in life is to make that test pass anything else is a distraction so once you have a failing system test you go into failing unit tests and this will make some more sense when we get into it when we start programming you have a hope and still no that's okay all right good Luis have been fucking with me all day so I just thought he was screwing with me a little bit so yeah so you have your failing system tests then you start writing failing is a TDD is you you have a you want to write new code to make a test pass basically so you start with a failing unit test that probably with brand new code show the failing you test that doesn't even compile right the method does the function doesn't exist the class doesn't exist etc etc right you start with the simplest test that could possibly work in the case of a stack for instance you make a new stack and verify that it's empty right stack doesn't exist and is empty doesn't exist and so you go and implement those things to do the bare minimum to make it work and so the simplest thing do the simplest thing that could possibly work not the stupidest thing that could possibly work this is not a license to sort of duplicate large swaths of code and to continue to produce shit just because you have tests basically right so you have a failing test you make it pass and then you refactor this is what you have to do otherwise you're gonna have lots of tests first code that is still shitty basically and you can't maintain the code and you can't maintain the test and the system is still very brittle it's a very important component basically you have to kind of do all these things together and so there's kind of a rhythm to TDD and that's like test a little code a little test a little code a little test a little code a little refactor to eliminate duplication etc etc make to make and then make the so it's like failing test passing it's called red green refactor it's called the stop light pattern if you read Kent that's Kent Beck's book red green refactor it's called stop light pattern basically and you just repeat this until your system test passes right so that's a kind of rhythm basically that you get into and once you and it seems really slow to get into the rhythm basically and you're like okay boom boom boom boom and so it's red green refactor because in the tools failing tests it gives you red and passing tests gives you green you talk about the green addiction I think we have to show it okay we'll show it and always will commentate upon that though things really great about TDD is it just works there's none of this like you know spending lots of your time in the debugger trying to figure out what the hell is going on in your program I personally find that extremely tedious and boring I like to write code debugging is not writing code basically like I like to write code like to write very clean code and when I have when I'm in the debugger I am frustrated basically because basically that meant I took too big of a step without tests or something like that and and do you want to talk about that sure go for it so you work in in these small incremental steps and when when I started noticing that that things weren't really going as slow as I had originally thought is because I had an opened up a debugger at all we were coding for I don't know like eight hours straight and not once it have to open up a debugger and I'm not the type of person that is shy about a debugger first time I see any kind of code if I even if I source the first thing I'm gonna do is I open up an IDA I start all idea whatever I look at stuff better in assembly a lot of the time than I do in source so this was really surprising to me and so what we started doing is just do little little incremental changes you add one method and test that make sure that the interface is working and then then that's solid you can move on to something else so it's kind of like you have all these little modules you test this module here everything is working fine you can set it aside you don't have to worry about it anymore then you move on to the next thing and it's like building blocks as you have it like it's like a pyramid you start putting things together one after the other after the other and then finally you have this complete solution and you can if you want to replace a block you can place a block it's not going to all fall down yeah if it does you know yeah your test tell you everything you you do one change you're like okay I'm gonna try to change let's say I'm gonna I'm gonna try a different protocol with with the server and you write that if it doesn't work your tests are gonna tell you and you could just revert it right back any change you make you'll know right away if it affects any other part of the program you don't have to worry about okay if I change the structure here it's gonna affect everything everywhere and it'll never compile again the the very wise phrase I can't remember where I read it it was probably came back around Jeffers if I say the code will tell you what to do the code will tell you what to do if you have a failing system test the code is telling you to implement a feature if you have a failing in a test the code is telling you to do the simplest thing you possibly work to implement that test if all your tests are passing and you make a minor opt would you perceive to be a minor optimization such as like changing a class to a struct or what have you now your tests start to fail you made like two-line change back back you're back to passing as opposed to oh god I guess they have to like figure out how to integrate this or you know just like coded for eight hours straight and now like everything's broken you don't know what to do your blurry eyed the crank that you snorted to program really fast is starting to wear off and you're like shit what do I do fuck I'll just have to revert eight hours wasted fuck that shit I don't like wasting my time maybe some people do again whatever your king happens to be different strokes make the world go around so it just works less debugging more coding if I can hate debugging hate debugging programming by intention the other thing with TD is that since you're like since basically you're writing your tests first you're getting like real a bird real birds eye view of kind of what the code's gonna look like when people other people go to use it basically so if it takes you ten lines of code to make a connection to the jabber server or whatever I keep using this example but run with me here right big if it takes ten lines of code your API is wrong it's design feedback on your API you get that from writing the test first so by starting out with a good API that's clean from a consuming in test kind of perspective you basically get all the advantages of if you had molded in you know now for six months with no code written whatsoever or did like God's own design for a jabber client with no working code it's not only do you have a very clean decoupled really maintainable and extensible design because you had to write the tests first and for things to be testable they have to have those design qualities you don't have that you have working code and regression tests at the same time it's really fucking badass and this is a thing something that people kind of I think don't get when they read about TDD it's more of a design methodology than a testing methodology it's like testing is for QA testing is for whatever blah blah it's like okay so your job is to write shit that doesn't work all right if you want to admit that see how we're see how far they get you in your career like maybe you know I may be in government work actually anyways but probably you know you don't want to say that out loud and so if you kind of like start to think about it yeah I probably should make sure that my code works so I don't waste my peers time right or I don't fuck up this open-source project and look like a complete dunce it only takes a little bit of foresight to sort of like oh if you do like have a little conversation in your head basically and you realize oh why do I think that why do I think testing is for other people and not for me writing the code it's a really bad kind of social thing that's been kind of persisted through the years I don't understand why anyways and so writing things a TD to make sure you're programming by intention things work because you intended them to right how many people here have been writing code and you think that you're not done but all of a sudden things work and you're like why is this working one two three four five six right that's just as bad as if you expect it to work and it does it basically you're no longer one with your code you don't know what's going on that's a bad place to be that is a very slippery slope and when things work when you don't think that they should that that that's just as dangerous as the opposite kind of situation right and that's called programming by coincidence that's a pragmatic programmer thing which is a really great book pragmatic pro the the pragmatic programmer they got programming by coincidence it happens to work I'm real happy yeah right I just happen to not have diabetes does that mean I'm not going to go to my doctor no right so incremental design so TDD can leads an incremental design emergent design as it's sometimes called and this comes down to what I said earlier the code will tell you what to do it's is very simple very wise thing it says by the way I hope you know this is we're talking about like methodology we're talking about code we're not talking about plans and designs and documents and bullshit we're talking about writing code staying in code as much as possible and getting as much done as possible about wasting time if you like to write code and you and you like to not waste time this is really what you should be doing basically anyways so there's a couple things with the emergent design and TDD right and one of the things is that if if you can't test if something's difficult to unit test if you can't test it it's wrong your design is wrong get over it make it testable if you can't test it if you can't mock out the sockets or you can't do whatever you're you're you're wrong basically and you set to own you have to set up that and go okay it's difficult to test that doesn't mean unit testing sucks that doesn't mean that like the unit testing tool is broken which is similar to the select is broken thing you have to go okay this is this is the test code giving me design feedback I need to consider this and figure out how this can be made easier to test right or how it can be made to be testable if it's not testable your design is wrong you have close coupling inappropriate intimacy I know coupling and intimacy that's really funny I didn't make those up those are object oriented weenies came up with that like in the mid 90s and it's in the design patterns book thinking of four book and stuff like that having a design with these problems with coupling problems and appropriate intimacy in circular dependencies means you're in for a world of pain just like in the big Lebowski right if you're a Vietnam Billy this is what happens when you fuck a stranger in the ass you're hitting for a world of pain basically and this is the test telling you right now when it's easy to change once you have a lot of code all based around design changing it becomes much much more difficult especially when you have coupling and like inappropriate intimacy and circular dependencies good luck refactoring that this is what this is where people hit the brick wall they're like shit we have to rewrite everything now we have to start over from scratch maybe reuse some of the code or whatever every every every read I've ever seen has always introduced more bugs and it solves basically because you're not giving yourself the feedback loop you think you've learned your lessons there's less of salient details you have not picked up on as far as the feedback from your design I don't care if it's in UML or whatever the tests tell you what to do the code will tell you what to do as far as your design so the other thing is fake it till you make it right do you need to come up with a complete implementation of the jabber protocol to pass this one test of the handshake finishing no you don't if it's not encrypted do you need to like write use an SSL library or whatever no it's all about scoping scoping your stories down to the point where it's like a small chunk of functionality it's gonna be easy to easy to implement basically and so and so one of things you can do is you can fake it till you make it basically and we'll get into that when we start writing the test but basically doing the simple thing could possibly work like if you're writing out one test that expects a certain method to return zero and just make that method return zero right and then you write another test that expects one or some other return value that's when you that's when you generalize basically don't generalize up front we don't design up front we wait for the code tell us what to do let me see so Lynn eliminating duplication how many people here have seen like probably I don't know entire functions duplicated across a project like maybe 10 plus times yeah how many people here think that's fucking retarded yeah you're right you're not wrong basically and so eliminating duplication that is another thing the code will tell you what to do you have duplication there's two there's two different kind of acronyms there's DRI we just don't repeat yourself and it was once and only once OO AO which are to a programmatic programmer kind of things so don't repeat yourself if the code is repeating it's if there's more than one source of information for a particular kind of information in the system there's something wrong in your design it's it comes down to read to call it to sort of encapsulating responsibility for certain things effectively or coming up with a generalized class design or whatever but sharing code is good for the most part if you don't do it stupidly and so limiting duplication is one of the best things you can do to improve your design this is another that then without tests even forget TDD if you see duplication you factor so there is no duplication the code will tell you what to do to improve your design and improve your code you just have to stop thinking you're incredibly clever and pay attention and listen to the code testing them in a coupling and inappropriate intimacy so coupling is basically if you have like two classes basically right and they call into each other all the time right it's really close coupling basically it's kind of like there's like almost like a a sewing pattern design these two between these two classes and basically they're useless without each other that's coupling basically and it doesn't make for a very versatile design and I'm not going to go into why that's a really bad idea hopefully it's somewhat obvious if anybody has any questions come talk to me later and I'll explain it to you inappropriate intimacy is similar where like basically one component of your of your app knows a little too much about the internal workings of how this other thing works like it knows too much about like it knows that oh it goes eight characters in ads five and does whatever to come up with its with its IV for its encryption or whatever you don't want to have those details spread throughout the system that comes down to once and only once the details of how that is done should be expressed once in the system right and so sometimes you write tests that know a little bit too much about the underlying class or whatever and you want to kind of pay attention and avoid that also for the sake of brevity I'll move on but if you have questions let me know okay so then there's cohesion so I'm talking too much so we're going to skip to the next slide continuous integration build your software all the time you have an automated build it runs once a day run it all the time there's no reason not to why wait until the way wait why wait until 12 a.m. or 5 a.m. or whatever your build runs to find out if that your code doesn't compile your tests are failing if you have an automated build run it all the time it's just kind of common sense basically you don't have to have you don't have to have a dedicated build machine you can have a shell script that does an SVN update compiles the code runs that runs the unit tests and then runs the system tests that's like a four-line shell script let's see yep oh the cool thing is that you know whose fault it is it's like oh there are 50 check-ins that day from a hundred different developers whose fault is it I don't know you could go look at diffs for like eight hours to try to figure it out when you have a continuous build that runs all the time there's probably only a couple of check-ins that have happened since the last build right so you're gonna know who broke it and then you know who to kick in the balls basically so we see so tools basically stories you don't need anything fancy for to do storage you just have a wiki basically orange source for it they have a feature request tracker which is a good place to store stories things like that you don't need a commercial tool or anything fancy some people just have a little text file in their source control repository pair programming remotely you just need a remote desktop software Luis and I like tight VNC rather than tights that's right just like your mom and your dad yeah we prefer tight VNC it's an open-source thing it's got a lot of cool optimizations it just works really well real VNC is still usable and you know you should use it on Mac OS there's a there's a couple of VNCs that you can use tight VNC doesn't run on Mac OS just yet if you're pairing between different Mac developers so here's here's some command line options I found to be useful dash BGR 233 is the best by the way it takes 16 bits 16 bit color information and puts it down into 8 bit color information but it doesn't look really really weird dithering wise and that's really handy if you have if you're pairing with an open-source developer say in India or whatever where they have got kind of limited bandwidth coming into the country or someone's on a dial-up this is still utterly doable that's a little it might look weird depending on the colors and the ID syntax hiding you use and stuff but check it out it'll basically work audio check also do it within a VM wires and so you can you don't have to worry about sharing your whole desktop you can do you can have a VM wire session running and then also tunnel all the VNC over SSH yep it's possible to do this highly securely if you don't trust that developer in India or Pakistan or Germany or wherever or the US for that matter another really key component is audio chat and there's a bunch of free audio chat stuff that you can do basically but kind of pair programming like being in the pair programming and having like switched to an IM client in the middle of writing code like communicate doesn't work I tried it it seems like it would be okay but it kind of doesn't work and so audio chat is really kind of a necessity and so there's free stuff you can use so jabber has a thing called jingle which I guess was developed by Google that developed by Google yeah and so there's a lib jingle and so co-peat with my personal preference 0.12 implements this game 2.0 implements this Google talk is technically not open source but I figured I mentioned it anyway it also implements that if you're not totally worried about completely using 100% open source stuff there's also GNOME meeting which uses H323 or whatever it is and I can also interact with that Windows thing I can't remember what it is net meeting thank you and there's also Skype which is not open source please forgive me but it's still very useful it gets it's still useful tool there's a Linux client as a Windows client et cetera et cetera web cams are not necessary don't waste your bandwidth with web cams what the fuck are you gonna do sign language to each other like if you're working with a dev developer fine but if you're not web cams are waste of time it's a waste of bandwidth you want your typing to be very responsive you want your audio chat to be very responsive all right I talked for too long I'm sorry so we do we have time for questions where's the person where's two minutes four questions do you want to ask questions or do you want to see us demo this real quick Jesus fucking Christ so the rest of the slides kind of document different tools and things like that it is good so the SVN repo for this project is on source forage at that URL right there it's not in the slides because we wanted to release it exclusively a black hat and def con so it's on the printed slide so if you're so interested write it down it's not going to be it's not on the CD so system test failing how are we going to do that let's show you see that's a good idea yeah no work is unreachable all right no problem it's just not at her anymore is it oops all right so what is it it's okay whoops caps lock on sorry about that sorry about that all right cool so for some reason in kubuntu when I do dual monitors they will only do 640 by 40 anybody who knows how to fix this please let me know so that the talk tomorrow is in greater than 640 by fucking 480 but just but just to show like like his his laptop is some ungodly 16 by 9 resolution that's like really huge but just goes to show like I can still see I can still see the code I can still interact in fact I was in the Minneapolis airport stuck because of united airlines who suck balls and Luis was like I have this compile problem not sure what to do I was able to use palm vnc on my trail to vnc into his thing while I was talking with him on the phone and go oh you're using parents and you use less than greater than that's pretty badass in my personal opinion so anyways so we can see the code here and so so this is a a all right it's a vnc connection basically and so the system says that we have our one with a simple python script that will show very briefly for 30 seconds these are the unit tests this is the green you get addicted to the green every time you see more green it's like you're doing something right every time you see the red you're like oh shit that's really what it comes down to and every time you see the green you're like yes everything I just is 100% correct and I know it it's a real ego boost that's basically why there's no other way to work in my personal opinion so the system tests so we'll show the rest later at the next talk which is on Saturday at 8 p.m. assuming that those start on time etc etc thanks


Daily Tech News show is made possible by its listeners, thanks to all of you including Mike Aikens, Norm Physicus, and Chris Allen. Coming up on DTNS Today, Roku and Walmart are going the extra mile. How much fun are EVs to drive really? And how can ratings reviews get better? This is the Daily Tech News for Friday, June 17th, 2022. From Studio Redwood, I'm Sarah Lane. And from Columbus, Ohio, I'm Rob Dunwood. From North of the Wall, I'm technical producer Amos. And on the show is producer Roger Chang. We've got all sorts of stuff to talk to you about, including, yeah, making those ratings reviews better and EVs, what's good and what isn't good, if you're kind of a car nut. But first, let's start with a few tech things you should know. Snap confirmed that it's internally testing a subscription service called Snapchat Plus. Snap says this could include sharing exclusive experimental and pre-release features. And that researcher, Alessandro Paluzzi, found some examples like the ability to pin a friend as a number one BFF, see who rewatches stories, and changing the icon. Last year, the UK began a data reform consultation to outline how it will diverge from EU-based data rules. The government published a final response to this consultation, which called for switching to an opt-out model for most online tracking, eliminating things like cookie consent forms. Oh, they love those consent forms. It will also simplify legal requirements for processing data for scientific research and remove requirements for smaller entities to appoint a data protection officer and perform data impact assessments. Reddit announced it intends to acquire Spell, a cloud platform to run machine learning experiments founded by former Facebook engineer Sirkan Piantino. Some of the Spell team will work on ML projects and customizing ad placement and community safety. LG announced its dual-up monitor back at CES in January, effectively offering a 221.5-inch QHD monitor array stacked on top of each other within a single monitor able to display two sources at once. The dual-up is now shipping for $700. A group of Senate Democrats sent the letter to Commerce Secretary Gina Raimondo asking the department to develop a strategy for requiring common sharing ports on mobile devices sold in the U.S. The letter does not specifically call for USBC to be the standard, rather acts commerce to create a comprehensive strategy on adopting a standard. Boy, if it isn't USBC, what would it be? I hope it's USBC, please, just let it be there. It works, it's fast. I can't imagine what it would be otherwise, unless we're talking USB-D or whatever. Alright, so let's move on to Roku announcing a partnership with Walmart to make TV streaming part of its online shopping experience by closely tying entertainment to an e-commerce store. You might say, okay, what does that mean? It's not just a QR code thing, although that is already possible on many platforms. TV viewers in this partnership would be able to use their remote device using a shoppable TV commercial to choose a product and then check out using Roku Pay, which is Roku's payment platform. Products would be fulfilled by Walmart directly on Roku's streaming platform, so by tapping okay on the Walmart checkout page, the order goes through, the customer gets details about the order emailed with shipping, return and support information, and then eventually the product is delivered. William White, who is chief marketing officer over at Walmart, said in a statement about the partnership, quote, no one has cracked the code around video shoppability. By working with Roku, we're the first to market retailer, we're the first market retail to bring customers to a new shoppable experience and seamless checkout on the largest screen in their homes, their TV. Rob, what do you think about this? Is this something that you've ever delved into? So it's one of those things to wear out just more advertising, more advertising, more advertising, but this is the way the things are going.  It shows up at your doorstep a day or two later. That's just the way that things are going. And, you know, it kind of makes sense. And I'm wondering, I'm wondering, are we going to get to a point to where you're going to see the Roku's of the world, you're going to see the Amazons in the world. They're going to start offering some of their lower end televisions that have this stuff built in for free just to get you to view their advertising potentially buy stuff, or at least offer their services for free.  I would probably do it. What that means for the entertainment that you're watching and how that's going to be bundled in, you know, if this is just, you know, kind of overlay stuff, commercial stuff on top of a series or a movie. That's one thing, whether you like it or not, that is one thing. If it's baked into the content itself, that's another thing and that might shape how, you know, we see content going forward in the future, especially if this is successful. Yeah, I think it's going to be some all of that eventually I think it'll start off with just commercials as we know them today. So you're watching the commercial ooh, I need to get that you hit a button. And it's almost I know this is a Roku store but you know let's talk about Amazon Amazon has that buy now button it is very easy to do it's very quick it's not going to take you away from your watching experience.   You know the Roku pay thing to is is potentially very lucrative for Roku, you know Roku has has had a lot of success. And it's, you know, it's it's add market section sector, and I'm not a regular Roku user myself I have a Roku TV but I just kind of go Apple TV but I feel like if this is successful on any level. And when I mean any level like at the level of, yeah, we need to now, like you said, sell, or at least give people extremely cheap Roku enabled hardware so that they, you know, they get used to this and this becomes part of their experience. You know, it's it's the smart TV plus for shopping. I mean, if they were if they were really good at this if they really had a had a together ad sales team, you would combine things that would make sense. For example, hey, we got a we got it we got a championship game on why not have a pizza party and you get these discounted whatever pizza buys you get five pizza buys or whatever pepperoni on it. And you can combine that so it feels less forced and just very organic of course I would have pizza because I have a bunch of people over to watch this game with me. It totally makes sense. And I think, you know, if they go that model I can see it being a lot more successful than if it was. Oh, here's an ad if you want to if you want to get you know new car insurance just click here, and then you know we'll bring you something like that where it's a little less comprehensive. But at the same time, I don't know if maybe that might be off putting to people who are already, you know, marketed at in so many different ways, especially when it comes to online content, whether you know it's a website dropping, you know, pop up ads and stuff, or, you know, hey, why don't you sign up for a free month of you know whatever service you get a free phone, but you need to subscribe or whatever to this service I think, I don't know, I mean, it sounds good and on paper but I don't know in practice if people will necessarily gel to that idea even if it's very innocuous. People might have a mental block of, I don't know if I really want to just be sitting here absorbing ads all the time, even if the TV is free or the services free or whatever is free. Yeah, that's a really good point. Go ahead, Rob. I was gonna say I think a YouTube though. People will sit and watch YouTube videos all day long. Some of them will pay to not have ads, many don't, many just they'll sit there and they'll watch the ads or they'll skip through and get to the five seconds, you know, after the five seconds or however long YouTube is requiring these days. But I think that for, you know, particularly younger generations, they're just used to seeing ads on everything always all the time. So I don't see this as being, you know, terribly intrusive because once again, you know, I think that they're going to do it more so from a commercial standpoint commercials you're used to watching them anyway. How convenient is it to be able to just click a button to get the thing you see in the commercial or not click a button and not pay attention to the commercial like we generally don't do. I don't see it, you know, people being necessarily turned off by it because those who would be turned off simply would just never use it. Yeah, yeah. And you might be onto something there may be a generation gap of sorts here, you know, where I say my TV watching is the most passive experience I have in my entire day if I'm online, it's totally different. Yeah, I'm being served being being served ads left and right. But but there might be folks who go, Well, no, but that's how you buy things. How else would you know about things? This is this is organic. This is natural. And, and, yeah, we'll have to see what the youth tells us. Well, Jonathan M. Getland wrote a story on air as Technica philosophizing about the dilemma EVs present the serious drivers serious drivers or folks who enjoy driving performance cars to their limits. He gives a comparison between BMWs I for M 50 and electric sports sedan and BMWs gasoline powered M three competition. Both are four door cars with all drive or excuse me all will drive and produce more than 500 horsepower each from an everyday driver and cost perspective. The EV I for M 50 is the one to go with. But for those who want fun, Jonathan prefers the M three competition. It's a thousand pounds lighter than the equivalent making it more agile comes equipped with impractical racing bucket seats and produces loud throaty engine noises. The opines that EVs for the immediate future will be focused on designs for everyday use and not for performance seeking drivers. Do we agree with this? So I, I mean, full disclosure, I am just not a person who cares about, I don't even really know what horsepower is. I know it has something to do with going fast and quickly. But, you know, the, you know, a big old loud engine, you know, I got a lot of neighbors around my neck of the woods who care very much about these things. I don't. In fact, I feel like the quieter, the better. But the fact that the EV is just heavier by nature because, you know, you got different stuff in there, including a really heavy battery does play into it. And I wonder, yeah, how many folks who say, yeah, I mean, you know, I'm, I'm, I'm really into cars and I'm really into performance and EVs just aren't there yet. I, I to take off from one something you said in the last story, I think it is a generational thing.  And as that called car culture developed around the internal combustion issue between gasoline specifically gasoline powered cars. There was a modding culture you could you could tweak the car to handle perform in a specific way. Right.  And there was very much a feeling of accomplishment because learning to drive right before automax were a thing in the US people had to learn how to drive a stick and to drive a stick well took some skill. And so there was a badge of honor. I can not only, you know, build my car or buy one. I can drive it really well because I know how to roll my own five, five speed and I can do an autocross and, you know, whatever time that the course is set. And so I think in a way, it reminds me of the dilemma that people had or some people had when we moved from a command line interface to a GUI interface where, well, why would you need a mouse and a screen to tell you just to open up a program? I can type that in the command line very quickly. I don't need that. That's just as fast. In fact, it's faster.  And then we asked the question, do we agree? And I think yes, I do agree. And also no, I don't agree. I think what you have is that all cars are generally geared for people who just drive them to get from point A to point B. When you get into race cars or high performance cars, those are generally almost always something extra or something, you know, or something special. We do already see that with EVs.  That thing does something different than regular Teslas does. There are other EVs that are in the high performance, you know, areas just not high performance in the way that we think of it. Roger, where like we had, you know, shop back in high school where you learn how to actually work on cars that had carburetors, and you could do things to make them go faster. I think that we just think of things from that standpoint, whereas in the future, it'll be more of the electrical engineer, the electrician that is figuring out how to make these cars go faster. And what I'm reminded of is that I have a, you know, I have a relative who is really into electric RC racing and the amount of things that he does to get more juice out of a battery into a motor without actually burning the motor or the trans, you know, the conduit between the battery in the motor out is ridiculously he spends that kind of time on that. But just a little bit here can get you a second or, you know, over the course of the race. Like, what do they do? Well, that I can't tell you.  But I can't, I'm not an expert, so I can't tell you what they do. But my gut tells me that eventually you're going to start people start saying people do those same kind of things with EVs that where they're going to be tweaking, how can we get more, you know, how can we get more, you know, electricity out of this into this motor to turn the wheels faster. I think you're going to see those things.   You get it sometimes. All right, Epic Games has added user ratings to its story. You might say, all right, doesn't pretty much every company have that sort of thing. Well, Epic says reviewers have to play a game for at least two hours, and then be able to rate it on a five star scale. If you don't, maybe you don't care about the game enough and Epic doesn't want your review. Not everybody will be able to rate a game, however, so it's not just if you've got two hours to spare. Epic says it'll randomly offer players the chance to score a game after they finish a play session with the idea that this approach will prevent review bombing, which is pretty rampant, certainly in game reviews, but in reviews all over the internet in general, and make sure ratings are from people who are actually playing Epic's games. An overall rating will be determined by player scores, which will appear on a titles Epic Games Store page review bombing exists across apps and podcasts and game stores.  So, Rob, what are you thinking about Epic's idea here? I'm glad that they're trying something and they're trying things to get it right. I don't know that I would consider myself a gamer these days, to the extent to where it's like something I do every single day. But I do play at least every week, you know, twice a week, possibly I am playing a game for probably more than an hour at a time. I tell you that I probably don't look at a game that's been rated at all 10s and say, ooh, I need to go buy that game. But if there's a game that's rated low that has low ratings and the reviews are all so bad, I tend to maybe hold off on making a purchase until I can do more research. So I'm glad that they're trying to figure out a way how they can actually get legitimate ratings. They're going to make you play at least a couple of hours before you get the opportunity and then it's random whether or not you even get the opportunity to do a review. I don't know that that's the answer, but I'm glad that they're trying because I do see value in legitimate ratings of games and really any kind of content that you're purchasing. Absolutely. I mean, for a really long time, you know, especially because I have in my case podcasts, several of them that I want people to rate five stars, of course. But the five star rating standard, and it's not the same across the board, but that's pretty standard has always been problematic to me. Myself included, if I, for example, go to a restaurant and I have a terrible experience, it's like, alright, I'm going to go to Yelp and tell them why it was so terrible. If I had the best night of my life, I might say, this is the best restaurant I've ever been to five stars. The two, three, four stuff requires a little bit more. Well, why is it two? Why is it three? Why is it four? And some people take that pretty seriously.  Yeah, unless it's like the worst game ever. And I, you know, I, I kind of wish we could get to a point where we figured out a review system that a is not being gamed as much as it is and B just doesn't have this sort of sliding scale thing that we've all gotten so used to. But I think that most of us don't take that much advantage of. Yeah, and really, I think what Rob said earlier is the important part here. There's, they're taking steps to make this not the system that it was, and this may not be the answer, but this quite possibly isn't the answer. I'm a really, really big fan of Netflix's thumbs up, thumbs down, like you don't, it's just a binary thing. That's how I write all my movies. Yeah, like it or don't. But this is at least somebody pushing that envelope, the ratings forward so that we can find out a new way of doing this. And this is an interesting way of doing it where the longer you play a game, the more likely you are just randomly to get selected to rate the game. You know, so you're going to know more about it and you don't get to rate it if you've played less than two hours. At least they have a window there that, you know, is taking it from, oh, I played this game for five minutes, didn't like the intro, one star.  And I think that's, that's important, just push the algorithm forward, make it more useful by trying to change things and seeing what works and what doesn't. And if this doesn't work and they, they get rid of it and it's like, oh, that was a bad idea. Fine, but at least it was tried. Well said, Amos. Well, if you'd like us to hear a talk about something specific on the show, one way to let us know is in our subreddit. We look at it every day and we pick a lot of stories that float to the top of the subreddit. So submit your stories and vote on others at dailytechnewshow.reddit.com. All right, Nikkei Asia reports that many Japanese organizations may not be prepared for Microsoft Sunsetting of Internet Explorer this week. They were announced and officially Sunset it on Tuesday, but this report points to a March survey from the IT vendor Cayman's Net, which found that 49% of respondents at larger organizations were using the browser for work with over 20% saying they didn't know how to transition to another browser. The report also notes that the Japan Pension Service, government procurement sites and mutual aid corporations either require or at least recommend IE. So you have to assume, especially in the government sector, a lot of people are still using this and don't really know what to do afterwards. Since April, Tokyo based software developer, computer engineering and consulting services says that requests for help have been on the rise. Its customers are mostly government agencies, financial institutions and marketing and logistics companies that operate websites only compatible with Internet Explorer. Japan's Pension Service notices concerning online applications must also be viewed in Edge's Internet Explorer mode and Internet Explorer is the only recommended browser for government-backed mutual aid corporation for private schools. Yeah, IE became the global standard over Nutscape back in 1995. If you all were here, you remember it well. As of 2009 had a 65% market share, but some folks argued didn't work well with JavaScript and other programming languages that are necessary for creating interactive websites. Obviously, the Internet Explorer has gotten quite a bit of competition, even since 2009. People have a lot of options now. But Rob, I know that you've worked in the corporate sector enough to know that this probably rings pretty true. You get a lot of people saying, wait a second, this is the only way that I can do my job. Now what? Yeah, a lot of big companies, not necessarily tech companies, just companies that use tech, which is pretty much all of them at this point. They're not necessarily moved by Internet Explorer is ending of life. They don't necessarily see that as a business critical issue. They probably should, but they don't necessarily see it. It's like this works for us. This process is working. It's doing what we needed to do just because Microsoft is deciding not to support this anymore is not necessarily a good reason for us to change and stop using it. I'm not saying that's what all these companies are doing, but I know that there is a segment of them because I've worked for some that that's just how they think about these things. And it's not until a company like Microsoft says after 27 years, we're going to go ahead and actually really in life on this thing that they actually start to think about, OK, what do we do next? Yeah, yeah. Yeah, I mean, I know that the Nikkei Asia report focused focused on Japanese orgs, which is interesting in and of itself. But I wonder how many other organizations or people who work with them or for them around the world say, yeah, we got this problem too.  And a lot of this is not even in user. This is this is what the company is not sure what they're going to do because they've just baked and they've built stuff into Internet Explorer. And now I have to figure out something different. Well, you might be wondering if you're the only gamer playing games using Netflix. Netflix announced games has a limited title of games, but it's something that the company is definitely putting some effort into. Sensor Tower published a report on Netflix's mobile game popularity since launching some last year. And according to the report, Netflix games have generated over 13 million downloads globally. I mean, that's not terrible.  December 2021 had the most popular month with 2.3 million downloads at the same month that Netflix's second most popular game was launched, which was asphalt extreme, which is now an exclusive to Netflix following a shutdown on other mobile stores last September. Rob, I have not played one Netflix game, but I'm also not a Netflix subscriber. So I am a Netflix subscriber. And it's interesting. My daughter just turned 18 last month and I got her a iPad for her birthday. I don't know, probably after a week or so of her using it, she's like, Hey, dad, did you know you can play games on Netflix? I said, Dad's a tech blogger. Yeah, I knew which I did know, but it was like it was just kind of interesting. Someone who doesn't pay attention to any of this just on her iPad or new iPad looking at Netflix. Oh, there's games here. And she played now. Has she ever gone back and played a game since? I don't know. But she's one of those 13 million who's downloaded something. Yeah, for sure. For sure. I think that that's sort of iPad slash mobile experience probably has a lot to do with some of these numbers. Just because as we were talking about passive TV experiences earlier in the show and the idea that you might want to buy something that you see in a commercial. You know, as you're watching, you know, your favorite reality show, which would be me, you know, that that feels more counterintuitive to me than the mobile tablet experience. Yeah, I can see that. I haven't actually done it on mobile, on TV, on phone. I haven't done it. But I imagine there's a fair amount of people who are just, oh, this is here. Let me click on it and see what it does. Kind of go for it. Yeah, yeah. Well, you know, congratulations to your daughter on what'd you say graduation present? Birthday. So yes, birthday graduation all in the same week. Graduation of life. Moving on to the mail bag. By the way, if you have mail for us, please send it our way feedback at daily tech news show.com. Carl wanted to pitch in to the discussion we were having yesterday on the terms misinformation versus disinformation and how they differ. As Carl says, as a former Swedish special counsel for the protection of democratic dialogue charged by the Swedish government to mitigate effects of disinformation, propaganda and hate speech, and a Swedish context, I have some thoughts on your definitions of these concepts. Generally speaking, says Carl disinformation could be seen as information that's false. The person who is disseminated knows it's false. It's a deliberate intentional lie and points to people being actively disinformed by malicious actors. The person who has disinformation says Carl is information that is also false, but the person who is disseminating it believes that it's true. Mal information is information that's based on reality, but used to inflict harm on a person organization or country. Again, this is, you know, Carl's context, based on where he's worked. I think Carl finishes up with mitigation strategies for these three types of malign information are different as the target who spreads has different intent and different interests. Rob, where do you fall on, you know, when you when you see the term misinformation or disinformation, do they mean different things to you. I think so. I just want to know which bucket does alternative facts fall into. I'm saying that facetiously, but not really. It's like, you know, I do believe that there is a difference between telling somebody something that you believe that is wrong and you just don't know it as compared to telling something to someone that you know is wrong. You blatantly just misleading them. So I do see differences in the words, although they are spelled very similar to each other. And I think Carl totally is laying out the exact points that you made is like, if it's misinformation, it means that you're just kind of wrong, right. If it's disinformation, it means that you know you're wrong and you're doing it anyway. And then there's this other, other category of, well, it's true information, but I'm going to spin it in a way that ends up harming someone or something. And we did get quite a bit of feedback on this, by the way. So, you know, it's good that we're, we're, it's always good to get feedback from folks. And a lot of people feel differently about the terms, and they are very charged terms, certainly politically but definitely in tech as well. So, so thank you to Carl and thank you to everybody who writes into us every day, keep those emails coming again feedback at daily tech news show.com is where to send your thoughts. Well, thanks to you Rob Dunwood for being with us today. Let folks know where they can keep up with your work. It is always a pleasure when I get to come and host here on daily tech news show, but folks can find me pretty much everywhere at Rob Dunwood on all the things and also check out, check out, check out my tech show, my weekly tech show, the tech John that is the tech I actually kind of like that. Check it out. Thanks also to our brand new boss whose name is Terry Terry to start it back in us on Patreon. Thank you Terry, you are our gold star patron for this fine Friday last day of our work week here. Also a reminder, there's a longer version of the show called Good Day Internet. We roll right into it after this show and it's available at patreon.com slash DTNS. If you'd like to know more about it, just a reminder to we are live Monday through Friday at 4pm Eastern. That's 200 UTC. You can find out more at daily tech news show.com slash live. Just a reminder also, we're off for the US Juneteenth holiday Monday, but we'll be back on Tuesday with Shannon Morse joining us. Talk to you then. This week's episodes of Daily Tech News Show were created by the following people. Host Producer writer Tom Merritt. Host Producer writer Sarah Lane. Executive producer and Booker Roger Chang. Video producer writer and host Rich Trappellino. Video producer and Twitch producer Joe Koons. Technical producer Anthony Lemos. Spanish language host writer and producer Don Campos. News host writer and producer Jen Cutter. Science correspondent Dr. Nicky Ackermans. Social media producer and moderator Zooey Detterding. Our mods, Beatmaster, W. Scottis Juan, BioCow, Capt. Kipper, graduate Berseroso, Steve Guadirama, Paul Reese, Matthew J. Stevens and J.D. Galloway. Mod and video hosting by Dan Christensen. Video feed by Sean Wei. Music and art provided by Martin Bell, Dan Looters, Mustafa A, A-Cast and Len Peralta. A-Cast ad support from Tatiana Matias. Patreon support from Dylan Harari. Contributors for this show's week include Lamar Wilson, Stephanie Humphrey, Scott Johnson, Justin Marbury Young and Rob Dunwood. And thanks to all of our patrons who make this show possible. This show is part of the Frog Pants Network. Get more at frogpants.com. I hope you have enjoyed this program.