Hey everybody. What's up? It's Rob Dutson. Welcome back to the Alicast Show. Today we're going to be continuing our series on assistive technology by looking at switch devices. So a switch device is for anybody who's got limited dexterity or limited range of motion. Probably one of the most famous switch device users in the world is Stephen Hawking. And what we're going to be doing today is showing how you can use a switch device to interact with a mobile device, in particular Android. So the device I've got with me today, this is the Bluetooth by AbleNet. This is a Bluetooth enabled switch. It's got two switches that are available on it. And if we go into our accessibility settings on our phone, we can go down to where it says switch access, make sure our device is turned on, go into settings, and we can assign actions to these switches. So I'm going to go over where it says assign switches for scanning and for select, which is, you know, like I want to do a mouse click essentially, I can click on that. And in this case, I've actually already mapped that action to this yellow button right here. But if you don't have a switch device, you can still test this on your phone by using the volume keys. So for instance, I can use the volume down key on my phone and assign that as a switch as well. Then you've got next and previous actions. Since I only have like one or two volume keys, I'm going to use the only the next action and I'll assign that to this other volume key. Right. And then we can actually skip using the previous action. We don't need to worry about that for now. We'll just use next to kind of jump around the page and use select to click on things. So next let's switch over to Chrome. And what I've got here is a little website that I've created called lifestyle. This is sort of like a little Pinterest clone. And what I want to demonstrate is how we can do some basic navigation on this page. So I'm going to use the switch in this case, or you can use the volume keys. And the first thing we're going to do is we're going to start scanning. There's a few different kinds of scanning modes that switch devices make available to folks. There's auto scanning. So in that case, the device itself will actually do some scanning for you.  And then there's different kinds of like, you know, row versus column versus group scanning. What we're going to do here is just a really simple manual scan. So we'll just go item by item through all the interactive controls. So I start by hitting the switch. The first thing it does actually is it shows this menu option and we'll come back to this in just a sec. Then it lets us go through the Chrome of the browser itself. And then it jumps into the page. And then we can actually go through and look at the different interactive elements. So in this case, lifestyle itself, this text here is an anchor. If we go to the shopping bag, that takes us to like our checkout page, that's also interactive. So that's an anchor as well. And then the image and the heading for our article, that is an anchor as well. So if you've watched this series for a while, you know, we often talk about using the keyboard to navigate through interactive controls. And what you're seeing here is basically the same thing when you're working with a switch device, right? We're landing on all the interactive elements and we want, we can go ahead and click this other button here to interact with one of them. So in this case, I can click that button to click on this article. Now there's not a real article on the end of here. I've just put like a little placeholder page here, but that's basically, you know, the gist of it. You can navigate using some linear scanning and then click on a control. Now the next thing you might wonder is, well, if I've only got these like two buttons, how exactly am I supposed to scroll the page? So what we can do here is we can go through and can start scanning and you'll see that there is a point where the entire page is highlighted. And if we click on our switch at this point, it'll actually give us some options to either scroll forward or scroll backward, right? So pretty straightforward. They'll keep in mind, right? Like it's, it's a fair bit of work to scroll to navigate through all the different controls and then to finally hit a button to interact with it. And so this is why we often encourage folks, you know, if you're, if you're, you know, building a shopping card or anything like that where you've got some like primary action buttons to put those high up on the page to make those early in the tab order. So that way it's really efficient for everybody who's using a keyboard or in this case a switch device to access that content. Okay. So if you remember in some of our episodes on screen readers, I was showing off some, you know, kind of common pitfalls and gotchas that we see when using assistive technology in particular on like responsive websites. So let's look at an example of that. So this is the same page that we've looked at before with screen readers. This is our little responsive website. You can see here, we've got this hamburger menu. We open it up. We've got a bunch of anchors here and things that are off screen usually. And in this case, those anchors and everything, they're not displayed, none. They're not visibly hidden. They don't have tab index, negative one on anything. So they are entirely in the DOM. They are entirely interactive. And you'll see that as I'm navigating using my switch, there comes a point where even though it's not on screen, we're actually focusing the content of that side nav. And I'll go through and you can see it's trying to select the different regions in the side nav. And I'll go sort of like item by item and look for those different anchors. So again, the trick here is if you have stuff that's off screen, you really want to make sure that you're making it display none or setting it to visibility hidden. So it's no longer in the tab order. It's no longer focusable because for someone who is using a switch device, it might be, you know, time consuming or tedious or challenging for them to have to hit it over and over and over again. So you want to remove those impediments and make sure that they're having a really good efficient experience. Now, the last thing I want to show you is how someone interacts with unique controls like this slider down here, because I think this is actually just like super cool. So, um, switch devices on, on Android and on iOS have the ability to do kind of like a virtual mouse click. And so what we're going to do is we're going to go back to this menu button. We'll click on that. We'll go down to where it says point scan. And then watch what is going to happen here because it's going to try and do this kind of like cool animated crosshair thing. We're going to interact with it. So as soon as I hit the button, you'll go, we have this like vertical scanning line. So we wait till we get down to our slider control. We click and have a horizontal line. We click and that actually moves the control over. So that's kind of cool, right? If someone's using a switch device, though it might be a little time consuming, they are still able to do essentially like a simulated mouse click, which I just think is like pretty fascinating. Now today we've covered how switch devices work basically on Android and how switch access works there. If you're interested in learning how switch controls work on iOS, I'm going to include some links down in the show note to a YouTuber named Christopher Hill's videos. He is a switch device user who predominantly uses Mac OS and iOS. So you can go check out his channel. He's got a ton of videos that show how he uses his switch with his laptop, with his iPad, how he like makes music and plays games and does all this other cool stuff. So definitely go check out those videos. Otherwise, that about covers it for today. So if you have any questions, as always, you can leave them down below in the comments or hit me up on a social network of your choosing. As always, thank you so much for watching and I'll see you next time.


You don't have to start from scratch if you want to get a group of people together. Think about the groups that are already out there in your community. These might be church groups, youth groups, scout groups, mothers groups, service clubs, sporting clubs, men's sheds or even large employers in a town. You might like to invite a particular group to the brigade or better still take your information to them. Public events are also a good way to capitalise on an existing crowd. This might be something common or particularly unique to your community. A great example comes from Merbeam Brigade just outside Miljura. The Merbeam Brigade has a large presence each year at a major fishing competition on the Murray River and the annual vanilla slice competition. In the Miljura district, these are two very large public events. The brigade has some giveaways for the kids and members talk to the adults about the fire danger period and the can-I-can't-ice. You may like to have a think about what groups and events already exist in your area and how you may be able to link into them.


Welcome to All Hands Update, I'm petty officer Ian Cotter. Sailors assigned to the guided missile destroyer USS Halsey returned from a seven month deployment to the western pacific february 5th. So today's homecoming is kind of a culmination of not only the end of a seven month deployment but also the years worth of work that has gone in to get the ship ready after they've finished a maintenance phase, they've gone through all their work ups, gone through their certifications, they have a lot of stress as they're going through that then there's family separation so this is really you know 18-19 months worth of hard work that comes to an end and then the reunion and get to see family and friends and welcome to a wonderful place like Pearl Harbor Hawaii. While deployed Halsey Sailors participated in cooperation of float readiness and training strengthening partnerships in the Indo-Asia Pacific region. Halsey also served as an escort to USS Carl Vinson and the USS George Washington Carrier strike group.


Would you like to see Devil May Cry 5 on Nintendo Switch? I think I would like to see it. I've never actually played the Devil May Cry series, but you know what? If Devil May Cry 5 was on Switch, I might just pick it up. But if I want it to be on Switch, I have to buy Dragon's Dogma. Now I was planning to buy Dragon's Dogma, anyways. But the director of Devil May Cry 5 has essentially said, actually not essentially, literally stated that if you want Devil May Cry 5 on Switch, you need to buy Dragon's Dogma. Let's get into his exact quotes here as translated by Nintendo Life. So as you see here, Nintendo Life notes that Devil May Cry 5 director Hideki Itsuna and producer Matt Walker did tease how they would like to see Devil May Cry 5 on the Nintendo Switch about a month back, but that wasn't really confirmation it was coming. Another did an interview with German magazine M with the exclamation point. Itsuna said the latest game in Devil May Cry series would be considered for the Switch if Capcom's April release, Dragon's Dogma Dark Oryzen sells well on the platform. Here's the translation. If Dragon's Dogma Dark Oryzen sells well on Switch, then we might, not even for sure, consider reporting Devil May Cry 5 and then why Devil May Cry 5 wasn't coming to the system in the first place, it's because they started development with Devil May Cry 5 while they did not have dev kits for the Switch. Because of that, we concentrated on PlayStation 4, Xbox One, and PC. Now look, that second statement makes a lot of sense. That's why a lot of third party games might not be on Switch at this point because they were developing it before Switch was even a thing they could develop for. But setting that aside, really? Are you serious, Capcom? Are you serious, Hideki Itsuna?  How many times is Capcom, someone from Capcom, going to tell us, if you want this game on Switch, go buy the other one.  It's no, we might do this. What's the might? Well, Dragon's Dogma's probably going to have to sell a million, two million, three million copies. Then they would consider Dragon a Devil May Cry. Then they would consider Devil May Cry 5 for the Switch. I am kind of sick of this. It's one thing for companies to basically ask fans to port bag, okay, if enough people chime up if they want this thing, maybe we'll do it. I don't like that attitude either, but at least that is just related to that game. And you're telling people that hey look, if you want this game, you have to go buy a completely different game in a completely different genre that has nothing to do with Devil May Cry. That's ridiculous to me.  That's even a thought process that crosses people's minds. But we've heard this over and over and over again with some third party companies, Capcom especially, when it comes to Switch, of we will give you the games you want if you buy the games you might not want. It doesn't make sense to me. I could understand, at least on a surface level, if they're like hey look, we won't bring Resident Evil 7 to Switch unless this RE4 thing and the Resident Evil Zero and Resident Evil Revelations, those games need to sell well and then we'll bring over the more recent Resident Evil games like the Resident Evil 2 remake or Resident Evil 7. I could at least understand some sort of messed up logic in there where at least they're talking about games within the same series so obviously they want to see that people are interested in that series to bring over the newer games.  That's how frustrated I am at a remark like this and this is about a game series that I've never really participated in. I've never really played Devil May Cry 5 and I still think this is absolutely ridiculous that a developer, that a director, that a company like Capcom would even promote the idea that to bring a game to a platform you need to buy a completely different game. And I think at like a sub level we sort of knew this like underneath it all it would kind of went unsaid and unwritten with games like from EA where FIFA, if FIFA did well, if Faye did well, maybe we could get more games from EA in the future. I think that was a thought process many of us had. I know I had that thought process but at least EA never publicly came out and stated hey if FIFA sells well we'll give you a madden. Like they never publicly said that. That's just been a natural assumption by consumers.  Well you have dev kits now don't you? You could just be like some other third parties and just give us the game later. But no, I even hate them bringing up the dev kit excuse because if it was just a dev kit reason we would be getting double my cry 5 on Switch. If the only reason that it's not on Switch is because they didn't have dev kits when they started development they have the kits now and they can give us a late release. Bottom line is they just don't want to bring it to Switch. They only will bring it to Switch if they know it's going to sell a million copies right. They want to know it's going to be a big seller and they can't know that without the game being there. So they're going to say hey look if you buy this other hardcore game an older game by the way you know we're talking about an older game being ported to Switch that that's going to be the barometer a game of a completely different genre that that's going to be the barometer for a Devil May Cry 5 game for a Devil May Cry game period even the older games like fine bring us an older Devil May Cry game if you want to use that as a barometer don't like talk about Dragon's Dogma what's Dragon's Dogma dark horizon have to do with Devil May Cry 5 besides it comes from the same company you might as well sell hey let's wait for Monster Hunter to come on on the platform and see if that sells oh you're not going to say that because you know Monster Hunter is going to sell the reality is you're going to you're just giving an excuse for Devil May Cry 5 to not be on Switch all you had to say was that hey we never really built this for Switch and we have no plans to bring it to Switch and you could have left it at that no no no you had to mention the impossibility of an old school port of an overlooked RPG selling well on Switch to get Devil May Cry 5 and you know what happens even if it sold well I guarantee we still wouldn't get Devil May Cry 5 because we're not going to know what selling well means to Capcom so and the thing is Dragon's Dogma is probably not going to be a big seller anyways it was never a big seller and it's definitely not going to suddenly become a big seller just because it's on Switch it'll do well maybe it'll sell a couple hundred thousand copies I don't know I know I'm going to pick it up I've heard that it's actually a really good game that just went overlooked but I it's it's mind-blowing to me that this is the reality that we live in and especially on a platform I mean we're not talking about like you know this is the launch year of the Switch and no one knows what's going to happen we have seen success story after success story after success story we have seen Square Enix like across the street from Capcom have success on Switch with games we have seen we've seen obviously Nintendo then you set them aside but we've seen other companies you've seen Bethesda have success like Capcom has had success the Mega Man games have been selling like I I don't understand this mentality it's fine to me if they don't want to bring Devil May Cry 5 to Switch it's okay I think at this point the Switch owners we understand we're just not going to get everything even if we want it but to use that as an excuse to be like look we didn't have the dev kits we have them now don't address that point but we didn't have the dev kits and then on top of that oh we might do it if you go buy this completely separate game I I'm sorry I'm just really upset about this but as always that's my opinion on this topic I obviously want to hear what you guys have to say maybe you're not as upset as me maybe you think that hey look at least there's a chance the game could come over I I don't think this is actually a chance I think this is just a veiled marketing attempt for Dragon's Dogma and there's no intent or purpose or reason that they're going to bring Devil May Cry 5 to Switch I don't think that's a chance in hell of it happening but uh you know what these are the words of the developers so who am I to question them I guess besides the fact that Capcom's already said this about other games and then some of those games did set well and then we still didn't get the games so please I'm just putting the plead out there to game directors developers PR companies rolled over at these third party companies stop trying to promote your other games on switch as a reason to potentially get a completely separate game that has nothing to do with the game you're talking about it is a poor marketing strategy and it shows a lack of faith both in the consumer base on the platform you're on and a lack of faith in the game you are putting out on its own what you are telling me what what I am getting out of this whole thing is one Dragon's Dogma is not good enough to sell well on its own without the incentive of Devil May Cry 5 and what you're also telling me is that Devil May Cry 5 on its own isn't good enough to sell on switch why because you need to see that there's interest first by talking about a completely different game that has nothing to do with Devil May Cry you want to know if there's interest you could just do the bare minimum and say hey look like you know fans outcry here's a here's a feedback website let's see how many um intend to purchase you know commitments we can get or something or a Kickstarter or something where people can literally pre-buy the game and if they get to a certain amount of sales then we will release it on switch if we don't hit those sales we'll just refund everyone's money right like that to me seems like a go-to thing right like to me that's a that's a solid plan now you're like I actually want companies to do this if you want to know if the game will sell well on the switch you know what how about you put up a Kickstarter and you say or whatever you don't have to use Kickstarter and use some other website but you put up a crowdfunding page and you note in there you are not crowdfunding the game you are using this as a pre-purchase platform and I think Kickstarter actually frowns upon that but there are other platforms that'll let you as a pre-purchase platform and then if we hit a certain threshold we will release the game if we don't then we don't at least then at least then as fans can know okay how much does it need to sell to realistically come out on switch then there's a bar set instead you're telling people no the bar is a completely different game that's not going to sell as well because it's not as as well known of a franchise as don't make cry and that don't make cry five don't want to have an audience on switch that's all you're saying you're literally saying we're not bringing it to switch because we don't think people would buy it without any evidence to prove that people wouldn't buy the game I'm sorry you guys let me know what you think about this down in the comments below be sure to enter here's a little bit lighter no be sure to enter our Nintendo switch Super Smash Bros ultimate bundle giveaway through the link down in the description I want to thank all of you guys for tuning in subscribe for more content I want you to drop a like on this let's see if we can get this video to you know let's just go low ball let's go 100 likes today can we get this video to 100 likes let's find out thank you for tuning in and I will catch all of you guys in the next video


First, what are clathrates anyway? Methane clathrates, or hydrates, are ice-like substances that trap methane gas in a cage of water molecules. They form where there is a combination of high pressures and low temperatures. We find clathrates at, or just below the seabed, usually in ocean depths of greater than 500 meters. When they are dredged up from the deep, they fizz out methane and you can set them alight. The picture on the left shows white streaks of clathrate and a lump of dredged-up mud that's about a foot across. The photo on the right shows methane gas burning as it is released out of the hydrate cage. Clathrates are also found in the Arctic in places where there are thick sections of permafrost. In these conditions, clathrates can form at depths as shallow as 200 meters below the surface, either on land or under a shallow ocean shelf. These diagrams show the conditions where clathrates are stable. Typical conditions for permafrost clathrates are shown on the left and for deep sea clathrates on the right. Clathrates become unstable as soon as the temperature goes up or the pressure goes down. So why should we care about Arctic clathrates? We care. Firstly, because there's more carbon-storiding clathrates than there is in the entire atmosphere. The great majority of them are found beneath the deep sea bed, with about 1% in areas of continuous permafrost, according to the latest estimates. Secondly, it would take the release of only a fraction of 1% of the world's hydrates to double the concentration of methane currently in the atmosphere. That would make for a big addition to man-made global warming. Finally, the clathrates found in the Arctic are the most vulnerable to climate change because this area is one of the most rapidly warming areas on Earth. The good news is that clathrates are quite well protected from man-made global warming. It will take a lot of time for the recent man-made global warming to reach them. Probably thousands of years or more for the majority of clathrates that occur in deep oceans or that are buried under hundreds of meters of frozen rock. More good news, for the atmosphere at least, is that when deep sea clathrates become destabilized, most of the methane gets consumed in the sediments in the sea bed. Some methane may make it into the water still. But even then, the methane in the bubbles is absorbed before it gets to the surface. The released methane will locally deplete the oxygen in the seawater and also worsen ocean acidification. Some of it will eventually be released to the atmosphere as carbon dioxide. There are clathrates located on continental margins at the upper limits of their stability range that are emitting methane into the seawater today. However, this is a process that's been going on for many thousands of years. And because the water is so deep there, the methane doesn't reach the atmosphere. Nevertheless, many people, a few scientists, and many lay people are concerned that methane hydrates might be destabilized on a large scale by recent global warming and that they pose a serious and imminent threat to the Earth's climate. For example, a recent article in the journal Nature estimated the economic impact of the warming that would be provoked by a sudden release of 50 billion tons of methane from the shallow seas of the East Siberian Arctic Shelf. The paper was criticized by many scientists for failing to make it clear that it was looking at the consequences of a very unlikely occurrence. Studies in this remote part of Siberia are in their infancy because it's difficult and expensive to operate in the harsh conditions there. Nevertheless, recent research has shown that there is methane bubbling up from the frozen seabed in that area. The Siberian shelf is quite shallow, averaging around 50 meters, and some of the methane released makes it to the atmosphere, especially when storms stir up the water. One thing we don't know yet is if the methane emissions in this area have increased recently as a result of global warming or if they are just part of a slow release that's been going on for many thousands of years. We also don't know if the methane is coming from normal biological processes at the seabed or from destabilizing clathrates. Some of the gas, maybe sort from organic matter, buried much deeper in the sediment column, gas that has found its way up through holes in the permafrost. Our knowledge of when clathrates naturally form makes it look unlikely that there should be any present near the seabed on this shallow shelf. There have been no actual samples or geophysical indications of clathrates there yet. Another argument against large-scale, present-day clathrate destabilization is that in geologically recent periods, in the early Holocene, 8,000 years ago, and at the time before the last Ice Age, 120,000 years ago, when temperatures were a little warmer than today, there's no record of a massive and sustained methane release from destabilized hydrates, nor is there evidence of any sudden global climate catastrophe at those times. It's a myth, therefore, that catastrophic clathrate destabilization is already upon us. Although the theoretical potential exists for this to become a problem after a long period of human cause, global warming, we're not there yet. It would be jumping to conclusions to suggest that we are at risk of an imminent climate catastrophe from large quantities of clathrates suddenly becoming unstable. But if we continue to fail to limit emitting carbon dioxide from fossil fuels, we will certainly bring forward the day when clathrates really do become a problem. However, there's plenty to worry about in the Arctic, even so. As this picture shows, there are plenty of potential sources of greenhouse gases in the Arctic, apart from clathrates. Some of these sources of carbon dioxide and methane are already active today, and many of them will grow in importance over the next several decades as the region quickly warms and their permafrost thaws and glaciers and ice sheets retreat. These human-accelerated natural emissions may add a fraction of a degree to the average global temperature by the end of the century. Of all the stores of Arctic carbon, in the short term, clathrates are probably the best insulator from man-made warming because they are only present far below the surface. Nevertheless, clathrate destabilization remains a concern for the climate over the centuries and millennia to come. Luckily, it's not happening just yet, and in the estimation of the IPCC, it's very unlikely to be a big problem during the rest of this century.


Hello everybody. In this lesson, we're going to be taking a look at the where clause. The where clause is used to help filter our records or our rows of data, whereas the select statement is used to help filter or select our actual columns. So when we're using the where clause, we're only going to return the rows that fulfill a specific condition. Let's take a look at exactly how this works. Let's say we come right up here, we're gonna say where, and let's go down with that one. Let's say where, and now we need to specify what column we're about to create this condition for. So we're gonna say first underscore name. So we're saying where the first name will say is equal to and let's do quotes and let's say Leslie. So we're saying the first name has to be equal to this value right here, which is Leslie for Leslie. Nope. If we run this, there's only gonna be one row that's returned because Leslie is the only Leslie in this entire table. Now we just used an equal sign and that's actually called a comparison operator. And there's a few other comparison operators that you can use. Let's take a look at some of these other ones. Let's pull this down right down here and let's actually highlight the select from and we're gonna run it with this one right here. It's gonna only select everything from the whole table. So we didn't select that where clause. Let's go right down here and let's look at this salary field. So I'm gonna say where the salary and I'm gonna do a different comparison operator called greater than. So when the salary is greater than 50,000. Now one thing I want to note before we actually run this is that right down here we have Tom Haverford who makes exactly 50,000 and I think there's one more Jerry Gergich which also makes exactly 50,000. If we run this you'll notice that both Tom and Jerry are not in this output but in the salary field everything is greater than 50,000. The reason for that is that Tom and Jerry made exactly 50,000. What we're saying right here is where the salary is only greater than. If we want to include Tom and Jerry we have to say greater than or equal to and now we'll select 50,000 or above whereas right here before when you're doing just this it was greater than 50 it didn't include the 50,000. Let's go ahead and include it and run this and now you'll notice that Tom and Jerry were both included because they had exactly 50,000 and we said greater than or equal to. Now we can do the exact same thing but with less than so we have less than 50,000 and now we only have two people who make less than 50,000 that's April and Andy and if we say less than or equal to and we run that now we include both Tom and Jerry who make exactly 50,000 so it's less than or equal to 50,000. Now what we're going to do is head on over to a different table we're going to do the demographics table make sure I spell that right and it's not our semicolon let's run this and what we want to look at is the gender really quick so we're going to say where the gender is equal to we'll do in quotes female and if we run this we get all the genders that are equal to female but we do have something called the not equal to and it looks like this it's an exclamation point and an equal sign this is going to say where the gender is not equal to female so if we run this you'll notice that the gender is all male now now so far we've worked with things like integers which are numbers we've worked with characters or strings like names but there's a different type of data type as well in here we have a date column for these birth dates now in the where clause we can also filter on birth dates let's come over here and we'll say birth underscore date let's say it's greater than and within quotes we'll say 1985-01-01 this is kind of the standard default date format within my sequel which is year month and day if we go ahead and run this we can also take all the people who are greater than or born greater than 1985 so all of these dates are greater than 1985 now the next thing that I want to take a look at is logical operators in the where clause so logical operators are things like and or and not now these are called and let's add this logical operators so logical operators allow us to have different logic and let's take a look at how this works exactly let's copy this down because we already have this one written out we're saying where the birth date is greater than 1985 we can also say where the gender is equal to male so we can say and the gender is equal and then we'll say male so we're adding a different complexity or an additional conditional statement within our where clause let's go ahead and run this so now we're only selecting birth dates that are greater than 1985 and where the gender is equal to male only the rows that fulfill both of those are returned now the and says both this and this have to be true but we could change this we could say or what this means is is either this one has to be true or this one has to be true in order for it to be returned so let's go ahead and run this you'll notice that Jerry Gurgic was born much before 1985 but since he has a male gender he is in our output and we could also use the not operator by saying or not gender equal to male so now what this is saying is the birth date could be greater than 1985 or it could not be equal to male which is female so if we look at Leslie nope she was born before 1985 but because she is female she is in the output now like we talked about in the last lesson there is something called PEMDAS and that actually applies to these logical operators as well so if we run this entire table let's go ahead and run this if we're looking at this entire table let's say we want to get someone very very specific let's say we're going to do where the first underscore name is equal to Leslie and their age has to be equal to 44 that's extremely specific and we can actually just do it like this we don't need quotes for integers we could just do the number if we'd like to this is very specific there's only one person but if we put this in parentheses we can add an or over here we could say or the age is greater than let's just do 55 let's go ahead and run this and then we'll take a look at it so within these parentheses we have an and operator what that means is both this condition has to be met and this condition has to be met and that's only one person that's Leslie nope but then outside of these parentheses we have another conditional statement or the age is greater than 55 so what we're saying within these parentheses is that this is an isolated conditional statement within these parentheses if this is true then in our output it'll be returned but then we have an or condition which says or someone with the age of greater than 55 can also be in the output so these parentheses can be really helpful when you're actually using it in the where clause with these and ors and nuts now I want to take a look at just one more thing and let's bring this down here and let's get rid of this entire thing now the last thing I want to take a look at is a like statement now the like statement is super unique because we can look for specific patterns we're not necessarily looking for an exact match like here if we said where first underscore name is equal to jerry if we're looking for jerry it has to be exactly jerry but if we take this out say j e r and then we run it we get no output it has to be an exact match but here's where the like statement comes in because we can actually say like j e r and we can add two special sequences or special characters within our like statement so those special characters are the percent sign and the underscore the percent sign means anything and the underscore means a specific value let's see how that actually works so what we're going to do is we're going to say like j e r percent sign that's the first one in this like statement what this says is the first name is like starting with j e r but that has anything after it doesn't matter what it is as long as it has j e r at the very beginning it will be returned let's go ahead and run this now the only person who starts with j e r is jerry but what if i took the j out of here now it's saying it starts with e r and that's not anybody what we can do is we can add another percent at the beginning this is going to say anything comes before anything comes after all we're looking for is e r somewhere in their name let's go ahead and run this there's stills only one person and that's jerry now let's come up here and let's get rid of this and let's say we're looking for everyone's name who starts with a we do that really easily by saying a percent sign all that says is it starts with a we don't have a percent sign before it which would say this string just has to have an a somewhere in it if we have it like this this means an a has to come at the beginning let's go ahead and run this in our output we have april and and andy now let's take a look at the underscore if we get rid of this percent sign and we do two underscores one two this is going to say it starts with an a and then has two characters after it no more no less so if we run this an is going to be the only person who's returned because she has an a and then two characters after it now if we want andy we can specify that by doing another underscore that's one two three and now andy is the only one in our output now there was also april in there but she had more than three characters but we can actually get her in our output by doing a percent sign so we can combine both the underscore and the percent sign and this is going to say it starts with an a has one two three characters and then it can have anything after that so it just has to have at least an a and have one two three characters after it let's run it now you can see april comes into here because she does have a the p r and i are the three next characters but then we have a percent sign that allows that l to be in the output as well now we don't just have to do this with strings or text like april and andy we could also do this with birth dates for example andy's birth date is 1989 we could say where the birth underscore date is like let's say we want to look at everyone who is 1989 or born in 1989 let's go and run this and andy's the only person born in 1989 but again we looked at the year at the very beginning so that is how the like statement works it looks for a specific sequence within that column that you can search for so it doesn't have to be an exact match as long as it has that specified sequence that you've put in there anywhere within that cell or that column so that is everything that we're going to look at for the where clause in the next lesson we're going to take a look at the group by and the order by within my sequel


My mom's in the audience back there. That's great. We need a little button here. There we go. All right, now we're in business. All right, well, thanks for sticking out this long. I know you're really just waiting to get the iPad drawing, but that's okay. I'm here to share with you a few secrets of the universe. Are you ready for that? Ready for some cool secrets? It'll be fun and air. This is the 10th year since the Agile Manifesto was written. It was 10 years ago that some 17 of us who were interested in such things got together in Snowbird, Utah and said, well, you know, this is how we think software development should be. And if you ever been to the Agile Manifesto site, there's this wonderful picture in the background. That is the back of my head. Right there. Proof that I was there. So since this is its anniversary year, I've been talking more about Agile Poly than I normally would, and I'm going to stop after this. I'm kind of done with that. But I wanted to just go over a couple things that I thought was interesting, looking back at my notes from the original session and what's happened in the last decade or so. And one thing that I really, really want to hammer home, and I try to do this in almost every talk, is the importance of context. The importance of context. Why things in context makes all the difference. Now what do I even mean by context? Well, if I say, draw me a picture of a tree, or think of a tree, you probably think of something like this. It's an object. It's a tree. It's sitting right on the ground. If you're in sixth grade, that's probably how you draw it. I still draw like that to this day. But that's a tree, right? No, that's not a tree. In systems thinking, you learn to look at things instead of this object as a set of interrelating systems. In this case, a tree is really several interrelating systems. You've got all this respiration business going on with the leaves and the air and photosynthesis and whatnot. And now here you've got all the roots with the Kreb cycle and nitrogen and all that stuff from biology that I didn't remember the first time. All these things going on, a little pristine object sitting there on the ground. It's all these messy interreacting systems. Guess what? That's how the world really works.  It's like this. It's messy. It's all connected. When you look at something, you have to look at it in context.  Now, on a more humorous note, context makes a big difference. For instance, it's normally okay if you just like are holding an axe unless you're hitchhiking. Then that's probably not such a great idea. Do you ever hear of this guy, Joshua Bell? I love the story. This fellow was a professional violinist, a famous violinist. He plays on a three and a half million-dollar Stradvarious. That's his axe. That's what he plays on. He normally plays places like Carnegie Hall, these sorts of big venues, $100 a seat just to get in to see him play. As part of an experiment back around 2007, he played in Cognito in the Washington subway. Pulled up a folding chair, put his hat out, and started playing on his three and a half million-dollar Stradvarious in the subway. All the old thousands, tens of thousands of people going by. Guess how much he made in the hat? Very close, 32 bucks. Seven people chipped in a total of 32 bucks to hear this master play a three and a half million-dollar violin because of the context. If he'd been in Carnegie Hall, it would have been different. But he's in the subway. They're thinking, well, how do I even judge it? Is this good music? Is he a good player? Is he just a crank? We usually see cranks in the subway. Maybe I'll just ignore it. And this makes a really big difference. Great things aren't just great by themselves. They can only be great in the proper context. So, for instance, if you want to introduce some new practice into your team, you want to get them to start doing whatever, a pair of programming or a TDD or something, well, you have to be kind of careful how you present it. Otherwise, you sound like the crank in the subway. The idea by itself isn't good enough. It's the context. It's the environment, the picture that you paint. So, getting back to some 10 years ago, I found this while voting around for some 10-year stuff. This was a picture, actually, of the television monitor at the hotel, February 2001, six in the morning, it was then called the Lightweight Methods Conference because we hadn't yet invented the term agile. That happened in the afternoon. So, we got together, you know, a bunch of folks who were interested in these things. None of the stuff was really new, particularly.  You know, easily. This is not a very new kind of an idea, and most of the ideas weren't particularly new of themselves. But the interesting thing I thought, I actually found this little notebook that I had taken to Snowbird and made notes on during the meeting and all the stuff that we talked about. And as I just looked over this year, it struck me, we didn't talk about practices. We didn't talk about pair programming. We didn't talk about TD. We didn't talk about refactoring. We didn't talk about version control. We didn't talk about any of that stuff. Now, it's just kind of curious because at the time, the adoption of these things was a big problem. I used to go to events like this, and I'd say, all right, tell me honestly, raise your hand if the project you're working on at work does not use version control. And about a third to maybe 40% of the audience would raise their hands sheepishly. But they'd raise their hands if they didn't even have any kind of version control in place. They'd have a big sharing disk. Everyone would mount it. You'd all write code and last one in wins. So, you know, here we are 10 years later. Fortunately, that's less of a concern.  That's a little more subversion guys in the back. Corporate standards, sorry. And the guy who uses CVS is out in the hall and he won't even come in. But that's a lot better than it used to be. Back then, that wasn't the case. It wasn't the case. And yet, we didn't talk about practices. So what did we talk about? What did we mean when we came up with the term and came up with this idea of agile? Well, here's what we meant by it. We thought agile should be something that's ever shifting, ever changing, and ever responding. I didn't say nothing about hair programming or any of the other particular practices. It's talking about adapting to change. Kent Beck's book on XP, Embrace Change. I don't think anyone ever really got the subtitle. It's like, no, change is horrible. It's icky, we don't like it. Tell us what we have to do. And we go, hey, we got unit testing, we'll do that. We got TDD grape, we'll do that. Well, there's more to it than that. So in the course of, I guess it was the what-wear book, the Pragmatic Thinking and Learning book, I came across this great definition from a professor who was talking about the nature of expertise and the nature of learning and how we gain skills. And she came up with this thought and said, whatever practices you do, they can never be completely objectified or formalized because they must always ever be worked out anew in particular relationships and in real time. In other words, in context. Practices can never be completely objectified. You can't go in with the big book of practices and say, all right, we just do this and it will all turn out okay. It doesn't work that way. It has never worked out that way. Despite what folks at, you know, the CMM might like to think, there was that whole SWEBOC effort. Do you remember that? The Software Engineering Book of Knowledge. It sounds like something out of a Bad Blues Clues episode or something, right? But this was a big deal. Like IEEE was in on it.  They wanted to write down all the practices, do this, and, you know, it'll all work out. It doesn't happen that way. So that's one thing I think we've kind of forgotten in the last decade. The other thing is the fact that we're at the time, and I found this in my notes, Agile comes from real science, right? There's Beaker. There's real science. It comes from things like chaos theory, from Japanese idea of kaizen, from systems thinking, like we talked about with the tree, from better risk management, from looking for return on investment. This is all real stuff, and it actually works, and it's actually important, and I think we've lost sight of a lot of that. The first chaos theory is to me just an amazing thing. This is the closest bit of science that comes to black magic outside of dark matter, which I still think they just made up. But emergence is very cool. Have you ever seen the Boyd's simulation? This is absolutely marvelous. You look at the behavior of the flock here, and it's doing all this wonderful, interesting, complicated kind of maneuvers, none of which are programmed. The only rules that guide the motion of these particles are right here. Three rules. Separation, try to steer to avoid crowding, alignment, steer towards the average heading, and cohesion, steer to move towards the average position. That's it. Real birds do this, more or less, and you get this all kinds of nifty flocking behavior. You get avoidance of obstacles. You get it where they will split around an obstacle and reform. You get all this great emergent behavior that's not programmed in. It just emerges from the system. Emergence is where you get complex behavior from simple interactions. This was something we talked about. We talked about this a lot. This is why you want to have sort of one team, why you want to be co-located, why you want to keep things really easy and really simple. Because from those simple interactions, complexity emerges. That's a much better way of trying to do it than trying to do like, you know, the Swibock and get everything all written down in a nice little book up front, is obsolete as soon as you finish typing it. Kaizen. This Japanese idea of continuous improvement. This was a really great idea. We all screw up. I screw up a dozen times before breakfast, usually. Right? This is what we did. We're human. That's fine. But from each one, you have to learn from it and do it differently the next time. That's the big problem. We all make mistakes. We snooze stuff wrong. The team does stuff wrong. The corporation does stuff wrong.  You know, that was real bad. And then they do it again. The exact same way. And by the 15th time, it's like, you know, we really ought to do something about that. And, you know, they're like that night in the Monty Python thing, right? There you go, come back and fight! You know, it lost all their limbs by then. Continuous improvement. You know, always looking to see what you can do better, how you can fix it, how you can learn from failure. Which gets us to this idea, key to Angel, of having continuous changes to your code, your process, based on continuous feedback. Not one, you know, single post-mortem meeting at the end of the project. What do you do with that knowledge? It's too late. Right? A big project retrospective. Yeah, great. The project's done. That's not going to help. Do a retrospective each iteration. Each day. When you need to. When you can get continuous feedback and do something about it. Looking at risk. We really like the idea, and we talked a lot about, avoiding actual risk. So, where is the actual risk in programming? What's from writing code? Right? So, write less code. If you don't write code, it's got no bugs in it. This is an easy idea. I really like not writing code. This is my goal in life. I want to get as much not as possible by writing as little code as I can. Because everything you put in there is just, it's like a Petri dish. It's a growing ground for bugs. So, it's like, you've got this giant thing that you know, maybe you're going to use it, maybe you're not, but you put it in there anyhow just in case you need it. Right? And it's just sitting there breathing. It's like one of those Lysol commercials with these things just growing under the sink. So, write less code. We always pitch, back in the original pragmatic programmer book that we wrote back at the turn of the century, that doesn't sound horrible. That just sounds awful. But back at the turn of the century, we really advocated a lot of these ideas of reversible programming, defensive programming, and that still holds today.  That's not going to save you.  So, that's not enough to save you. You've got to go back to this idea of defensive program, reversibility. You know, you make some big decision to your code. That's great. What if it's wrong? What's your plan B? How are you going to reverse it? How are you going to back it out? Do you have a facade in front of it? Is it insulated somehow? What's your plan? What are you going to do to get around it when the whole thing goes, it's up as they say in English. These things happen. Now, bad as all that is, here's the real killer. We are so excited about this Agile idea. It's like, hey, this is great. You know, we do this continuous feedback thing and we'll look at risk pattern and we'll do all this and this is wonderful. But there's one thing we didn't really kind of clue in at the time. And that's the fact that as human beings we're really not wired for this kind of behavior. You know, the why Johnny can't be Agile. There are cognitive reasons that we don't do Agile particularly well. And one of them is, you know, we're not spot. That's the first thing. But we have this notion that we sort of should be. And we're so used to programming the computer, working on the computer. We tend to get this idea that humans are logical. That we're rational in any way. And of course, it's much more like this. That's a much more accurate picture of human thought processes in action. If you look on Wikipedia, don't do it now. If you look on Wikipedia, under cognitive biases there's something like 90 or 100 common cognitive biases that screw up how you think, how you make judgments, how you perceive things. 90 common ones. I met some folks who have way more than just that. Those are the common ones. And these, unfortunately, there's a handful of these that really affect Agile adoption and trying to use these sorts of methods. The first bad one is the sort of need for closure. And there's this great Dilbert cartoon where Dilbert says, I didn't have any accurate numbers, so I just made this one up. Studies have shown that accurate numbers aren't any more useful than the ones you make up. How many studies showed that? 87. The funny thing is, most people, many people, most people really do prefer that. They would rather you make up a completely fake number just so they can have closure than leaving it open and undecided. For some people, they just cannot stand leaving something undecided. So, you know, the company, the client says, well, when will you be done with this project? Well, we don't know. Honestly, we don't know. We've never done this kind of thing before. We've got 60 people on the team. It's a new technology. It's a new version of Rails. You know, we don't know. Yes, but we need a number. Okay, 87. Fine. There's this driving need for closure which makes things like big design up front very appealing. Look, we've got a book. It's in a binder. It's got this design in it.  It's right here. Isn't that great? We've got closure. And this, you know, fundamental psychological need drives a lot of that kind of just telling. Even if it's wrong, just tell me. I gotta have something to hang on to here. Well, of course, the reality is uncertainty leaves your choices open. And we like to be as uncertain as we can. Post-foam all the major decisions as long as you can. There's a graph I showed in one of these things that you think about your knowledge over time on the project, right? When do you know the least about the project? Day one. When do you know the most about it? At the end. When do you want to make all your big decisions? Beginning? Or closer to the end? You know, simple stuff. But we forget about this in the heat of the moment often. Another thing that we do just as people, when somebody does something bad on the project, it's because of who they are. It's because they're Ukrainian. Because they're short. Because they're tall. Because they're wide. Because they're whatever. You want to pin them on it. And this is called the fundamental attribution error. Thinking that people are the way they are, just they're born that way. Well, in fact, what it really is, everyone's reaction is because of context. Yet again, what's the context? Maybe they had a bad morning. Maybe they had a bad upbringing. Whatever. These things happen. Now if it's you and you make a bad mistake, oh, it's easy to excuse. I had a bad morning. My mother didn't love me. I was abandoned on Tatooine. Whatever. These things happen. But when somebody else is like, now they're just born evil. That QA person who screwed us over and gave us all these bugs back, they're born evil. You know, some Satan right there is just done. Not true, not helpful.  Well, why? They likely weren't born that way and they're probably not having a fun time with it. You know, get to the root of it and find out what happened. Another good one that causes people and groups to hang on to technology when they shouldn't, is post-purchase rationalization.  Never mind no one can configure it or if it's like Lotus Notes, you need 14 administrators for every user. However that works, we've paid the money. We're going to stick with it, you know, till the bitter end, which is right around the corner. But this is, I mean, this is funny and true on a macro scale, but this is true personally too.  They introduced themselves, I'm a Java programmer.  Is rail still the right thing? Is anything still the right thing? Hello. Yeah, yeah, yeah. Speed and heresy just starts cutting out. I know this is rigged. But the thing, the point is, just because you're a huge investment in something, whether it's money or time, and if it's time to let go, look out, move on. Don't stick to something just because you sunk a lot of time or energy into it, even if it's code, right? What's the best thing for code quality? A magnet on the hard disk. That is the best thing to improve your code quality. Throw it out, start from scratch. That is always, I mean, stunningly, that is always the best idea. Just kill it and start it over. We don't like to do that. We hang on to old code long past its expiration date, right? What do people do? Well, this doesn't work. Let me comment it out. We take little bits here and do this and it's like, no, delete it, frag it, waste it, get rid of it, start over. And the similar kind of thing is if you're used to seeing a lot of something, you see something over and over again, it's easy to confuse familiar with good. So, some things you might see an awful lot of that has no gaming value whatsoever. But somehow it seems kind of acceptable because, well, I've seen a lot of it. You know, she must be famous for something. She's famous for appearing in a sex tape with some R&B singer. Kim Kardashian. I had Paris Helen, but I thought that was a dated image, so I figured I'd update it. Because every time I turn on the CNN, they talk about Kim Kardashian in her wedding from... Who cares? It's pointless. It's pointless. There's no redeeming quality. And yet, this becomes easier to accept because, oh, it's all over the place. Therefore, it must be acceptable. It must be okay. Right? Java must be okay because it's everywhere. Flu germs are everywhere. That doesn't really make them... You know, particularly any good. Loss of verse. This is a similar kind of thing. Do you know about the South American monkey trap? Yeah, a couple of folks. This is a great thing. If you wanted to catch a monkey, you dig a hole in the ground, sort of like this, with a larger space at the bottom.  He's stuck. He can't pull his arms out. All he has to do to get free is let go of the bananas. But they don't. They like the bananas. They hold on to the bananas, and they're sitting there like this, and you just come by and pick them up.  We are wired to be loss of verse. We do anything to avoid the risk of losing what we've already got, whether it's that certification you were in, with some development language, some IDE, some operating system.  OS2 rules. Yeah. It shined and she'll act somewhere. They're out there.  All right? Let go of that code. Let go of that method you used to use.  This really should be called... This is two different ones. Planning, fallacy, and optimism bias. This is a... Besides being an innate programmer talent, this is wired when you have a tendency to underestimate task completion times, and a tendency to be over-optimistic about the outcome of planned actions. Now, as programmers, we have this in spades. And I love this far-sight cartoon where it says, it's time we face reality. We're not exactly rocket scientists. But, yeah, estimation...   It's like, all right, I'm going to get to that plumbing project. I'm going to do this and we're going to get... It doesn't happen. You get eight things on your list if I get to half of the first one. Yeah, maybe that was a good weekend. But, undaunted, you know, next week comes up, yeah, we're going to do these eight things. It's not going to happen. But we're wired that way. Hawthorne effect. This you've probably heard of. The tendency, people, will change their behaviors when they know they are being watched. All right, so the consultant's come in, boss comes in, whatever, some famous person comes in. Everything's spiffy. Everything is shiny because somebody's watching. And then they leave and it all slides back to normal again. We're wired that way. This is my favorite one. Second-ordering competence or lack of metacognitive ability. This is referred to in the psychological literature as the lemon juice man. The guy goes into a bank. That's a true story. This guy goes into a bank, robs the bank, broad daylight, takes the cash in the bag, leaves, goes home. Cops come to his door and rest him. He's like, how did you find me? I had the perfect getaway. How did you find me? They're like, dude, we saw your picture on the security camera. He said, you couldn't have. I was wearing the juice. And they said, what? He said, you couldn't. Can you hear me now? You couldn't find me. I was wearing the juice. He says, everyone knows. If you put lemon juice on your face, you're invisible to security cameras. Not so much. Second-ordering competence is where you don't know what you don't know. He didn't even think to check or maybe run a test. Here's a great campaign for test first. Or you get thrown in the hoose cow. But the problem is, as a result of this phenomenon, less skilled people will have a tendency to overrate their abilities. So that new person on the team, fresh in, doesn't know anything, they think they got it sussed. They'll have this whole thing done by the weekend. The expert who's been doing this for 10, 20 years is like, I think we're screwed. Excellent work. And in fact, they all say it. I'm beginning to believe it now. The true sign of an expert is when you realize you don't know anything about anything, then you've made it. I'm almost there. Working on it. But again, this is how we're wired. It's just how it is. So with all of this, let me just throw out a few unangile warning signs that can creep up. Things like sloganization.  Like TDD. Or agile itself. This is no joke. I had a friend email me last Thursday. Wanted me to come talk to his company. They want to do brace yourselves. Agile accounting. Agile finance. Agile sales. Agile marketing. Can't wait to see that one. They've had such success with Agile in their development organization. They want the entire rest of the organization. They want maintenance. They want the gals who clean the restrooms to be agile. Okay, there I can kind of see it.  It ends up like that company that had the big sign in the cafeteria that just said quality. Then Joke became, oh yes, here at big corp where quality is a word on the wall. Because that's all it was. Following rules versus exercising judgment. Sometimes you need to do both. Everything checked into source control. Where's your control? Lots of rules. You really want to follow that. You don't want to be breaking that. Some of the others? You probably want to exercise judgment. That's what being an expert is all about. Exercising judgment. If you don't let experts on your team use their judgment, you're not getting the value of their expertise. Confusing the model with reality. This is one of my favorite ones. If you have so many lies, you need a spreadsheet to keep track of them. Then you're in trouble. That's just the model. That's not reality. Demanding conformity. We must all use VI. We must all use Emacs. We must all use TechSmate. That's okay. Whatever it might be. And over-simplifying complex thinking that's what we're talking about. Over-simplifying complex situations. This one kills me. Anytime you get somebody writing an article or a speaker up here or a consultant and they say, oh, it's really simple. All you have to do is X for any value of X. They're lying through their teeth. You never, ever get to the point where all you have to do is X. It just doesn't work that way. They're leaving out nuances. They're leaving out the important part. So, how do any of us get past the advanced beginner stage of agile or anything else? What do I mean by advanced beginner? Glad you asked. So, back in the 70s, the brothers Dreyfus, Hubert and Stuart wanted to write some A.I. software not like Siri. This was the old days. They wanted to have software that learned skills the way people learned skills. They had no idea how people learned skills. So the first part of the research was well, let's figure out how people learn, how people attain skills. And they did studies on airline pilots and chess players, all these kinds of things where you could fairly easily quantify expertise. You can do metrics on pilots. You can look at chess masters and you can grade them with some relative ease to say how skilled they are. So they came up with this model of five levels, going from novice to advanced beginner to a competent practitioner to proficient and finally expert. Now what they also discovered is for most people, at most tasks you can get out of the novice stage pretty easily. You learn enough to kind of get around and you get to this advanced beginner stage and then you're stuck. You never bother going past that because probably you don't need to. This model is per skill in your life. It's not per person. You're not a novice or advanced beginner or an expert.  But most people get here and get stuck. This is sort of relative population here. If you're more make the big jump to competent, fewer stills proficient and bloody few experts in any given field that runs about one percent, maybe five percent somewhere down in there. Now some interesting things happen as you go along this ladder from novice to expert. You begin with a reliance on rules. Context-free rules are the only way you can get by as a beginner. This is why when you call up the call center and they're just going through that call sheet they have no idea what's wrong with your thing. They're just going through the rules. Ask them if it's plugged in. Ask them if they have this. Ask them if they have that. When you're an expert, you get really frustrated by that. You've got a blue screen of death from some IO request thing that you plugged in and you call up and they go, is it plugged in, sir? We've been there. It's frustrating as hell. Experts don't even look at the rules anymore. They rely on intuition. In fact, if you force an expert to follow the rules, it degrades their performance to that of a novice. They prove that with the airline pilots, which is sort of interesting. There's a corporate mandate that sort of hamstrings the experts and there's a lot of rules. You have to do this. You have to do that. You're basically hamstringing them and reducing their performance down to here, which is something we'd like to try to avoid. The other thing that changes here is you novice considers everything whereas an expert knows just what to look at. And this happens a lot. You tell people, well, test everything that can possibly break. Well, to a novice, everything can break. So they're testing print statements. They're testing accessors and getters and setters because hell, you can all break. I don't know. Whereas the experts like, I'm not even going to look at that stuff. That stuff's trivial. Now, over here where I'm doing this weird funky thing with the race condition and the blah, okay, this is tricky. I know there's going to be problems here. I'm going to test this out of this. The novice can't tell the difference. The expert, the novice can't tell the difference. They don't know where to put their focus. So, with all that as a quick intro, how on earth do you actually get to really be an agile practitioner? Well, the first thing is you need the agile mindset. When I wrote practices of an agile developer with end consumer money, there was no definition even. There still isn't really a definition of what agile is. So we had to make one up for the book. I made this one up. It was kind of reasonable. It says, agile development uses feedback to make constant adjustments in a highly collaborative environment. There you go. That's what you can write down. That's a good one. That's really what you want to aim for. You need feedback. You need to constantly adjust and you need an environment where you're collaborating with everyone. Client with your fellow developers, there are resources involved. High collaboration, feedback, constant, constant adjustments, daily, hourly, that's worth it. Not everyone can do this. There's this must list I came up with. These are the things you have to be able to do. All of your development and management practices have to generate continuous, meaningful feedback. If you're not getting feedback from unit tests, if you're not getting feedback from meetings because you all just gather around and eat donuts, that's your good, but you need feedback. If you're not getting feedback from it, how can you make any changes for anything that the team got created? You need to be able to evaluate that feedback appropriately in context.  It's her fault. Well, is it really? What do the rest of the team do that let that happen? What are you missing? Now you know what's wrong. You need to be able to do something about it.  There is nothing more soul-sucking or debilitating than figuring out what's wrong, knowing what you need to do to fix it and not being able to or rather not being allowed to for whatever reason. So, if you can't do these things, don't even try. Because you can't be successful without it. So, if you can do this stuff, then go back to the Agile Manifesto where we said these, you know, value the individuals and interactions, value the working software, value customer collaboration, value responding to change, all that stuff. If you can honor that and have that kind of environment, then you've got it made. You've got the environment, you've got that definition. Adhere to those values. Boom! You're Agile. You keep trying. You've got to keep failing. That's another interesting idea. If you're not failing often, then you're not trying enough. You're not trying enough hard stuff. You're not advancing. You need to be failing. You need to learn from that failure. Don't just keep stubbing your toe and then repeat. And that's all there is to it. Is that the end of Agile? We said all this ten years ago. Nobody believed us particularly. They're just like, oh, we must pair. We must do unit tests. Now we're going to Agile. We're going to Agile accounting now. Dying to see how that works out. So, the real problem as I see it is we said all this stuff ten years ago and we fully expected by 2002-2003 there'd be a hundred new methodologies out there that people would take and say, okay, well, we took XP and we changed it and now it's like this. And we took Scrum and we added this and we did that and that hasn't really happened. You've got a couple of main methodologies. You've got a handful of new practices. Things like planning poker were introduced later. It's a neat idea or whatever. You get some ideas from Lean coming in and Kanban. But for the most part, we're talking handfuls of new ideas. Not thousands. Just a couple here and there. So, what is it we're missing? Glad you're asking. When you do stand-up theater improv, apparently there's two rules. You have to agree and you have to add. So, what is improv? This is you get a couple of actors together and there's no script. We don't know who the characters are. We don't know where the plot if there is one is going to go. On stage in pressure environments say, okay, perform. Act.   That has always been our mantra. There is no script. We don't know how it's going to turn out. We don't know who's playing what role. So, it's actually very similar. So, in improv, to make this work you have these two rules. You can't start off. Imagine this. The first character comes up and says, wow, I can't believe we made it and then the second character says, no, we're not on the moon. Thanks. Okay, now I'm screwed. We're going to go from there. Or, worse, you say, boy, I can't believe we made it here to the moon. The other character says, yep. Now what? I'm just as stuffed. So, you actually have to do both. You have to agree and you have to add something. Yes. Boy, I agree with you. We're here on the moon and wow, did you see that shadow move over there? Okay, now let's get a little interesting. Now I've got something to work with and on and on it goes. You agree with the direction that's being taken explicitly or not and you add your own bit to carry it forward. That's the part we've been missing. We haven't been adding our own little thing to carry it forward. So, yes. We'll do pair programming. Yes, we'll do unit testing. Yes, we'll do TDD. Yes, we'll do whatever else. We'll do active refactoring. We'll do whatever you want and we're going to do this and we're going to do this because we need it and we're going to stop doing that because even though every article says it's a good idea it is killing us dead. So, we're not going to do that anymore. We'll do something different and we're going to get feedback from what we're doing differently and if that's not working, we're going to change it. We're going to continuously change it until it works. What it's all about. Simple, straightforward. We said it ten years ago. I'm saying it again today. I'll probably say it again ten years from now because we still won't probably get it. That's the basic idea. So, that's really all I came to talk about. Those are a couple of the books that I wrote. There's my Twitter handle. Please follow me. The other guy said, well, if you're not interested in my stuff, don't follow me. Follow me. It's always cool stuff. You'll love it, I promise. You'll get every penny back that you invested in it. And there's my e-mail address. I do get thousands of e-mails, but you know, hey, Pylon, that's fine. I can take it. If you have anything that comes up later, you have a question or comment, what not, please do just follow up. On separate news, at the Pragmatic programmers, we are actually looking for a skill of Rails programmer who does some sysadmin as well. If you're curious, go to prideprog.com slash help dash wanted and explains it in glory detail. If you know anyone who you think would be a good fit, even if you're not, please spread the word. We sent this out on e-mail and Twitter.


The modern power system is transitioning away from synchronous machines and toward inverter-dominated systems with large-scale renewable energy sources. To ensure system stability, many researchers have proposed using inverters with virtual inertia control algorithms to mimic synchronous generators. This paper reviews the current state of the art in virtual inertia implementations, discusses their advantages and disadvantages, and identifies areas where further research is needed. This article was authored by Ajwal Tamrakhar, Deepesh Shrestha, Manisha Maharjan, and others.