Patriot Prime Reviews is a channel for adult collectors and may not be suitable for children under 13 years of age viewer discretion is advised Hey, what's going on guys? Patriot Prime here once again with another Transformers review, but before I get started I need you guys to do me a favor if you're watching this video right here and are not a subscriber of Patriot Prime Reviews Please hit that subscribe button right now. It won't cost you a thing Will help me and my channel out tremendously. Also, make sure and visit my sponsor toyhacks.com Toyhacks provides reproduction and upgrade decal sets for transformer toys from generation one to the latest modern figures Make sure and stop by the toyhacks armory where they can equip your figures with new weaponry in multiple colors and toy stages provides backdrops for figure displays and photography Each purchase with toyhacks earns you RoboSense that can be used for future purchases. You can check your balance anytime in your cart Toyhacks is a company run by collectors for collectors So check out toyhacks.com and make your collection stand out from the rest and tell them Patriot Prime sent you now onto the review The featured products in this video is the brand new DNA design upgrade kits for Earthrise Scorponok Who's waiting over there patiently for his upgrades? The first set is the DK 19 set which includes Scorponok's giant gun, gun shield, chrome leg shields, two extra double barrel cannons and These gap fillers for his ankles We also have the DK 21 upgrade kit which includes brand new Scorpion legs, two more double barrel cannons and some Shield pieces to really amp up the size of Scorponok shield So without further ado, let's get these upgrade sets opened up and check them out and welcome to Patriot Prime Reviews We'll start things off by taking a look at the contents of the DK 19 set first Now this set also comes with a sheet of instructions that show off all of the items You're supposed to get and these are very well illustrated and easy to follow This set also includes a bonus piece a face shield for Earthrise Scorponok Which is a throwback to the generation one toy Really nice molded details on this so I'm looking forward to seeing how this looks on Scorponok Now the first thing you're noticing of course is this giant gun I mean look at this if this had a proper handle, I could use it as a pistol Love the details on this thing of course it comes with the shield piece already attached You got some silver paint applications here and here Big opening right there in the barrel so I can foresee another third-party company making a giant blast effect That'll go right there Now to get the shield off it pegs right in Just pop it off it pegs into this hole here and this hole right there With let's say there's the peg. There's the two pegs right there on either side The gun itself also has a lot of nice details on it including some silver paint applications right here and here And on the other side as well Love the molded details. So just pop the shield back on here And now for comparisons here is the DK 19 Scorponok blaster With the original so I love that that is so cool You also get two of these double barrel cannons and these have some nice Articulation not only do the barrels go up each one is on an individual joint, but they can go out I mean you could do almost a complete 360. Well, you can With these barrels so that is really cool. I like that and these are Just slightly bigger than the ones that originally came with your earth rice Scorponok You also get these two Chrome leg pieces and of course These gap fillers and these have a lot of nice details on them as well. I like the pistons right there So that looks really really cool. So there you go guys. There is your DK 19 upgrade set And now let's take a look at the contents of the DK 21 kit and this kit also includes a sheet of instructions That goes over all of the items included within the box and it looks like there's going to be some assembly required This kit also comes with a bonus item. You get a translucent red visor Now if you recall earth rice Scorponok has a solid visor So this is really going to add to his look you also get a baggie of little tiny screws, so Probably don't lose these. There's also this giant shield. I mean check this thing out. This is huge Great molded detail all over. It looks like he's got blasters here at the top Got great paint applications here. You got silver and purple now this piece right here separates into three pieces Just push this section out and then slide out the side So I can't wait to see what this looks like on the figure You also get two new sets of legs for Scorponok. These actually replace the Back legs the legs that attach to the body if you recall on the Scorponok figure those were all solid, but these actually have Joints, I mean they There is a lot of range of motion With these legs and that is going to vastly improve Scorponok Scorpion mode and you also get more double barrel cannons two more and those are exactly like the ones I just showed so now let's get all of these accessories on the mighty Scorponok Let's start off by putting the bonus accessories on Scorponok's head so the first thing we're going to do is let's go ahead and remove the antenna and Just a quick note. My Scorponok has been enhanced Thanks to toy hacks decals So if you're wondering why mine may look a little different than yours now I like what toy hacks did for his visor, but I can't wait to see what he looks like with this one on so what we're gonna have to do is move this section up right here and We're going to have to get To that screw to take the visor off. I had to do it when applying the toy hacks decals So let's get to it Trying to remember exactly how I did it and I had to kind of open him up. Actually. I remember now That pops right off. So Easy easy squeezy and let's go ahead and remove this Got my handy-dandy R2-D2 screwdriver. I got this at GameStop like Eight years ago and it was on clearance for like four bucks So let's see you move a little bit more Now that only does he have the screw he's clipped in right there So pull that out. I wonder if I can use the same screw Go ahead and pop the visor in It's got the little tabs as well. I believe so so let me get This screw out all the way so yeah, you don't even have to use the little baggy screw So now we have that attached pop this back on and There we have Scorponok with his Transparent visor and I like that. I think that looks really cool because I thought it was kind of disappointing That Scorponok had these great-looking green eyes. I mean they got great molded detail Great paint applications yet. They were hid by the solid visor, so I really like how that looks So now let's go ahead and add the face shield and let's see you want to make sure You put it on just like this see how this lower section hangs down that way you pop this on and They actually snap right over the ports and then you've got the antenna Attach those and There you go. You've got Earthrise Scorponok with a G1 Scorponok look and I Dig that I didn't think I would but I think it looks pretty cool Because I never really liked the face plate or the face shield on Scorponok, but in G1 I understood it kind of gave the illusion that little tiny Zerik was all of Scorponok's head So now let's compare This upgrade kit with my generation one Scorponok. So there we have generation one Scorponok and Earthrise I Dig it that looks awesome And there's what it looks like attached to Earthrise Scorponok Now one issue I see that may be a problem is with the antennas right here. Sorry for the shaky cam You don't have as much Grab now with these pegs. So you may want to thicken these up with some Floor polish so they don't pop out but as long as you're not messing with him too much He's just there on display. I think it's gonna work. So now let's get some more parts on Next up we have these two chrome-looking leg pieces and what they are supposed to represent is bringing in G1 Scorponok once again Scorponok has chrome leg pieces. So these are going to add to the Earthrise look now The first thing you'll do is you take Earthrise Scorponok shield once again toy hacks That's why mine looks so good and you're gonna pop off These bottom sections and then go ahead and separate these Now once these are separated you're going to attach this to The new chrome piece and these actually line up the pegs here on the bottom line up to the holes here And you've got these holes and peg everything lines up. So get those on So you got a nice secure fit there and do that here on the other leg section and There we go. I like that especially with the toy hacks decals. So let's bring in Earthrise Scorponok So now let's get these attached go ahead and turn Scorponok around you've got the four pegs right here just line those up and There you go a perfect fit go ahead and do this on the other side as well and There we go Scorponok now has extra leg armor Now we're going to take care of these Insightly gaps in Scorponok's ankles and you're gonna take the gap filler piece here And these are super easy to install barely an inconvenience. So what you're going to do is You've got the little hole right there Take this section. You're gonna peg this in Angle this up and there's a little Let me show you you got the peg right here and there is a clip right there The clip is going to go around this section while the peg goes there So let me see if I can get myself angled just right peg into top Clip in at the bottom and just fold the flat over the gap and there we go That looks great. And of course as you angle Scorponok's foot this will go along with it So let's see get here on the other side. Maybe you can see this one better You got the hole there and there's where it clips and angle this accordingly peg and Clip and There we go a much better look I dig it Now you're going to take this piece of Scorponok shield and attach it to this Behemoth and how this attaches really simple. You've got these two pegs right here on the original shield and you just peg those in place and There you go this thing is Massive now and the toy hacks once again works really well with this. So let's get this attached to Scorponok Now to attach Scorponok's new shield what you're going to do is right here on Scorponok's claw You've got these pegs you line that up with the holes right here And there's also pegs that are going to line up To these little holes right there on the bottom. So go ahead and line everything up And there's Scorponok with that new massive shield That looks awesome Now while we're at it, let's go ahead and attach Scorponok's new Cannons, so just remove the ones that he already has and Just like the originals these new cannons have one peg that you just line up right there on the shoulders And what's cool is you can give him the double cannon look Just like the generation one toy so we've got right there on the left And we'll get the ones here on the right Now what's cool about these cannons is with the articulation they can actually aim Forward of course you can spread these out So that looks really really cool. I Love it now. Let's get his gun in hand And of course here we have Scorponok's massive blaster and how this attaches to Scorponok's hand You've got one peg right here That's gonna peg in right there on his wrist. So go ahead and peg that in get his arm Forward for you Because once you peg the gun in you want to wrap the fingers around especially this bottom finger bring it around and Underneath the top finger forms like he's holding the trigger and there you go Wow, what a difference that makes Now let's get Scorponok transformed into city mode Now once you get Scorponok all transformed into city mode and all the new upgrade pieces set aside You are going to notice that these sections right here No longer fold flat against the legs and that's because of the new calf covers They just don't allow these to fold down all the way, but that's no big deal because you can take these new cannon pieces Angle the barrels forward and you can attach this right to the purple section So now Scorponok city mode has some forward-facing weapons.  There's two pegs right here See if this will show up. So you're going to line these two pegs up one in the orange section and one right here Just line those up And now you have the extra tower piece. Let me go ahead and fix that other one Lastly you're going to take Scorponok's giant gun remove the gun shield and Take the orange section. You're going to turn around this way. You've got a peg hole right there That's going to match up To a peg on the back of the leg. So get that installed Move over here ends the same thing. There's a peg hole right there Line that up And there we have Scorponok's upgraded city mode I just really wish there was somewhere to attach the Blasters that he came with but I guess you could just lay him down if you'd like but still that looks really really good And of course you could take Scorponok's upgraded head and he will fit down in that section right there So now it's time to break out the tools Get Scorponok's legs attached and show him off in scorpion mode Okay, so this looks pretty straightforward You've got these leg sections right here that you're going to replace with these new pieces And you can see right here see the wheel. There is a slot right there where that wheel is going to go Make sure you have a good long screwdriver to get down into these ports So let's go ahead and get these taken out And after you get all the screws out this whole section right here is just going to lift up Now the next thing you're going to want to do is remove the tail And as you can see it just snaps in so just go ahead and pop the tail off Get here on both sides So now you've got these separate leg sections and the tail removed from your Scorponok Now you need to remove the gray wheels and easiest way do this get your screwdriver in there and They just pop out. There's one That's a little harder than the other. There we go. So now we've got the wheels out Now time for the install Now the first thing you want to do is determine which side goes where so once you get that figured out Let's go ahead and put the wheels back in so you got the wheel from the original That should pop right in To the new one. Yep.  So now we've got that figured out. We're going to take the tail and Reinstall the tail clicking it in to those little sections right there And that went in a lot smoother than the wheels So we've got the tail hooked in And now we're going to slot those legs in as you can see they got the big Arms sticking down. You're going to line those up right there with those holes There we go Get those all in and I did save The original screws So that's what I'm going to use to put these legs back into place. So Let's go ahead and get these attached Now that I have the new legs attached to the body What we need to do is attach the four legs from the original toy To the new add-ons and to pop these off It's super easy and actually pretty fun. You're just going to take the leg Back like so and press down Pops right out. Go ahead and do this with all eight And now we take the original legs and just pop them right in Let's see if those snap into place Actually, there's no snap, but you can feel When they catch So we'll finish doing this and all of and scorpion ox legs Will be finished And there is scorpion ox brand new legs Attached to his scorpion body and what a difference That makes look at the articulation they go up and down In and out and they're very very squeaky. You can tell that they're new Now there are some toy hacks decals that are on the original legs I'm going to try to take off and see if I can apply them to the new legs because Those just look too good So now let's finish scorpion ox transformation into scorpion mode And show off what the upgrade set looks like on the finished product Now that we have scorpion fully transformed into scorpion mode It's time to install the upgrade pieces and the first one you're going to do is take this section And fold it in half. So you've got this part right here That you're going to install inside scorpion ox tail. It slides in Fits really good. It actually slots in right there. You see this little section sticking up Then you're going to take this shield piece make sure the claws are all the way open And it's going to attach just like it did before So get that in there And go ahead and close the claws around the shield tip So those are now here now you're going to take these chrome sections And these are going to actually attach right here on the side now before These panels went down and attached to scorpion ox body You can't do that now because of those gap fillers. So you're going to take these Make sure and get the right one.  So you got that going on go ahead and do the other one So now he has beefed up armored claws Now you've got your multiple cannons and we can put one cannon right here On this shoulder One over here For these two cannons, what you're supposed to do is put these right here on the sides Now these side cannons are going to have to angle up slightly because they do hit The purple door right there and last but not least we have scorpion ox giant gun It's going to attach to the tail. So you want to take this section of the tail And fold over and that will reveal if you can see it There is a slot that this section right here on the gun Is going to fit in and it's a tight fit Get that the lineup just right There we go And now we've got scorpion ox all armed And ready for battle and honestly How cool does that look now? That is one intimidating looking scorpion He's got cannons on his arms cannons on his back a cannon for the tail Multiple shields this guy looks awesome and I couldn't be happier So does the dna designs dk 19 and dk 21 upgrade sets belong in your collection? Absolutely if you have a titans scorpion ox an earth rise scorpion ox You have to get this set It just adds so much more to this figure and one of the things I forgot to show off the new Legs fold even better into the back of the figure. Now. I also mentioned earlier I didn't know what to do with his original blasters. You can attach them to his claws here Or here so this scorpion ox is really all armed and ready for battle Now I pre-ordered my set from big bad toy store back in march And they were finally delivered last week and as far as I know They're still in stock right now And I know another set is coming out to extend scorpion ox legs. I think to make you about That much taller. I don't know if I'll get that one because I'm pretty happy with what I've got now But man, I can't recommend these sets enough. This figure is just beyond awesome now Now guys, if you enjoyed the video, don't forget to like don't forget to subscribe And don't forget to click that bell icon to get notified when I upload new reviews Also, if you're in any position to help out the channel I have channel memberships here on youtube and I also have a patreon page And big shout out to my newest channel member Sean Pie. Sean, thank you so much. Once again guys, this is Patreon Prime signing out


Hi guys, you are watching OxyVlogs. There are great news for the economy of the UAE and the international investors who want to open a company in this country. You might know that if you want to open a company, on-shore company in the UAE, you need to have a local partner. And on the 20th of May, the UAE cabinet has announced a decision allowing 100% ownership of UAE-based enterprises for global investors. This law is expected to build the economy, change the investment landscape in the UAE and create growth opportunities by bringing more investors. The new law is expected to be introduced by the last quarter of 2018. So the investors will need to have a local partner anymore and they will have a 100% ownership of the UAE companies. In addition to that, all investors and professionals like engineers, doctors, along with their families as well as A-grade students will get a 10-year residency visa. This way the country will build enormous confidence for the investors who want to make the UAE their home. Sheikh Mohammed bin Rashid stated, our open environment, tolerant values, infrastructure and flexible legislation are the best plan to attract international investment and exceptional talents. Guys, as you see, the UAE is making great steps to attract international talents and investors. So, if you still doubt whether to come to the UAE or not, you should try because the UAE is continuing to grow and is opening a lot of opportunities for everyone. Let me know your thoughts about this new law in the comments below and I will see you in the next video. Bye-bye.


California on behalf of independent shembran gas stations and standard stations throughout the west invites you to let George do it another adventure of George Valentine personal notice danger is my stock and trade if it's way over your head and you need discreet confidential help call on me George Valentine write full details my dad Valentine as a newspaper man and dramatic critic I've seldom been wrong when I have been the public has preferred my polished civilized verdict on the play for the clumsy mouthings of my colleagues but be that as it may I've discovered a man of the Theros cutting on a fabulous masquerade and must be exposed I need facts and you can get them for me I can meet my office so we can arrange an appointment sign Jonathan Thorpe Jonathan Thorpe on just a minute Bruxy where's this morning's paper where it always is after you read the sports page in the way back now here's the great man's column today's theater by Jonathan Thorpe now the last time he had a kind word for a play or an actor use the rest of the column to apologize it will burn the incense angel I'm about to read some of Thorpe's deathless prose I quote since its opening two weeks ago I have been repeatedly warning the unsuspecting public against that dramatic abomination now holding forth the majestic theater a wind from the prairie by Luke Eberhard could be more aptly titled a breeze from the stock yard them's harsh words partner what this play lacks in dramatic instruction it makes up for and sheer illiteracy out of sweet charity sake I say nothing about the inane high school performance of Mark Guilford the alleged leading man in more than 20 years I have seen some pretty bad play all right all right I get the general idea you know Bruxy it might be very interesting to meet this poor man's George Bernard Shaw so how about making that appointment I'll ring Mr. Thorpe and tell him you're here Mr. Valentine now that's okay we're expected but he likes to be warned he never can tell whether to expect an actor he's roasted in his column or just a blind man he tripped on the street I'm his first line of defense all the perfect receptionist I see you're a member of the down with Thorpe society what have you got against Jonathan oh nothing he just won't stop breathing right down the hall here on the main floor the last office come on okay Mr. Thorpe there's a Mr. Valentine on his way to see you all right Betty just a little run with a Napoleon complex please angel please you're talking about a clown oh Valentine come in this is my assistant miss Brooks how do you do the pleasure sit down sit down well Valentine I suppose you're just corroded with curiosity about this character I mentioned in my letter well I'd like to know more about him if that's what you mean I am not a malicious man I live for the theatre I regard it as a sacred temple it's bad enough to see it desecrated by mediocre talents I won't have a criminal take refuge in it what is this this monster done Mr. Thorpe several years ago he was the key figure in a rather daring robbery a robbery which by the way has never been solved yeah go on this were the young man down the bank messengers uniform hypnotized a dim-witted lady cashier with his charm and walked out with ten thousand dollars well tell me how did you get this information though I came up from the ranks as a reporter Valentine I have a great many shall we say unorthodox contacts well let's have the name of your man Mark Guilford what you mean the star of Luke Eberhardt's play the one you've been planning for the last two weeks that wasn't the reason that I panned it Valentine but that is the man when he decided to take this fling and crime you just another unemployed actor Mark Guilford oh that's hard to believe oh miss Brooks you're just like my wife Evelyn mm-hmm here look at the picture very young and beautiful but equally naive you see things like this do happen excuse me that's Peggy who oh tell him I want to talk to you never mind Peggy the win from the prairie just blew in what can I do for you Eberhardt I don't remember you're making an appointment why don't you lay off me for you got something else to write about besides my play what do you got against me nothing personal my dear fellow except that I find your brain child particularly offensive now please I have business with mr. Valentine here oh don't mind us the other critics didn't think it was so bad you're deliberately murdering it if I am it's a mercy killing I don't know why you're doing this but I'm warning you lay off if you don't bravo you should be playing Mark Guilford's part will be an improvement good day mr. Eberhardt his first play one is tempted to be kind but that would only encourage him to write another one now where were we Valentine tell me mr.  Brooks when I'm sure of the story all the facts I'll write it up then the police can take it from there now Valentine yeah this list unsavory individuals to be sure but they'll give you the information you'll need about Guilford and this check it'll do as a retainer I'm sure okay thanks now how about a couple of passes for the majestic tonight I wasn't wrong when I called you in Valentine you're a brave man I just want to see if a win from the prairie could possibly be as bad as you say it is besides I'd like very much to get a load of Mark Guilford in action but we belong in this house you and I are complete and our love will be as timeless as those mountains and always is clean and fresh as a win from the prairie George you haven't even been listening what's that angel that girl in the front row you haven't taken your eyes off wait a minute let it go up the aisle ahead of us okay George I recognize her now the picture thought show his wife now let's stay right behind right for mrs. Thorpe there was only one person on that stage tonight Mark Guilford I thought he was quite good and it really wasn't a bad play I can't blame ever hard for wanting to see Thorpe roasted on both sides Jonathan's campaign worked all right the house was half empty where'd you park car George oh wait a minute but see oh I see what you mean yeah mrs. Thorpe is heading down the alley straight for the stage door and Mark Guilford oh angel I think I want out of this deal why it's the old triangle but with Jonathan Thorpe in one corner it promises to be nastier than usual all this talk about the theater a sacred temple oh no I'm not digging into anybody's past for Thorpe and whatever game he's playing and Brooks I'm gonna tell him tomorrow that it's strictly out of my line oh it's you again how are you mr. Thorpe it's okay Peggy I found a message of my apartment last night his highness wants to see me at 11 o'clock and I sure want to see him is he free Peggy if he left a message for you he knows you'll be here he usually gets what he wants from everybody you know how to learn to keep my mouth shut look out you might talk yourself into that yet wait a minute I don't have you down on talk this of a point again it beautiful we'll skip protocol this morning now look for if I don't know why you wanted to see me but I'm here to call it quits you oh now listen you're not that busy you can at least turn around when I what's what's matter with him George I just a minute quick see if he could turn around with a knife stuck in his chest it'd be the neatest trick of the week the letter opener yeah he just seemed to sit there as well hey Peggy get me lieutenant Riley a police headquarters quick you okay brook see oh fine but wait a Riley hears about this yeah I know he'll probably oh lieutenant this is Valentine I want you've been asking for this job of internalize this is so put that gun down on him George hang on Riley stay on the line I killed him you certainly did your best he didn't suffer as much as he made other people suffer I don't care I don't care what happens now brook see take her over there yeah yeah no matter what they do to me couldn't be worse than what I've been through all right all right now okay Riley you can stop you yelling yes those were shots you heard Jonathan Thorpe the dramatic critic fine arts building better get over here right away look try to get hold of yourself Mrs. Thorpe who are you what are you doing here the names of Valentine your late husband hired me to investigate my guilt I know about that he made sure I did he taunted me with it that's why I killed him but Mrs. Thorpe I think you ought to know that let it go on I wasn't gonna let him wreck Mark's life I asked him for a divorce but he couldn't stand the thought of my finding any happiness oh it was all right for him to humiliate me whenever his ego needed some woman to fall over him even that girl Peggy outside was one of them I suppose I should feel horrified at what I've done but I don't George you've got to tell her tell me what you didn't kill your husband Mrs. Thorpe what are you saying just that somebody beat you to it Valentine you never come up with a nice simple but oh no no the guy's got to be killed twice just to make things twice as complicated for me why do you do this to me you flatter me lieutenant I didn't arrange all this just to keep you from getting bored what about Mrs. Thorpe I still feel as though I killed Jonathan I meant to I had murder in my heart well you'll have to work that out with your own conscience Mrs. Thorpe the simple legal fact is that he was already dead when you shot him well then there can't be any charges against Mrs. Thorpe Lieutenant yes Valentine if I promise on a bright not to complicate things how about me playing along well okay but just stay out of my way oh that'll be easy lieutenant I'm pretty sure what I have in mind would be much too weird for your tastes we'll return to tonight's adventure of George Valentine in just a moment meanwhile a word about your vacation inventory when there's a family vacation coming up usually it's the lady of the house who keeps a checklist of things to get ready but there's a man in your neighborhood who keeps a checklist for your vacation to you'll find him at an independent chevron gas station and at the standard station his checklist is designed to get your car in shape for the toughest trip so before you start out better ask him to inspect your car's battery headlights tires spark plugs and oil he'll see that everything's in order that your cars ready to take on all the carefree vacation miles you want to cover and by the way while you're at his service station ask about Polaroid sunglasses they'll spare you a lot of ice-drain in glaring sunlight on the highways and byways keep your vacation carefree by stopping in at standard stations and independent chevron gas stations where they say and mean we'll take better care of your car now back to tonight's adventure of George Valentine well if you were in George's shoes here's the situation in which you'd find yourself a caustic well-hated dramatic critic hires you to clear up an unsolved crime but before you can even get started you find said critic with a letter opener in his chest and then before you can even say well what do you know the critic's wife rushes in pumps her already dead spouse full of lead at headquarters George and Lieutenant Riley are trying to bring a little order out of chaos all right now piggy take a good look at mr. Gilbert look Riley you don't have to drag this out you better let the lieutenant do this his own way girlfriend it'll save a lot of time well I'm looking lieutenant all right when was the last time you saw him ten o'clock this morning he breathed past my desk and headed straight to Thorpe's office and words began to fly not being a lady I'd be glad to go into detail I've already told you Thorpe and I had a quarrel he knew the trouble I was mixed up in three years ago and was holding it over Evelyn so she wouldn't divorce him I told him to go to the police with it get it over with and what did Thorpe have to say what did he ever have to say he just sat there and made with epigrams you're on the spot Gilbert you were in love with his wife and he was digging into your past that's an awful lot of motive our Peggy yes mr. Valentine after mr. Gilbert left are you sure Thorpe had no other visitors till I showed up with miss Brooks at 11 I ought to be sure all I have to do with that desk is to watch people go in and out we had a fight Lord knows I felt like killing him but I didn't the coroner's report says Thorpe was stabbed to death sometime between 10 and 11 I didn't kill him if you ask my opinion lieutenant mr. Guilford to the world of favor young lady we're dealing with murder just the same exterminators are paid for getting rid of things like Thorpe that's a personal character reference lieutenant you know I'll keep my mouth shut you know that's a good idea oh and mr.  Thorpe Peggy tells us that only one person saw your husband this morning that is before I showed up why you've been questioning Mark in here all this time well why he wasn't there tell him Mark tell him about Luke about Jonathan had an appointment with him at 10 30 he mentioned that breakfast he never kept it I still don't know what that has to do with Mark I was there darling well you promised you wouldn't sorry mrs.  Thorpe that'll be all for now Peggy you can go and thanks hmm and I think he once said he might make me the second mrs. boy was I lucky I ever learned to keep my mouth I won't believe it mr. Valentine Mark couldn't have done anything like that well unfortunately mrs. Thorpe the faith that moves mountains doesn't move the police they're sticklers for evidence mr. Valentine yeah you were willing to work for Jonathan well as a matter of fact he wanted to do was hurt people won't you help me now prove that Mark is innocent you mean you're putting me on the payroll mrs. Thorpe yes please okay okay we'll call your husband's retainer check the down payment now you understand of course I may only come up with a kind of evidence that'll build the case for the police no you won't I'll take that chance mark is innocent all right mrs. Thorpe all right I'll do my best and I think I'll start by having a chat with Luke Eberhardt the man who didn't keep his appointment I thought you'd be dropping around Valentine hi ever heart this is my assistant miss Brooks how do you do she was rather charmed with the way you blew your top at Thorpe's office yesterday you know if I wanted to read things into it I might even say you were threatening mr. Thorpe I should have pushed that guy's face to the back of his head now get out of here both of you on our look friend put a lid on that temporary yours here have a cigarette I roll my own sure George like they do on the rolling prairies but I don't understand how with all that wind you can see stooge for you like this all the time anyway the routine leaves me cold go and get up Valentine don't crowd me prairie boy I'm here on business I want about that appointment you had with Thorpe this morning at 1030 who made you a cop showing you Dick Tracy bad dog come on answer the question or you will be telling it to the cops I don't know anything about an appointment get going thought was a prissy methodical man he kept an appointment book and he also gave a list of expected visitors to Peggy the receptionist you were on that list ever hot okay I didn't keep your point I was afraid I'd lose my temper and kill him can you prove you weren't there in anybody prove I was look I read the papers they got guilt and they don't want me now how'd you go and I'm not sure I'm a straight army wants to walk out George not do more than that out and stay out well I'd say Shakespeare junior has a tough guy complex here well next time Brooks he remind me it needs psychiatric treatment hmm yeah something therapeutic like a haymaker oh well now we're thought office there must be something there we've overlooked anyway that's the way I've got to play well Mrs. Thorpe I see you're doing a little private snoopy I was just going through Jonathan's correspondence so many people hated him enough to kill him I thought I might find a letter or note that would help us thought of Mark and J.O. tell me Mrs. Thorpe how did you get into your husband's office they've got a police sergeant stationed outside at Peggy's death I know came in by the fire exit on the second floor and down the stairs on the rear well you don't say you know it might be a good idea for you to stay on the sidelines and let me take care of this now brook see let's be just as methodical about this is the late Jonathan Thorpe would be first we'll have time well in this air straight cigarette butts five ordinary cigarette butts so what this one it isn't like the ones Jonathan has specially made for him I roam on remember George ever heart when he was here yesterday wasn't smoking so he must have been here this morning I'll take this was his thought he could have known about that fire exit on the second floor and that's why Peggy didn't see him Bruxy take Mrs. Thorpe over to Lieutenant Riley right looks like I may have to use that psychiatric treatment on ever heart sooner than I thought so come on mr. ever heart you and I are going visiting what are you talking about we're going to have a little coffee clutch down at headquarters and you may turn out to be the guest of honor see I'm gonna have to throw you out again oh brother if you do I'll bounce right back in your face let's see how you bounce you're wide open sucker now you were lying through your teeth before about you were in Thorpe's office this morning we found a butt of one of your hand-roll cigarettes for you you're out of your mind that's right that's right come on up get up and be sociable you made a natural mistake most times people pinch out a cigarette and don't even realize they're doing you're not putting anything on me hey what do I have to do to soften you up brother now come on okay okay yes Lieutenant Riley how was it just like Valentine says and why did you lie about it when we first questioned you well I was playing it safe a lot of people knew how I felt about Thorpe where he was needling my play yeah you were pretty specific about what you'd like to do the thought when I was there yesterday why don't you ask him why use the fire stage and stairs in the first place oh miss Brooks miss Brooks what would I do without you and why don't you give me a chance to find out touchy yeah well what about that ever huh well Thorpe really went to town on me in this morning's newspaper I didn't want that receptionist to come barge in in that before I was through taking him apart with the help of a letter opener no no he was alive when I left him factor I didn't even touch him why the change of heart I suppose he begged your pardon pretty please huh he said he was gonna stop writing about my play didn't fit in his plans anymore whatever he met by that I think we know what he met by that lieutenant all Thorpe was ever interested in was giving my guilt for the works with me on the job he thought that was in the bag ever hot you know what your story is done for you don't you what how do you mean if Thorpe was alive when you left that let's mark gilford out Peggy saw him lead the building at a quarter after 10 oh wait a minute you now you're the last known person to be in Thorpe's office before Valentine got there and just a few minutes before that at that I don't care how it sounds I told you the truth I'm afraid I'm gonna have to hold well do what you want but it won't get you anywhere would it be all right if I went outside and told Mrs. Thorpe you're releasing Mark Gilford hold it Bruxy lieutenant yes how about keeping the status quo for about a half hour huh well forgive my curiosity but why and would you mind getting Peggy the receptionist over here I still say why and would you call the boys in the photo lab and ask them to extend me the courtesy of the profession I would ask why one of these days I'm gonna say no to you even if I have to eat crow for it thanks lieutenant the truth is when I told you I had something in mind that was on the weird side well that was understatement this is all very cozy lieutenant but what do you want with me I told you all I knew oh this is mr. Valentine's party Peggy let him go on thank you lieutenant why can't Mark leave this place now that you know he didn't kill Jonathan well for one thing Mrs. Thorpe there's still the little matter of that robbery oh for heaven's sake George get to the point all right here lieutenant take a look at this cigarette stub yeah it's hand rolled sure that's what put the finger on ever hot whatever just this lieutenant when you open it you see a slight smear of lipstick on the inside of the cigarette paper this was rolled by a woman a woman you know Mrs. Thorpe a police chemist can always analyze this lipstick and prove it yours yes but it won't do any good to lie Mrs. Thorpe so let's have it looks like everybody gets to play in this game I'm not gonna lie I did plant that cigarette and Jonathan's ash tray I knew about ever tartness cigarette and it didn't matter at all to you that you might be framing an innocent man but is the innocent I knew he kept that appointment I had to find a way to make him admit it and I did yes you certainly did can't you see I had to do it lieutenant when everything looks so black for Mark I put that cigarette in the ash tray and pointed it out to mr. Valentine I had to fight for our happiness okay okay take it easy mr. Thorpe all right Valentine so she framed the evidence but it still leaves ever hot just where he was this is just like a movie mr. Valentine but where do I sit in or you play a very important part Peggy oh if mr. Thorpe was so scrupulous about giving you a list of the visitors he expected now why do you suppose my appointment for 11 o'clock wasn't there how would I know it was just a message left at your apartment George somebody else could have made the appointment ah you're so right Brooks come on get to the point will you Valentine here is the picture police photographers took a Thorpe's desk as soon as they arrived on scene there are five cigarette stubs in the ashtray see yeah that's right five stubs and Mrs. Thorpe you couldn't have planted another one at the time you said you did that would have made it six and there were never more than five in fact here it is right in the picture gee that's right it happened just the way I told you no no you left it when you stabbed your husband after ever hard left it was the added touch to make sure ever hard was connected with the crime yes and you made that appointment for me you needed a witness to say that you shot Thorpe after he was already dead almost automatically eliminating you as a suspect now wait Valentine the second time doesn't count Mrs. Thorpe but the first time calls for the works golly George Jonathan Thorpe must be turning over in his grave well if he is Angel it's with an appropriate effort here in the paper after the panning he gave a win from the prairie all the publicity is making it a box office smash the little Aaron ease of life this case was full of huh what do you mean darling well this is Thorpe with all her well-laid plans never dreamt Mark Guilford would blunder in that morning and make himself the number one suspect mm-hmm and the cigarette she planted set a clearing mark just place the guilt on her one final bit of irony the biggest slip she made was the most obvious but one we overlooked at the time oh what was that well look Angel when you come in and send three bullets in the general direction of a man's back you're bound to wonder whether he's still alive well Evelyn Thorpe didn't now she went right into hysterics you see Bruxy she already knew he was dead some folks claim that one motor oil is just like another until a mechanic tells them they need a new set of piston rings but folks who use rpm motor oil find piston ring troubles are few and far between this premium quality motor oil is compounded to keep a cooling lubricant on upper cylinder walls at all times whether your car is standing cold for hours at a time or running hot rpm clings to vertical engine parts left bare and exposed to wear by ordinary oils and because rpm is always on the job your chances of engine trouble caused by rust are reduced to about zero that's mighty important when you remember that hidden rust causes as much as 80% of engine wear in the average car no under rpm motor oil is the choice of western motorists two-to-one over any other motor oil for trouble-free operation and longer car life get rpm tomorrow at independent Chevron gas stations and standard stations where they say and mean we'll take better care of your car next week when you tune our way for another adventure of George Valentine you'll hear I am cornered and this is a desperate plea could you be at my apartment tomorrow morning and sign Joyce Dunning husband white best friend the time-worn triangle book see yeah but something new been added darling the third member of the triangle doesn't usually get such consideration from the rival female in the case yeah but Brooks see I wonder if Miss Dunning's reference to death could be a refined way of hitting it murder tonight's adventure of George Valentine has been brought to you by standard of California on behalf of independent Chevron gas stations and standard stations throughout the west let George do it stars Robert Bailey as George with Francis Robinson as Claire walley mayor appears as lieutenant Riley tonight story was written by David Victor and Herbert little junior and directed by Don Clark also heard in the cast where Ramsey Hill as Jonathan Thorpe Virginia Greg as Evelyn Thorpe Betty Moran as Peggy Peter Leeds as Mark Gilford and Jeff Chandler as Everhart music is composed and conducted by Eddie Dunstetter your announcer John Easton listen again next week same time same station to let George do it this is the mutual Don Lee broadcasting system


So our next speaker is Dmitry Trovimov and his talk is Python Debugger Uncovered. Dmitry is a developer of the PyCharm IDE. Dmitry. Hi, my name is Dmitry. Today I will speak about Python Debugger. First I'll introduce myself and this talk. I work for JetBrains. In the last four years I developed PyCharm and Debugger is among the other things that I do. And often when I say people that I develop a Python Debugger, they say, wow, that's kind of hard or complex. But I'd like to show you in this talk this Python Debugger is quite an easy task. There is no rocket science here. But in the first place, why do we need Debuggers actually? As Brian Kernigan wrote in his book, debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are by definition not smart enough to debug it. And what we do normally, we always or often, but I think rather always write our code as cleverly as possible. And as a result, we have bugs that spoil our code. And then we need to find those bugs and we have problems. The only thing that can actually save us is good debug tool. And we'll look how to implement one. So there are a lot of Python Debuggers, but I roughly divide them into big groups. The first one, Python Debuggers that are implemented in Python itself. And those are PDB, PyCharm Debugger and PyDev Debugger. Actually, PyCharm Debugger is a fork of PyDev Debugger. It was forked four years ago and it gained a lot of new features. And now we're in a very strange situation when we develop this PyCharm Debugger separately and Fabio, the maintainer of PyDev develops it separately and we exchange the fixes and backport features. But now we are in some kind of process to stop the situation, but I'll tell about it in the end of my presentation. So, Python Debuggers implemented in Python. The most advantage of such debuggers is that they are platform independent. They can run on CPyton, Jyton, PyPy, on IronPyton. That is because they are written in pure Python. But the problem with this debugger is that they can be broken by user code. Because they run the same Python interpreter, you can just write something like clear CIS modules and Debugger will evaporate from the memory and it won't work anymore. The second group of debuggers are those that are implemented in C. The main debuggers are VIN, PDB and VINC. They work only for CPyton, but they don't interfere with user code, so they work better for such cases like debug of G event or twisted code. But that is actually not a problem for Python debuggers written in Python because all those cases can be solved, but you need to make something for that. So, how to implement Python Debugger? Actually, many languages provide developers of debuggers some kind of API to develop Debugger. And Python is a bit different in this case. It provides only one function to develop Debugger. This function is called CIS set trace. If we look into the Python documentation, we see that you can set trace function and it will be called every time you get any event in the Python interpreter. And an event can be a call of function, execution of a line, or return from a function, or exception, or if you use some kind of C bindings, then it can be a call of the C function and return from the C function or C exception. So, when we want to implement our debugger and we see this documentation and we realize that this is the only one function that we can use, we can get a bit scary because it's very primitive and we feel very constrained. But as we know, constrained breeze creativity. So, as I show you, because of that fact that we are constrained a lot, we can implement a lot more features than actually exist in normal languages like Java and C++ and so on. So, trace function. How can we use it? Here we implement a simple trace function. That is a function with three arguments. The first one is frame. That actually is the top of our call stack. This is the context which has local variables, the event that we get, and some arcs. Arcs are dependent on event. And we print just which event we get and on which line we get. The line that we can access from the frame. So, we import our Cis module, set trace, and then we have some simple code we iterate for within a range and print the division of some arithmetic expression. Let's look what we have. So, after we have set our trace function on the first line, that will be line number nine. Actually, it will be line number 13, but we have call of the function that is declared on number nine. We have a call. And then we have execution of a line number 10. Then we have execution of a line number 11. And after that, we got the first output. The iteration continues. We are again on the line number 10, on the line number 11, and we get gain output. And on the third iteration, we have an exception. So, execution terminates. And you see that we have in this short program, we have all four Python events that are possible. Call, line, exception, and return. So, actually, that shows us that developing debugger with the help of trace function is possible. So, let's develop simple console debugger. To test it, we use a sample program that is simply a retothense sieve. That's a function that gets n as a parameter and prints all the primes between two and n. And here are our command line debugger. It's actually only 23 lines. And it works. I'll just tell you about how it is implemented and then I'll show it in work. It has two main parts. The first part is trace function. As we've seen before, we get events. And here, except just printing all the events, we have a break point. There's only one break point. And if the current execution equals to this break point line, we do the simple thing. We just read the input from console. And if we handle commands from console, there are three possible commands. The first command is frame. If we get it, we just print all variables. The second command is c. It's for continue inspired by gdb. And we continue to the next execution of the break point. And any other string is just treated like any expression that is evaluated. And the second part of this simple debugger is the main part. And the second part, we get here from command line arguments the line of the break point file to be debugged. And then we set our trace function as trace function and execute this file. So let's look how it works. So you see we execute our simple debugger. We set our break point at the line number six. And we pass our dot pi as our sample program. So debugger stops somewhere. And we type frame. And we see that we have three variables. That's our index and our multiple set. That is empty now. We continue. And we get two. That's our first prime. We print our frame again. And we see that our index is three. And multiple set is all even numbers. So we can continue, continue, continue. And if we don't want to read all this frame, we can, no, it doesn't work. Print. Multiple. We can print just the things that we are interested in. So voila, we have our simple cancel debugger just implemented in 23 lines of Python code. But this debugger is a bit not full-fledged. It can be used, actually. It's not very convenient. Because we can set only one break point. And normally we run our program and we need to place break points somehow interactively. And actually here you can pass while true as an expression. It will hang the whole process. And it's not very convenient to read our frames in console view. We need some kind of tree for that or some kind of UI. So thinking about that, we came to the idea that we need a visual debugger. And if we need visual debugger, we need some multitasking. And for this, we need some kind of architecture. And this architecture can look something like that. The left you see our debugger interface. And on the right you see the Python process that is being debugged. They communicate between each other within socket connection that allows us to run them on different machines and to allow remote debugging, for example. And our debugger interface sends break points and commands to the Python process and gets back events, threads, frames, evaluated values. So on the Python process to handle this communication, we need two threads for reading, writing. We use threads here because we don't need actually performance. And GIL is not a problem for us, but we need cross-platform work. We need this to work on JITAN and all versions of Python. So we just use threads and it works good. And here we have reader thread, writer thread and user thread. So if we talk about communication, then we need to find a protocol. The protocol for this communication will be quite simple. Every message is just a line and separated by line separation. And all the data inside this line is divided by tab separation. The first one is command ID. The second one, command type. And then we have different arguments that depend on command type. So command types can be set break point, resume, get thread, get frame, evaluate expression. And for example, for a message, get thread, we generate some ID and the response for that it will be, it will have the same ID. And this will make us to know that this is a response for this very request. So this is very simple protocol, but it's very powerful actually. So we can get responses for our request or we can get not. But if we want to get responses, we can get exactly the same responses for this request that we want. So it's very simple and very powerful. So on the side of ID, we assume, we will not go into ID details. We'll focus on the Python code, but we assume that ID creates server socket for us and it launched the script that is being debugged. With the command line, it passes socket address and passes the sample program as our argument to our debugger. So let's look how our code will be. It's quite simple also. The main code looks like that. We initiate our debugger and first of all, we make a socket connection. Socket connection is very simple. We create a socket and connect to it. It is already opened on the side of the ID. The next, we initialize our network communication. It's very simple. We just create write a thread and read a thread and start them. How can be, how can look, sorry, how can look read a thread? It just, in a cycle until it is killed, it reads data from the socket and finds line separation. It thinks that it gets the whole message that can be parsed. Then we parse message just by splitting it by tabs, which read the first element as ID of the command, the second as a type of the command, and we put this in our process queue. The writer is implemented by the same. So what's next? The next is a bit more interesting. We run our program. To do that, first we trace our set, we set our trace function and then we wait for a command from ID to start, because at this point, we need to be sure that all the data from ID has just arrived, that break points are set, and when we get a command from ID to start, we execute our file. And the most interesting part is our trace function. It's actually also very simple. We handle here line events. We take from the frame the line number and the file name and we see if we have break points for this file, if we have break points for this file, and if we do have break points for this line, then we just send a message to our ID that we need to suspend, and we wait in this point in a cycle for resume message from ID. So execution is suspended here. We don't execute commands anymore. We just wait for the message from ID to resume. And if we don't have break points for this file, we don't trace this context because it will optimize a lot of tracing. So I can show you how it looks like. Font is a bit small, but I think it's okay. Here we have our dense sample program. And we debug it. And we just stop. So that is a, it looks strange on this screen, I think. Okay. So actually, that's it. We just implemented visual debugger that communicates with interface. But we lack now very important features. The first one is conditional break points. It's ability to set, close this. It's a demo effect. I don't know. I see this the first time. I can show, wait a second. Okay. So we need to implement conditional break points, exception break points, step over step into smart step into. We need to make it work on Python 2.4 to 3.4. And we can very like to implement multiprocess debugging. And I'll show you now that it's also very, very, very simple. So how do we implement our conditional break points? We just enhance our trace function that we see if we have any condition. Condition is just a Python expression that is related to true or false. We see if we have any condition expression, we evaluate it. And if it is true, if it is false, we don't stop on this break point. So voila, we have conditional break points. Exception break points. To trace exception break points, we need to trace, to handle somehow exception event. And we do that very simple. We get our exception time from arguments. And we see if we have exception break point for this exception type. If we do have, we suspend. If we don't have, we don't suspend. So step into step over smart step into run to line. These functions are very simple.  Now it's okay. So step spy. Okay. So step into is just going inside the function that is executed. Step over is skipping. The execution of the function going to the next line. And smart step into is just the possibility to step into the selected function. And go to line is actually going to the specific line that you can select in your editor. So how is it implemented? It's very simple. It's totally simple. Step into is just resume and stop on the next line. Step over is just step into, but we step on the next line in the same frame. We remember which frame was it when we received step over message. Then the execution goes somewhere inside and when we return to this very stack frame, we stop there. And smart step into is just step into, but we stop on the line of the selected function. And run to line is just temporary break point which we remove after we reached it. So these four features are implemented just in, I don't know, couple of lines each. So what about support of Python .4 and all versions of Python and all interpreters? How? Actually, that's not the best part of the code. Because when you need to support all versions, your code is very fast lines like this. You need to handle all differences in standard library. But that's okay, actually. You can collect it in only one file and it will not spoil the rest. So multiprotest debugger. That is the point that I like the most because this feature shows us how our constraints that we have in Python, only one API function to implement debugger allows us to make something better than in different languages. For example, you cannot debug multiple processes in Java easily. But Python, due to its dynamic nature and due to the fact that we implement all by hand, allows us to do that. If we go to the Python standard library documentation again, we see that all the new processes in the end use OS, the functions of the OS model like that exact where and spawn where and there are a dozen maybe. First of all, the fork function is executed normally and then some of this function, one of this function. So what we can do in Python, we can just monkey patch them. And we do that this way. We take OS model function and replace it with our new exact function. And in our exact function, we call the original function with patched arguments. And the patching of arguments is very simple. If it is Python executed, we leave it and then add our debugger script in front of the real arguments and host and port that we already have. And what happens in practice is that our new process that is about to launch, it first launched inside the debugger, the debugger connects to the IDE and then the debugger code executes this new process. So we have debugging of the new process like debugging of the new thread actually. What we have learned today, we just saw that it's very simple to trace Python code and it's very, very simple to make a simple cancel debugger. And also it's very simple to implement a real visual debugger. But what for? I encourage you actually to contribute. There are a lot of features that can be implemented in this field. And they can be implemented by you or with your help. I don't say actually that we give up, that we are stopping to develop debugger, we actually make a lot of work, but if you help to solve your daily problems, it will be great. And the sources where the best place to look are the first one is the link to debugger in PyCharm, open source repository and the second one is the link to PyDev debugger on GitHub. But there is one moment that I'd like to tell about. Now there is a work in progress, there is a merged version of PyCharm and PyDev debugger. The repository is already created, it's called PyDev.debugger. It has no code yet because the repository was created just the last week and it has some development branches, but stay tuned. In short time we get a merged version of PyDev and PyCharm debugger with all the union of different features that have both of the ID and also documentation will be there so it will be possible to contribute to this project and to learn how it is all implemented. So that's all. If you have any questions you can ask. I will start with a simple question. Is there a console client for your debugger agent or are you aware of anything like that? Not yet, but I think that after we establish this merged debugger with PyDev we will make one. That's great. Now for a harder one. Have you considered data watch points and how hard would those be in a garbage collector language? We considered to implement that, but we have not evaluated the performance problems that it can, which can be there. I think it definitely works to try, but I don't know if I cannot say nothing about real production implementations of that feature. Is it possible for the debugger to modify the flow of the program? Can I skip the execution of single lines or suppress exceptions? Actually it's not possible in Python. It is partly possible, so you can hack the byte code that you get, but it won't work in all cases. As for suppressing, no, I think now that you cannot suppress the exception that is raised and not caught. I have a question. So it's nice when you run your programs in development environment and you can run them with your debugger, but when you run programs in production they are usually not instrumented, but they still fail sometimes and you want to troubleshoot and debug them. So what's the current state of Python debugging for the uninstrumented processes? So that's actually the first one. Stay tuned. I hope it will arrive soon. It's not yet there, but it is the first on the list. Okay. Any more questions from anyone? Okay. So that will be the end of the session then. So thank you to meet you. Thank you.