a circle break it down to two parts rotate this guy about the z axis rotate this guy about the y axis or x axis combine them together. You see this is with regard to as much as drawing can do, but there is a very there is a very interesting philosophy behind this.  This was what my last lecture was going to be about it is still on if you guys are interested I will have to figure out a time it is got nothing to do with the drawing that we are learning, but since this course is about thinking and analyzing I thought it may be a nice idea for me to introduce to you those sea words that you can cogitate upon sea word cogitate upon, but that is for later not now. I will start by saying thank you this is my penultimate lecture 25th officially my last lecture is on Thursday this week. So, I will start by saying thank you to all who have helped all of us in making us you including me think and analyze together was the tutors was the tutors. So, I will start with civil engineering frankly I am not really sure how effective the slides have been on my web page and making you guys learn.  And the idea that I should be using animations in trying to explain things to you actually came from him. So, he used animations in his presentations I was very very impressed with and I thought maybe I will continue with that idea he was a five star instructor he is still a five star instructor. So, I am not really sure if I will still be able to you know compare myself with him, but the idea of using animations in slides making you guys follow and teach actually came from him. So, he deserves another round of applause. Professor Pune Dubos, Professor Tarangukta, Professor Rajesh Sinha, Professor Javed Malik, Ria George from Aeronautical we have Bhadwaj and we have Shantanu from Mechanical we have Professor N. N. Kishore sitting right there he is going to be teaching this course in the coming semester. And Professor Kishore if I can see you thank you very much your feedback was wonderful and your idea about the three point perspective was absolutely fantastic. So, I enjoyed it I learnt it thank you. Professor Ashish Dutta, Professor Vasanthal Sharma and Shakti Singhukta I do not have the names of all the teaching assistants at this time, but they were there in the foreground not here, but in the labs and they were there for great help to you. So, thank you to all the teaching assistants a person you have not seen or you may not have seen. So, he is the person who has been doing all this work in the background preparing models preparing autocad stuff and you know helping me with a lot of things Ashwini Kumar. So, we will start with the new topic developmental surfaces you know I am exhibiting a few solids here some pyramid well 1 2 3 4 5 6 hexagonal pyramid which is truncated by a plane. Another something very similar a skewed pyramid here a skewed tetrahedral here this is this is a hexagonal pyramid again regular hexagonal pyramid this is a very nice structure. So, which is again I think a hexagonal pyramid, but it has a cylindrical void and it has been truncated by a plane another something very similar. So, what I will do is I will pass these things on to you you can take a careful look and return them back to me do not take it to your host rooms, but what is very interesting about all these solids is they have been made by paper and importantly a single piece of paper a single piece of paper. Now, let me revert this question and ask you this how would you want to prepare this. So, that you get the solid how would you want to prepare that corresponding piece of paper. So, that you get this solid and this is what this lecture is about yeah pass it on do not do not keep the solid with you can you come from somewhere there anybody anybody you know where Northwest is you know where Northwest University is you want to anybody all right. So, here we go penultimate lecture you know I was asking God as to whether it has whether he has or he has many many examples on developments of solids and I came across this nice setup nice PDF from I guess I T Guwahati I well Arringham day is the name who taught this and I liked a few pictures in this and these are the pictures. So, what you see is a box or a block a cylinder a tetrahedron a cone a sphere and well this is a tetrahedron this is pretty much like a pyramid yeah and what you also see is that they may have been made by paper and how would you want to kind of unfold the paper. So, that you can lay it down flat on a plane. So, perhaps you can cut one of the edges you can make one cut over here you can make one cut over here another cut over here open up and lay down on a plane and once you fold them back you would get this keyboard for example, same thing with this lender you know.  So, essentially the idea is that all of these solids except for perhaps sphere they have been made by a single piece of paper and the question again is how would you want to prepare that piece of paper. So, that you can get the solids back all right. So, this is quite straight forward right the unfolding is quite straight forward the unfolding over here is quite straight forward. So, the method is the parallel line development you know lay it open cut and lay it open parallel line development this is pretty much like a radial line development pretty much like you know for example, when you cut the pyramid you open up. So, speak a sector not a rectangular piece of paper, but a sector same goes with the cone and with the tetrahedron you open up this piece of paper into triangles. So, just an example. So, example 1 2 3 4 and 5 they happen to be examples where you prepare your piece of paper in such a way that you get the exact solid back. This one is like an approximate example we will talk about that. So, certain developments are exact certain developments are approximate. So, except for this example all the other developments are exact this one is approximate and this one is this point seems to be important. So, for example, if you have a little wide here on the surface or may be perhaps a wide here or wide here or any feature when you are opening up that corresponding piece of paper what do you expect should that feature be in should the feature be in true dimensions or it should be in some sort of you know untrue dimensions. So, speak or projected dimensions what do you expect true dimensions everybody this is what the intent is. So, if you look at these surfaces all features on these surfaces they have to be in the true dimension and that is the point that you have to keep in mind when you are developing a solid or developing a surface true lens or true shapes. So, this is an octagonal pyramid let us try to lay it open on a plane we have given you have been given 3 views the front view the top view the right view well the question is to form an octagonal pyramid from a single piece of paper. So, we have to figure out how to make cuts on that single piece of paper now look at this length this horizontal length in green here what is the corresponding projection this guy here yeah. Now, what you have to say about this length is this length in true dimensions why is that because the corresponding projection is parallel to the hinge in one of the views right. So, this projection is parallel to the hinge in one of the views and therefore, this one is in true length. So, I will call it T L 1 look at this projection over here in red and look at the corresponding projection in the top view is this projection in true length again the same principle. So, this projection here is parallel to the hinge line in this view and therefore, this one should be in true length. So, I will call it T L 2 the entire thing that you have to keep in mind is to figure out or keep figuring out the true lengths is this information good enough for you to work with a paper on a plane is it information good enough for you to transfer the entire information that this surface has this solid has on a single piece of paper. Yes all right let us see. So, you have this true length T L 1 all right taking one of the ends of T L 1 as the center and the radius as T L 1 draw an arc and taking T L 2 as dimensions with this vertex as center draw in fact, cut the previous arc with the new arc and keep cutting these arcs how many times are going to be cutting 8 or 9 keep cutting and all these lengths they are going to be what all these lengths they are going to be what T L 2. So, there has to be they have to be how many cuts. So, 1 2 3 4 5 6 7 8 corresponding to the number of vertices that you see in the top view there yeah and of course, join these points with the center. So, what you have is something very simple. So, if you make this sector out of a paper and fold it at these source peak lines you will get the solid back right pretty simple. Let us make our life our lives a little more complicated what if the pyramid is truncated what if I have a plane that is cutting the pyramid then what the base will be the same. So, we will have to be working with this entire picture over here just that we have to be a little worried about the intersection points between the optical and the pyramid and this plane yeah. So, let us try to figure the intersection points first you need to know where the intersection points are where are they going to be lying where are the intersection points going to be lying well I mean you have these edges right. So, the intersection points they have to be lying on a plane this plane and they also have to be lying on these corresponding edges all you need to do is like project those intersection points in the top view and the right side view. So, keep projecting. So, this one lies on edge number 6 this one lies on edge number 5 5 and 7 I know 5 perhaps. So, keep projecting and you essentially will be figuring out these intersection points in the top view all except for two of them those intersection points which will be lying on the vertical edge over here number 4 and the edge behind it number 8. So, 4 well 4 is behind. So, number 8 which is facing you and number 4 which is behind this how do you figure those points in section you can make this projection perhaps. So, if you can make this projection this is number 8 this is number 4 you will be getting the corresponding intersection point over here and over here project them backwards and on to the top view and get those intersection points or otherwise if you want to be a little more tedious maybe make any measurement make the hinge line make the same measurement over there make the hinge line you know and something that you have learnt in your lines and planes thing. So, measure that distance transfer that distance over here and measure this distance transfer this distance over there. So, these are your two intersection points and the second of course, was quite right. So, you can directly project those intersection points from the profile view and transfer them on to the front view. So, these are your intersection points I am not labeling them. So, labeling is something that you will have to do later and join those intersection points to get this contour. Now, when I say that the pyramid is truncated I essentially mean that this part of this pyramid is taken off and it is replaced by a plane covering the top portion of the pyramid. So, this is the top lid of this pyramid what is the bottom lid what is the bottom lid the octagonal face 1 2 3 4 5 6 7 at the octagonal face. So, you can as well project these intersection points on to the profile view get them on the respective edges of the octagonal pyramid and complete the contour. Is this contour in true shape is this contour in true shape what did I say. So, if you have to transfer everything in such a way that you have to lay down those features on a plane you have to get the corresponding things in the true shape now well. So, this is the actual truncated pyramid that you see the actual truncated pyramid that you would see the top portion of the pyramid is gone this is the top lid of the pyramid which is covered. So, the pyramid is not open and of course, the bottom face of the pyramid is covered by that octagonal face alright always label the points. So, I made a mistake of not labeling the points, but you should be always labeling these intersection points every point that you are working with in your intersection and development exercise always label them. So, now I am labeling those points a b c d e correspondingly a over here the two b's a b c d e would go you know from here to here a b c d e would come from here to here alright. So, always label your intersection points alright. So, I am done pretty much now I need to get this contour in true shape yeah. So, something that I already told you it always has to be the true length and true shapes that need to be transferred on to the piece of paper and we need to find them as a part of the exercise and development. Now, let us worry about this little later let us worry about this little later let us worry about the rest of the edges look at this edge this edge would lie on which edge of the octagonal pyramid 6 or 2 what is the corresponding projection what is the corresponding projection in the front view this one. So, this is h number 2 is this in true length. So, if this is in true length it should be possible for you to transfer that length over here there is there any two that you are seeing here no that is fine how about this entire thing this is on which edge number 6 the corresponding projection the corresponding projection here is this in true length you need to transfer that on to h number 6 there. So, the intersection point over here would be a and the intersection point over here would be e always label let us look at this edge in section point c all right. So, where is it can you identify the corresponding projection in the profile view c would be on 8 and it would also be on 4. So, 4 and 8 4 and 8 yeah is this in true length all right. So, it should be on 8 is this also in true length great. So, it should be on 4 wonderful how about the lens on edges number 1 7 5 and 3 lens on edges number 1 7 5 and 3. So, 5 7 are here 1 3 are here. So, if you are looking at the corresponding edge over here and projection there. So, this is slant and so is this. So, is it possible for you to extract the true dimensions directly from these 2 or from the information given it is possible no algebra no fractions just geometry no root 2 root 3 root 4 root 5 no pi just geometry I will come I will come there I will come there all right. So, these are intersection points c all right what about the rest you are trying to address that. So, look at look at this projection and try to figure the corresponding projection in the top view b 7 b 7 is this one b 5 is this one yeah I will do a little trick. So, what I will do is I will displace the line in both views I will displace the line in both views I will displace the line in such a way that 1 of the vertices of this line the true line lies on vertex number 6 you follow that you follow that just rigid body displacement. I have kept the lens of these corresponding projections the same just rigid body displacement. And just in case if you remember the method of rotation to figure out the true length precisely if you do that if you rotate this if you rotate this then what will happen to this projection you take a projection from this point here down this height would remain the same and eventually this guy would come here just using the method of rotation yeah. So, what you have done so let me let me go back. So, you have identified these projections made rigid body displacement you know shifted the line such that 1 of the vertices of the line lies on number 6 h number 6 follow the method of rotation when you do that this guy gets rotated to lie on this land surface yeah. Now, you have the true length you have the true length for what this guy here b 7 and b 5 as well yeah take that true length and perhaps transfer there likewise I can do the same thing for this identify this projection the corresponding projection is 1 d and on top it is 3 d not 3 dimensions but 3 d shift follow the method of rotation this guy gets rotated to lie on this .landage yeah this is just for no this is just for you to understand one method that I am going to be talking about now it is going to be much simpler. So, what you realize is whatever lens you have here whatever lens you have here if you just project them in such a way that they all happen to be on the slant edge of this pyramid essentially you are going to be getting the true lens over here this is where I am coming to realize that to get the true lens you need to project the intersection points on to the extreme right or left edge of this solid yeah. So, this point is lying on this edge this point projected over here from here to here you will get the true length this point again projected on to the extreme left get the true length likewise for d and point is already there right. So, if you project all these intersection points so that they lie either on this edge or this edge the corresponding lens they will all be in true length that is a much simpler method. So, these are the corresponding projections either on the left or on the right. So, once you have these projections transfer them on to that piece of paper draw the radii or draw the arcs if you want to you do not have to, but if you want to draw complete arcs, but what is of interest to us are these edges edge number 1, number 7, number 5 and number 3 this is where we want the true lens to be yeah alright. So, let us work with edge number 1 this length is what this length is this point getting projected over here. So, it is this length right it is on edge number 1. So, one here and the other one here and so is the case with edge number 3 also yeah. So, this is 1 and this is 3. So, 3 of these lens they get transferred how about number 5 and number 7 be projected over here. So, it is this point here now alright. So, of course, label and this is the true length on edge number 5 and this is true length on edge number 7 same are you with me all of you by the way my T cup how many of you think that this is actually a torus a torus torus torus this is actually a torus is that true or not have you ever played ring that ring is a torus do you remember playing ring when you were kids or even now that is a torus. So, this cup is actually that ring do you believe me do you believe me you do not believe me louder do you believe me alright, but that is true this is actually a torus anyhow you know this something called topology topology science of connectivity or discipline of connectivity. So, you learn things about connectivity theory about connectivity in there. So, many of the guys in electrical computer science they will be learning about networking network that is connectivity in a way. So, you know in your third year in your fourth year when you learn about topology when you learn about homeomorphism that is where you will actually figure that this is a torus, but that is too late for you now this time at this time it is engineering drawing. So, once you have transferred once you have transferred all those true lengths on the respective edges and labeled the intersection points properly alright. So, I will make a little change. So, what I will do is I will change the color I will change the color of these lines and also will I change the representation of these lines instead of denoting these lines as solid lines and denoting them using hinge lines why why because that is. So, those are the locations where I am creating folds those are the locations where I am creating folds to get the solid back to represent that the paper is bent or folded at these edges and then of course, close the contours. So, if you take a piece of paper cut it in this fashion fold it at the respective locations that are denoted over there you will get that solid back with the difference with the difference the bottom plane and the top lead they will not be there. So, it is going to be an open truncated pyramid let us walk on that again. So, you are going to be working with graphite pencil. So, your drawing is going to be gray not colorful to get the top lead once again if I may remind you that you have to get two features and transfer them on to the paper plane right. So, you need to determine the true shape of plane a b c d e d c b a. So, this plane right here you know how to get the true shape of a plane you see the edge view of this plane you see the edge view of this plane which view is it in which view is it in one view draw a hinge line shoot projectors perpendicular to that hinge line transfer distances transfer distances you know that. So, I am not going to be going through it once again transfer distances and then get the true shape of that top lead. So, where is this lead going to be of course, you have to label these points also. So, where is this lead going to be somewhere over here or somewhere over there where is this lead going to be well it is going to be somewhere over here yeah let us worry about that in a while alright. So, by convention by convention this is what we do we start developing we start developing the surface in such a way that we start with the shortest edge on the surface. So, if you look at these edges if you look at these edges and if you figure out the lengths of these edges you will find that this would be the shortest in length and you start with that. So, the edge you start with you have to end with the same edge because you have to glue the corresponding edges. So, this is what I have done. So, instead of starting with edge number 1 I figured that edge number 2 was the smallest 2 e was the smallest. So, I started and ended with edge number 2 e conventionally start development with the smallest edge and end with the same alright. So, rest of the information is taken away what is important is the lateral surface of the solid the top lead of the solid and the bottom face of the solid. This one constitutes the lateral bounding surface of the solid constitutes the top bounding surface of the top lead the bottom face that is of course, in true shape what you need to do is rotate these guys and align them appropriately on to the main developed thing. So, notice where I am aligning this face over here. So, notice a b and looks like I am aligning the 2 a bs together right likewise rotate the top face and align the corresponding edges appropriately. So, I align 1 a together. So, I align this guy with this guy right now that is a single cut that you need to make to get the entire solid back. A single cut you need to make on a piece of paper to get the entire solid back this is what development is. If you cut this paper folded and glue appropriately you will get the bounded truncated pyramid back is the location of these 2 planes important are the locations of these 2 leads important these 2 faces important. Can you locate them anywhere theoretically can you locate them anywhere with the location of the top and bottom bounding surface make any difference. So, for example, if I choose to locate the bottom face there and the top face here should be should be do not forget to introduce the scenes those are little extra things that you would want to provide over here. So, that when you fold the solid back or when you fold the solid you should be able to provide enough paper to be able to glue the solid back not like. So, these are the scenes right. So, if you fold this thing over here if you fold this thing back you know. So, you are going to be gluing at these little pieces of paper over here and over here now figure what the problem is figure what the problem is. So, if you allow for a little extension at this location this is interfering with this lateral develop laterally developed surface. This location here. So, you got to leave sufficient gap or space for the scenes. So, something that you will probably want to keep in mind yeah or you want to say that this is this to be represented by technically all right. So, if I may repeat what is the name. So, what is asking is whether this line is to be represented you using the hinge line convention with the same logic that well we are also folding we are also making a fold here all right. Any other question where you with me throughout where you with me throughout where you with me throughout out of the blue yeah all right. Can I have my solids back can I have my solids back please should not there be a true E here there should be true truncated top view yeah. So, do you agree wait do you agree that the important thing for us is to show the true shape of the open lid of the top lid it is not really matter how you get it. So, long as you get it any other question


Hello everyone. Welcome to the session No Frameworks. How can we take agile back by Scott Ambler? Without any further ado, I will like Scott to take it away. So I'm Scott Ambler. I'm the co-creator of the Dispensational Toolkit. I'm going to talk a little bit about that today. I'm also the thought leader behind agile modeling and agile data. So I've worked in the rational unified process, in object-oriented software patterns. So I've been working and have either worked with or helped to create frameworks for close to 25 years. So I know a little bit about the topic and I'm going to share some ideas with you. So I'm going to start by talking about what a framework is, and then I'm going to explore what some of the challenges are. Then I'm going to actually talk about what really works, and I think you're going to find that very interesting. Then I'll talk a little bit about how we can take agile back from the framework folks. So what's a framework? So there's many possible definitions. I like to take a look at frameworks from two points of view, a prescriptive framework that describes in detail what to do, and usually has one way of working. Then of course, there's flexible frameworks as well. One of the challenges that I see is that many of the frameworks present themselves as flexible, and in some ways that they are, but they don't really tell you how to actually flex. It's a lot of marketing rhetoric. So they tend to be prescriptive, but they claim to be flexible. We'll explore some of the implications of that in a few minutes. So what are some of the challenges that we see in practice with frameworks? So when I talk about frameworks, I'm talking of things like Scrum and Safe and Less and others, Nexus, Scrum at scale, and they're all good. They all have some value. Please don't get me wrong. I'll have some value, but they also have some challenges. So let's focus on the challenges begin with. So frameworks tend to define rules and belief systems, but what happens if those rules aren't applicable? So what happens when you adopt a framework that has a mindset, has an approach that doesn't really fit for your situation? And or maybe the framework is a good fit for you now, but then your situation changes. So for example, last spring, we all went through some pretty major changes when COVID hit, and it was interesting that we shifted from a lot of agile coaches telling us that you can't do agile unless you're co-located and you certainly can't do agile remotely, and now pretty much everybody's doing agile remotely. So reality hits sometimes. So this is some of the challenges with frameworks is that many of the frameworks left it up to you to figure this remote stuff out. The frameworks solve a specific problem. So Scrum solves a specific problem, Safe solves a specific problem, which is great. But if you don't actually have that problem, then even though the framework might be really good, it just isn't very good for you. So for example, in this picture, we see a hammer, hammers solve specific problems. But if I have to fix a glass, so for example, I have a crack in the windshield of my car right now, a hammer is not going to help me fix that. It might help me knock the broken glass out, but it certainly won't fix the real problem. And the real question is what happens after you solve the problem? So once you successfully adopt Scrum or successfully adopt Safe, you solve the problem. Where do you go from there? So the frameworks box you in. The language of the framework limits your ability to discover other ideas. This is a serious problem with Scrum, actually. Even though the Scrum terminology is interesting, it puts you in a certain mindset. And then if you only know Scrum, then it becomes very difficult for you to find techniques that are outside of Scrum or that other Scrum people aren't talking about. I ran into a team suffering from this very problem a few days ago and they were asking me, so how do you, we're solving, we've got this problem that we're Scrum team, we've got this problem. And what do we do? And I said, why the heck did you Google it? There's probably hundreds if not thousands of articles about how I saw that problem. I said, we did, but we couldn't find anything. I said, really? Because I typed away and suddenly up comes all these articles and oh, we never thought to look on that term. Yeah, that's because it's not a Scrum term. So this is the challenge, the language is limiting. And sometimes the frameworks present everything they do is a best practice. This is the one official way of doing things. But what happens if the best practices really aren't best? One of the things that I do is I analyze practices and I don't believe in the term best practice at all. I have never actually found a best practice. I've been looking for over 30 years, I've never found one because all practices have advantages and disadvantages. They work well in some situations and not so well in others. So you really need to think, adopt the right practice in the right situation. So these best practices, they might be pretty good but they might not be best for your situation and they might not be best at all. But they're often pitched as being best because that might be the best that they want to sell you. And sometimes the frameworks are oversold. We hear lots of interesting claims about how much better things will be if you can only adopt a certain framework. But what happens if your team is already pretty good? I've seen some teams literally become 10 times more productive by adopting when they made some changes. It's not because they adopted a certain framework, it's just because they changed and they were doing so poorly that anything would have helped them. So we need to be realistic. And I've been in other situations where we've achieved small gains by adopting a certain framework and that's okay. But the reason why is because the team was already doing pretty well and the framework solved a few problems that the team had. And what do you do when your problems really aren't so easy to solve and that you really do need to rethink the way that you're working? So the flexible frameworks require to use judgment and to make decisions, which is probably pretty good. But what do you do when you don't know what your options are? That team was talking about a few minutes ago when they didn't know that there was existing solutions to the problem they had and they didn't even know how to find them. It's pretty hard when you, if you can't find these solutions. And then how do you compare the options? Like, even if you do know what to look for and find a bunch of ideas, how do you compare them? So the fundamental challenges, these frameworks aren't magic. They have some great ideas. Please don't get me wrong. They've got some great ideas in them, but they're not magic.  And we all run into these problems that we might wanna adopt a certain framework because it makes sense and because it could possibly help. But then the rest of the organization and particularly our leadership isn't ready. Sometimes our staff isn't sufficiently skilled. So we will adopt a straightforward framework, but for a programming team and we don't have skills in automated regression testing, then we're really gonna struggle for a while. So a fundamental question that we should be asking ourselves is how effective are frameworks in practice? So the people who produce frameworks and who sell them to you and market them to you have claims. There's case studies that tell you how wonderful they are and they'll make claims and you'll hear claims along the lines that you can do twice to the amount of work in half the time. And these are wonderful claims, but are they actually true in practice? And the observation I wanna make is that you can't trust the people that are trying to sell you something and you need to go elsewhere. You'll get third-party advice. So the question is, well, where can we go? So let's make an assumption. So let's assume that you're adopting a framework, a method or a framework, whatever terminology you wanna use and let's assume you do it well. Let's assume you're actually successful, what actually happens? So these sorts of adoptions follow what's known as the S-curve.  So you have to get some training and you get some coaching and your effectiveness goes down for a while because you're learning. This is normal, this is a normal thing. Your effectiveness goes down for a bit of time, but then you get your act together and you think start to get better and you improve and things get better than they were before. But then the framework solves the problem. So earlier I was talking about how a framework will address a specific type of problem. So once you solve that problem through the successful adoption of a framework, it doesn't really have much more to help you with, right? There's a lot of hand-waving, a lot of claims get made and it usually boils down to hire some expensive coaches to take you further. But for the most part, they have nothing to say, right? Other than, yes, of course it's possible. It's the art of the possible. I'm sure you've heard that. So the question becomes now, how on average, where's this peak? How much better did we get? Because we're gonna assume things worked out well that things get better and that's a fair assumption. So like I say, we can't trust the purveyors, the frameworks, who can we trust? Well, there's a gentleman by the name of Dr. Don Riefer and he earned his PhD studying the effectiveness of Agile and he's made a business, turned it into a business. He earned his PhD a few years ago now and he's turned it into a business where he sells the research and he consults but the interesting thing, the important thing about Dr. Riefer is he's not wedded to any of these methods. So he's not a safe guy, he's not a less guy, he's not a dispensable guy, not a scrum guy. He's a researcher and he's looked at a lot of teams around the world. The state is a bit at a date, his work has actually, I think he's over 2,000 teams now but what's interesting is that on average and when some organizations do better and some organizations do worse but on average he's seen improvements along these lines. It's still positive, it's still good but it's nowhere near what some of the claims are. So we need to take this with a grain of salt. So yes, adopting a framework can help, on average it does help but perhaps nowhere near as much has been promised unless of course you're really messed up and then yes, you're probably gonna see greater improvements than if you were doing a reason but well. So what works in practice? So I'm a firm believer in looking at the successful organizations and asking the question, who's doing really well? Who do we admire, what companies do we admire? And I work with executives and I run this exercise with executives sometimes where I basically ask them to identify your competitors and identify the firms that you currently compete against and the firms that you think might be getting into your marketplace.  And then depending on the number of executives in the room there could be 40, 50, 60, sometimes even 70 or 80 stickies on the wall after five minutes of brainstorming. Then I go to them and I say, okay fine, now what I want you to do is I want you to arrange these stickies into two categories. The first category is the organizations that you're not worried about competing against. The organizations that don't scare you. The second category is what organizations keep you up at night? Who really worries you? Who are you afraid of competing against? Who do you think is gonna outcompete you basically? So they move the stickies around. And then we look at the wall and then I ask the question. So of these two categories, which groups do you think are adopting agile frameworks and which groups do you think take responsibility for their own process? And it's interesting, the organizations that they're afraid to compete against, which is usually the Amazons, the Googles, the eBay's of the world, or the FinTechs for the financial organizations. They're the ones that have figured out how to do their own, they own their process. They evolve their process and they do continuous improvement over time. The organizations they're typically not worried about almost always they're traditional competitors, which look a lot like them are almost always the ones they believe are adopting frameworks. So my advice would be, let's adopt what the Apex Predators are doing, these, the Googles and the Amazons of the world. And what they do is they follow a link technique called Kaizen, they do continuous improvement. And the way this method works, this strategy works, is shown here. And some people will do, call this UDA or PDCA. But the idea is that they have an issue, they have some sort of problem or they have something they want to improve. Then they identify, well, okay, so how can we potentially improve this problem? They also identify, how are we gonna measure whether or not this worked for us? Then they try out one or more potential new ways of working. And then, and they give it enough time to potentially succeed or to fail.  And if it worked out well, they adopt it. If it didn't work out well, they abandoned it. And then if they're polite, and this is sort of my addition, they share their learnings with others. They share at least with the rest of the organization. And then of course, they rinse and repeat. They keep doing this. So they improve in small steps. This is a total quality management technique from at least the 1980s. And it's called Kaizen, improving in small steps. Many of you are probably familiar with it. And if you read anything about the Amazon case studies, the Google case studies, or eBay, this is the technique that they followed to get good. And they've been doing this for so long, this is why they're so good. Because they've been on this path for 15, 20 years now. And they improve in small steps over time. And then over time, they just get really, really scary. This is why they're so hyper competitive. So when you take this sort of an approach, you get a process improvement curve that looks like this. You just keep improving. Now to be fair, this is a high level overview. This line is really dashed, right? Because sometimes your experiments fail, so your effectiveness goes down for a bit, but then you go back up again. But over time, your overall effectiveness on average improves. And it keeps on improving. This is what we're seeing in Amazon. This is what we're seeing in Google and many other organizations that have been doing this. They just keep getting better one small step at a time. So can we do better or can we do a lot better? And a couple of interesting observations here is the Amazons and eBay's of the world are on the leading edge. So they often have, they really do create new techniques and they figure things out. I'm sure you've been to conferences and you've read articles and you've heard about all these really awesome techniques and these awesome things that they're doing. The DevOps community, for example, has a lot of techniques coming out of these firms. So they really are leading the way. Chances are pretty good, that's not your firm. Chances are pretty good, you're reasonably behind and can catch up. So because you're behind, this can in fact be a bit of an advantage because you can leverage the learnings of other organizations. So let's take a look at the guide to continuous improvement again. So where could we improve continuous improvement? So the thing is that third step, when you try out solutions, this is where some of the problem is because the problem is some of your experiments fail. And yes, the consultants will tell you, well, it's not really a failure, we're learning something, so this is good. Well, I'm gonna tell you, I'm gonna be honest with you. For the people paying the bill for these failures, they don't wanna hear this, right? They've heard the word failure and yeah, some things fail, that's fine, but when you fail over and over and over again, suddenly it gets pretty expensive pretty quickly and sometimes people will also tell you, well, we're really failing fast. And to be fair, that's far better than failing slowly, but it's still a failure. So can we do better? So failing fast is definitely fine, way better than failing slowly, but succeeding early is far better than that. So how do we do that? Well, if we look at the second step, if we can get better at identifying a potential new technique to experiment with, if we can identify something that's most likely gonna work for the situation that we face, we will fail less often, we'll succeed more often. So the side effect of that is that we have fewer failures, more successes, and that results in faster and less expensive improvement. So how do we do that? Well, there's two ways. If we have access to an experienced agile coach who has seen these sorts of problems before and can convince you to do the improvement, then that's pretty good. Problem is you might not have access to such coaches and these coaches are actually few and far between. A lot of people out there claiming to be a coach, but they might not have the experience to actually help you solve your problems. They might be really good at working on certain frameworks, but once you get past the framework, you are now in territory where they've never gone before, either. Another approach, which can be combined with coaching, and frankly, a coach with a good knowledge base is a very good thing, is if you have access to a process knowledge base, like Dispen Agile, I'm gonna walk you through an example of this in a minute, then you can actually leverage the learnings of others.  So even though you're unique, the fact is is that other teams before you, more likely thousands of teams before you, have faced similar problems and have solved that problem. So if you can get access to their learnings, if you can get access to the techniques they came up with to solve that problem, then you can also adopt those techniques to solve the problem, hopefully. So where continuous improvement has a improvement curve like this, which is very good, guided continuous improvement has a steeper improvement curve, I should say, because there's fewer failures, more successes leads to faster improvement. It's as simple as that. So let's work through an example. So we have a challenge. And our challenge is we're working on a solution and we brought this solution to market and we understand our existing customers, but we're struggling to attract new customers. So we don't know what features, potential new customers would like. So we're having challenges exploring scope. So when we're exploring scope, and exploring the scope of what you're building, there's a little more to it than just writing up user stories and epics and good stuff like that. So when we're exploring scope, we should be asking basic questions. So how will people use their solution? What information will we collect? What data are we collecting? What processes does it follow? And other questions, how will we interact with it? Are there any, how are we gonna document these requirements? How will we handle changing requirements? So for example, in Scrum, they talk about a product backlog. That's one way of doing it. There's others. There's several other ways that we can manage our evolving requirements and some of which are better than product backlogs. But anyways, I'll just leave that out there for you. So here's our challenge. So we don't understand how new customers could, would want to work with our system. We don't know how to identify features that will attract them to our system, our solution. So the problem is, is we don't know how to explore, we're struggling to explore usage. How will they use our system to get value? So we look at what's called a goal diagram and I'll show you an example of this in a minute. So we've got a problem with exploring usage. So we look at the goal diagram and we realize, well, there's different ways of doing explore usage. We could write up epics or outcomes or personas or stories or other techniques. We have options. Each of these options have advantages. So epics, there's certain advantages to epics and there's certain disadvantages to epics as well. They work well in some situations and not so well in others. And the same thing for these other techniques as well. So chances are pretty good because we're struggling to understand what potential new customers want, we need to, so right now our team is probably writing, it is writing up epics and stories and it's not getting the job done. So we come and we look at this at this list and we realize, hey, there's other techniques here. You know, if I knew something about them, maybe I could adopt them. So if you have an experienced coach, right away the experienced coach is probably gonna tell you, you know, just the fact that we had problems exploring usage, that might clue into the fact that, hey, personas might be the way to go. If they're not experienced with personas because maybe they're merely a scrum coach, then they wouldn't know that. So we would then go and look at this list and, oh, you know, maybe, and if somebody on the team had some greater experience, maybe they'd clue into, oh yeah, personas, I remember personas, we did that years ago and it worked out really well, we should try this. If we have no experience at all with any of these techniques other than the ones we've been trained in, then we would have to go look them up in the toolkit itself. Sometimes, so this is an example of what we call an unordered list. All these techniques are interesting, they all have advantages and disadvantages, but I can't tell you that one technique is better than another. Sometimes, that's not the case, sometimes the techniques are ordered. So for example, when we talk about the level of detail, how much detail should we capture when we write up these requirements? Having a brief overview tends to be, you know, like writing up an index card or writing up something in JIRA tends to be good enough. Having a light specification, so maybe having a screen sketch associated with the user story can be sufficient. Writing of a detailed specification is also an option and then writing no documentation at all is also an option. So when we see lists like this with an arrow beside them, what we're indicating is that the strategy towards the top of the list are generally more effective than the strategies towards the bottom of the list. Now, your mileage may vary and your situation may be strange and require a certain way of working and that's okay, that's your situation. But in general, the strategies towards the top of the list generally better than the others. When there's no arrow, I can't tell you that technique X is better than technique Y. So this is an example of what we call a goal diagram, process goal diagram. So this is a simple map of how do we find out information about exploring scope? So the idea here is that the way you read this is when we explore scope, we have certain intents or certain process decisions that we need to make. So how are we gonna go about exploring usage? How are we gonna go about exploring the domain, the data? How are we gonna go about exploring the process and so on? To the right of each of these issues, each of these intents are options. And we're not saying we've identified all possible options in the known universe, but we are saying that we've identified a pretty darn good list and it's evolving over time. Enough to let you know that you've got choices which right away gets you out of the mindset of many of these frameworks that often only tell you about one or two techniques and present them as best practices. Because once again, there is no such thing as a best practice. All practices are contextual in nature. They might work well for you in some situations and not so well in others. This is why you need to experiment with them to see does this work for me in the situation that I face. And then, so try it out and if it works well, adopt it. If it doesn't work well, don't adopt it. And the only way you can make better decisions is by knowing what the trade-offs are. So the trade-offs are described, so in behind this diagram are tables. So there's descriptions of what these techniques are. There's references to greater detail. If you want to find out all there is to know what UML activity diagrams, there's links. And there's also the trade-offs. So what's the advantage of these techniques? What's the disadvantages? When would you want to use it? When would you not want to use each technique? So that way you can make better decisions because the challenge is your situation is unique. I don't know what your situation is. So me telling you something is the best practice is deceptive because it might be a very good practice but it might not be a good practice for you. You need to make those decisions. So don't stop blindly doing what you're told because that's what the framework tells you is the best practice. And instead, start making choices that are appropriate for your environment. And this is what the scary organizations, the Amazons and the eBay's the world do. They experiment, they learn, they improve and then they rinse and repeat. So how can we take Agile back? How can we dig our way out of framework jail? Oh, I should have also mentioned that earlier when I was showing you the S-curve, Evar Gackenstein coined the term method jail or framework prisons. I just wanted to give him credit where credit is due. So the first thing, my first piece of advice is to respect yourself. Respect is one of the fundamental concepts in Agile and we should respect others but we also need to respect ourselves. We should respect ourselves enough to realize that we can in fact think for ourselves. We can choose to own our own process. We can choose our own way of working and we can learn and improve and get better over time. So first step is to respect ourselves and to realize we are intelligent people, we can make decisions. I would argue that we need to go back to fundamentals. So Agile was originally about describing what works for software development. We can also do the same thing at the organizational level. So as we all know, Agile is far more than just software development and we can go back. We should really be going back to figuring out what works well in the situation that we face. I would also advise to be humble. We can all learn, we can all improve, we can all get better. We should also be humble and recognize that even though we're unique and in a unique situation, other people have solved these problems before, or similar problems before at least, we can learn from that. So if we're humble, we know enough to say, hey, I don't need to reinvent the wheel. I don't need to invent a new technique. When chances are pretty darn good, somebody else has already invented one that's been out there for a while and been proven in practice. So I should at least look at, my first step should be let's go look to see somebody else has already solved this problem and then let's reuse that technique and then adjust it accordingly. But be humble enough to realize that other people have solved whatever challenge you're currently facing, chances are other people have already solved something very similar. We want to be agnostic. We really need to think outside of the box. And earlier I was talking about how the terminology of framework can really limit your thinking. And it's really true. It's interesting. I'll run workshops with people and I will start teaching in new terms and start getting to the question that these terms that they think are normal. But because some of these terms have been around for 25 or 30 years now, we've forgotten the previous terminology. We've forgotten and we've lost effect because of the inappropriate terminology, we have lost just a wealth of information and techniques. Well, we haven't really lost, they're still there but we just can't find them. So by being agnostic by realizing that there's different techniques and different strategies and that we can combine them from different sources, this is absolutely critical to our success. So be very careful about the terminology that you use. And even some of the agnostic stuff is not as agnostic as they think when you start looking at the terminology. But anyways, be as agnostic as you can. And I'm just gonna give you a hint. If you're still using terms like Sprint or Scrum Master, you're not agnostic. But anyways, and those are fine terms, but not agnostic. There are no best practices. Without a doubt, I've mentioned this many times. I'm not gonna go into details on that one but there are no best practices. And like I said, I've been looking for over three decades now. I hope to find a best practice at some point. I find practices, everybody, I run into people pitching best practices all the time. I've never actually seen one that's best but maybe I will one day, who knows? So my advice is start where you are. So what are you currently doing if you're currently a more traditional organization or you're currently doing Scrum or Safe or less? Great, that's what you're doing, good for you. So what are your current wow is? Chances are pretty good, you've plateaued and you don't know why and that's okay. So you can adopt these dispensational guided continuous improvement techniques right away. You can start, you can break out a method gel right now if you choose to. So start where you are. Do the best that you can in the situation that you face and your professionals, I'm sure you're doing that. But then improve in place. Choose to get better at what you're currently doing. Break out a method gel, break out a framework gel. So how do you do this? Observe and try to observe deeply and think. Think about this, observe, recognize the situation that you're in, think about it and then experiment and then of course repeat. And this is what these validated learning techniques, these guided continuous improvement, continuous improvement strategies are all about. We observe, we understand, hey, you've got a problem. We think about how we can potentially solve it and then we experiment with some techniques and observe how well they work and then we keep going. Optimize the whole. Look at the bigger picture. A very serious challenge is over-specialization. We really do need to look at the bigger picture and look beyond the team. One of the great things about Agile is it focuses on teams. One of this very serious problems about Agile is that it focuses on teams. Your team operates within a larger organization within a larger value stream, more than likely. And you need to optimize all the flow that you're involved with, not just locally optimize what you're doing because a bunch of local optimizations can tend to add up to a mess. So just to summarize, we can do this. We can take Agile back. We can get back to the heart of what Agile was all about years ago, where it really was about owning your own process, about learning how to get better, about improving, about experimenting, about doing better. So thank you very much. And I'm happy to go to questions now. I'm gonna dive out of my presentation and dive into the Q&A chat box. Yes, so one question, first question, from Vismane. Most frameworks have inbuilt continuous improvement mechanisms. They do and they don't. So here's an observation for you. Do you really think a framework will tell you how to abandon the framework? Does Scrum have improvement mechanisms in it to abandon Scrum and say move on to Kanban? Does Safe have mechanisms in place to move beyond Safe? No. Yeah, there's local improvement strategies, but this idea of going beyond what the framework wants you to do, there might be a little marketing, but they don't really give you techniques to do that. So do Kaizen methods outperform a comparison? Yes, they do. Yes, they do. This was my point with the Apex Predators, the Amazons, the Ebays, and the Googles of the world. Do you think they're doing Agile frameworks? No, they're not. They might be adopting ideas from them, like why wouldn't you, right?  That would kill them. They wouldn't be competitive. So another question, should we focus on having no frameworks? Well, like I said, start where you are. There's nothing wrong with these frameworks. Do you have value? Don't get me wrong, they really do. And you gotta start somewhere and very often adopting a framework can be your first improvement strategy, right? Let's adopt that framework, solve whatever problem that framework solves, improve, get better, but then realize, oh, now we need to do something else because we plateaued, we're now in framework gel. So then continue on. And the next solution might be, well, let's take another step and adopt another framework. Or it might be, let's actually become a learning organization and adopt a technique like Guided Continuous Improvement that is a fundamental strategy that enables you to improve forever. From Laxmana, and I hope I pronounced that right, or close, frameworks introduce so many practices. When we want to go back to basic, what are the primary metrics we can follow to learn to validate? Oh, that's a wonderful question. Well, there's so many metrics, that's right. So completely avoid articles like the best 10 metrics or the most important 10 metrics that you can adopt for agile. There might be nice metrics, but they might not be nice for you. So there's techniques such as Guided Continuous, I'm sorry, OKR, Objectives and Key Results, GQM, Goal Question Metric, and KPIs, Key Process Improvement. And the basic idea is that there's similar techniques, they're all slightly different strategies, but the same basic flavor. And the idea is start by asking yourself, what do we want to improve? So if you want to improve on the quality of your work, then you'll collect quality metrics. If you want to improve on customer satisfaction, then you'll adopt metrics around to measure customer satisfaction. If you want to improve both, well, then you would collect metrics for both of those topics. So the thing is, is what's important to you? So different teams, different organizations, well, different priorities. So depending on what you're currently trying to improve and where your current challenges are, that will drive the types of metrics that you need to collect. Now there's some very common metrics that chances are pretty good that you'll collect cycle time and others, but the metrics that you collect must be driven by what you're trying to achieve. And because what you're trying to achieve will evolve over time, so will your metrics. So, and this is something that we built into the Disponential Toolkit years ago, is that to give you options for approaching metrics, and then, how do we actually choose the right metrics? Okay. Here's a question from Balaji. I was always thinking, dad is a framework. It started out as a framework, to be fair. Although it really, we originally called it a framework because that was the term we had. And a few years ago, we realized that we were always sort of out in left field. We were, we would get compared, the gardeners of the world didn't know how to compare us with like, say, safe and scrum and others. So, and the problem was, because it wasn't really a framework. It was more of a toolkit. Instead of telling you what to do, we were telling you what to think, and we were giving you options. So, it's, in comparison, the frameworks basically give you a fish. They feed you for a day, they solve a certain problem, which is good, very important.  They feed you a fish, right? Whereas a toolkit like Disponentials, we've renamed it Disponential because it was about more than just delivery, but a toolkit like Disponential, which is a little more complicated, you know, to be fair, it teaches you how to fish. It teaches you how to actually improve. And so it feeds you for life. And I think this is the major difference. So, quick answer, Disponential is not a framework. It's a toolkit, and that is an important distinction that it's worth thinking through. Okay, here's a question from Sunil. Sometimes leaders, not coaches, can insist on adopting a framework. Yep, they buy into the marketing rhetoric is what it is. My hypothesis is that they do so because something goes wrong. It can, if something goes wrong, can be blamed in the framework. That might be the case. That's a bit jaded, and certainly the framework would get blamed if something does go wrong, but I don't think that's not their primary goal. Their primary goal is they believe that framework's gonna help, and it might, but the challenge is, is have they chosen the right framework, or did they choose it because it has a pretty poster, or did they choose it because it makes sense? Are they, is leadership able to follow through? Do they even know how to do a transformation? Do they even know how to do an adoption of a framework? Are they willing to stick with it as long as it requires? It's often more effort than they think. So, but yes, and then if they do make mistakes, and mistakes often happen, then the framework gets blamed, but I don't think they go in with that intense, you know, although it does happen. Industry is so conditioned to think of frameworks that hearing someone talk about no frameworks might just scare them. Good, I want to scare you. I hope you're scared. You should be scared. You know, we're in the new normal, whatever the new normal is, and nobody can tell you what the new normal is. The only thing I can tell you about the new normal is it's gonna be way more competitive than the old normal. Anything beyond that, nobody knows they're talking about right now. But anyways, the, yeah, you should be scared. I'm asking you to think, and that's pretty scary. I'm asking you to take responsibility. I'm asking you to actually make decisions and be accountable for those decisions, and that can be pretty scary if you just desperately want to be told what to do. But you know what?  And in the new normal, in this hyper competitive environment that we are very clearly going into, the follower's not gonna make it. The leaders are gonna struggle. And we actually saw this. You know, if you remember back, you know, in March or April when things started going really poorly, many organizations did really, some organizations did well, Amazon, Thrive, eBay, Thrive, and other organizations got their heads handed to them. Which type of organization do you want to be? I think that's a valid question. So anyways, I'm out of time. Thank you for all the likes and the thumbs up. So I appreciate that.


So, when it comes to structure, what we're going to need to decide is what are the atoms in the structure, but just looking at individual atoms is fairly pointless. So, we're going to need to consider how and why atoms interact, how strongly they interact, and why some atoms prefer to interact with other atoms. You've probably taken this in various forms, either in upper secondary school or at university, but I'm going to introduce this in a slightly different way, possibly. This is more chemical than physical way. At the end of the day, the reason why any atoms interact is due to electrons, and electrons is in principle complicated. You should solve the Schrodinger equation, but if you're a chemist then we need to be able to have an understanding. We tend to use something called orbitals, which is a schematic way to display the way electrons would interact with each other so that we can hand wave about how bonds work. But make no mistake, this is an approximation. And if you haven't heard of orbitals before, you definitely heard of it indirectly in upper secondary school. We talked about electrons in shells. You might remember you had this first S shell, and then three P electrons, and then D electrons. And this is largely the same concept it has to do with various energy levels. In each of these shells, you can have two electrons. And the reason we have two of them is that electrons are paired. You might also remember that you talk about some sort of spin-up property and some sort of spin-down property. Of course, that has nothing to do with up and down, but you can think of a sine equation. A sine is sometimes positive and sometimes negative. But if you now take the sine equation and push it 180 degrees pi, you're now going to have another sine wave that's also sometimes positive and negative, but it's offset. So one one is positive, the other one is negative. So this is roughly the same concept. The electron maintains its charge. It has to do with density and where the density probability is highest. But that also means for the S orbital, that's easy. That's rotationally spherically symmetric. But for these other orbitals, there is a very clear spatial favorability here. The P orbitals are, think of that as Cartesian axis, X, Y, Z, they are orthogonal. And for the D orbitals, it's even more complicated. So why do I tell this? It turns out that this concept of orbitals is going to tell us when atoms are likely to bind. What happens if two atoms get closer to each other? When will they repel each other versus when will they bind? And it's also going to explain lots of concepts such as hydrogen bonding. What would happen if you had two of these with spin up? So if I erase that spin down for a second and then I put it as spin up. Well, what then would happen is that you would have two electrons that have exactly the same quantum mechanical ground state as they approach each other. And that leads to something called the Pauli exclusion principle. And you could even prove that's not that hard mathematically, that that would lead to an exponentially strong repulsion. So it's going to be very, very bad in terms of energy as they get close. So I'll erase that one. So I don't have something bad written on screen. In practice, it gets slightly more complicated because sometimes if you're a chemist, you can have double bonds and things like that. I'll worry about that when we get there. We might not get there that much in this class. So can we use this to understand binding? Let's try. This is something very simple. It's two hydrogen atoms, I think. And each hydrogen atom has one proton and one electron. And it's not, well, at very high temperatures in the plasma or something, they would be happy that way. But hydrogen is a fairly reactive molecule. So under natural conditions, what's going to happen is that you have these two hydrogens. And as they approach each other, what will happen is that if both of these electrons start, instead of going, if you have one hydrogen atom there, and then one hydrogen atom there, if this electron and that electron, instead of being separated in the two hydrogen atoms being unpaired, what can happen is that we have our hydrogens. And then we bring them really close. That might be a little bit too close. But basically you would have both these electrons encompass both of the hydrogens. What will then happen is that around the left hydrogen atom here, you're effectively going to have both spin up and spin down. And around the right atom, you're also going to have both spin up and spin down, because they will pair up that way. So what's now going to happen is that instead of having two incomplete atoms, you're going to have two atoms that each feel that they're complete. And this is going to lead to a chemical bond. What complicates things now is that this gets difficult to explain to a teenager or something. And then we start inventing all these things. We have covalent bonds. We have ionic bonds. This is what I would call an ionic bond. Sorry, covalent bond, my bad. But in reality in life, this is a sliding scale. It's not going to be one fixed distance when it starts being one bond and it cuts over into being another type of bond. But I'm going to go through a couple of different ways these electrons interact at different distances and see if we can learn a little bit more about that. And I'm not going to go that much deep into the orbitals for now. We'll come back to the orbitals once we start entering the hydrogen bonds.


computers work exactly the way I expect. But unfortunately, as we heard this morning from Ramsey, and as we all know, that's not always what happens, right? They don't always cooperate. But what I'd really like to do is it'd be nice to at least be able to figure out why the computer and my system isn't aligned with my expectations. So recently I've been learning a lot about detrace, and it's been helping me to figure out why things aren't going the way I expect. So I'm going to show you an example of a problem that I ran into and how detrace could potentially help solve this problem, but first let's talk about what it is. So detrace is a tracing system for the Solaris Illumos world. Now it's also on free at BSD, and OS10 of course, which is what I'm using, which is awesome because now I can use it. And it lets you write programs to trace events that are going on in your system, and then filter, aggregate, or take other actions based on those events. So this programming language that you use is pretty limited, but that's by design. It's a good thing. Your programs, your programs, are running in kernel space, which is insane, but detrace is meant to be safe to run on production systems. And safe, this is not in the NASA sense, but more in the web scale sense of safe, right? So for instance, there's no loops in the language. This language is not Turing-complete, which breaks my brain to try to use a programming language that doesn't have loops. But that way detrace has an easy time of making sure that your program is actually going to halt. The halting problem applies to Turing-complete languages. So what kinds of things can you do with detrace? This is what the detrace language looks like, looks sort of like AUK. I believe this is at least the third mention of AUK today, which blows my mind. It's awesome. There's probably been more. But a little bit like AUK, a little bit like C. And this program traces two kinds of events, system calls and the detrace system itself actually ending. So what we're doing is counting up all the system calls on the computer, grouped by the name of the sys call, probefunk, and the name of the program that called it, exact name. And then when you control C to end the detrace, it truncates the results to the top 10 and prints them out. And it looks like this. Which is pretty cool. So you can also trace things that make sense for a given application, like MySQL or a language runtime, like JVM. And you can add probes for your own applications too. The MySQL developers wrote some code that lets detrace see these events when I run a few simple queries. And here's where things get really crazy. So in addition to being able to trace things that the developer thought of when they were writing the code, you can dynamically insert new instrumentation into the code, unless you trace arbitrary C functions. You can do that for user land code, but you can also do it for kernel functions, which completely broke my brain. So what we're doing here, I can actually trace how long different kernel functions take to run and download the kernel code and see what those actually do if I want, which is a pretty cool learning experiment for me. And there's also, you're seeing here some nice frequency distribution reporting. It's orthogonal to the particular kind of tracing we're doing, but it's just another way to aggregate. You can trace new things that the developer didn't think of. All right, so the issue we're going to look at happened in real life, but it took me way, way longer than these 10 minutes to solve it back when I didn't know how to use detrace. Okay, so here's the deal. My team's got some tests that are intermittently really slow. They're pausing for like 30 seconds, which is, we expect it to be milliseconds. Julia told me in a blog that computers are fast, so this is terrible, like why is it taking 30 seconds? It's not just one task. It's not just one person who's having this issue. But some people do seem to have it worse than other people. Is it the features they're working on, or are they just more vocal than other people? Unknown, we don't know. Anyway, this test is taking way, way too long, like many minutes for trivial changes, and it's driving us crazy. It's making us feel really bad about our abilities as programmers. So, okay, quick mental note of your ideas. What should we check? There's lots of things, lots of hypotheses that could explain this kind of behavior. We could have GC pauses, we could have deadlocks, connection pool timeouts, we could have a sleep that somebody wrote in the code that just fires randomly, right? Lots of bad things can happen, but we don't really have enough information here to solve the problem yet, and you can probably guess based on the context clues around this talk that the next step is going to be to gather some data to support or reject our hypotheses using detrace, and then generate new hypotheses based on what we learn. Okay, so this app runs on the JVM, and when I'm on the JVM, I always think it's going to be garbage collection that's the bug, and lots of times that would turn out to be right, but it's easy enough to test that idea, we can write a detrace script and we can say, okay, we're going to trace the GC begin event and the GC end event, take the difference between the timestamps of those two events, and print it out. It's not the only way to learn about how GC is going, but it works. Ultimately, our results tell us that 160 milliseconds is the slowest GC, which is a fairly long GC, but it's not anywhere near this 30 second culprit that we're looking for, right? This is on that scale of things pretty small. So let's back up, what higher level resources can we look at? CPU is a pretty important resource. We could sample all the on-CPU processes, like 997 times a second here, and aggregate the counts by name, see who's on CPU the most. Turns out there's a program called kernel underscore task, it's running by far the most, and if we drill in to get the stack traces that this is running, we could confirm this pretty much all idle, right, nothing's going on. And incidentally, our Java program only shows up on CPU three times for the whole time we were tracing, so there's not much going on CPU-wise. This is great, because it lets us rule out any hypothesis that we had that had anything to do with Java being on CPU a lot. So GC, tight lubes, some serious computational algorithmic stuff, too many threads competing for CPU, there's a lot of stuff that we just ruled out. I think in general, starting fairly early with these kinds of high level questions is a good strategy, because it lets us save a lot of time by, you know, it's similar to a binary search in that way, right? It lets us cut out a huge swath of the search space, and we ideally don't have to search all end of the possible performance problems we do sort of closer to log in. So we could similarly rule out memory and disc slowness with other detray scripts, and they end up being clear to all charges as well. So maybe we want to take a look at networking next. We definitely do a lot of calls to the database, right? This is sort of a webby sort of thing, and we might say, okay, we can trace all socket connections and see what's slow there. The code for socket connections is way too complicated, mostly due to some housekeeping and format translation details, but also due to some other things. It's not even something I'd be able to write easily, honestly, but luckily it's free online. It's in the detrace book. It's on Brandon Gregg's GitHub, and it gives you the connection latency, the socket connect latency for every process and the address you're connecting to. So it turns out our database connections are really fast. There's a local host, which we expect, and then we do see some latencies that are on the order of 20 to 40 milliseconds. Those are a little bit slower, but it's not like there's thousands of these, and we're looking for a 30 second, something that's taking 30 seconds. On the other hand, it's interesting that we're connecting to this external host, the 72524119 on port 80. I'd expect it only local connections when I ran this. So that IP address, we can grab our code base and see that it's not in our configuration or code anywhere, makes me sort of wonder what that host actually is, and what is the thing that we use to see map between host names and IP addresses, that's DNS, so we could Google around for like, how do we trace DNS queries? And we could do that by dynamically tracing, inserting our own instrumentation into get at our info calls, which comes from some system level shared library. And it turns out we find a URL that takes 30 seconds to resolve. someplace.com turns out to be. This isn't me just typing a fake address for this example here. This is literally the thing that we saw in our code that we were trying to connect to. someplace.com, right? And it took 30 seconds to resolve. And this was the underlying issue. This was the actual thing. I don't know what this URL does, I wouldn't go there. But the people getting the slow test turns out they were actually all having slow DNS lookups for this host and a lot of them were in the same office and so maybe, who knows? But at this point, we now know what the problem is. We have a clear idea of what the problem is and now we have a number of options.  They can switch to Google DNS. They can replace someplace.com with example.com which turns out to be really fast here in this example. Or we can do what we actually ended up doing which is a lot more resilient which is just we shouldn't make external calls in our test way. We don't need to do this. This is obviously a bogus address. We don't need to do this, right? So just fake it out. Okay, so, but the point here is that we now understand the issue and it feels super, super good to know why this thing was happening. Okay, so let's take a step back and review. DeTrace can help you get your crazy theories validated or rejected. Clearly not the only tool. There are lots of ways we could have gotten to this solution here. But it's awesome. It can ask really, really broad questions like what's on CPU the most or really, really focused ones like how long does this very specific C function take to run. And I also wanna say it doesn't take years of study to get great use out of this or tools like it. I just started looking at this last October and I definitely found like even just from learning a few one-liners and Googling around, I still don't consider myself an expert at this at all but I've gotten a ton of great learning out of this. Tons of valuable insight in solving problems. So what do you do next if you're interested? Definitely recommend these free online resources. Brandon Gregg's blog's great, The DeTrace Guide. There's a 1,100 page book if you're really wanting to get invested. It was terrific as well. And also as a developer I learned a ton by reading other people's code so it was really helpful for me that since DeTrace Code comes pre-installed on my operating system and some of these that come with OS 10 are just one-liners and so they're totally approachable. There's a few bugs here and there with them but it's great, you can learn a ton. And also I'd say this isn't just a tool for solving performance issues. You can also treat it as a general learning about how your computer is working tool. It's been great for me in that way. I downloaded the ZXNU kernel code just to learn about how that works just as a result of digging around with DeTrace a little bit. And also if you're on an OS that doesn't support DeTrace or doesn't have great support, see what other tools you've got available to you to help get your questions answered. For example, there's some really cool things that are being developed for Linux under the IOvisor GitHub organization so check that out. So using DeTrace has taught me a ton about performance, operating systems problem solving in general and I really hope it helps you too. Thanks.


All right, good afternoon cyber trader is a welcome on back here this Tuesday, October 5th shortly after 10 30 230 man, I was just about to say it properly a trip myself over there Just about 2 30 p.m. Eastern Tom folks welcome on back Of course this time of the day for our afternoon meeting not our morning meeting I was about to say great to see all of us though live inside the cyber group room We got Jeffrey Chuck Norman run some bad news on CEI, huh, right? We're just talking about that before this meeting started great to have all of us Otherwise, and if you're joining us back on social media Facebook live or YouTube welcome on back great to have you back on Facebook At least coming off yesterday's big outage, but you know, we got to be quick We got a jump right from top to bottom folks. I am not teaching class this afternoon Thankfully, we got Fausto teaching the live phase 3 class the advanced trading class Are you have the chance to see the man himself pull the trigger or perhaps not to perhaps to sit on his Perhaps sit on his hands perhaps. I mean hopefully that's not the case, but you never know in this market So, you know, I really hope that there's a ton of opportunities for us and for Fausto to take Himself with all of our gold platinum and diamond C2 students at least inside the cyber group room So let's hop right to it for right now the BTBT trade on our screen to begin It's still up 27% pulled back from 10 just a bit earlier 995 the high of the day It's a crypto mining stack Bitcoin mining affiliated stack and you know, we ended up going over a few of these just from yesterday I'm not going to dive into Bitcoin today. I'm going to spare the time right now But for right now BTBT in particular at least we'll put this stock in particular on our watch list for the close How can we not? All right Actually really quick before we move on I just want to show this if I have the chance to because we're talking about this live inside the trading room just before myself and Norman called out the pop and Right at 224 Eastern time. We ended up seeing a huge order get filled exactly at 958 Not just here in green not just here in green but a lot more afterwards I think it was just about 50 or 60,000 shares that were on the ask at that price. So for what it's worth I mean 950 we would assume to be a big level, but $9 58 cents in particular You can see it's holding above it for the most part of support. It's making lower highs So I'd assume for it to break it pretty soon, but yeah, again, we'll put this on our list to start All right, so let's go from top to bottom. Otherwise, we'll see what else we got Tell you what my voice has been getting extra horse extra early today. I don't know or this week in general I don't know why the LA you are we'll try and go quick, but this is a buyout I don't need to check the news that to see if it is or isn't it's just very flat up 68% but not much moving there EIQ moving back up love to see that I mean ended up making a really nice move earlier today It took a while to get the gears going and kind of low volume at the same time But we caught more so the tailwind of this push as it broke over 480 for a second time broke over 5 pretty quickly from there and Moved up to a height time 564 So, you know, hey for right now this stock is making a strong bounce back up right now Normally for a stock to make as big of a move as we as we saw this make and for it to crash back down You know normally at 230 if it already crashed and it's not near the highs I wouldn't be as jumpy to put it on our list, but I like the bounce on this so far So hopefully there's a lot more left to this the EIQ All right, keep going BTPT number three obviously Zeta Zeta, I don't know. I guess we missed this end up making a nice push though from like 650 up to 785 but dropping down now pretty thin book So it's too cheap All right, we'll talk Marps for a bit here because now it's pulling back down But we were talking about this all from the morning We were talking about this in traders talk our weekly Q&A which we always invite all of us in social media Especially those of us today on Facebook live YouTube join us by going right down to the link on the banner below there But it is to say at least, you know on this Marps trade ended up making a bit of a slingshot Unfortunately the wheels fell off pretty early ended up crashing back down once it broke back below 8 and the opening bell print 795 that was a wrap I mean it didn't get halting on the way down mind you but that was a wrap ended up pulling all the way down It wasn't fully a wrap perhaps. I ended up jumping in this trade during traders talk We we recorded that that's on the student dashboard or at least it will be by this evening for all this live But I ended up jumping into this trade from 5 8 from 5 59 in particular Ended up squeezing it up towards just over 6 I got out over 6 and for right now at this point This thing's just flat I mean I was looking for the balance because I had a line there on my chart I said at 8 30 Eastern time, but you know aside from that right now. It's just not really moving too well Anyone's getting weird echoes in the audio. Hopefully not Scott If so just try and log out log back in and that could do it could just be like a webinar glitch or something Nm maritime stock and and this one we're relatively familiar with any time these like shipping stocks maritime stocks move We'll look at this. We'll look at obviously ship sh IP Not really moving too much right now Good old friend tops Same thing. Alright, so I guess it's just specific to NM. Maybe company news out either way It's up a lot pushing up to six here. It's just trading such little volume right now per minute about two three thousand shares That's it. So I'm not as jumpy to trade this just yet. Maybe I'll slip it on our list like at the very end But otherwise, we'll see what else we got BM R. Ray I was hopeful to put this on our watch list here ended up making a great move for us like smack after traders talk ended Up popping from basically I mean 580, but really broke over six ran up just nearly a dollar fifty cents up hit 740 and pulled back Right now just pulled back too much for my liking here Although it is starting to pop back up here to seven there are 660 as we speak. I guess I'll come back to it if we need to SNP X not much going on there. Did small direct club push back up? Yeah, it's trying to all right cool All right, so SDC this one We're definitely familiar with has great liquidity on the book relatively inexpensive and like I'd said it It's pretty close to the high still at this point You know pulled back after the pop and you know now trying to get back up to the highs off 584 So yeah, I would look for resistance namely off of 595 and then from there six There's a 24,000 shares at 590, but I would assume for there to be at least like You know a hundred thousand shares plus it at six I don't have my book map up my level four up for for SDC in particular, but I would just assume that So yeah right now SDC will come we'll put on our main list here All right, so we keep going we'll kind of skim through right now See if there's just any other name stocks like the SDC that look pretty familiar that could be near the highs or at the highs Go to you. I don't know if this is There we go. It was like a weird lag right there. That just spooked me out a little bit I thought I was freezing up there for a moment But let me jump back that one wasn't really looking that great The oil px is I just kind of randomly stumbled upon this number 14 At least this one's at the highs like you know new IPO trading about 14,000 shares per minute I'd like to see a trade even more than that, but given how thin the book is that's actually a decent amount You know what you never know what you'll stumble upon here. Oh, well PX will put on our list here for right now That's spooked me. I wanted to go to the GOT you trade before it froze up on me temporarily Yeah, this one this one's a familiar name this one We ended up trading of course, you know back a couple of months ago at this point when the China education stocks tried to go non-profit Or the China government tried to make them go non-profit ended up, you know crushing the company like 60 70% Micro micro vision MVIS familiar name and I haven't traded this one in a little while ended up making a nice pop I guess right after the market opened up, but we failed to really focus on this. Wow You know right now it's not trading merely enough volume per minute given what the order book looks like so You know, I'm not gonna be too interested in this stock for today But you know, hopefully there's a lot more left to this run across the week I would love to follow this tomorrow morning, perhaps. We'll say jump to Mara any tea a couple other familiar names here Mara I guess is pushing up with the BTBT trade We'll talk all about crypto and Bitcoin and Cardano and you know anything else really come tomorrow and come Friday But yeah any teeth damn I take your eyes off You take your eyes off a stock for a couple of months I reckon and you know, you don't really realize how far it moves up in price So this any tea trade we ended up following really off its IPO dating back to mid to late late 2020 Ended up making this weird pop going back into October But you know, we traded it on and off since and we took a rise off it going back into that last run up from late April early May but man just kept on going up I was interested in the name, but it's too pricey for us here right now inside the trading room Another familiar name CLSK Just not trading a whole lot of volume per minute. Damn Neither is BE bloom, but this also is well This one's at the highs right near the highs for the meantime So bloom I'd be more keen to put on our watch list anticipating a short squeeze up or a temporary run here heading into the close And not a whole lot that I'm really like digging here folks, you know We have BTBT SDC and EIQ those three on the list already I do really like the other two Rifely, so have their reason to be on the watch list, but I'd start with those first three We'll hop over to the losers list and we'll see here folks. It says let oh may have reopened up This may be the run. This may be the reason why I was frozen. Yep.  All right, so Really quick I typed this in the live trading room earlier for all of us there live just scroll up on the chat You'll see one of my last posts before I started the meeting But the reason why I was frozen just a few minutes ago so you folks know Finally CEI reopened up off at all now I'm gonna turn away from this stock right now to make sure that my computer or platform doesn't completely blow up and freeze the stock's trading 260 million shares across the day and It's gonna try to help a lot more once it reopens up from that down halt So there was some news that came out on CEI earlier today folks and I have the news I'll show it to you It's not not as if I didn't want to go over the stock But I just know my myself the platform It was gonna freeze up at some point and that was the reason why I froze earlier But the news that came out on CEI CEI today was doing all right for us Ended up making a nice little move up earlier I mean wasn't the best move the biggest move, but you know, it was tradable. Oh really quick. That's why Finally there we go. So This report came out earlier today at 11 o'clock Eastern time from Carriesdale Capital never heard of them I know a few different firms out there being here for as long as I've been here And especially those that more so give short reports like Andy left from Citron You have Hindenburg research over the years. I never heard of Carriesdale, but nonetheless This is the company that announced that their short CEI This one has something for everyone death spiraling death spiral financing a fake CFO delinquent filings fire three Auditors three weeks ago. We've been on fire with CEI as a day trade And maybe if you've been following it as a swing trade that's different But you know, we haven't been calling it out as a swing trade It's been a short squeeze, but it's been one that we've been following as a day trade day over day But that's where I say, I mean obviously no idea when something like that's gonna come out But man stock got halted right away for volatility reasons Then the news came out that this company was short and then there was a follow-up report that came out I'm not gonna get to it here just to conserve time I honestly have no idea what news came out on top that led it to get halted at it Got halted at like 12 30 12 45 Eastern time, you know in the early afternoon and just now it reopened up from that news I don't know what news came out, you know, listen I'll put it on our main watch list for right now because it's very volatile, right? I mean it's hard for us to not focus on CEI as some sort of potential trade You know, it's dropping right now, but maybe it can make a nice bounce off a big iceberg level Maybe it can make make a nice bounce off a dollar level there, you know at one So at least for the meantime, we'll put it on our quote-unquote watch list It's not, you know, as if we're forced to trade it So listen if you don't want to trade CEI I would rather trade SDC Then I would rather you trade EIQ perhaps or even the BTBT trade if that keeps pushing up But otherwise, you know for how volatile it is and say that in a good way, you know We'll put the CEI trade on our list Maybe there'll be some sort of bounce if not then, you know, I wouldn't wouldn't surprise me All right, so we keep it going SALM the only one that is easy to borrow here so far. I'm not really doing too much Dats here ended up just tanking over the end of last week into this week Ended up making a huge drop today down just about 25% right now Lot of familiar names at least on the loser side familiar as if like former runners that we ended up trading I do want to get to one stock one stock that I'm in I'm not gonna put it on the main special list I know one of us Jeffrey H is in it with me right now If he didn't know I was in up until right now, he probably has a nice smile on his face. All right, so the ampy why I Am currently long on this trade right now from 320 like just right here The reason I'm long right now is because this stock had halted a couple of times yesterday And then like heading into like the close. I don't know where I ended up, you know getting halted So it was off of a news report saying that this company that was being listed to blame for the oil spill You know over the weekend or whatnot. It looked as if there was no leak from their pipeline So you thought that you would like to think that that would leave the stock to make a giant squeeze up Well, it led to a nice pop and then afterwards it shook around we talked about that halt and reopen and traders talk earlier today But I was telling you folks and traders talk earlier today that if the stock ends up making a move up to 320 I'm gonna look to try and jump in Hey, I'm transparent with you folks. I mean good bad in between Transparent so I'm in right now 2,000 shares. I got my stop set below me But you know for right now, I'm not as keen to put this on the main list for the reason that Well after I got in this stock hasn't really been doing Jack This stock hasn't been doing anything so far since I got it So listen, I'm in if it ends up popping I'll let you folks know and then from that point. I'd be more keen to try and trade it, but I've been in this trade for 20 minutes now nearly So, you know, I don't want you folks to be watching the grass grow watching the paint dry Just like Fausto typed in the chat board of our trading room right now, you know, he's there right now He's prepping up for phase 3, you know, the CEI trades open So I'm not gonna jump to it right now. I don't want my platform to freeze But it's on the list, of course it's on our list already But for right now folks, we're gonna call it a show for the meantime again I've got the phase 3 class at the advanced live trading class coming up at Fausto's at 305 Eastern time So I want to make sure that all of our gold platinum diamond C2 students have access to join But for all of us in social media Facebook live YouTube as always I appreciate you sticking with me each and every day each and every afternoon I'm gonna refill up the water bottle here. That was my last drop of water So I'll look I'll talk to you folks coming up live inside the trading room later on today I actually dipped out yesterday rich thankfully tagged in for me at 330. I appreciate him doing that yesterday I'll be back on the mic for real though coming up at 330 Eastern time taking us into the close. Take care


Again, kind of not a race would happen there on the fumble driving, but make up for it a little bit, and they will be able to do that and more. An opportunity to take it to the house. It's Kerry Stewart all the way back, and it's a pick six for Stevenson, exactly what the doctor ordered. It's 19 to three Mustangs. Nice, that's an opportunistic defense right there. That's coverage was decent, ball went through his hands, and he's right there to make a play. Outstanding.  Well, guess what, they just did. Yes.