Steelers Dolphins Browns or Texans when the Baltimore Ravens come off of their bye We can head into the division around They will be facing one of those four teams whoever is the lowest remaining seed and the thing about it when we're watching wild card We can this upcoming Saturday and Sunday and then Monday to then the Baltimore Ravens They gotta wait just a little bit because Saturday the chiefs in the Dolphins play and on Saturday The Texans and the Browns play but no matter what happens in those two games the Baltimore Ravens still won't officially know their opponent Because they have to wait until about 430 on Sunday That's when they'll officially know who they're gonna be playing in a division around because the Steelers they play the Builds and with the Steelers they are the seventh seed so they are the lowest seed So if they somehow can beat the Buffalo Bills then the Baltimore Ravens will be playing them But if not then they will play the lowest seed that remains out of the previous two games But we'll get into all that we'll talk about these playoffs and everything that we got coming up But before we get into a team keeping clean. I appreciate y'all so much Thank you for 72,000 subscribers because this is all of us. This ain't me. I ain't doing nothing special It's really y'all so I appreciate y'all being so special. Thank you for subscribing to the channel Keep on subscribing to the channel turn the notifications on so when we drop a video You don't miss a thing and also keep leaving a like on a video because it helps a ton y'all have been helping a ton I appreciate y'all y'all be leaving more likes on the videos than ever So I love y'all. I appreciate y'all and let's get back to these playoffs So as we know Steelers vs. Bills dolphins vs. Chiefs Browns vs. Texans There's been a lot of conversation amongst Ravens fans on who they will prefer to play who they would not prefer to play Who they may be a little afraid of who makes them a little bit nervous and I respect each and every conversation But the way I look at it. Yeah, there are some teams that make you a little more nervous than other ones But for me it really every game makes me nervous because it's playoff time like it ain't no I we're gonna get better next week and we'll fix that none on it. Oh, it's one and done It ain't no I we're gonna make a couple of just adjustments and next week We'll get them. We'll get them better much better. No, it ain't none of that once you lose in the playoffs Your season is done now Why I don't anticipate the Baltimore Ravens losing in the playoffs is still a nervous feeling going into each and every playoff game But when it comes to the conversation about oh, which team you prefer to face which team you don't prefer to face for me Like every game would make me nervous because it's a playoff game But the way I look at it is from a bit of a different point of view the way I look at it It's like I you could be nervous to face that team because of this You'll be nervous to face that team because that and they all do bring their own different characteristics and qualities and whatnot, but These teams they gotta play the Ravens Like well, I know we ain't forget that the Baltimore Ravens were not only the best team in the AFC North this year They weren't only the best team in the AFC conference that they were the best team in the NFL this year They had the best record in the NFL this year and another thing that gives me even more confidence with these Baltimore Ravens It's just the way that they've been doing things in big moments when they've gone up against good teams playoff teams winning teams They step up to the occasion big time They really show out big time and they really put some of their best feet forward big time And you can even say in some of those games Against some of those playoffs minus Miami Dolphins the Ravens was put up 37 points a game Put up these crazy amount of points a game and they would be leaving a lot of points out there on the field again I did exclude the dolphins because in the Dolphins game That was one of the only games where the Baltimore Ravens offense did not leave points out there on the field They put it all out there so shout out to the Ravens But think about that like again not only do these playoff teams they got to play the Baltimore Ravens But they got to play the Baltimore Ravens at the crib at M&T Bank Stadium So going against the team is already tough enough, but you got to go against them at their house Oh, that makes it that much tougher So again, I get people being nervous about this team and that team and that team But those teams they got to be nervous about us now Some of the teams that I have heard the most concerned with amongst a lot of Ravens fans Have been the Beals and the Chiefs also the Browns too But definitely the Beals and the Chiefs but specifically with Buffalo and Kansas City If the Baltimore Raven don't do end up playing either one of those teams It will not be obviously won't be for the Divisional. They can only meet one of those two teams in the AFC Championship match so obviously to get to the AFC championship One of those two teams got a win and the Baltimore Ravens got to take care of their business too And I do expect that to end up being the case I expect Baltimore Ravens to take care of their business for sure But I feel like with when you look at a lot of these other AFC teams Look at the Kansas City Chiefs the thing that they have on their side in my opinion Is experience. They got the most experience Because they have been to all these AFC championships recently too. They've been to all these Super Bowls recently too So they are the definition of winning But this year they look very very shaky very very shaky And this is probably the most beatable. I mean every team is beatable But this is the most beatable Kansas City Chiefs team in my opinion and I know playoffs is a different atmosphere But still Kansas City Chiefs have been real shaky Buffalo Beals They are an extremely hot and cold team Josh Allen Amazing quarterback can do everything but boy that boy can turn that ball over too.  He like that boy will take some risk and I respect it. I respect Josh Allen again He's tough But boy he he will be hot and cold man, but he presents the Buffalo Beals.  I mean, you know what we're talking about We might as well already do it the Pittsburgh Steelers Pittsburgh Steelers as a seventh seed They of course, they did sweep the Ravens technically. Hey, they got two wins versus Ravens this year And one of those was with Lamar Jackson. We know that was the famous drop game But they still the Steelers still won.  I know they ain't got Kenny Pickett no more Well, they got him but he ain't playing uh, so mason Rudolph. He may end up He's gonna be their starter for the playoffs, but um, so we'll see about that one The dolphins the dolphins they got so much speed on offense and they should be getting healthier They should be getting Raheem most of back They should be getting Jalen Waddleback come playoff time And they just have that threat of scoring just like that one thing though Somebody pointed out that with tour They said with tour with his off script stuff that he just can't do it If everything ain't perfect for tour then it just messes everything up And I thought that was very very interesting and something that I never thought of before because I know with tour He's a timing guy everything is about timing when tools on the money He put it right at the perfect spot for the way the receiver's gonna be it and that time But if that time is thrown off Then that's where tour he's thrown off the Cleveland Browns January Joe, I know that's been a big talk from a lot of people January Joe flacco They got a really really great defense. I think the number two defense club lead the Baltimore Ravens had the number one But the Browns the defense and Joe flacco Nothing to lose Joe flacco too And again when he came to the Browns like it was dangerous already because He was their fourth quarterback and with him being their fourth quarterback It's like, okay, what y'all expect from me y'all just signed me. I ain't been playing all year So there were low expectations, but there was high delivery So but with him he is he'd be throwing some turnovers too.  I know we played them in week one But they are a much different team than they were in week one and with Stroud man He um, he takes care of the ball. He'll throw a pick every now and then but he really takes care of the ball He ain't afraid to throw that ball down the field, which I appreciate about his game He's very smart with his game the thing that the Baltimore Ravens got over them experience Experience they they are very young team They but they turned it around quick, which I've been surprised if you would ask me before this season I would definitely not have said oh, houston texas. They're gonna be in the playoffs So yeah, but um, but the Baltimore Ravens they they're gonna have to face Whoever you can't run from nobody You can't be scared of nobody because this is playoff time You have you are facing the best of the best These are the seven best teams in the well at least the seven best teams that made the playoffs Can you always say the day the seven best team? but these are the seven best teams in each conference And in order to get to where you want to go to the Super Bowl You have to play and beat the best in your conference And then in the other conference in order to win the Super Bowl You got to beat the best whoever survives So it ain't no running. It ain't no being scared or anything like that. Ravens got to take care of their business They know us ahead of them. They know what they got to do and it's just a matter of getting it done Now something that the Baltimore Ravens have gotten done Is having a historic defense this year It's crazy to say that in the year 2020 well season 2023 year 2024 The Baltimore Ravens that anybody can have a historic defense And the thing that they did that I don't think has ever been done before the triple crown defense They are the first defense to lead in three different categories as follows They were first in sacks with 60 60 sacks this year. Sometimes I don't even get 60 sacks and madden They were also first in points per game allowed with allowing 16 and a half points per game That's amazing. It's better in this day and age of football with when offense is everything and NFL pushes offense They went off the order rules favor offense. That's amazing And also they were tied for first in takeaways with 31 Who they were tied with I want to say it's a Cleveland Browns, but I'm not 1 000 percent sure But it's probably them but either way the Baltimore Ravens are triple crown winners and that has never been done before So mike mcdonald You know some teams gonna be trying to talk to him You know they will but we'll see how the Baltimore Ravens handle that we'll see how mike mcdonald Handles that but wait till after the playoffs Anyway, something that we can talk about that happens the way after the playoffs happens wait next season Is the Baltimore Ravens opponents because their opponents are official now They know exactly who they're gonna play so y'all can start putting it in your head Which games you want to go to which away games you want to travel to and let's just read it off Their opponents at the crib obviously the Steelers obviously the Bengals and obviously the Browns So that's the afc north opponents, but they also will be playing the Broncos the Raiders the Eagles The commanders so battle of the Beltway and those Buffalo builds that should be a good one Well, I mean all of these they they could really be good ones So those are the people who the Ravens are going to be playing at mnt bank stadium now away They will be playing of course the Steelers the Bengals and Browns obviously, but they'll be playing the Chiefs Kansas City And I'll just tell my wife when I went I saw that the the opponents officially came out and they would be playing the Chiefs I said, oh, yeah, that that is going to be a prime time game Whether it is Sunday night Monday night, I don't think they're gonna put that on Thursday night football I think that that's gonna go to the big leagues and I don't know amazon is a big league But that's gonna go to ESPN or NBC is going to one of those Um, they also play the Chargers on the road the cowboys another prime time game I mean every single cowboys game be on tv anyway So that's guaranteed to be on there to the Giants the Texans and the buccaneers So shout out to all the Florida Ravens fans that's going to be coming through to that Bucks game That should be a lot of fun now um in some other Historic news because this was one of the Baltimore Ravens best plays in the history Of their franchise in my opinion Um, Tylen Wallace when Tylen Wallace and the Baltimore Ravens played the Rams and that game was just Oh, that game was everything man Wow, just even thinking about it gets you stressed out, but um that game Ravens were down, uh, they were getting run all over. Uh, they had to come back There was that third and 17 with a mark through the touchdown to say flowers and crunch time And then right after that went right back then for a two point conversion With a guy draped all over his lit man.  Anyway, um Tylen Wallace in that game it went to overtime And the Rams were puntin the ball everybody think oh Tylen Wallace is back there. Hopefully he could break one off But if not, okay, let's go offense But Tylen Wallace he broke it off and he broke it off for a touchdown But that touchdown was so special because It was NFL red zones number one play Of the year Tylen Wallace is punt returning over time against the Rams and that play I I get why it was number one It just it makes too much sense because of the play not only the play itself But the conditions the circumstances what the situation was of that game that made that play that much more epic And that much more important. So shout out to Tylen Wallace, man Also, um in some head coaching news because the commanders of course as expected they fired Ron Rivera So they've been requesting interviews for everybody for new gm for new head coach for everything They they they've been asking this person that person, but They requested permission to interview Raven's assistant Head coach and d-line coach Anthony Weaver former Baltimore Raven player as well But they requested to interview him for their head coaching job And that came from Adam Schefter So a lot going on with these Baltimore Ravens as usual, y'all know how it goes But it's a lot more to come team keeping clean. This should be a fun week I know Raven's fan. We're gonna be a little extra chill this week and whatnot, but it's still plenty to talk about We got questions from subscribers coming up very soon this week And just everything else any other updates that go on with the Baltimore Ravens anything that impacts or affects the Baltimore Ravens You know, we got y'all covered. I love y'all again Make sure you subscribe to the channel turn your notifications on and also leave a like on the video team keeping clean I appreciate y'all so much for everything that y'all do on a consistent basis. I love you I hope you are having a great start to your week. Let's get it


But this one we're going to have to put a little bit of tape around the shock tube and then just kind of put it snug in there. Are you filming? Yeah, it'll hold it. The threads will stay.


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 button this video is Transformers War for Cybertron Kingdom Tracks now I just got tracks in the mail today Thanks to a pre-order from Entertainment Earth and I couldn't be happier tracks is one of my favorite G1 characters I just absolutely love this guy. So taking a quick look at the packaging. You've got tracks here in robot mode Transformers War for Cybertron Kingdom and on this fantastic wrap-around Kingdom artwork You've got tracks in vehicle mode and in robot mode I love that artwork back of the package and you've got tracks once again in robot mode Vehicle mode and his flight mode and the side of the package features more of the fantastic Kingdom artwork So now without further ado, let's get tracks open up out of this package and check him out and welcome to Patriot Prime Reviews Well, I am pissed off But before I tell you why I'm pissed off, let me show you what you get when you get tracks all open out of his packaging He does come with a sheet of instructions that is very well illustrated as usual and fairly easy to follow He also gets a trading card. I got black arachnia once again Peel this back and it's that image of black arachnia with the spear Tracks also comes with a couple of accessories. You get these dual missiles or blasters here and This little pistol So now let me tell you why I'm pissed off with this figure. Well, not as much this figure Hasbro QC as usual So I get tracks out of the packaging and I'm admiring him. He looks great. I'm looking him over and What do we have here? He is missing a wheel and this wheel is Nowhere in the packaging. I checked over and over again They flat out did not include a wheel on this figure when they put him in the box and that Sucks. I was really really looking forward to getting this figure and it just really Pisses me off. I mean come on Hasbro. So the first thing I did was I contacted Hasbro. I got him on chat Talking to this real nice lady named Mary and she informed me as usual Sorry, we no longer have this figure in stock So we can't replace this figure or give you a part But we will provide you with a figure of equal or lesser value for your enjoyment Damn it. I know it's gonna be something Sucky, I just that's how my luck is so I contacted entertainment earth where I got this figure from and So they sent me a return label.  I mean they deliberately put this guy together like oh, well he doesn't have a wheel ship him off off he goes but There's nothing I could do about it So let's go ahead and review the figure at least what I have now taking a closer look at tracks He looks really really good. I love the head sculpt the head sculpt is just spot on Generation one great sculpted details all over great paint applications, too He's got an Autobot logo right there on that yellow background some yellow and red paint right there on the forearms some white right here for the belt and That's about it. He does have some little details right there around the helmet that really make it pop He also has a faux Wind shield and windows right there for the chest that really adds to the look of the figure and that's about it So now let's get into articulation The head is on a ball joint and can look up and down and do a complete 360 But it's kind of hard to do because of that little port there on his back Which holds on his whole backpack Which he's got a pretty big backpack, but even the generation one figure had a big backpack So backpacks are par for the course with tracks here Now I do like the wings wings stick off just like the G1 figure to Going back on to articulation. I'm getting sidetracked. I'm still pissed off about that wheel The arms can do a complete 360. They can go out. They can go in you got move the wings are Articulated as well. There is a bicep Bend, but it doesn't go all the way up. It kind of stops Short so you don't get a full range of motion with that bicep. There is a bicep swivel and No wrist articulation. That's due to Transformation it's all on one solid piece right there. There is waist rotation Legs can go out in forward backwards. There is a twist right there on The thigh there is a knee bend and ankle tilt the ankle here is on a separate piece away from the lower leg and Let's see the hip skirt can go forward. So you can get a lot of range of motion with the legs Now as far as his weaponry is concerned get him to stand up. He is a little top-heavy So stand up there He's got the white dual blaster that you just peg in right here on the hood section And if I remember correctly, this is like his black light gun get this Peg that into his hand and now you have tracks all armed and ready for battle Not wanting to stand up now some more articulation right here with this hood. This can Rotate around so you can kind of be like the predator. He can look one way why while shooting another So there you go. There is tracks In robot mode. So now let's go ahead and get tracks transformed into vehicle mode Now we'll start things off by removing the weaponry first go ahead and remove the double barrel cannon here And the pistol Now what we're going to do is take this back section And swing this out And underneath here you've got this section. You're going to Unfold and tab into place now you won't be careful because this whole section right here Is painted clear plastic another thing hasbro is being known for lately So now rotate this around and as you can see you pretty much have the entire top of the vehicle Now you're going to take tracks chest section pull this up and Bring the body out like so go ahead and rotate the waist a 180 And now comes the legs and these are so much fun You're going to take these panels right here, which uh also brings me to come to a complaint Why do they have to stamp the product number right there on front of the figure where you can see it? Why couldn't they do it there inside the leg here or maybe inside the hood? Nope, you got to put it right there on the front of his leg Oh, well, so we're going to bring these gray panels up And now what we're going to do is collapse the gray part of the leg Into the lower section here and you need to rotate this part Up bringing the feet up with it This is a pain because these sections right here With the feet attached are super loose. So you got to get these all Folded in just right There's a couple different hinges That it's it's just a pain to manipulate So go ahead and get these worked in I have transformed this guy multiple times and it just this never gets any easier. I don't know what I'm doing wrong But once you get this in all the way Bring these up It's just a lot of manipulating. It's very very wonky Just to get that in flat There we go So bring these in I swear. I don't know what it is with these kingdom figures In these horrible leg transformations This is almost as bad as rhinox So get this out of the way.  So get this lined up just right And we're going to squeeze this vehicle together So what you want to do is you got the feet at this angle here So they're going to kind of slide up over this chest piece So once you get that slid over you're going to bring the top of the car over And now you have to tab if you look right here you got these little tabs You got to tab these in behind the hood So let's see if we can get this all together You're holding it in place in about 15 different spots There we go. Now once you get that hood locked in It's pretty much set Everything tabbed in just right There's little tabs right here behind the doors Make sure those are staying in see what I mean about these keep popping off So now you've got this look going on and from here we can utilize or show off tracks Flight mode. So what you're going to do is take the fists Fold those in And then rotate the arms to where the blue section is facing up Bring the wings out And then behind the vehicle you've got these little tail fins You're going to flip up And there you have tracks Flight mode And I like that that was one of the things I always liked about g1 tracks Was the vehicle's flight mode. It's very reminiscent of mask So you've got that going on and you can also add the weapons you can take the double barrel cannon Plug that there on the back and then take the pistol And plug that in the port on top of the double barrel cannon And now you have tracks flight mode all armed and ready for battle Now I Like it a different way. This is how the instructions show with the blue pieces facing up If you rotate this around Like so with the yellow and red sections It gives them a little bit more color plus you have these ports here now on the outside So you can plug in additional weapons to really arm this flight mode up So I dig it that is really cool and a nice nod to the generation one toy So to finish vehicle mode, let's go ahead and remove the weaponry Now what we're going to do is rotate these blue sections around to where they were before And bring the arms up So they're in line with the wings Bring the vehicle tires down Bring the arms forward And you're going to snap these blue sections into place along the side of the vehicle And get these tail fins Folded back down and there you have tracks in Vehicle mode and vehicle mode looks great except for one problem Here on the front of the vehicle These sections here will not stay tabbed in if you can see there's little pegs right there But they are too small and or just not long enough to catch in the ports on these side pieces and That sucks it really detracts From the vehicle and there's nothing I can do about it Now details on this thing look great. You got the folded in headlights right there You got the vents here. You got the firebird emblem with the Autobot insignia there Translucent windows that even though you can see the robot robot junk on the inside It's the bottom of his black feet. So it really doesn't look too bad Nice details here on the side as well. You've got the vents the door handles the wheels look great especially the rims well Three of the wheels look great.   You got the exhaust Tail lights and where a license plate would be Also, if you'd like you can put the weapons back on top Of the rear of the vehicle for a Combat mode so hey He actually rolls pretty good for a three wheel tripod vehicle So there you go guys. There is transformers war for cybertron kingdom tracks in vehicle mode And now for some quick size comparisons here is transformers war for cybertron kingdom tracks With generation one optimus prime Generation one tracks And kingdom huffer Transformers war for cybertron kingdom tracks is a fairly decent figure. I love his robot mode Especially the face sculpt it is just so g1 cartoon accurate the transformation It's a little wonky and the leg panels are just way too loose It kind of takes away the fun of transformation when you actually have to hold everything in place To get it to line up just right vehicle mode I would love it if the side panels would hook together I don't know if that's just an issue with mine or an issue that's going on across the board I do like his updated flight mode, especially with the tail fin sticking out the back Now as far as my qc issue I'm really hoping that entertainment earth can provide me with another tracks 100 complete because I do like this figure. He's not perfect But I still would like to have a complete one in my collection So there you go guys transformers war for cybertron kingdom tracks So does a transformers war for cybertron kingdom tracks belong in your collection? Well, if you get one that's 100 complete He's not a bad figure. I absolutely love the robot mode robot mode is spot on to the g1 cartoon He's is a little floppy for my taste.  I just wish you would tab together a little better But your mileage may vary that might be an issue that I just have with mine So, yeah, see this guy on the shelf pick him up. You're not going to be disappointed Just hopefully yours will come with the wheel And unfortunately the way he is in the packaging There's really no way to tell if he has the wheel or not So good luck. 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 offer channel memberships here on youtube and I also have a patreon page And thank you so much guys as of this recording We're only 500 away from my goal of 10 000 subscribers by tfcon in october Once again guys, this is patreon signing out


Fel gyda nhw, dyna arlai, sydd ydych chi'n meddwl i'r ffordd.  Yn modd ymlaen chi, rydw i chi ddweithio i gael i gael i gael i gael i'r cyflogau? Yn cael ei gael i'r cyflogau a'r cyflogau a'r cyflogau i gael i'r cyflogau?ancing. ëCause I think we're in this sort of catch-22 situation where developers haven't got a lot of experience and they're not getting a lot of experience because businesses aren't quite prepared to go for it. I'm quick slide for start, just to say you could be in other great talks and quite frankly I wish I was in any other one than this one. But if you're not sure you're in the right talk, this one's about migrating to Jubilate. There's other really good talks there, at least a couple I would have like to have gone to. Y little bit about me seem to be essential. When we do these talks I'm a freelancer contractor, I've worked at enterprise level stuff for a few years, some of you or quite few of you may know me through, various companies, digital agencies I've worked with as well. dylai'r bwrdd drwpl dda wedi gyrincio'r bwrdd drwpl 28 yn y lleidio'r bwrdd drwpl 5 yn ymlaen o'r bwrdd drwpl 6. Felly rwy'n meddwl gyda'r bwrdd drwpl 5, ond maen nhw'n fagorol yma, ond dwi'n gwybod hi'n gwybod, ond erbyn fod yn ymlaen i'r bwrdd drwpl 6 o'r bwrdd drwpl 7, ond wedi gennym i'r bwrdd drwpl 8 o'r bwrdd drwpl. Rwy'n gwneud am y gweithio arweinydd ym 1999, rydych chi'n gofynnwch ein modd a'r bwrdd arall, ac that was probably my fault as well, but I've been developing I mean I started my career in Wilbur, the Stone Age, way back. So you know I've been doing CC++ Java development before that also quite an active number of the community so many of you may or many of you know me through beth dyweddo'r cwm, cefnod, ateb, ac allwch. Yn y gallu amser dw i'r gwaith, byddwn yn gweithio'r adnodd yn ysgrifennu. Felly, yn y prag, yn 2013, y Prif Ynysgrifennu, byddwn yn gwneud bod y maen nhw'n cyhoeddenu'n gwneud i mi. Mae'r adnodd wedi cael ei bod yn gweithio â'r adnodd yn gweithio'r adnodd. A'r adnodd yn ysgrifennu. If we needed a bit of motivation to think why do we need to get on to Drupal 8, then if we're still on Drupal 6, literally in the last week or so we will have, if you look at your current updates required for your Drupal 6 site, it's the first time I've ever seen a screen go quite like this but suddenly on the 24th of February the required basically everything went unsupported, Drupal 6 is now officially unsupported so you get an entire red screen and that should have frightened a few people if they've still got Drupal 6 sites up and running. That should be good enough motivation. At the same time the security team were good enough to release critical core security issues and on the day when I first saw this it wasn't obvious whether they were going to patch Drupal 6. In fact I assume they weren't which is what made me really scared. But the truth is they had been working on some of these patches for a few weeks in advance and the really good news is at least the critical issue here which was to do with file uploads and the ability to use them badly maliciously was that they've got a patch for that so Drupal core was patched. There were also patches for file, somebody is tweeting aren't they? There's patches for chaos tools, patches for views, panels, as well as the file field was the main security update but there were other updates as well. So it's good to see that even though Drupal 6 is officially no longer supported there have been a few patches keeping it alive for a little bit longer. There's obviously a lot of people who care about it. So the preliminary is for this. What we're starting off with is the assumption that we're working from a Drupal 6 or 7 site. The migrate module in Drupal will happily allow you to migrate from other systems but I'm not really going to go into that today. I'm not going to go into it at all. When we're migrating from a previous site we will always do a survey of what we've used our previous site in the way of contributing modules to see when they're up to date to see whether a new version is available. Drupal 8 is currently in a state where some of the most important modules have gone into Drupal 8 core so we're in a good state from the perspective of those. There's a top 10 set of modules most of which are fairly well down the path of being imported to Drupal 8 at this stage. There are one or two that aren't there. Webforms is one that I've come across which everybody is shouting out for and it just needs that extra work to make it happen. As well as the contributed modules you obviously need to assess any customisation you've done in your old site and what you need to do in order to move that forwards. I'm not going to go into how you move forward to custom code a lot although we'll mention a module that's a great help with that. Step 0 is clearly to install your Drupal 8. Well actually it's not clearly because when we went from version 6 to version 7 and prior to that there were upgrade paths that tried to in place upgrade your entire Drupal and I believe the Drupal 5-6 kind of worked. Drupal 6-7 didn't really work very well and a lot of people expected it to work but there were too many problems really. Drupal 7-8 was never planned to work in that way so there was never a plan to say here's my Drupal 7 site, I just run the update script and suddenly it'll be turned into a Drupal 8 site. As many of you will know Drupal 8 has changed the foundational layer, the underlying framework to Symphony 2 and to be honest Drupal 8 is fundamentally different in many but probably half the code base has been changed since Drupal 7. It's the biggest step change that Drupal has ever gone through. It's been five years in the making and there's good reasons for that because we waited a long while for it but there's so much to change that we've learnt lessons from that and in the future we won't do such big changes all in one go. Anything else there? So the final tagline there is there are some very powerful tools that help to make the job not necessarily easy but plausible and depending what your current site is you're trying to migrate from it may be relatively easy, there's probably going to be some snacks both in terms of at the moment certain modules are not available and there's going to be some things to work through soon. I think all of this is caveats to all of this. We would love the path to be completely smooth, it's not quite ready yet in some certain respects but it's coming and if we all work together we can make it happen sooner rather than later. So what are the tools of the trade? Many of you I hope will be familiar with Drush from previous versions of Drupal and the good news is Drush is still there. Everything you could do with Drush previously works pretty much the same. There's a few little changes like where we used to say Drush CC all to clear the cache we know Drush CR for cache rebuild. There's some changes inside Drupal 8 that improve the way in which caching works but the essence of it is Drush is still there. If you have a server or an installation, I will make all of these slides available later by the way and there's links against all of these which take you to more information. We'll follow some of these links just to get there but there's lots of information attached to these slides. So Drush is still there if you've got a server or a local instance and you've got Drush installed globally, you will need to upgrade Drush to Drush 8. If you've got one of the older versions of Drush that happily work with Drush 7 it's not going to work with Drush 8. There was a stage earlier in the Drupal 8 cycle where Drush 7 would work with it but that has gone along the way as well. The new key on the block is something called Drupal console. I think I've got some more details on these as we go through them so perhaps I'll move on. My grade upgrade is what I'll hopefully be able to demonstrate a bit of which is actually how we migrate the content from our existing sites and the module upgrade. My grade upgrade is available for both Drupal 6 and Drupal 7 sites to bring data and configuration through to your Drupal 8 site. Module upgrade is about helping you to update existing custom functionality and it's not the complete answer but it does some really useful stuff in a lot of the legwork of converting modules from Drupal 7 but it's only available for Drupal 7. There's been no attempt to do that to bring custom functionality from Drupal 6. I've got a bit of a rough throw. Is there a water supply anywhere about a chance? I don't know if there's something outside. Would you mind? Thank you. I can just tell it's going to go before we finish at this rate. Drupal console, it was originally developed not as a replacement for Drush and to some extent you can use both and there's an overlap between them but they have slightly different purposes but it was originally developed simply for generating boilerplate code for the new Drupal 8 modules but it's extended way beyond that and now there is this significant overlap. In fact I think from Drupal console you tend to call Drupal console on the command line just as Drupal so there's actually a command where you say Drupal, Drush, whatever so you can run Drush commands from Drupal console and probably vice versa for all I know. The two are slightly competing I think because the Drupal console has been extended to cover much more but in many ways Drupal console is the new way forward it's based much more on the Drupal 8 approach and so I think as developers get more used to it a lot more will be done with Drupal console rather than Drush if you're used to using that. Actually can I just get a sort of show of hands of how many people are first of all how many people are developers versus site builders so how many people are developers how many people have called themselves more site builders ok 50-50 a few more developers great and how many people have had a chance to do something with Drupal 8 great plenty of movement there how many people would like a chance to do something with Drupal 8 why are people not putting their hands up? so my great upgrade is based on the my great module that Drupal had in Drupal 7 and it's just going to click on one or two of these links I forgot to sort out my wifi before we started right I'm not going to click on one or two of these links quite yet ok back to my great upgrade my great upgrade is the my great module which was a contributed module for Drupal 7 but part of the Drupal 8 initiative has been to bring that into core nearly my great has been brought into core but it's still under a category of experimental so it's not completely released there's also I need to get some internet access sorted out sorry it's the house internet working apologies for this that might be the problem so I'll be tethering here very quickly it probably has the council last year we're going out of the network no no no city guest yes let's go to city guest and see let's go to the password I think it's c1 something it's about arsenal yes sorry guys there's jim edition there's jim type there's jim type sorry about this I should have sorted this out sooner there's a very short gap between the is this the keynote even me I had to sorry guys maybe I want to take a vote whether arsenal was supposed to win maybe we can talk about it that's not the one we need see if my hotspot is there but the phone is not going to win I think because let's go to this one I want to yeah I want to remove this one but it's not that's good let's remove this where is the other one it's not there city guest so let's try to click advanced and then you remove the yeah that one yeah let's just remove this yeah yeah yeah yeah we need to unlock it sorry I can unlock it yes unlock that is that to see my seal pin for your card sir can we try that can you borrow your card let's remove that one maybe maybe we can talk about arsenal the sparse now that's terrible you know yeah I think I should just thank you actually what I was considering doing how are we doing for time at the stage now we haven't got time for that there's module upgrade is the tool that will help you to take custom modules from Drupal 7 and convert them into a Drupal 8 form and if you go to the page which will be linked on to the slides there's a great little 5 minute video by Webchick done at some previous conference or event I think Webchick can explain more in 5 minutes than I could explain in an hour so I suggest you follow it up I wasn't considering showing it but I don't think we've quite got time for that at the moment so my great upgrade is the tool is the tool for getting data from a Drupal 6 or 7 site data and configuration this is a big step up from what my great did in Drupal 7 where it was really just doing data and the configuration side of things you had to do separately the mistakes I made when I first tried to do some migration was I set up a Drupal 8 site and I set up my content types and I added all the fields I wanted and then tried to do the migrate and what I actually found was there were a whole heap of conflicts because when I ran the migration the the new Drupal 8 migrate actually tried to create extra fields or duplicate fields and had to rename the fields to prevent collisions so one thing to remember when you try and run the migrate upgrade is don't set up your content types in most of your configuration first the bit that I'd like to try and demo which if it goes as well as we've gone so far isn't going to show too much I can't actually see my command bar on the side ok here's a local version of my nasty old Drupal 6 site that I I didn't do the design for this but I rebuilt it in Drupal about a hundred years ago or something this is a Drupal 8 installation and I have literally only done Drush DL of Drupal 8 and then I've downloaded one additional module the migrate is the core migration functionality which can be applied to pulling from Drupal or can be applied to just like in Drupal 7 it can be used for migrating from other systems WordPress or anything else custom you build my great Drupal is what Drupal 7 used to call Drupal to Drupal migration so this is the new code that does the Drupal configuration the only thing I've added I've pulled in with a Drush download is the Drupal upgrade which confusingly is actually called Migrate Upgrade as the module so we basically have a completely clean Drupal 8 installation and I'm going to just enable I only need to enable that one because it's dependent on the others so this will automatically enable the Drupal Migrate module Migrate Upgrade and my great upgrade is actually it's a very thin user interface which gives you virtually no options but just does everything for you in one long in one not even very long so we need to go to the path upgrade that's good upgrade is just as interesting and it gives you a bit of general feel but all you really need to do is continue from there and what it's now asking to do is give the minimum information this can be run from a Drush command as well but give the minimum information which simply allows you to connect to the database of the old Drupal installation the way in which you access that will obviously depend where your Drupal installation is I've got a local copy of the database here pulling from that old Drupal installation is read only so it's not going to touch the database there, it's not going to destroy anything it's not going to interfere with it or add any log tables or anything to the old site so it's safe as far as that's concerned I've got a so I enter the host, it's my SQL I enter the host database name which I try and pull the data from this site it's called mysteries just to prove my security on here I'm using the root login with no password even the rot the glasses are for a purpose aren't they this was actually a multi-site on Drupal 6 so I do have a refix on this and then this final bit is in order to allow my great to get hold of the files you can either pull them from the local if you've got private files you only have one option you have to pull them from a local file folder but if you've got if you haven't got any private files you can actually pull them from a site out there on the internet somewhere but as we know that's even more reliable so there he is that should pull them from the files folder of that Roman Mysteries site first step after this is to review and this is probably one of the most interesting pages while there's very little to set up this gives you feedback on basically every module that it's finding in the Drupal 6 site that it's so it's already looked at my Drupal 6 site had a look to see what's there and it's going through that site and saying there are all these things that I don't know what to do with so I think there's somewhere up here was and this doesn't sound too healthy in a sense because it's saying that there's only 16 of the modules that in the Drupal 6 site that it knows what to do with and 36 it doesn't know what to do with it's not quite as bad as it sounds but certainly there are some missing areas that are still being worked on C tools for example I haven't installed while a lot of the functionality of C tools has moved into core little bits of C tools that are available available as a contributed module but I don't think I mean on this particular this is a very simple site and it's probably not using anything in C tools that I care about you might have set some some devil stuff up with devil generate for example you know we don't care too much about that sort of stuff Google Analytics is an interesting one this is actually an old version of the Google Analytics library there are some newer versions so again you'd probably decide to trash that and use the newer versions of Google Analytics modules a lot of the image resizing stuff oh and look we've got the nasty old IMCE WYSIWYG so we probably want to trash that and use the new Drupal 8 stuff anyway WYSIWYG again we don't need the sorry can you see what's on the screen there we don't need the WYSIWYG module that we used to have in Drupal 6 because Drupal 8 does that out of the box it also this module is actually so quiet in terms of what it's doing that it even hides away the things it can do you know it's kind of making a big noise about the things it can't do but actually it hides away the things it can do so it's going to happily bring across block configuration comments if we had any content including the fields watchdog database log filters text filters it'll bring across the menu it's an awful lot more than was handled in the Drupal 7 version of the Migrate module which was primarily just data just content obviously bring across all the nodes all the paths taxonomies it's fantastic really how much it is covering so we'll say perform the upgrade I've talked too long because actually the process itself is really incredibly quick it's a very simple module with only a few settings but actually it's doing a huge amount under the limit five more minutes is that including Q&A or whatever we're doing with Q&A okay this will finish in the next few seconds spoiler alert when we look at the site that's been created unfortunately at this stage it doesn't look anything like the original site we've done absolutely nothing in the way of bringing across the theme for example and to so extent if you're upgrading from a Drupal 6 site to a Drupal 8 site you almost certainly will be trashing the theme anyway because your Drupal 6 site was almost certainly not responsive and used ancient technologies that you don't really want to be using so there's a fair chance you're going to have to rewrite or integrate with a new nice responsive theme which is one of the big features of Drupal 8 there's another little issue which if we edit the homepage we have got content in here but as you saw there was absolutely nothing showing on the homepage and the reason for that is somebody thought it was a good idea to put some PHP code in so we had a PHP filter and one of the things with this migrate module is that it really hates the PHP filter for very good reasons and it's one of the issues that is highlighted as a current issue that it will replace the PHP code filter with something called filter null which simply doesn't bother displaying your content so if you use PHP code I'm led to believe it is possible to install PHP filter as a contributed module I haven't tried that and if you do that it should then work if you really have to have PHP in your content not a good idea really but I believe the solution to this is you simply have to re-save the content and drop that filter null or possibly you have to take that filter null out of the image style we're running out of time so I think I'm not going to have time to actually go through that with at this stage let me just go back to my slides to finish off the last few minutes sorry this has been a bit rushed and not everything has worked quite as expected I put on these slides a whole heap of a whole heap of resources so when I make the slides available you may have done the obvious thing which is to google and found lots of useful stuff but the other thing when you google is you find lots of stuff which might have been useful two years ago but actually things have changed a bit since then I found some lovely how to build a module stuff on SitePoint for example but it's out of date so some of the stuff is wrong and not very helpful Drupal8.org slash 8 is of course the best place to look for everything is the starting point theapi.drupal.org is now by default Drupal8 but there's lots of great stuff on there and the other really useful place to look is on any particular contributed module there should be a status message at the bottom saying whether or not it's been ported to Drupal8 and if not it attaches it to an issue where they will discuss what's the outstanding issues what things are that's holding it back and should really tell you the status Books is a bit of a many of us maybe books are old fashioned these days but many of us learnt Drupal6 and previous versions from Drupal7 for previous versions with some good books there's a lot of books in the pipeline but most of them at this stage haven't actually quite been published I was going to flick down Amazon to just look at if you do a search on Drupal8 on Amazon what you'll find is there's a couple of books that are available the configuration management book is available but most of them say due for release I know the main module development book said initially would it be released last December but now it's said it will be released in about April maybe May something like that so books should be a good resource once they're there but most of the useful books aren't quite published yet may not be published until at least June some of them there's lots of good blogs around too many to mention though that link actually goes to the blog which is pretty useful Drupal8 Theming Guide is a lovely site that takes you through all the Theming side of things it's not my area of expertise but I think there's another talk later this weekend on Tweek which is if you haven't been to a Tweek talk well worth going to there's lots of YouTube playlists put up by the Drupal Association in particular Barcelona I recommend simply because it's got so many videos Barcelona DrupalCon it's got so many videos and it's the most recent DrupalCon that's been I know there was a DrupalCon in Asia but from what I've seen there aren't many videos available from that quite yet for some great video tutorials OS Training have had a scheme where they've been sponsored to create 200 free videos Drupalize me I've got quite a lot and then there are a few there are probably lots of sites out there with lists of really useful stuff my personal friends at Drupal Cafe Nick sitting in front here runs Drupal Cafe over a period of the last year or more has put together all the links you can ever find on Drupal8 and that's a great resource and my final point was simply going to be to say while my experience on getting started with Drupal8 has been quite limited just this week I've started with Christian Aid on the contract and last year they made the decision they're porting from some nasty old ASP.net system to and they were porting to Drupal7 but they haven't got very far with it and actually since I started this last week we made the decision to move to Drupal8 instead which I think is great news obviously I'll get some more experience but I think there's lots of really positive reasons why moving to Drupal8 is the right solution especially if you've got a development team who aren't very experienced in Drupal which is the case with Christian Aid because they're not wasting Drupal7 experience I'm over time now great, we'd better get going then so I'll just say thank you I will make the slides available by one method or another later thanks very much


So, today we will have a quick review of the fundamental control flow that C plus plus computing offers us and in the process we will look at couple of more examples on computing. One involving the finding out of roots, another method we will look at. The purpose of that looking at that method is that called bisection method. We shall use this subsequently to introduce an extremely important notion of searching given data in very large arrays. So, we will do the review of the control flow as you know control flow ordinarily in any program is that our dumbo or C plus plus will execute our instructions sequentially one after another. But whenever we want instructions to be executed out of sequence based on certain conditions we have special instructions which are through the if statement fundamentally where you conditionally execute one block or the other which is simple and understood very easily by everyone. But there is another mechanism of setting up an iteration which permits us to repeatedly execute a block of instructions again and again and again and that is what makes C plus plus or any other programming language so powerful. It is absolutely important that each one of us understands exactly what happens when such iterations are executed. We have seen the while and for loops we shall reexamine them looking at a variant of while in the process. Finally we will look at the array manipulations we had looked at an array last time how exactly the large arrays could be read in and how exactly we could find maximum element of a given array etc but today we shall introduce a search problem. Again the emphasis is on using the control structures both for ordinary computation without involving arrays but involving only simple variables and also using array variables. First we look at the iteration using while loop. So suppose there are there is a long program that you have written the first command says there is a previous line before that there might be some other lines of program. The next one says while condition opening brass code block closing brass so this essentially is the while loop starting here ending here and this will be followed by next list. So ordinarily C plus plus will be executing all the instructions before this then this and ordinarily it will just execute all of these ones and go ahead but because of while statement an iteration is introduced. What does the while statement do really? This is the control flow in the while loop. I had drawn this kind of flow chart by hand but it is absolutely essential that each one of you understands perfectly how exactly instructions are executed so I am very quickly refreshing our memory. Suppose there is some program instructions here they will be executed indicated by the previous line which is executed here. Incidentally this kind of flow chart had been the standard way of depicting steps in our algorithm in a traditional sense. Nowadays people do not have to draw flow chart because they can understand the program constructs in the abstract sense much more easily but for beginners it is useful to look at such flow charts. We had explained this notion that a box will contain any one of the statements like assignment or input or output or whatever that is an action. A diamond will introduce a condition which will be checked and a diamond in a flow chart will have exactly two outlets one called the true outlet and another called the false outlet. So if the condition is true the program flow sequence goes this way if it is false the program flow sequence goes this way. So effectively when we say while condition code block what it means is that this condition is evaluated if the condition is true then the code block is executed and the C++ number jumps back to recheck that condition. So this is the loop this is the while loop and this while loop will be executed as long as the condition remains true. The moment condition becomes false you will get out of this loop and go to the next line which may be the next line of instruction. This is simple but it is important that you understand the exact significance of how it is done. Very important to note the condition is evaluated at the beginning before you enter the loop and the code block is then executed only if the condition is true. If it is true the code block is executed and then you go back to evaluate the condition so that is the iteration path. Is this very clear because this simple three line instruction actually may cause the computer to execute 1 million or 10 million times the code block depending upon the condition that you have written which is the crux of the power of computing that we get and the power of expression that we get to make C++ work harder. Here is another example from our computational routines. This is finding out a route by what we call the bisection method. You are by now familiar with the roots of an equation. So let us say this is a function fx which has something like this shape. So this is x axis, this is y axis. We do not know where the 0 of x equal to 0 is, it does not matter. What we need to find out is at which point this function crosses x axis because that is where f of x is 0 at some point in x so this is the desired root as is shown here. We had done earlier a different set of argument to locate this root by finding out the root through Newton Raphson method but there is another simpler iteration method that is possible. This method will work only if we know at least one value on either side of the root which is one is positive, one is negative. What is the meaning? Consider this value which I have arbitrarily called h i and consider this value which I have arbitrarily called low l o. Notice that at the point x equal to h i, f x i is positive. At the point x equal to l o, f x i is negative. Very clearly if at one point the value is positive, one point the value is negative then f x equal to 0 must lie somewhere in between. We do not know where it lies. In this example diagram we have shown that the root lies here but since we do not know one simple method is we get the midpoint of this high and low calculate actually high plus low by 2. This is the midpoint. Does this midpoint have any sanctity no, it is an arbitrary guess. We divide high plus low by 2, we get some midpoint. At midpoint we evaluate the function again. So what happens now? In this particular example we see that the function is still positive. What it means? If the function is positive here then the root must now lie between this point and the low point. Is that obvious? So what have we done effectively? We have reduced the search space. Originally this whole thing was the search space. From low to high we were searching for the root. We have reduced that space by half because we have gone to the midpoint. Suppose this function was negative at this point what would I have done? We would have said the root lies on the right hand side. So by finding out the midpoint and evaluating the function at the midpoint we suddenly know whether the root lies on the right of midpoint or left of midpoint. In this example case the root lies on midpoint or left of midpoint. So what we should do now? We should reset HI to this point. So if we reset HI to mid and re-execute the same block of code we will again find another midpoint somewhere here. Obviously we will go closer to it. It may so happen that in this process at some point the midpoint may come on this side. If it comes on this side obviously the function value will be negative there and we know that the root must lie on the right of that. At which point we will set low to the new midpoint rather than high. Is that clear? So if this is how I wish to actually execute this algorithm I need initially a mechanism of course to calculate f of x so there must be some formula giving f of x. I do not need derivative or anything I just need f of x but I also need a good guess for the high value and a good guess for the low value. We can given any complex equation we can arbitrarily evaluate it for x so guessing is not very difficult here. But the program must check whether your guess is right or wrong. How can a program check whether your initial guess is right or wrong? Well we know that at one point the value must be positive at another point the value must be negative. We do not know which one. High need not mean that the value of the function is high. High means it is on the higher side of x low means it is on the lower side of but one thing is very clear. One of the function values should be positive one should be negative clearly their product must be positive their product must be negative if their product is positive either both function values are positive or both function values are negative so there is no root unlikely. So we start with high and low values such that function value of low multiplied by function value at high is less than 0 which is negative. You can see this condition means something if this condition is true then your initial guess is correct. Starting with this initial guess now you compute midpoint and the function value at midpoint now you just need to compare if the modulus of that function value is greater than 0 if the function value becomes 0 you have found the root but the function value may be positive or negative slightly more than 0 slightly less than 0. So you have to consider the absolute value of that function at the midpoint the absolute value which is known by Mark so absolute value of f of mid should be greater than 0. Now the trouble is exact 0 is very difficult to achieve look at this particular point you notice at this point the function f of x is 0 exactly but notice that computationally since you are calculating midpoint iteratively you may approach that point from this side of that side and there might be a f of x which is minus 0.0001 or plus 0.001 or 002. So reaching 0 is a matter of chance we do not need the root with that much exact accuracy because we cannot find it with that much exact accuracy this is a computational method not algebraic solution so exact root finding is impossible. So we define some kind of a threshold value some small threshold value or some small tolerant saying that if at the final midpoint the value of the function absolute value of the function is less than 0.001 let us say then we assume that it is the root. So we stop our iterations at that point and that is why we check if the value of the function at midpoint is greater than that threshold value we look at the next interval the next interval as I said would be either low comma mid or mid comma high it will be either this interval or this interval is that clear the program then gets written like this we write this program to solve the cubics a x cube plus b x square plus c x plus d we take in as inputs a b c d we also take in as input low high and tall tall is short for tolerance. So tolerance is that small error which we are willing to live with now this particular program should return immediately if function of low and function of high multiplication is greater than 0 as we discussed initial this means our initial value guess itself is wrong I cannot find the roots but if the value guess are ok then as long as function value at the midpoint is greater than my tolerance I will keep repeating what I will keep repeating finding out the next interval which will be set to either low mid or mid high and keep repeating this whenever I find the midpoint which is very close to f of mid equal to 0 that is within my tolerance I will get out and so I will return the midpoint which is the root if and when f mid becomes less than tall is this clear the program then writes like this so notice it says include I O stream using like namespace s t d statements which we make without really understanding them but in command we all understand that is the main program we define float a b c d low high mid f l o f h i f mid what would these be representing f l o means function value at low point f h i means function value at high point and f mid is the function value at mid point this is a notation any name I could have used I define another variable called tall which is short for tolerance in actual program when you write you should by the way write tolerance midpoint you should write variable names which make immediate sense to the reader the only reason why I am not doing it here in the class is I have a limited space on the slide otherwise the e n c of tolerance may go outside the screen so I am using the short names but that is not indicated practice so I first ask for a b c d values and then I collect a b c d values then I ask for low high and tolerance values the three input values and I collect l o h i and t o l values from input this is the initial setting so I got a b c d as the coefficients of the quadratic and I got the values of low and mid high which are initial cases followed by the tolerance initially itself what do I have to do remember I have got low and high but I have to first check whether function at low and function at high are at the opposite side of the x axis otherwise I can't find a rule so I evaluate f l o as a into low into low into low plus b into low into low plus c into low plus d this is a crazy way of calculating cube root and square root but this is the easiest way for c plus plus then we calculate f h i again similarly this time we use high instead of low so we got f h i and f low initially now we check if f l o into f h i is greater than zero then what it means either both are positive or both are negative so I get out I say error in high low backslash n return one notice that ordinarily in the main program whenever we write return we have encountered return zero so far and we have said we routinely write it this time we say return one this is actually a neat technique used by programmers to return to the operating system dumbo because main program will return to the operating system telling the operating system that look some ghapla happened during execution of this program I have not executed the program properly is easiest way to indicate is to give a non-zero value actually later on when we write very large programming systems we can use such values it could be one it could be 110 it could be 270 any number of values that you can think of but the returning operating system or a program to be another program to be this function returns can make use of this value to take intelligent action if the value is one it means I did not give high and low correctly if the value is to it may mean something else etc etc we shall discuss these things later but I this is just to for you to understand that if high and low are not proper in the context of my bisection method then I am quitting the program the program execution will not go further please note that ordinary we have said that if I execute an if statement here there is an if statement then if this condition is true only these statements will be executed otherwise subsequent statements will be executed even if this condition is true these statements will be executed and then next statements will be executed that is our understanding of if but if within inside any code block if there is a return statement it supersedes anything else that program says the return statement says forget everything get out go back so this is like break just get out of this whole mess and go back to the operating system don't execute anything further return is therefore an extremely powerful statement that is the reason why you would usually have the return statement only at the end of the program never anywhere in between but this is a special case I can't proceed any further and therefore I need to return so that is how I do it well how else I could have done that instead of returning here I could have put the brass and put an else and return the entire program under that else this is a simpler way of doing it now this is where I will write the main program so the main part of our code will come here what is that main part you know that bisection method finding out the midpoint iterating etc etc obviously at the end of this I would have found out the root and what would be the root the midpoint the last midpoint used and that is what is being put out here if we come ever to this point then we return with zero telling the operating system dumbo that everything is all right so is the main line of code clear first I read the values of a b c d then I calculate function value at low function value at high then I check whether the function values have opposite side so that there is a possibility of my finding a root in between if it is not so I print an error message on my terminal and get out return one means get out shouting bad things one one not zero otherwise I come out here I will write the main part of my code here and then I will print the value of me what is the main part of the code that is shown in the next slide so look at this slide carefully because this shows the main program using which we iteratively go to the root the first one initial values for mid and f mid starting with low and high I calculate the midpoint very simple mid is equal to low plus high by 2 having got the midpoint I will now calculate the function value at the midpoint which I have represented by a variable name f mid so I said f mid is equal to same thing a into mid into mid plus b into mid into mid plus c into mid plus d this will give me the cubic function value at that point after that while f a b s in bracket f mid greater than tall what does this statement do this while statement I am setting up an iteration but what does that condition say remember the condition that we wanted was to check the absolute value of the function value at that midpoint the function value at midpoint we have calculated and we have called it f mid this f mid therefore is a variable name however this f a b s is not our variable name this f a b s is the name of a standard function a standard computational function which comes ready made with c plus plus can you guess what does f a b s do calculate the absolute value very simply if f mid was positive that will be the absolute value if it was negative the negative of that will be the absolute value we could have written a complicated statement also here but this is much simpler again tells you the importance of having such ready made functions available as assistance to us f a b s is one such function so when I say f a b s f mid greater than tolerance remember we don't say greater than 0 because we may never reach 0 that is why we took the tolerance value if that is so then what am I supposed to do I am now supposed to decide whether the new range where I search is between low and mid or is between mid and high so very clearly that will depend upon what whether again I will check a flow into f mid is greater than 0 if a flow into f mid is greater than 0 what does it mean that both low and mid are such that function value is either on the positive side or on the negative side on same side so that means the f mid is still taking me or keeping me on the same side as a flow if that is so then I must advance a flow to f mid low to mid so that is what is being done I reset low to mid and a flow to f mid because I have found that value already if that is not so if the signs are opposite that means now midpoint has crossed over from the low side so obviously the range I have to search for is between mid and high so this time I will set high to the midpoint and f hi to f mid I'm sorry the other way round please execute these statements in your lab or by hand yourself to convince yourself that the algorithm actually works correctly but this is a simple mechanism all that I am doing is I have a range they don't really matter but let's stick to the nomenclature that we have used so this is low and this is f of low this is high and this is f of high and let's say this is my midpoint so if this is made and this is f of mid so when I compare the value of the function at low and the value of the function at mid I know they are of opposite sides which means the root must lie between these two points so that means in this given situation I must now search for this range of values please note originally I was searching between low and high now to search between low and mid so what should happen high should become mid and the function value of high should become function value at mid and then the new search begins exactly using the same logic this is what has been done here if a fellow multiplied by f mid is not greater than zero that means the condition that we saw saw in the example then I have set high to mid and f hi to mid on the other hand if mid point is on this side I have to shift low which is what is done here so is this clear how it is done very simple then I calculate the new midpoint and I calculate the new f mid because now there is a new midpoint and with this my vile statement ends so I will go back again and again check the absolute value of f mid this simple code will cause the computer to reiterate around this body till it finds out the root to a desired accuracy you can change the value of tolerance and see what happens but that is the main part of the code so please note that the vile statement is an extremely effective control structure which permits us to set up an iteration during which any given code is executed again and again and again while a condition remains true and you must remember what happens first the condition is checked only if it is true you enter the code block and then keep on repeating the condition is correct there is another way of iteration however which is called a do vile loop very similar to our vile iteration this we have not seen so this is a new thing in this do vile loop we first write the word do then put an opening blast then write the block of code which is to be iterated and finally at the end of that block we say vile condition in plain English it means do this while this condition is true the difference is there is no condition checking at the beginning do this is the first statement so in this kind of control structure c++ will execute that block first time automatically without checking anything then it will check the condition if the condition is true it will go back and do this again and again and again when the condition becomes false it will fall down and go to the next step a slight variation therefore as compared to the other vile that we had seen so this is the flow chart for that unlike in the previous vile execution I come from the previous slide and I automatically execute the code block once having executed I check the condition is the condition true I go back again and execute the code block if it is still true I go back again and so on but the moment condition becomes false I come out and I go to the next line I think it is very simple and straightforward so it is clear try to rewrite the previous program using do why just so you understand how the condition checking has to be done differently how initialization has to be done differently etc etc the third way of setting up iterations is through counting this is just a confirmation of what we just said these are the features of do why loop I have written the thing again after previous line I said do code block while condition and the two important things code block is executed at least once no matter what the condition and the condition is evaluated only at the end if that condition is true you go back to again execute code block this is the variation so this is the fall loop can anybody tell me what it does well I have a comment there which says countdown so what does countdown do it starts with int man it introduces a integer variable called count for count equal to ten count greater than zero count equal to count minus one do the following what see out that is print out the value of count followed by a comma and keep on doing this at the end it says end of line value of count is count so I am printing count many many times what will this fall loop do it will start with count equal to ten execute this once then we will reduce count by one because instruction at the end is say count minus one so count will become nine then it will become eight etcetera etcetera until the condition is valid it will keep executing it but at the end it will come out of the iteration and just to mark the end of iteration we have put a output statement there so here is a quiz when we execute these code lines the value of the count printed last one b ok anybody a nobody a so it can be eleven because I am counting down common sense b how many will say b several people will say b because b is one what was the reason well anybody for c large number of people for c anybody for d nobody for d nobody thinks it will be minus one ok a and d are obviously not correct answers and I am glad everybody got it the confusion is between b and c let us look at when you will come out of the loop please note the condition here says if count is greater than zero then keep doing this that is how we first place you got here when count was ten so when count was nine you will come down count was eight you will come down is the final value printed by this statement was to be one and one is greater than zero there is no way you could have come out of the loop if the last value of count was one then that value is greater than zero so you would have necessarily enter the loop for the last time when you execute this for the last time and you try to go back again that is when count is decremented now count becomes zero and when count becomes zero since zero is not greater than zero the far loop is terminated so when you come out and use this line to print out the value printed will be zero so c is the right answer please note that now after having heard this explanation things seem so simple but there were several of us who did not realize it instantly you must realize it instantly and therefore must understand perfectly the flow of control that happens on a far loop so let us revisit the control flow in the far loop it has four parts the first part is initial expression the second part is condition and the third part is end expression all the three are contained as a specification in the fourth statement the fourth part is the body itself which is to be executed again and again and again it is very important to understand the sequence in which these four parts are executed very very important there are three parts all written in the same line as four but not all of them are executed at one stretch and that is the crux of the far loop so let us look at the flow chart for this so notice there is a previous line from which you come to the far statement when you come inside the far statement the first thing that you do is execute the initial expression what was the initial expression what was the initial expression in our program count equal to ten so the count is set to ten here after this you execute the condition evaluation what are the condition is count greater than zero if the count is greater than zero condition will evaluate to true and then and only then you will get inside where you will execute the code block if it is not true then and only then you will come out of the entire far loop and go to the next line if you come inside the code block because the condition is true then you do not execute the third statement which is the incremental decrement you first execute the code block the iteration block is first executed so this is the crux of the problem the far statement says initialization condition and end of the loop expression but all the three are not executed in sequence the initialization is executed then the condition is checked after which if the condition is true code block is executed and only after the code block is executed you then execute the end expression what was the end expression in our case this time count equal to count minus one so count gets decremented only after executing the code block but before quitting so only after end expression is executed you actually go back and check the condition for the next loop and keep repeating this so now it is clear why that if the condition says count greater than zero when count is one actually one is greater than zero so you will enter here execute that code block now you will say end expression count equal to count minus one count will now become zero now when you go back condition count greater than zero is not satisfied because zero is not greater than zero and therefore you will come out and when you come out and in the next line you try to print the value of count it will be one less than what with what value the last loop was executed it is one less because the decrement is count equal to count minus one it could be if we had said count equal to count minus 23 it would be 23 less whatever the last value with which the loop was not executed will be the value that you will come out is this very clear everybody clear of this fine so we now go to our favorite array elements this was the program to find out the maximum of n numbers we just read n numbers from our input in a 100 max n i c in n for i equal to zero i less than n i plus plus this is the for loop I read the value of n numbers and I put them in an array so I read a 0 a 1 a 2 a 3 to find out maximum I start with a 0 for i equal to 1 i less than n i plus plus if a i is equal to max I say max is equal to a i and this simple iteration will permit me to examine each and every element sequentially at the end whatever is the value of max that is the largest value in that array it doesn't matter whether the array has seven elements or 7000 elements or 7 million elements the program will work fine is that clear you can see how the for loops are a must for handling arrays because array elements have to be typically examined from 0 to n or something like that and typically we have to examine them in sequence so this kind of for iteration for i equal to 0 to n for i equal to 5 to something whatever whatever is going to be most common while examining array elements and that is the reason why this loop is written like this suppose I wanted to find out who is the student who has maximum marks how will I do that assume that only one student has maximum marks that is the assumption so how do we find out the role number of the student who has maximum marks same program how will I modify I of course cannot use a 100 and so on but I can use the array that I had seen last time you remember this I just listed this array this in fact will be there in your lab sheets when you go there as a separate file text file you will also have the program which we wrote last time so that you can execute it to read that entire file into two arrays one array will be called role another array will be called marks imagine now we are running out the maximum of marks here so what will I do I will set up initially max is equal to right that is the first task so that means max will be value 72 now I will have my for loop which will say for I am using a different terminology where n STD stands for number of students actual variable use was different so what I want to do I want to keep examining every student marks keep comparing it against whatever max I have arbitrarily chosen and if that is different I want to reset it so what will be the instruction here if I am sorry this should be square brackets and not normal brackets if max I is greater than max what should I do I should set max is that correct now anytime I reset marks I know the position at that point in time so for example when I get the first number 72 I set it here I then examine for I equal to one please note that the value of I is 0 1 2 etc because the arrays in C plus plus start with 0 so that is why I have set mark maximum to mark 0 first in the first iteration marks 1 will be compared with mark so marks 1 is 45 is 45 greater than 72 no so nothing will happen I will carry on this is the end of my for loop however when I come to the next student 1 0 0 3 has 91 marks 91 is greater than max so max will now become 91 but I do I not know at this stage that this maximum corresponds to the second row number whatever it is it is therefore prudent to say position equal to is that correct so I not only mark the maximum I mark the position where the maximum is at that time I know carry on with this iteration I go to I equal to 3 is 86 greater than 91 no I will not do anything in fact if you look at these sample marks but had there been somebody 94 marks then I would have seen reset maximum to mark when I come out of this for iteration you will agree that max actually has the maximum marks but role I contains the role number of the maximum marks you agree with that how can you agree with that if I say this what is the value of I when I come out here I will be actually one more than number of student so I will be here and what is value there abracad abracad you want to print this funny role number remember we have marked the position position is therefore the index into this array what was the position in this case if maximum was 91 the position would have been 2 because that was the value of I at that point and that we have captured in position so correspondingly I must not write this but I must write what role indexed by position is this understood position was the index inside the array where the role number securing maximum mark says because that was the time when I had located 91 as max and therefore that time whatever was the value of I that is the position of this don't matter where I go further if I remember max I will remember the position if subsequently someone scores 98 then I will change max but I will also reset position to whatever value of I was at that point in time remember I is a loop variable I have no business outputting I for any reason whatsoever after this because the value of I is controlled and used for controlling the loop it is not of significance what is of significance is some position some value of I which was relevant while traversing the loop and that value I have to capture separately and use that so now if I say see out role position and max can I write instead of max can I write marks position yes or no so he has correctly pointed out the equal to symbol should not be only less than because the last element of the array to be examined suppose there are 7 students the last element will not be positioned as 7th element but as 6th element so the last element I examine must be one less than number of students sorry for the mistake very good for you to point it out so is this clear now how the loop will run this is how you need to execute it suppose I want you to find a given role number and his or her marks in this array how will you do that this is the array which I have given the sample array might look very small but in general the data that we handle for students could be very large for this class itself there will be 850 entries into this for students appearing for higher secondary examination of a state let's say Maharashtra how many students will be there about may be 4 5 10 lakh students when you have such large numbers how do you search for marks for a given student one simple way is just like we found max you read a given role number first and start examining the entire array from 0 1 2 3 4 5 is the given role number equal to this role number if it is then you have found it print the corresponding marks right this is called the linear search and I have a program which shows you that it's called find marks dot cpp so given a role number find the marks I define role number array marks array number of students and students in given role found marks position I and students is get data role comma marks that is the function that we wrote last time without bothering how exactly it does but it will read from the file and stuff my two arrays with role numbers and marks I need to appreciate only that at this juncture that means from this point onwards I have number of students given by students I have those many role numbers and those many marks now I am saying I read the given role somebody gives me a role number 1008 so I want to examine each element of the role number 1008 I should print the corresponding marks so what am I doing inside this for iteration I am just checking if role number I is equal to given role if it is I say found marks is equal to marks I if it is not I go back to the next iteration increase I by 1 and look at the next number look at the next number look at the next number when I come out whatever is the value of found marks will be the marks for the given role and I output this I will leave you with just two questions which I want you to think about will answer these tomorrow and you will also look at these in the lab first question what happens if the role number does not exist after all role numbers need not be sequential or somebody might have forgotten to insert the role number or a role may not exist for example if you have seen that list 1005 does not exist there and suppose I give as input 1005 please give me the marks what will this program produce it will take given role as 1005 and examine the entire array it will not find 1005 so what will it do whatever is the junk value in found marks because I initialized it so what will that labelled found marks will contain we do not know if it contains 100 what will it mean role number 1005 or 100 marks without appearing for example it should not happen right therefore if I do not find that fellow at all I must have an if statement afterwards how do I have an if statement I assume that all marks are zero at the most but nobody can score let us say minus 20,000 marks 20,000 is arbitrariness what I will do then is I will set found marks to minus 20,000 to begin with now I will go through the array search if I find actual legitimate marks of some student found marks will change but if at the end of iteration if found marks is still minus 20,000 I will say sorry the role does not exist do you agree that that is the prudent programming that is the one question I have told you the answer the second question is tougher if instead of 7 students in the array if I have 7 million students how much Godagiri are we making C++ number 2 how many comparisons 7 million comparisons imagine that all these 7 million numbers were not inside the computer's array but we are sitting in the desk and every time to make a comparison number has to go to the desk and read one number when it does not take a few microseconds but it takes maybe 20, 30 milliseconds to read a number from the desk multiply 30 milliseconds by 10 million to search for one role number even the fastest computer could take very long time clearly this searching strategy is not good enough now if the marks which are given to you and the role numbers which are given to you as in this example if the role numbers are arranged in this order all 1 million role numbers are arranged in this order does it not give you an idea that I can consider the first role number to be low role number the last role number to be high role number and the given role number is somewhere between these two can I therefore not use the bisection method of finding routes applying to an entirely different problem there is no function tossing positive negative values etc but I have the gem of an idea that if I consider the first role number to be low and the last role number to be high the only thing that I require is that array contains role numbers in strictly increasing order is roughly equivalent of saying that the function crosses 0 somewhere between low and high now can I not find the midpoint but what is the equivalent of midpoint here the midpoint here will be the middle position not the middle value what is the middle position n student plus 0 by 2 or n student minus 1 plus 0 by 2 whatever low and high I find out the middle position I will check whether the middle position now not just whether it is equal to the given role number but is it greater or is it smaller depending upon whether it is greater or smaller I now have the upper part of the array to be searched or the lower part of the array to be searched I have reduced the search space by half next iteration I will reduce it by half third iteration I will reduce it further by half since these are very finite numbers that we are talking of ultimately I will be looking at only one particular position if at that position the role number does not exist the joker has not enrolled for my course but if that number exists I have found it and how many comparisons will I have to make if n is the number of students log n to the best 2 is the number of comparisons I have to make because every time I am dividing this by half half half what is the log 10 million to the best 2 so if you have 1 crore people or 10 lakh people instead of making 1 crore or 10 lakh comparisons you can make so few comparisons this is called binary search we shall be doing this binary search implementation during this lab for which we will have a lab problem


At Anglin Active we have the Airflow Outlander Mesh Fly Vest. This is not a new item at Anglin Active by any means. Actually quite the opposite in that it is a tried and tested product. Many of our valued customers have consistently reviewed this vest 5 out of 5 stars, so we thought it best to feature it for you. In a trial we fitted 22 items if not more for every scenario on the water. Customers say the storage is carefully considered so that your comfort is maximised and the weight of the gear is evenly distributed. We have found that the Parmaris Ergo High Fit Life Vest is perfectly over this vest keeping you safe without hindrance. The vest is predominantly made from a very tough mesh like material which in turn keeps it neutral with your existing thermal layering and waterproofing. One size fits all which in addition is fully adjustable to fit the angler over a single layer in the summer or even the bulkiest jacket you have for winter conditions. A foam fly holder is fitted within one of the breast pockets, there are bright tags to hang zingers and tools from and there is a neck clip loop on the back. No longer do you need to carry a backpack or a bag this vest keeps everything close to hand and convenient. So now that you know one of our customers and our favourite items here at Angling Active click here to be taken to the product page and put this value for money fly vest in your basket.


But how have the annexation improved my life? Well I'm glad you asked. Another great benefit of the annexation of Roseland is infrastructure repair and replacement. This means roads, storm drains, sewers and more will become the city's responsibility. And will be upgraded to city standards. Also, residents now have the ability to vote in city elections, run for the city council or even be appointed to a city board. That is why I support the annexation of Roseland. Thank you.