In today's video we're opening a first-edition hobby pharaoh servant box for the legendary Jinzo What's up guys? We are down to the last four of our 11 days of Yukio opening. I hope you guys have been enjoying it so far I mean you can't really beat in terms of old-school openings. You can't beat this. It's been amazing. It's been fun I enjoyed doing the stream and I'm hoping you guys are enjoying watching them in the edited versions Let's get right into the box opening. Let's start off first pack of pharaoh servant has been pre-bid. Why you guys are doing that? I'm gonna be opening this box. Here we go for pharaoh servant not for on a guardian different thing Open that up very nicely. Let's do a little shuffling and that should be pretty good, right? Who is gonna get that first pack Jarvis? Jarvis gonna go one pack magic Jinzo. Is it gonna happen? Alright Jarvis is back Jarvis. I gotta get you something man This is gonna make me feel bad if I don't get you anything first edition guys our first pack of pharaoh server right now Here we go. MRO went really One two three four and thanks for it. We're down a couple packs left guys Go check out buy it now and grab some more cold wave. We got a gamble Jarvis is gambling Let's see what he can get tack and receive gift of the mystical elf will he one pack magic first pack magic here We go beast. I'm a mad sword beast. Let me tell you I'm a mad sword beast I want Jarvis to get something good. I just want him to get something good Okay, hope you guys are enjoying the video if you are we giving away 25th anniversary pharaoh server booster box All you have to do like the video be subscribed turn on notifications Let me know down below what you think about the box opening so far and what do you think we'll get in the next few retro Baloney is back retro baloney He's going for pack number two. Okay Wing weaver. Let's get Jinzo armor glass We have flame champion Respect play inspection. We have twin edged fire dragon invitation to a dark sleep mystic probe When a gear free the iron knight very nice super. That's a good super. We're starting this box off well as well Well as well. That's a little bit of too many wells there. All right gear free the iron knight. That's It's a good start guys. We are off to a great start with this pharaoh servant as well. All right Crack very short name nice and easy for me one two three four We have drill bug. Let's get that Jinzo Dark fire soldier number one eye of truth metal detector bite shoes dark fire soldier number two the all-seeing white tiger ground collapse and we have a Mitch is Zerry. All right, Mitch is Zerry Just a rare it is not the legend. We were hoping it was Jinzo But thank you again crack for being here doing pack number four who's gonna get that Jinzo I mean, this is a very right box a lot available here. I mean, we're we've only got a super so far. All right Chris Chris Clintons up next and he get that Jinzo Buster blader thousand eyes restrict thousand eyes restrict We go really well with our link. We're so far. We have seven completed enchanted Javelin overdrive solemn wishes Gradius science soldier. We have Harpy's brother driving snow and we have Hayabusa night, okay. Hayabusa. How you doing? Not so good after pulling you not so good We're not really looking for you Hayabusa night jet black sofa trying to get that Jinzo You have not pulled Jinzo. We've not pulled any ultras yet either seven completed. We have enchanted Javelin Let's get that ruckson 34. Oh, that looks a lot like it overdrive solemn wishes. We have driving snow pretty cool We have Harpy's brother Rain of mercy type zero magic crusher and finally we have Appropriate. Okay. No any tank rucks of 34 Adam. Hopefully we can get one for you later at some point Thank you for being in it man. All right. What are we gonna get one two three four? We have cold wave. We have gamble cyber falcon shadow of eyes. Can we get that Jinzo world suppression burning land by choose dark fire soldier number two and shift Shift so many rares now. I was like wow we're start off to a better start We got gear-free and it kind of slowed down. That's pack number seven technically. I think all right Carl Mace good luck Will you get our first ultra or secret out of the box one two three four gotta believe guys? We have spike bot Four-star ladybug regulation of the tribe skull mariner dogerro. Yeah, but only tank rucks and 34. There we go dark bat insect imitation and we have Red moon, baby. So look there was an only tank rucks and 34 in there So that definitely makes that a better pack even without the pull. Oh, okay Scare in all right scare and pulls it out scare in you got pack number eight This will be a third of the way through guys a third of the way through the psv box Will it be a super will it be an ultra will it be a secret or will it be nothing? Is it gonna be a dud? Here we go scare enchanted javelin overdrive major right wing weaver come on Jinzo Harpy's brother classic classic right there driving snow rain of mercy got type zero magic crusher and we have a Chain destruction. Okay. The only good thing about this was I mean besides it's an ultra. It's not terrible My first box ever I pulled Jinzo. I pulled chain destruction So I don't know if they're correlated, but they could be I'm just saying all right one two three four We have grouch and cool. Got some souls. The forgotten gust insect barrier. You see warrior Solomon's law book Dugro Yaiba in Nobleman of extermination. Okay, cool stuff cool stuff. It's a nobleman It's of extermination, but it is not the for what we're looking for. Okay next pack. Why aren't you here one two three four? We have flying commentary number two. We have three at a Gita. Let's go with DCO. We bought in vermin light of intervention No, Jenzo. No, well we have one ultra earth shaker mr. Volcano and Light for sword exodia next pack guys, okay one two three four Here we go guys Cold wave gamble cyberfag or game one for that Jinzo we've tack and receive world suppression or whatever thing was called dark for our soldier I feel like I said it wrong and then gravity bind. All right another rare. Oh gosh It's rare central is that two foils total? Man, this is pack number 12 right here. We're halfway through the box after this one two three four Will we get secret rare right here? Jinzo time? I have truth armored glass flame champion I want to go 11 for 11 on secrets guys. That'd be amazing. Respect play fire dragon. We have mystic probe Solomon's law book On a skull invitation. Okay two for 12 So we are in theory should be four to five foils in this next half, which would be really awesome for let's go We have spike bot four star lady book of doom Regulation of the tribe skull mariner dark bat insect imitation when you get that Jinzo right here guys This could be insane. Let's go tack and receive We have gift of the mystical elf and we have Wasn't the Jinzo but it was the legendary Fishermen. Oh, we're getting so many classic cards today. Oh, wow, that is nice Legendary Fishermen that is legendary pretty good. Wow. Okay retro baloney. Congrats. Congrats on that That was a 22nd or let's try one more one two three four will there be a Jinzo inside one of the best old-school cards You can get Here we go armor glass flame champion respect play rain of mercy type zero magic crusher twin-headed fire dragon. Can we get that Jinzo? Shallow grave it's a shallow grave for the Jinzo Unfortunately, we didn't get him. Okay Retro baloney's back is he about to get the Jinzo to that would be insane. All right MRD and LOB will be very soon We're gonna be we're gonna do the auction ones in the next three drill bug line comic carry number two all seeing my tiger ground collapse light of intervention so we're out of number two and Oh a super backup soldier not bad Jarvis is back. He's back for more. We've opened how many packs now I think 14 or something like that J. Stelz. Congrats. We have grouching gulagata We have souls gust insect barrier mystic probe Solvans law book DC warrior keys and tie and his little finger. Don't forget about that and Force requisition. Okay. Just a rare. So we have two supers two ultras, right? Is that what we're at? So we should be at two to three more foils in here somewhere at some point We should get them one two three four Jinzo time three at a Gito in this missile bubonic vermin Come on seven completed earth shaker. Mr. Volcano Gradius science soldier and Monster recovery a recovering monster. All right grow will unfortunately no grails to whale right there Let's see if William man. Oh eight nine zero zero has better luck. Let's go need some luck guys send us some luck in the chat Here we go one two three four. We have drill bug dark press soldier number one the eye of truth metal detector You all seeing why tiger? sword hunter ground collapse Light of intervention and will he get the Jinzo? Nobody will get morphine jar number two. We've got we have not got morphine jar. We got cyber jar We got morphine jar number two. We're not a ruxin video without a Jinzo. That's true That's true. It might not be me if we don't get one Okay, two ultras pulled no secrets and two supers So we have a couple supers and a secret potentially maybe a third ultra here. We go. This could be the Jinzo This could be big one two three four. I am hoping this will be it drill bug or at least a foil dark fire soldier number one metal detector Flying comic here in numero dose by choose all seeing my Tigray. There you go ground collapse minor goblin official Come on Jarvis here. We go. I know Jarvis knows the story. I you know the story about the card I don't have to say it. You know the dimension whole story Jarvis. Let's go shining Marshmallow. Will he get a shining Jinzo? That's the question Grouchy kewa got the souls of the forgotten gust insect barrier deep sea warrior Kisa tie and a little finger. We have doker oyaiba Oni tank rocks in 34. That's not bad and Limber removal. Okay. We got a super super rare. That's our fifth foil of the box So that is not bad. It is obviously not a Jinzo, but it is a machine card that could be used on a Jinzo So keep that in mind Could be that's pretty cool. I'm pretty cool. I said wow man.  It's like, yeah, great. All right fifth foil. Come on Jinzo Bless us with your presence, please. We're gonna do Williams pack one two three four. We did that earlier We have wing weaver four-star armor glass flame champion rain of mercy type-zero magic crusher inspection To win at a fire dragon and will it be Jinzo time? The story I'm not gonna say it YouTube. I know you've heard it a million times Maybe I won't know you haven't heard it, but I'm not gonna say it again. I know that you guys have heard it Okay. All right. Good luck on your Jinzo one two three four. Will there be a Jinzo faster respect play? Let's go. That's us shaking hands rich and cool. God's a soul's the forgotten gust invitation to a dark sleep mystic probe Solomon's law book deep sea warrior and we have Magic drain people been calling for that second-to-last pack guys I'm getting nervous for this one. I'm getting nervous. We got two left two left guys Two left for Jinzo time second-to-last pack magic guys. We have not pulled Jinzo and it's not a ruxin video or stream without pulling a Jinzo, so Shining Marshmallow. Good luck. Here we go. Will there be Jinzo one two three four They're banking on there being a Jinzo in this box flying comic here. Number two three out of Guido Infinite dismissal bubonic vermin steel gregorado earth shaker Mr. Volcano and his fiery finger siren soldier siren soldier science. Yeah, there we go and Another limiter removal a double in a hobby box. That's pretty unusual actually in a 24-pack box You know what this is associated with though machines last pack magic So we now have four supers two ultras perfect ratios to have a secret but also perfect ratios to not so Wow, this is really coming down to the end. There's no reason it can't be and there's no reason it can't be in here If there's a Jinzo 5050 in this box. It's in this pack. If there's not a Jinzo in this box It's not so I mean not really saying much obviously, but there's our last chance. Come on Jinzo You can't you can't skip out on this stream. All right guys I need everyone in both chats both YouTube and whatnot to send Shining Marshmallow some luck because He went all in on these last two packs. This thing needs to have a Jinzo in it rucks and videos Have we've been lucky with with Jinzo before we want to be lucky again. Here we go Last pack magic Jinzo time two three four Jinzo time on the back intake barrier Spike bot come on guys last pack magic Jinzo regulation of the tribe skull mariner, please only ten rucks of 34. Good sign We have docker. Oh Yaiba dark bats We have insect imitation. I think wait. Oh, I missed a card. Okay. It's the next card This is all or nothing. This is Jinzo or it's or it's nothing here. We go or could be a third ultram Here we go the first major disappointment of the stream Pharaoh's servant lets us down with no Jinzo oh Sad times shout at its home foe show Daxter puffins of doom Ernesto dn America doidster leo gwine 62 brad kk beats and on a tie show Ian Musa jr. Marding Robert F. Thomas McLean Changolang and Joey Castle. Thank you guys for supporting the channel. I'll see you guys in the next one Peace


At Audiology Associates at Prestonsburg, you can live your life the way you want and find the freedom of better hearing. You'll experience patient care that is specific to you with exceptional follow-up care that ensures your hearing and balance needs are being met. Audiology Associates at 1428 Northlake Drive in Prestonsburg. Santa will be making an appearance at the Mountain Arts Center on Tuesday, December 13th to take photos with you and your pets. They have some of the folks at the shelter that have been involved for many years, Karen and White Sloan and Teresa James and some of those folks have done pictures with Santa. I think just about every year, but we're really trying to make it big this year. We want to, you know, coming out of COVID, trying to get everything back to normal. And so we've just really been trying to advertise it and make sure that everyone knows, because everyone always wants to get a picture with their furry buddy. All proceeds from the photos with Santa go towards the building fund for the Floyd County Animal Shelter. The property that we have that is adjacent to our current building. We've had construction folks up there looking at it and actually are in the process of doing some work on the area to get the site prepped to be able to start a building. So that's our next step. And we hope to have some exciting news in the next few weeks. We're just waiting to get that area prepped and ready to go. Santa will be at the Mountain Arts Center from 6.30pm to 8.30pm on Tuesday, December 13th. Photos are $10 and larger donations are welcome. For Mountain Top News, I'm Kelsey Dean.


engineering. I'd like to thank you all for being a part of our big day today. We are going to switch from talking about what you do to have a perfect process as we can have a talk about for GitHub and now we're going to talk about maybe a less than perfect process or a less than perfect code base. I was advised to start talking about this as a safari into your legacy code maybe. Keep the theme going. How many people out here are working on a project that they would classify as a rescue project or a project that was handed to them in some sense or a project that has code that they didn't develop or so that's that's many of you. How many so of the rest of you how many of you are working totally on projects of your own that nobody else has ever touched. Wow that's great.  Yeah I personally I this happens to me when I look at my own code for six months so I would assume that this is a fairly common reaction so what's the proper response to this well I think that the only professional response really is you shake your fist at the habits for one minute curse your name and then get back to work. You have about one minute to finish complaining about how bad the last guy was to work on this and then you're just stuck with it because nothing else is productive. So I'm going to talk here a little bit about some strategies for dealing with these code bases and I think that it's interesting or useful to mention what I mean when I talk about an application being legacy. Little feathers in the outstanding book dealing a working effect of those legacy code which you should all get if you're dealing with this kind of stuff defines legacy code as code without tests which I think was charmingly optimistic in 2004 that all code that had tests would be perfect and clean and then we would all be able to work with it. I think that over time as we've as test driven development has become more prevalent and test driven projects have become abandoned. I think we've all found that having tests does not necessarily guarantee that the code is going to be easy to work with. So the definition that I like to use in terms of what is a legacy code base is that the code is based on lost requirements that the decisions that led to the architecture that exists to the methods to the structures to the tests that exists was made in response to some pressure, some time constraint, some resource constraint that you or the people on the team no longer have access to. Maybe there was a reason for that 300 line controller method. You don't know. It's lost to history. Maybe they were paid by the line. I don't know. And the problem with this is that you coming into this code base you don't know necessarily what correct behavior is. And it kind of reverses the normal TDD BDD relationship between tests and code. If you are working in a strict BDD system where your tests really are driving things, then the tests actually are the source of truth. And if there's a discrepancy between the tests and the code, you're supposed to believe the tests. But you can't do that in the legacy system. You don't know whether the tests are working. You don't know whether the code is working. You don't know what correctness looks like. And this is one of the things, one of the many things that happens to you when you go to deal with a project like this. So when you sit down to a project like this, your goal should be respect the working code, do no harm and deliver features at a sustainable pace and improve the code quality as time goes on. Now, one way to look at this is the Boy Scout rule, which is to leave everything just a little bit every campsite just a little bit better than you found it. So every time you touch some part of the project, make it a point to leave it just a little bit better than you found it. Clean up one method, one variable name or something like that. But I also think that it is important to respect the fact that you are probably dealing with a project that is in production that was as much as we like to make fun of the previous developers as idiots, probably developed by reasonably intelligent people who are working under pressures that you don't know about. And so you need to be aware of the constraints that they may or may not have and not go in and change things really, really. So what happens when your project needs to change? They come your first day on the new job, got this existing code base, there's a change that's needed. And there are Goofus approaches to this and get what approaches to this. Everybody, anybody familiar with the highlights characters? Yeah. From highlights, magazines, staple of doctors waiting rooms everywhere. Goofus is on the left, I think. I think the messy hair is the Goofus part of it. Okay. Which one of these is a Goofus approach and which one of these is the Gellan approach? If you're not familiar with the idea here, it would be like Goofus beats people up on the playground. Gellan hands them candy. You know, it's not a subtle kind of trip. So one approach would be, hey, we have to make a change. Let's start off by writing tests to cover the entire application before we make our change. Another approach would be, oh, well, this is simple. We can just drop that in. We don't need to test it. So which one of those is the Goofus and which one of those is the Gellan? Well, it's kind of a trick. They're both Goofus. And they both have problems. Both of these approaches have problems. I am not at all immune to the lure of writing tests for everything that isn't nailed down before you start moving forward. I mean, I understand that. But there is a reason why it's not a good idea to start on a new project by doing that. As perhaps evidenced by the right line, it's a small world, but I wouldn't want to paint it. The project that you're working on is big. You don't want to paint it. Writing tests for writing the test is not a quick win. You sit down with a new client, they ask you to move one thing on the homepage, and you say, that's great. First, I need to write our spec for three weeks. It's not going to go over very well, necessarily. And more to the point, you can easily introduce bugs through the process of having to write these tests. And you are coming to this, you know, as I'm defining this, by definition, you don't understand the project that you're working on well enough to even test it, you know, and you, and if the project, the code is at all complicated, you're going to have to move some stuff around to write the tests, and you'll introduce bugs. And that's going to make, that's going to make the client or the manager even less happy. Not only is it a quick win, but you're going backwards. On the downside of just dropping something in, which is also very tempting, I think that we're all also very tempted by the idea that, oh, we just want to move this header over here. That's really quick. We just want to add one new, one new line of data to the page. It sets a bad precedent. I think as a professional, as a, as a craftsman, as a professional, if you expect to be dealing on a basis where you're going to be writing tests going forward, you want to set that idea from the start. You never have, you never have a better chance to do that than the first time you are asked to do something to show how you plan on working. And to, to aggregate that, aggregate that responsibility right off the bat, is only going to make it harder for you to come back the next time and say, oh, well, now we need to do this test thing. And it also doesn't make your life easier over time. One of the advantages of the Boy Scout role is not just that, you know, we're noble craftsmen and we want everything to be perfect. The idea is, is that improving the quality of the code is improving the quality of your life working on this project. You make things easier for yourself by making the code better. And when you take a new request and just drop something in, at best, you're leaving things the way they are. And at worst, you're making things just a little bit harder for the next time. Okay, so what's the Gallant approach? Well, to me, the Gallant approach is to go back to the basic process, the basic test driven red green refactor process, but apply it only to new changes. You draw a line in the sand. You say, this is the bad stuff we did before. I can't do anything about that. Can't do anything about that right now. But what I can do is I can say that from now on, we will do the right thing. We will go red, we will go green, we will refactor. And as we touch existing parts of the code, we will bring them under test as part of as part of the changes that we make. This is a safe approach. This is approach that in generally limits you to touching the parts of the code that you're actually dealing with, the actual fighting chance of understanding. And over time, code coverage and code quality will grow organically. If you're on a large team, perhaps you can affect other members of that team when they see that you're doing something and it's going well. Very carefully. I mean, at some point you have to hold on to that because it's like you're one five slides in the future. If you still have the question in in 10 minutes, raise your hand, raise both hands and wave them. So great. It's not that easy. It's easy to say we'll do the right thing from now on, but it's a little bit harder to do it in practice and not even counting about on any any political pressures you might get from people who are unfamiliar for the process or other developers. There are practical problems just in dealing with the code base. Like I said, you don't know what correctness is. You don't know what you want to test. On a code base that was not built for testing, it's very hard to isolate objects under test and separate the code that you want to test from the rest of the code base. The Michael Feather's book is very effective in having some techniques for that. We'll talk about a couple of them in a few moments. But also, Git is very much your friend in this kind of stuff. Does anybody here not know about Git Byset? Everybody knows about Git Byset? Cool. Git Byset is the kind of tool that's really helpful here. It helps you isolate individual changes that may have caused defects in your program. So what are some of the things that you can help you build up the code structure on a legacy code base? Cucumber is one of them. Or something similar to that. Something in, but the Cucumber has the biggest penetration of all the tools like it. Cucumber's biggest advantage in dealing with a legacy code base is that Cucumber is completely independent of the existing code. No matter how messy Cucumber is, no matter how messy the underlying code base is, Cucumber sort of floats above it. In a Rails application, Cucumber cares about URLs coming in, basically an HTML coming out. Doesn't matter. The 300 line controller method is not a problem for dealing with that. And because of that, it's relatively easy to cover a lot of app with a lot of your application, at least with smoke test level talks test of does this even run relatively quickly and endlessly? There's a problem. Cucumber's kind of slow. And building up it's not necessarily the best long term way of keeping these tests together. And it's also not very good at isolating the problem is for the same reason that it's been forgiving you a lot of coverage quickly. It's working at a higher level.  It's not going to tell you what line in your 300 line controller method is causing a problem. But it will tell you that there's a problem, which is a start. One thing that I have used successfully in the past is a process that sometimes called test driven exploration, which is kind of like test driven development with cheating. Where you write the test, you write a test that you know will fail against the unit. For instance, you have a return nil or negative 75 million. And in most of the time that will fail. Unless you pick the negative 75 million answer by mistake. And then you can feed in that answer and fill in that test. What is this good for? It's good for providing regression testing. Obviously, you're not really using this for forward development. But you are using it as a way to explore what the code base is actually doing, and allow you to treat the code as the source of truth. In this situation, you have to treat the code as a source of the truth, but you don't have tests. So you're trying because you don't have tests. And what you're trying to do by sort of sounding out the code with tests is to move some of that information about how the code behaves from the code to the tests, so that then you can change the code and still have information about how the code base works embedded in the tests. Mach testing is another really useful approach specifically against legacy code base. Machs also allow you to use unit tests. And they allow you they allow they help you isolate basically, because you can take one crazy method that you're trying to put under tests, and you can surround it, you can surround it with mocks for all of the things that that method calls out. And essentially, you're cutting across the tangle responsibility of the code. You're just putting in much simpler, the much simpler dependencies of your mock for the more tangled responsibilities that the code may have. That can be that can be a very quick way to start unit testing. The setup there can be hard if the code is really bad, because potentially, you're paying for people's really bad design decisions and the number of mocks you need to set up. And at some point, that may you're going to want to move away from that a little bit because it won't because if them if the tests need to know a lot of internal information through mocks in order to keep the order to run the tests, then that's going to make at some point refactoring the code more challenging because the tests now have really deep internal information about the objects are testing, they may not that they may not actually be. Another strategy is isolation. This is more of a code strategy. And this involves only touching existing methods to the point for the purpose of calling a new methods. This is a kind of an extreme strategy for dealing with a messy code base. The idea is that you deal with it by not touching it at all that all you do is that if you have some crazy insane method, but you have a new condition where you want to write new code against it, you switch off to your own new clean method or your own new clean class that is fully test driven or behavior driven and only interacts with the messy existing code at a boundary that you that you make very sharp. And over time, you have this little island of test driven clean code in your system. And over time, you move things to that island as you as you have to make changes. And then it's fairly clear in your system what parts of it need to have are going to be built with tests and going to be built cleanly and what parts aren't. Another process or another tool is something that my father's called in his book, a seam. And the idea of a seam is that you can change the behavior of your code for the purpose of your test without touching the code itself. And Ruby offered or perhaps minimally touching the existing code itself, Ruby offers a number of different ways to do this. Some of which are more or less helpful in the case of the case of testing and some of which sort of feel like mock objects. One thing that's really simple is to start adding new default arguments for your new condition or for switching off to your new code base. But you can if you add a new default argument to a method existing calls to that method don't need to change. So that is one mechanism for prying in your new code into existing code without having to go through and change everything that touches it. And again, that can be a mechanism for you to start building up a part of your code that you're doing test that you're doing building tests for. Another thing that you can do is that you have a number of mechanisms that basically fall under various forms of monkey patch. You have perhaps a method in your code that you really don't want to touch because it hits a third party library or something but it's really slobably factored. So it's very hard to get around. You can just create a test version of that. You can do that by creating a subclass if you need if you want. And then using that subclass in your test. You can in Ruby actually monkey patch for the purpose of your test, one method, just put it in the beginning of the test that you're monkey patching one method. This is these are sort of emergency. There is no better solution kind of things, but there are ways to get you started. You monkey patch the one messing method. In some sense, this is a very elaborate mock potentially, or maybe a more explicit mock stuff. You can use a singleton class in Ruby. That's, yeah, you can use a singleton class for Ruby. Again, effectively, these are, these are all various ways of mocking that might have more or less benefit in different situations. You can just create your own duct type class. Another interesting mechanism is to use a screen and object called a pebble. That is basically just a blob that referred that this is almost like a tracer. I don't understand what this code is doing. I have no idea where this object is getting passed around. This code is a total mess. I can't figure it out. You pass in this pebble object to the code base. And all the pebble does is it responds to method missing, and it returns a call. Basically, every time it gets a method gets called on that object, it spits out what method was called and where it was called from. So it allows you to sort of trace the life cycle of an object through the system where it gets called by work. And this is actually something it doesn't have to be the pebble doesn't have to be its own separate object. This is something that you could add, you can add this method missing onto an existing object that's going through the system. And you can use that to sort of turn the lights on and help trace the behavior of the system against a particular object while you're trying to figure out what's going on.  That's fine. You can start writing tests. If the application is fully covered. That's great. It's got it's got a lot of test coverage. There's a what's the opposite of a sweet spot. There's like a sour spot in the middle, where somebody tried to test for a while, they didn't really commit to it. The tests are there, but they're they didn't keep up. So you have a test suite that goes along with it that just fails. And you have to step one, even if you're not going to cover the entire application with tests before you start, you really do need to make sure that if there's a test suite there, it runs. And that actually really does need to be job one. And you need to look at the test as though they're code. And I think though you need to make this kind of snappy like this is not something that you can spend a whole lot of time on, especially if you think the tests are not very high quality. This is something I took from Mike Gunderloy is our Rails Rescue Handbook, which is a pretty good book on many of these topics. If you're looking at a test and you can't figure out what it does in five minutes and it's failing, just delete it. It's not. And that's a pretty quick way. That is a one time deal when you come into a new code base. It is not something that you would want to do over time. At some point, the fact that you don't understand what the test is doing is a reflection on you, rather than a reflection on the test. But in this brief interval when you come into a new code base where your inability to understand it is probably a reflection on the test, then it's time, then it's time. At that point, you can get rid of tests that don't seem to be adding value. So when can you refactor against a test suite? I feel like there's a case, there's a level of stuff that is level of refactoring that is relatively simple that you can try, that you can start to do at any time when the tests are green. And you do need to be careful here. The accent here is on simple, where you have, these are simple method extractions, name changes, stuff that is unlikely to really either break a lot of tests or change a lot of code logic. But stuff that allows you to isolate individual parts of the test so that you can test, individual parts of the codes that you can test some of them. I think that that you can sort of do as you come across them. There are some things that are going to be simple and obvious enough that you don't necessarily need test support to them. More complicated things, things where you're actually changing the abstraction structure of the code, you're adding objects, you're refactoring on classes, you're changing relationships. That should be tied to new requests that you really shouldn't go in and say, it's really not productive to go in and say, we're going to just move all of this code to a service right now just because there's a total mess right now. It should come in when there's a request that's a big enough request to justify the work to come across, to justify the work to write the tests to do the refactor. In that case, you probably do want to build up the test coverage first or at least start to and start to do them kind of in lockstep. You build up a little bit of test coverage, you clean the code up a little bit. You can kind of do them in sort of a step-by-step, step-by-step fashion. So what I want you to come away from this with, working code deserves respect. You shouldn't pull it up just because you don't like the way it's indented or something like that. If it's actually in production and it's serving people, there's value to that and there's value that you need to be careful of when you're trying to clean things up. Test at as high level as you can. If you can, if all you can do, high level may not be a great phrase here, but if all you can do is cucumber tests, do cucumber tests. If you can get into individual units, if the code is cleaning up to get to individual units, do that. Write the test that you can. Any testing in this case is better than nothing. Always remember to leave things better than you found them and things will continue to get better and eventually you will have the code base. You eventually will move towards having the code base that you want. Always try to isolate the code that you have under tests, either by actually isolating it in the code through a simple refactoring or through monocs or something like that. And again, you need to consider the cost of making a change when you're trying to clean up a code base against the cost of not making that change. That's pretty much all I have for you today. I work for GroupBind. A couple things I just want to mention. I work for GroupBind Engineering. As you may have heard, we are hiring. Also, anybody who is coming next week or two weeks from now to the SC&A Southwark Rasmussen North America Conference in Chicago, I hope to see you there. Anybody who's not coming, take a look. It's going to be really great. I blog at RailsRX.com, speaker rate down there, at NoRap on Twitter, and all that. Thanks for your time. We do have a couple minutes for questions if you want. Otherwise, thank you.


President Mohammed Buhari has returned to the country after 16 days of official engagement in Europe and South Africa. The President arrived at the Namdiaziki International Airport at Buja on Tuesday evening from Durban, South Africa, where he had attended the second intra-African trade fair 2021. Before the South Africa visit, he had participated in the Paris Peace Forum in France, where he was also a guest of the French President Emmanuel Macron. President Buhari had also been in Glasgow, Scotland, where he participated in the 26th edition of the United Nations Climate Change Conference Cup 26.


Welcome everybody, I'm Erika Ferrandi and I'm a research fellow at the Institute of Biomembranes, Biologetics and Molecular Biotechnologies of Bari, in Italy, and I'm currently working at the Department of Biosciences of the University of Milan. The timely and rapid tracking of novicescope to variants and mutations is a priority in the fight against the pandemic, especially as these mutations or variants may become a source of concern for national and international health authorities. Here we present Korgat and Korgat Tracker, a complete set of tools for the functional annotation of SARS-CoV-2 genomes and for tracking mutations and variants of concern in space and time. Korgat, or the coronavirus genome analysis tool, is a collection of per-utilities and annotation files, which are used to perform the functional annotation of SARS-CoV-2 genetic variants. At the bottom of this slide you can see preview of the on-page of the galaxy version of the tool. Briefly, Korgat allows to align complete assemblies of SARS-CoV-2 genomes to the reference genomic sequence in order to obtain a list of polymorphic regions, which are then used to annotate a genetic variant. The output of the tool consists of the simple table, which contains the functional notation of the genetic variants previously identified, and also a series of additional information, all listed at the top of this slide. It is important to underline that information highlighted in orange, both in the list and in the example output picture, are all unique to Korgat derived functional annotations. Korgat Tracker is a shiny-based dashboard that allows the visualization of the prevalence of SARS-CoV-2 lineages and mutations of concern as annotated by Korgat. The galaxy release of this tool is currently under development. In Korgat Tracker, data are represented in an interactive way, and the user can personalize several visualization parameters by the means of a set of widgets. All the parameters that can be personalized are listed at the bottom of the slide, and here you have an overview of all the widgets available to personalized data visualization. Korgat Tracker produces three different kinds of plots. More in detail, we have a set of bar plots that represent the number of occurrences of lineages and mutations on a weekly basis. Then we have a set of pictures showing the cumulative prevalence of SARS-CoV-2 lineages and mutations, and last but not least, we have a set of scatter plots representing the number of weekly occurrences for user-selective lineage or mutation. Furthermore, to enable a more efficient tracking of emerging lineages in Korgat Tracker, lineage annotations can be kind of augmented by reporting the list of mutations of concern that are observed in a genome, but that are not specific to its assigned lineage. These augmented annotations are called lineages plus in app, and their prevalence in time is represented through a bar plot and the part chart, as you can see in the pictures reported. Overall, we believe that Korgat and Korgat Tracker will provide a useful addition to the currently available arsenal of bioinformatics methods and tools for the genomic surveillance of SARS-CoV-2. Korgat, in fact, has a sensitivity which is comparable to other tools with a similar function. However, it also provides an additional layer of information. For example, thanks to the application of our set of tools, we were able to identify a collection of Italy-specific misclassified SARS-CoV-2 genomes. More in detail, these genomes were classified as B1 by classical SARS-CoV-2 annotation methods. However, our system highlighted how they presented additional mutations in the spike protein, as you can see from the reported bar plot. More in depth analysis allowed us to observe that these genomes shared a consistent proportion of the mutations with B1 lineages, but they still present a group-specific mutation, more specifically P681H mutation on the spike protein. It is possible at this point to speculate that these genomes represent the newly immersed lineage. However, further investigations are required to verify these hypotheses. Finally, it is recent news that P1 plus P681H lineages were recently added by the ACDC to the list of variants under monitoring. Regarding the availability of the tools, again, Korgat is already available to Galaxy, whereas the Galaxy release for Korgat tracker is under development. Furthermore, additional information about the single tools, their code, and their functioning in detail can be found in the corresponding GitHub repository. All the useful links for the availability of the tool here presented are reported in this slide. To conclude, I want to thank my supervisor, Dr. Matteo Chiara, all the co-authors and people working on this project and all of you who are listening. Thank you.


horse with a speed of light, a cloud of dust, and a hearty high old silver, the Lone Ranger. Before this exciting adventure, a word from our sponsor. General Mills, makers of Cheerios, the oak cereal that's ready to eat, Benny Crocker mixes, and Wheaties, the breakfast of champions, present by special recording, the Lone Ranger. Jenny is 10 and is she good? She's skip rope champ of the neighborhood. She's so quick because she knows she's got gold power from Cheerios. Yes, she's got gold power. There she goes. She's feeling heart Cheerios. Cheerios. Cheerios. That makes sense. Try Cheerios, the wonderful oak cereal that's shaped like a little letter O, and you'll agree. You like that delicious toasted oak flavor, and Cheerios is ready to eat. Just pour out a big bowl full, add good fresh milk, dig in, and start getting your gold power because a Cheerios breakfast is full of vitamins, proteins, and minerals, and those are the good things you need to help build red blood, healthy bodies, and strong muscles. So enjoy your breakfast every day with delicious Cheerios and milk, and get that good gold power. Then folks will say, she's feeling heart Cheerios. With his faithful Indian companion title, the daring and resourceful mass writer of the planes led the fight for law and order in the early western United States. Nowhere in the pages of history can one find a greater champion of justice. Return with us now to those thrilling days of yesteryear. From out of the past come the thundering hoofbeats of the great horse, Silver. The lone ranger rides again. Come on Silver, let's go because I'm Silver, Silver. Early one morning, the lone ranger's Indian friend, Toto, rode into the town of Tobacco Ridge to buy supplies. When he returned to the mask man's camp, he reported. They have plenty of excitement in town, Kimosabi. Crooks try Rob Bank last night. That bogus brawl in his pal's elk bedding town. Ah, then the fellow try Rob Bank. Are you sure, Toto? Ah, watch when I'm guardin' Bank, get good look at Crooks and Lantern Light, and me here description him give. Were they captured? No, no, them get way. Probably heading west. Not right. Leave the provisions you bought in your saddlebags and start after those two. And while me in town, Kimosabi, me look, we follow Crooks tracks, me show you where we pick up trail outside town. Fine. And one power still ride horse with worn shoe. All right, let's go, Toto.  Come on, sir. By taking a roundabout route through the hills, the mask man and Toto avoided riding through Tobacco Ridge in order to reach the western side of town. There they drew rain. Here tracks, Kimosabi. Just like trail we lose yesterday. Yes, you're right, Toto. Easy, Toto. Now we plenty close to them. They're very clever at hiding their tracks. That's right. We already lose trail once. We'll try not to lose it again. Come on, Toto. More than half a day's journey ahead of the lone ranger and Toto, focus and elk slowed their horses to a walk to rest the animals. There, when I saw the light in the bank, I told you we wouldn't have a chance. We need cash, elk. And I think I know where we can get it. Well, if you're thinking of trying another bank robbery, I'm thinking of a law shock I know in the town of Meweshoe. And where's that? Beyond the town of Amity. Amity's ahead of us. Meweshoe's west of it. It's a rich cattle town. Who's your friend? A lawyer named Hector Moses. He's on the level. How'd you get to know him? He's no more honest than we are. Fact is, he left the east to get away from a murder charge. What's he doing in Meweshoe? Practice and law, as far as I know. He might know how we can get hold of some easy money fast. He does it get it himself instead of telling us about it. Ah, not Hector. He's got to act like he's honest. But there's nothing to stop us from pulling a quick robbery and clearing out of town. Well, I want to stop blowing up in the next town where you hit to get my gear fixed and replace this critter's left front shoe. Now, what's wrong with your gear? That stirrup leather needs replacing. Now, we'll get a meal while it's being fixed. It suits me.  Come on, get up there. In the town of Amity, the killers stopped at a saddle shop where an 18-year-old redhead named Pete Jones worked. Leaving their horses with him, Bogus and Elk went to the restaurant directly across from the shop. A short time later, Bogus looked up from the plate of stew he was eating. Elk, look. Look who just threw rain at the saddle shop. That dude's no one I know. It's Hector Moses. Oh, yeah? What's he doing here? I don't know, but I'll find out. I'll be back in a minute. A few minutes later, Bogus returned to the restaurant with Hector Moses. Meet my pal, Elk. Well, howdy-do. Howdy. Sit down, Hector. Thank you. Hi, I have a problem, Bogus. Meeting you should help me solve it. Oh, what's the problem? A wealthy client of mine died a few weeks ago, Bogus. You may have heard of John Perry. No. Who's John Perry? He owned the Cloverleaf Ranch, one of the richest spreads in this part of the country. Yeah? John left a brother named Clem. He inherits the range. Well, part of it. The rest is to go to John's son, Pete. Now, the trouble is that Pete and his mother were with a wagon train ambushed by Redskins 15 years ago. Pete's mother was found dead, and so were the rest of the travelers. What about the boy? His body was never found. John Perry died believing his son is still alive. Now, Clem Perry's downright anxious to find the boy. Clem's unmarried in hopes that his nephew will carry on the Cloverleaf after he's gone. How can he carry it on if no one knows where he is? I'm supposed to look at the boy. That's some job. Yes, but I stand to collect a mighty handsome fee if I succeed. Earning it won't be easy. I have three months to find the boy. If I don't find him, the entire estate will go to Clem. But if you and Elk would cooperate, my job will be easy. What do you mean? That young redhead across the street is the age Pete Perry would be if he were alive. He looks very much like John Perry. Yeah? I've learned he's an orphan. He works for his boredom room in the saddle shop and he knows nothing about his past. What about it? I might be able to palm him off on Clem as the real Pete Perry. Oh, sure, that's your scheme. Yes. Old Clem won't know the difference. I don't think I'll have any trouble selling him the idea. The youngster's his nephew. What about selling the kid beyond? That's where you two come in. As a reputable lawyer, I can't try to talk the youngster into doing anything shady. But you can. Me? Yes. You and Elk talk to the boy. We'll just wait him to go along with the masquerade and I'll make it worth your while. How worthwhile? I'll pay you five hundred dollars. For a swindle like that? Not in your life, Hector. Huh? Split your feet with us or forget the deal. My feet? And that's not all. What do you mean? The kid stands to inherit a big ranch when his uncle dies, doesn't he? Yes. If we work this right, we can cut ourselves in for a share of the cloverly. How do you figure that? The kid won't want anyone to know he's not Pete Perry once he's inherited the ranch. Is it so? By threatening to tell what we know, we'll have him right where we want him. We might end up living like cattle kings. Ah, Hector. Oh, you may. If you're talking into going along with the idea... You leave that to Elk and me. Ah, look. I want to be a McLeer in case the boy makes trouble. Don't worry. What about us? You've nothing to lose. You're probably dodging the laws, it is. Don't get any ideas about turning us in, Hector. You know me better than that bulldozer.  The law here knows nothing about that, my dear. I know about it. And I'll talk if you try it up across. You misunderstood me. I just want to be sure I'm covered when you talk to the boy. Leave me out of this deal until he agrees to pose as Pete Perry. Come on, Elk. Here, go talk to the kid. We'll continue our lone ranger adventure in just a moment. Boy, did you ever have one of those rough days at school? Maybe you didn't get a real high mark on a test, or score as many points as you wanted in a game. Well, that's the kind of a day a guy likes to get home and find his mother's baked a great big chocolate devil's food cake. A cake that says, I think you're swell no matter what. A perfect cake. The kind mom gets every time she uses Betty Crocker chocolate devil's food cake mix. And is it easy? All the good chocolatey fixings are right in the package. All she has to do is add water and two fresh eggs. For a cake that's so rich and homemade chocolatey good, you've got to have seconds, even thirds. Make sure there's lots of Betty Crocker chocolate devil's food cake mix in the cupboard at your house. For a perfect cake every time you bake. Cake after cake after cake. It's guaranteed perfect by Betty Crocker of General Mills Minneapolis. Now to continue, 18 year old Pete Jones listened thoughtfully to the proposition Elk and bogus unfolded. Great chance for an orphan like you, Pete. Clem Perry's an old man. When he dies, you'll inherit the Cloverleaf Ranch. Well, I'd like living on a ranch first street, but I don't want to go there unless Mr. Perry knows the truth. You'll be doing a lonesome old man a favor by going to the ranch and posing as a nephew. Ride a new shoe with us and you'll be putting yourself in line for a fine in here. It's a chance of a lifetime for a fella like you.  Without realizing how it happened, the redheaded orphan agreed to the plan the two killers outlined so glibly. Then bogus signaled Hector, who was waiting in the restaurant. He joined the group. It's all set Hector. The youngster's gone to mule shoe. Yes, glad to hear it. You'll not regret your decision young man. I hope not. Well, let's get going. When I reached mule shoe, bogus and Elk went to Hector Mose's office. While the scheming lawyer took Pete to the Cloverleaf Ranch, bogus left the lamp in the office. It was midnight before Hector returned. Yeah, here's Hector now. Oh, yes. Well, boys, it's all set. Now things go at the ranch. Yeah, fine. Clem welcomed Pete with open arms. Did he suspect anything was wrong? Nope. In fact, he's so pleased. He promised me a special fee for finding his long lost nephew. Oh, God. By the way, I told him I met two down and out cowpokes who need jobs. Cowpokes? Meaning you two. He's short-handed right now, so he told me to send you right out. You can bunk at the ranch tonight and go to work in the morning. Word. It'll be a first-rate hideout for you. Yeah.  The ranch is a 45-minute ride from town. Now, Clem said you should stop at the ranch house to see him before you head for the bunkhouse. A short time after bogus and Elk left town, the low ranger and Toto drew rain in the moonlit darkness near the skinning lawyer's lighted office. Clem, Snobby. Yes. Track show crooks go into office. Come out right away. Someone's still in the office. There's sign and window. Let me see. Sector Moses, attorney at law. Why crooks go there? Moses may not have known their killers. Oh. I wait here, Toto. Easy. It's gonna be cool. I want to ask you a few questions about those two. Who can that be? Now, listen, if you talk to me... Are you Hector Moses? Yes, but I... Don't be alarmed by my mask. What if you... If you were here to solicit my services as an attorney? I'm here for information. Yeah, step inside. No, hold on, Mr.... I'll detain you long. This is highly irregular. A couple of killers named Elkeber and Bogus Brown were here ahead of me. How did you know that? Toto and I have been following them for over a week. Toto. Yes, my Indian friend. During the 20 years I've spent in the West, I've... I've heard a lot about a mask man who travels with an Indian named Toto. In that case, you know my mask doesn't mean I'm an outlaw.  That's right. What's wrong? Nothing, sir. It's just that I never expected the pleasure of meeting you. I'm surprised and honored. Hector Moses' mealymouth flattery belied the panic in his heart. Having guessed his caller's identity, he knew Elke and Bogus were sure to be captured. He knew too that when they were behind bars, they would tell the law that Hector Moses was also wanted for murder. Thinking of the derringer and his desk drawer, Hector tried to think of a way to draw it and take the mask man by surprise. Of course. I didn't know they were wanted by the law. When they asked me for directions I gave them the information they wanted, I'll draw a map and show you exactly what route I think they're traveling. On the pretext of reaching for a pencil and paper, Hector opened the desk drawer, grasped the derringer and said... Ah, please, Mr.... What's the idea?  Yes. Why the gun? You're not going after Bogus and Elke? No. You're through hunting our hoots.  That's right. How do you expect to get away with it?  You broke into my office and I shot you in self-defense. You'll not have a chance to tell that story. I didn't come here alone. My Indian friend told us outside the window... Hector turned for a moment to cover the window. Come here, you! In that split second, the mask man gripped his mask. Drop the gun! Let's go! Officer, I'll break your arm! I said, drop the gun! Yes, yes, all right! That's better! Be here crying! Come in, Tutto! What happened? Hector Moses is trying to protect Bogus and Elke. Oh, I had to do it!   I'm gagging, Tutto! I'll leave you here to guard him while I follow Bogus and Elke. Following the instructions Hector had given them, Elke and Bogus had ridden directly to the Cloverleaf Ranch House. Clemen Pete were in the kitchen, where the 18-year-old orphan was eating cold turkey sandwiches and milk, standing inside the kitchen door with his hat in his hand. Elke explained. The rest of the house was dark, so we came to the back door, Mr. Perry. But I'm glad you did. Come in and help yourself to grub as you're hungry. Thanks, Mr. Perry. We are kind of hungry. Hey, it looks like you're enjoying a first-rate spread, Pete. I've eaten as much turkey as I can hold, Elke. This is the happiest day of my life. But, Dad read it. I sure wish my brother could have lived to see it. Oh, after Mr. Moses left, I found out I really am Pete Perry. What's that? It's a new name. That's right. There's no mistake about it. You're... You're sure of that, huh? Dad's sure. Pete was born in this house 18 years ago. When he was three, he and his mother started east to visit her folks. Hector Moses said the wagon train was ambushed. It was, but I never believed Pete was killed. And now that I've seen the birthmark on Pete's arm, I know he's my nephew. Birthmark? That's right. Pete had a clover leaf birthmark on his right upper arm. When he was three days old, his dad changed the brand of this spread from the JP to the clover leaf. It's been that way ever since. And the brand's just like the mark on Pete's arm. His dad had it done that way. Roll up your sleeve, Pete, and show them the mark. Sure. There. There it is. That's your identification. Does Hector know about this? Oh, that scheming shifter. Pete told me how he planned to fool me by getting a boy to pose as my nephew. It's a doggone good thing I never told him about the birthmark. So you told him all about the plan, Pete? Oh, sure I did. Oh, I know. Hey, what's the idea of the gun? Don't try reaching for yours. What's the idea, Bogus? You knew our plan. Oh, yes. We can get away with it now. But we can take whatever money's around here and clear out. Take the old man's gun, Elk. Don't try it. Hey, where's the window? The mask, man. Get him. As Bogus whirled to fire, a silver bullet smashed his gun. Seconds later, another bullet grazed Elk's hand. The killer dropped the weapon he had drawn. Clem Perry snatched his gun from its holster and covered the disarmed outlaws. Make a move and you'll stop land. Get them covered while I come inside. I'll do that, mister. Don't move you two or I'll shoot. Where in the world did you come from, mister? I've been following these killers for a week, Clem. A trail led to your kitchen door. You know this mask, man, Uncle Clem?  He and his engine pal helped your dad and me round up rustlers who were stealing our stock a few years ago. I was sorry to learn of your brother's death. Yeah, I lost my brother, but I found my nephew. Meet Pete, mister. How are you, Pete? Well, I'm fine now, but Bogus and Elk had me plenty word for a minute. According to my nephew, they're mixed up in a scheme with Hector Moses. Totals with Hector Moses now. If that double-teal annoy us squealed on us... He didn't have to. I know your records. He just matters we are. What do you mean? That skunks wanted for a 20-year-old murder in Chicago. If that's the case, he'll pay for his crime. How about tying their hands for the trip to town, Clem? Sure thing, mister. It'll be a play. After the Lone Ranger left with the prisoners, he planned to turn over to the sheriff in town. Pete shook his head. Oh, God, I don't understand. Don't understand what, Pete? A masked man helping round up rustlers, catching Bogus and Elk like that. You're not the first person to question his past, Pete. And you won't be the last. Why does he worry? Because he's the Lone Ranger. A copyrighted feature of the Lone Ranger Incorporated is produced by Trenville Campbell Muir Incorporated. The part of the Lone Ranger is played by Brace Beamer, your announcer, Fred Floyd. Listen to the Lone Ranger brought to you by special recording Mondays through Fridays at this same time.