from Berlin, Germany. It's theCUBE, covering DataWorks Summit Europe 2018. Brought to you by Hortonworks. Well, hello and welcome to theCUBE. We're here at DataWorks Summit 2018 in Berlin, Germany. And it's been a great show. And what we have now is we have IBM, specifically we have Dave Mectinel of IBM. And we're going to be talking with him for the next 10 minutes or so about Dave, you explain, you are in storage for IBM. And IBM, of course, is a partner of Hortonworks, who are of course the host of this show. So Dave, if you can introduce, give us your capacity or role at IBM. Discuss the partnership with Hortonworks. And really what's your perspective on the market for storage systems for big data right now and going forward? And what kind of workloads and what kind of requirements are customers coming to you with for storage systems now? Okay, sure. So I lead alliances for the storage business unit. In Hortonworks, we actually partner with Hortonworks, not just in our storage business unit, but also with our analytics counterparts, our power counterparts, and we're in discussions with many others, right? Our partner organization services and so forth. So the nature of our relationship is quite broad compared to many of our others. We're working with them in the analytics space. So these are a lot of these big data, data lakes, BDNA, a lot of people will use as an acronym. These are the types of workloads that customers are using us both for. And it's not new anymore. By now, they're well past their first half dozen applications. We've got customers running hundreds of applications. These are production applications now. So it's all about how can I be more efficient? How can I grow this? How can I get the best performance and scalability and ease of management to deploy these in a way that's manageable? Because if I have 400 production applications, that's not often any corner anymore. So that's how I would describe it in a nutshell. One of the trends that we're seeing at Wikibon, of course I'm the lead analyst for big data analytics at Wikibon under SiliconANGLE media. We're seeing a trend in the marketplace towards, I wouldn't call them appliances, but what I would call them is workload optimized, hardware, software, platforms, so they can combine storage with compute and are optimized for AI and machine learning and so forth. Is that something that you're hearing from customers that they require those built out AI optimized storage systems, or is that far in the future, or give me a sense for whether IBM is doing anything in that area and whether that's on your horizon? If you were to define all of IBM in five words or less, you would say artificial intelligence and cloud computing. So this is something that gets a lot of thought in mind share. So absolutely we hear about it a lot. It's a very broad market with a lot of diverse requirements. So we hear people asking for the converged infrastructure for appliance solutions. There's of course hyperconverged. We actually have either directly or with partners, answers to all of those. Now we do think one of the things that customers want to do is they're going to scale and grow in these environments is to take a software defined strategy so they're not limited. They're not limited by hardware blocks. They don't want to have to buy processing power and spend all that money on it when really all they need is more data. So there's pros and cons to the difference. You power AI systems, I know that. So that's under that broad heading, yeah. Yes, yes, yes. So of course we have packages that we've modeled in AI. They feed off of some of the Hortonworks data lakes that we're building. Of course we see a lot of people putting these on new pieces of infrastructure because they don't want to put this on their production application. So they're extracting data from maybe a Hortonworks data lake number one, Hortonworks data lake number two, some of the EDWs, some external data and putting that into the AI infrastructure. As customers move their cloud infrastructures towards more edge facing environments or edge applications, how are storage requirements changing or evolving in terms of in the move to edge computing? Can you give us a sense for the sort of trends you're seeing in that area? Well if we're going to the world of AI and cognitive applications, all that data that I might've thrown in the cloud five years ago, I now am educated enough because I've been paying bills for a few years on just how expensive it is and if I'm going to be bringing that data back, some of which I don't even know I'm going to be bringing back, it gets extremely expensive. So we see a pendulum shift coming back where now a lot of data is going to be on-house, sorry, on-premise, but it's not going to stay there. They need the flexibility to move it here, there or everywhere. So if it's going to come back, how can we bring customers, some of that flexibility that they liked about the cloud, the speed, the ease of deployment, even a consumption-based model. So these are very big changes on a traditional storage manufacturer like ourselves, right? So that's requiring a lot of development in software, it's requiring a lot of development in our business model and one of the biggest things you hear us talk about this year is IBM Cloud Private, which does exactly that. And it gives them something they can work with that's flexible, it's agile and allows you to take containerized based applications and move them back and forth as you please. Yeah, so containerized application, so if you can define it for our audience, what is a containerized application? You're talking about Docker and orchestrated through Kubernetes and so forth. So you mentioned Cloud Private, can you bring us up to speed on what exactly Cloud Private is and in terms of the storage requirements or storage architecture within that portfolio? Yes, absolutely. So this is a set of infrastructure that's optimized for on-premise deployment that gives you multi-cloud access, not just IBM Cloud, Amazon Web Services, Microsoft Azure, et cetera. And then it also gives you multiple architectural choices, basically wrapped by software to allow you to move those containers around and put them where you want them at the right time, at the right place, given the business requirement at that hour. Now as the data storage are persisted in the container itself, I know that's fairly difficult to do in a Dockering environment. How do you handle persistence of data for containerized applications within your architecture? Okay, some of those are going to be application specific. It's the question of designing the right data management layer depending on the application. So we have software intelligence, some of it from open source, some of which we add on top of open source to bring some of the enterprise resilience and performance needed. And of course, you have to be very careful if the biggest trend in the world is unstructured data. Well, okay, fine. It's a lot of sensor data. That's still fairly easy to move around. But once we get into things like medical images, lots of video, you know, HD video for K video, those are things which you have to give a lot of thought to how to do that. And that's why we have lots of new partners that we work with that help us with Edge of Cloud, which gives that on-premise like performance in really a cloud like setup. Here's a question on the left field. You may not have the answer, but I'd like to hear your thoughts on this. How is as blockchain and IBM's been making significant investments in blockchain technology, database technology, how is blockchain changing the face of the storage industry in terms of customer's requirements for storage systems to manage data in distributed blockchains? Is that something you're hearing coming from customers as a requirement? I'm just trying to get a sense for whether that's, you know, is it moving customers towards more flash towards more distributed, edge-oriented or edge-deployed storage systems? Okay, so yes, yes, and yes. Okay. So all of a sudden, if you're doing things like a blockchain application, things become even more important than they are today. Yeah. Okay, so you can't lose a transaction. You can't have storage going down. So there's a lot more care and thought into the resiliency of the infrastructure. If I'm buying a diamond from you, I can't accept the excuse that my $100,000 diamond, maybe that's a little optimistic, my $10,000 diamond or yours, the transaction's corrupted because the data's not proper. Or if I want my privacy, I need to be assured that there's good data governance around that transaction and that that will be protected for a good 10, 20 and 30 years. So it's elevating the importance of all the infrastructure to a whole different level. So, switching our focus slightly, so we're here at DataWorks Summit in Berlin. So where are the largest growth markets right now for cloud storage systems? Is it APAC? Is it the North America? Or where are the growth markets in terms of regions, in terms of vertical industries right now in the marketplace for enterprise-grade storage systems for big data in the cloud? That's a great question, because we certainly have these conversations globally. I'd say the place where we're seeing the most activity would be the Americas. We see it in China. We see it, we have a lot of interesting engagements and people reaching out to us. I would say by market, you can also point to financial services in more than those two regions. Financial services, healthcare, retail, these are probably the top verticals. I think it's probably safe to assume, and we can say that federal governments also have a lot of stringent requirements and requirements, new applications around the space as well. Right, GDPR, how is that impacting your customers' storage requirements or the requirement for GDPR compliance? Is that moving the needle in terms of their requirement for consolidated storage of the data that they need to maintain? I mean, obviously there's a security, but there's just the sheer amount of, is it leading to consolidation or centralization of storage of customer data that would seem to make it easier to control and monitor usage of the data? Or is it making a difference at all? It's making a big difference. Not many people encrypt data today, so there's a whole new level of interest in encryption at many different levels, data at rest, data in motion. There's new levels of focus and attention on performance, on the ability for customers to get their arms around disparate islands of data, because now GDPR is not only a legal requirement that requires you to be able to have it, but you've also got timelines that are within, which you're expected to act on a request from a customer to have your data removed, and most of those will have a baseline of 30 days, so you can't fool around now. It's not just a nice to have. It's an actual core part of a business requirement that if you don't have a good strategy for it, you could be spending tens of millions of dollars in liability if you're not ready for it. Well, Dave, thank you very much for the end of our time. This has been Dave McDonnell of IBM talking about system storage, and of course a big Hortonworks partner, and we are here on day two of the DataWorks Summit, and I'm James Kabilis of Wikibon SiliconANGLE Media, and have a good day.


Hi, I'm Zor. Welcome to Unisor Education. We will talk about triangular prisms today. This is part of advanced mathematics course offered on Unisor.com. And that's where I suggest you to watch this lecture from, from this website, because there are notes. Notes are very important. It's like a textbook for you. All right. Now, we have learned a lot about prisms. When we talked about parallel pipettes. So if you remember, parallel pipette is a prism with parallelogram as a base, which means the second base is also the same parallelogram, and every side face is also parallelogram, and then we were calculating the volume of this object. Well, I would like to continue talking about other prisms, in particular today's triangular prism, and about its volume. I will also use concepts of symmetry, which we have introduced in previous lectures. Symmetry is very important for this particular case, because that's how I decide to work with volume of the triangular prism. All right. So, what is triangular prism? Well, triangular prism is obviously the prism with triangle ABC as a directress. Obviously, we can talk about the right prism if the side edges are perpendicular to the base. But this is not important for this particular lecture. Actually, I think in the future, if you will deal with prisms, primarily it will be the right prisms when these edges on the sides are perpendicular to base, whether it's the prism with a square or a parallelogram as a base, or a triangle, or pentagon, or hexagon, or whatever else. So prisms usually in all the real problems are right prisms. But again, it's not a matter right now. We have introduced a concept of volume first for right rectangular prisms, if you remember. And then we calculated this as a product of the area of the base times altitude. That was how we did it for right rectangular prisms. Then we expanded to any parallel and basically the formula is still the same for any prisms. But that's what I'm going to do right now. I will talk about triangular prism and I will try to prove that this formula still holds for triangular prism. It's actually a simple thing to do if I will use the concept of a symmetry which I mentioned already. And here is how I would like to do it. From the plane geometry you understand that a triangle can be, using a central symmetry can be expanded into parallelogram. So if I know that the area of the parallelogram is length of the base times altitude using this transformation, which is actually a central symmetry relatively to, for instance in this case, relatively to this point. So this is the middle of this edge. So this point symmetrically transform into this and this is transferred into that because this is the central symmetry which means we have to draw a line through the center of symmetry which is on that line in the middle which means this point goes to this and this to that. This is obviously the line through the point let's call it A to A prime. Now, and this segment AP is equal to A prime P and it's very easy to prove that this is a parallelogram. And also since symmetry transforms an object, in this case a triangle into congruent triangle their areas are the same which means that the area of a triangle is just half of the parallelogram. So this is the idea for the plane geometry and I will use exactly the same idea for this case. I would like to construct another prism next to this one which touches this one using this same concept of central symmetry. So I will choose the line, I will choose this as a center of symmetry. B prime is a parallelogram because every prism has a parallelogram as a side. So this is the center of diagonals and let's see what happens if I will transform the whole triangle prism symmetrically using this as a center. But obviously B prime goes to C C goes to B prime, B goes to C prime, C prime goes to B. So these four points will be exactly where they are in the symmetrical object. Now points A and A prime will be different basically what happens is this not exactly the straight thing that's how it will be. So that's my new prism now this would be let's say D and this would be D prime so A will go to D and A prime will go to D and A will go to D prime. Now it's B, D, C or BCD, B prime, C prime, D prime is a prism. For obvious reason because if you remember that any line centrally symmetrical is reflected into line so AA1 will be reflected to D prime parallel to the original line so these are parallel and considering if you will connect A prime with D and A with D prime you will have basically parallelogram AA prime D D prime. Just because if you just consider this as a plane since these are parallel we have already proven that we can draw the plane. So within this plane it's very obvious that this is parallelogram. So it's very easy to do the proof in all the details which actually I don't want to spend right now the time because it's rather simple and again you want to send me your very detailed correct proof that this is exactly the same kind of a prism as the original. Well obviously it should be because all the segments are symmetrically reflected to similar segments with the same lengths and angles are preserved. Everything is preserved. So the volume should be double. So the volume of the A, B, D, C, A prime, B prime, D prime, C prime which is a parallel pipette is supposed to be double of the original triangular prism. And that's what actually makes me believe that the area of the parallelogram which is the volume of this parallel pipette is the area of the parallelogram at the base times altitude. Now altitude is the same for a triangular prism but the volume should be half but at the same time the area of the base for a triangular prism which is a triangle A, B, C is half of the parallelogram A, B, D, C. So the formula remains exactly the same for a triangular prism because volume should be half and the area of the base should be half but the H altitude is exactly the same. So that's the very, you know, kind of a schematic proof. It's not a real proof because it doesn't go through all the details. This is a very schematic proof that this is the formula for calculating the volume of the triangular prism. Well, basically that's all I wanted to say today about triangular prisms and obviously certain problems will be introduced a little bit later but this is just a theoretical material. We can always call the triangular prism right as I said before if the edges on the side, side edges are perpendicular to the base. Also if the base is the regular equilateral triangle it might be actually the prism based on this if triangle A, B, C is equilateral then the prism can be called the, how can it be called something like a regular or whatever, regular right prism. Now it's interesting actually that prisms are really used in optics just as a side issue because if the light goes through the prism in this direction for instance then it will be it will go through the prism and it will spread into a rainbow colors as you know because the white color has all these components and every components is changing direction differently this is the glass so the glass changes the direction differently based on the frequency of the light and the frequency of the blue side of the spectrum is, frequency is greater the wavelength is smaller so that's why we have this rainbow colors when it goes through the prism. So anyway there are some very important usages for triangle prisms in optics and probably some other cases as well alright so that's it for today, this is just an introduction into triangle prisms and the formula for the volume that's it for today, thank you very much


My name is Brad Grizyak, and that is how you pronounce it, or if you're in Poland, it's Gieszek, or just Ger, right? I'm the co-founder and CEO of Bendyworks. You can find me on Twitter as Lystrophy. I do have one payload that I worked on that's currently in space, is growing food that astronauts can eat. So basically, the next step towards generation ships, which is pretty cool. But I'm here today to talk about video games and outer space, specifically Kerbal Space Program. So I'm good friends with a woman named Ash Dryden, give it up for Ash. So this is actually a quote from her, like I asked her for this quote, and she gave it to me. Whenever Brad is drinking, you want to make sure you're sitting next to him because instead of being obnoxious, he teaches you orbital mechanics. This is true. You also don't need to say the first part. You can sit next to me and I'll teach you orbital mechanics, whether I've had alcohol or not. I love teaching people about this kind of stuff. Also related to Ash, get your Altar Conf tickets. There's only two left, one of them is in Portland in like a week, and then San Francisco after that. It's a really cool thing. All right. So prerequisites for putting on a talk like this. First of all, you have to buy Kerbal Space Program. It runs for about 40 bucks on Steam. But as of today, thanks to Ben for informing me of this. It's actually on sale through November 1st. So 24 bucks gets you Kerbal Space Program. You need to install CCAN, which is basically CCAN, but for Kerbal, the Comprehensive Kerbal Archive Network. Using CCAN, you can install a thing called KRPC. You might also want to learn a few things about astrodynamics. So I would advise if you want to go to UW Madison, you would take EMA, that's Engineering Mechanics and Astronautics 550, which is Astrodynamics. And then also, you might want to take the Mechanical Engineering 446 Automatic Controls. This was the second lowest achieving class that I took in college. Mostly because it was an online class. Apparently that doesn't work so well for me. Install Ruby correctly, which is probably the hardest thing to do on this slide. And then you want to gem install KRPC. So the KRPC in the third bullet point is this generic add-on mod for Kerbal Space Program. And there's a bunch of libraries that you can then use to connect to Kerbal. And this is just the Ruby version of that. You have to write some Ruby, and you're good to go. So I'd like all of you who would like to get on the local network for, what is it, LMO Wi-Fi and go to this URL. I couldn't be bothered to port forward 80 to 3000. Also this server is running in development mode, so let's hope that it continues to work. But that should take you to this computer right here that's running a Rails server. So first thing that we're going to do today, we'll call it Project Mercury, and we're going to hover a spacecraft. Not quite good to outer space yet, just kind of hover. So that's our problem statement, make a rocket hover. What does that mean? What are some of the key words in here? Well the first is hover, and what we mean by that is we want to make altitude constant and sufficiently above zero so that we're not just standing there, we're actually above the ground. And the other key word here is rocket. So in our situation we're going to have exactly one input, which is the throttle, and it's also going to have a variable mass, which is kind of tricky to deal with because as the throttle goes above zero, you are shooting some of your mass out the business end of the rocket. And so the whole thing is going to get lighter as time progresses forward. So taking all that into account, you get some math, all right, let's do some statics here. No.  Like you do not want to deal with this, this is terrible, you do not want this. So what are we going to do about this? This is a hard thing to do, and also it only takes into account the two forces that we know of, which is gravity and thrust. What about any sort of perturbations, or what if we don't know the perfect amount of thrust that we're sending out the business end of this rocket? Like you don't know, like is it 3,000 kilonewtons, or is it 3,001 kilonewtons? Like you don't know. So it's really hard to be able to accomplish anything by going with this correct mathematical approach. So what are we going to do instead? We're going to use what's called decontroller. PID stands for proportional integral derivative controller, which again, seems very mathy, very unattractive, like I don't want to touch that, that looks gross, calculus of times, I just don't want to do integrals. The great thing about a PID controller is that you're not actually going to be doing any integration or derivatives, like that's the really, really good news. The hardest mathematical operation you're going to use in a PID controller is division, which is pretty reasonable. So this is kind of the feedback diagram of how this is going to work. We're going to set a throttle, and that throttle goes to a rocket, which turns the throttle amount into an actual altitude. That actual altitude is going to change over time. And we're going to have a sense that detects how high we are, what our actual altitude, shunt that into our PID controller, and we're also going to tell it what our desired altitude is. And it's going to do, again, some simple mathematics, only up to division. And then it's up with a new throttle that we want to use to send back into the rocket. So it's going to automatically change the throttle based on the inputs of the actual altitude, the desired altitude, and any sort of state that it has inside of it. So this is called a negative feedback controller. We like to talk about in programming or like in the management of people we want to have positive feedback systems. And that's, I usually say that's not actually what you want. You generally want a negative feedback system. But when you're talking about a positive feedback system, what you end up with is a diverging situation, right? Which is actually what you would want in a people management of assuming that you're diverging in the positive. You want people to get better and better and better over time. In our situation, however, we don't want to diverge. We want to converge. And so we want a negative feedback system to dial into the actual desired altitude that we want. So this is our PID controller in Ruby. That's it. We do some setup. We check the current time. We do a loop. We sleep like a little bit of amount of time. And then we calculate three things. We calculate error, which is just the difference between where we are now and where we want to be. We keep track of an accumulated error. And so we take that error that we're at right now and multiply that by the difference in time that we slept. And then we take a derivative, which is basically, again, this is where the division comes in, hang with me. And we come up with another number. And then you can see we have the PID. And those are just constants that we can come up with via trial by error. Or you can actually do some really interesting math using Oplacian transforms and spend hours and hours to figure out what you could figure out in a few minutes of trial and error. So that's super exciting. But then you just set the throttle and that's it. And you save some state for later. And with that, you can actually get a rocket to hover, basically. Assuming you have some sort of control to make sure that it doesn't tip over, of course, but we're not going to deal with that. So, would you like to see what that looks like? All right, exit. So this is Kerbal Space Program. Going to start the game. We're going to resume, got a KRPC. Over here, you can see the KRPC server. This is part of the add-on that I have installed. I'm going to start that server. We're going to go to the vehicle assembly building. We're going to load a rocket that I've already created called the small, AA1 small hover. We've got to have a call sign for that, which makes it easy to find. And it's this little guy. It's, isn't it cute? So we're going to launch it with one poor soul inside of it. And her name is Valentina Kerman. So we're at 78 meters, because we're above sea level at this point.  This is the local host's version of Space.Fail. It is the same server, but because browsers don't like when <IP_ADDRESS>, and I don't know. That's not my area of expertise. But it works for me, and you should all be on Space.Fail colon 3000. And it just says not active, because we're not actually doing anything yet. So let's go to the terminal. We have one file in this particular folder, appropriately named go. I guess it is the opposite of no go. So we're going to just go ahead and run that. And that's going to do like a countdown three, two, one. Give me enough time to show the appropriate windows. And then here we go. So, all right, three, two, one. There we go. Let's take it off. This probably should have been refreshed. Live demos, everyone.  Yeah? Great. Yeah, so again, this is running in development mode. So maybe the whole asynchronous aspect isn't quite working. But if you look at the graphs, you'll see one which is the altitude, and it's very pretty, and it kind of goes like this. And then the other graph is the PID variables that change over time. And then you can see the throttle as well and the fuel. And so what we see here is that right here we have the throttle. And up here we have the height. So I had set the desired altitude to 250 meters. And so it basically feathered, oh, there we go. Well, now that all the data is gone, it's kind of boring to watch. But that's what it looks like. And as it's going, you can actually see the throttle down here is going down because the craft is getting lighter. And I didn't program this. All I wrote was basically those couple of lines of determining the error, the accumulated error, and the derivative. And it's just doing it for me. So this is an example of stepping back from what seems like a really, really hard mathematical problem in seeing, oh, someone else has solved this in a much, much easier kind of way. One way to see how this works with the decreasing mass is if we cancel this, the rocket will eventually start moving up. So up here we can see 253, 254. It's going up because it's stuck at the same throttle, but it's getting lighter. So it's just kind of going up until it runs out of fuel. So all right, so that's hovering. Cool. Next up, orbit. Project Gemini, we have a new problem statement we're going to make, a rocket orbit. We already know what a rocket is, but what does orbit mean? What should we define that as? Well, it's basically go really high and then on the way back down just miss. Thanks to Douglas Adams for the inspiration there. That's basically what's happening. You just go really high and you make sure that you're going fast enough that way so that you just kind of miss the earth as you come back down. So let's get a better visualization of what that actually means. Well, we have our rocket, first of all. It's going to be a multi-stage rocket. We have our first stage, which is these two little boosters here. Second stage is the bottom half here, and then we have a third stage. And the reason you have these different stages is because if you just have one big rocket with one stage, all the extra weight of the empty portion of the fuel tank just bogs you down quite a bit. And so you want to release mass so that your rocket gets lighter and so you can get more, you know, the force kind of results in more acceleration. So that's our rocket. And let's talk about what orbit actually means here. So here we have a space station. And let's draw a straight line. We're not going to follow the curvature of the earth. It's hard to visualize because the earth is so big. But let's just draw a horizontal line here, and it just goes off into space. Now, let's pretend that this spaceship is going to zoom really fast in that direction. And then at the same time, gravity is acting on it. And gravity is pulling it towards the center of the earth. So it pulls down in kind of a slightly slanted direction. So it falls towards the earth. So you can imagine that even though we showed actual curvature here, these two things are actually happening at the same time. So what does this mean? And you end up in this curve because they are happening at the same time. You don't get some weird jagged effect of going around the earth. So in relative terms that we can understand here, let's pretend that that's one foot above the ground, and we're going from Austin to Houston. Do you like my drawing of Minute Maid Park? So the curved distance from Austin to Houston as the bird flies is 237 kilometers. So if you go in this yellow straight line, 237 kilometers, starting at one foot above Austin, you end up 4.41 kilometers above Houston. So that's the difference in curvature of the earth between a perfectly flat line at Austin down to Houston. So I guess that means how long does it take for something to drop, 4.41 kilometers? And the answer is about 30 seconds. So now you think, OK, well, that means I guess we have to go from Austin to Houston in 30 seconds. How fast is that? That's 7.9 kilometers per second. That's really, really fast. And that is actually what you need to do in order to achieve orbit. Basically, at one foot at 200 kilometers high, it's immediately 7.8 kilometers per second. But the further away you get from the surface of the earth or really the core of the earth, the slower you have to go to be in orbit. But yeah, so if I were to run straight at Houston, I'd have to be going 7.9 kilometers per second, such that the gravity pulling me down on each step is about as fast as the earth is falling away from me. That's how fast you have to go. So that's pretty fast. What are the energies required to do something like that? Well, to get up into space, say, 200 kilometers, you do some potential energy calculations, and you end up, for every kilogram, it costs about 2 megajoules to get it up 200 kilometers. But to get it going sideways fast enough, it takes 30 megajoules per kilogram to get it going that fast to be in orbit. So we think of how much energy it takes just to get into space. And that's peanuts compared to how fast you actually have to get in order to achieve orbit. It's a difference of 15 times. So how are we going to actually achieve that? Well, we're going to have a checklist, just like NASA does. We're going to have two state machines. One of them controls the different stages, so we're going to be dropping off engines, and they might explode because they hit each other on the way down, and it's going to be really cool. And then we're going to have a second state machine, which is the control aspect, the steering and the throttle aspect. And then on each tick of the 0.1 or 0.2 seconds, we're going to evaluate what we're going to do based on the two different states. And we're just going to have a case statement that determines what to actually do. And then on each state transition, we're going to determine what to do. So for example, when we say we want to transition from stage one to stage two, we're going to tell Kerbal Space Program to activate the next stage, which drops off the engines. So you have two instances of things going on. You have an instance of doing one thing, and then you have the instance of doing it every single tick. And relying on state machines in this situation is absolutely crucial. The fewer if statements to determine what's inside of my state, the fewer of those the better. Because you want to rely really heavily on your state machines. And what we want to do is basically just pitch over so that we're going sideways by the time we get up into space while we're managing the staging of the thing. So let's see how to do that. Exit here. We are going to revert to vehicle assembly. We're going to load this rocket, as you might imagine, is not going to cut it to get into space. So we're going to use the AA-2 Kerbal-1 Launchable, which looks a little bit more like that. And you saw that already in the slides. So we have KRPC going. Valentina's back in there. Great. All right, so we're going to go up to orbit. And here you can see we've got a couple of different Ruby files. We've got a checklist file, a mission control, and then a state factory that just gets all the data out of Kerbal Space Program. So again, we're just going to run go. And this time, instead of doing a countdown, one of the cool things with this mod is that you can play with the UI in Kerbal. So we'll do that. And there's supposed to be a button that shows up, which is not showing up. So we may have to skip this demo. Do you need to restart the server? Do I need to restart the server in Kerbal? Well, probably not. But we can certainly try restarting things. Let's start it up. I doubt this is going to make a difference. You probably have to reload your browsers here. And it's not doing it. No, it needs to happen here. So let me quit out of here and come back in. In all the times that I've tested this out, this situation has never actually happened. So that's exciting. Again, it's probably one of these hitting the wrong IP addresses. Let's see here. Probably means, no, that should work. All right, well, I guess we're going to have to skip that demo. That's a bummer. Sorry, everyone. It works, I promise. Live demo is the worst. So I encourage you to get the game, because it is amazing the first time you get into space. You can look from the cockpit and like, oh, I'm in space. All right, let's go to the moon. And yes, it's spelled that way in the game. So Project Apollo, we're going to land a rocket on the moon. As programmers, we might take this problem statement and make a few interpretations or implications out of this. So for example, the landing speed is not specified in this problem statement. So we're just going to go with it and see what the stakeholder says. So orbital transfers. So what I'm going to teach to you is called the Hohmann transfer orbit. And so we have this spaceship that's in a circular orbit above a body going around in a circle. And what we're going to do is we're going to follow. And then what that's going to do, it's going to lengthen the orbit on the other side. And so it's going to go into that larger orbit. And now we're in this elliptical orbit.  Perhaps we want to be in a circular orbit. So what we do, again, is fire the rockets. And that pushes the other side, the original side, into a larger orbit. And so that's how we get into a larger orbit, at least with regular chemical rockets. If we're talking about ion drives, it's a completely different thing. If you've seen The Martian, what they show in the movie is not correct. They do not need a supercomputer to figure this out. However, in the book, they do it properly. They say that it's an ion and an engine. So it just goes to show that literature is better than movies sometimes. The book was better, honestly. So how are we going to do this with getting to the moon? Well, we're going to have the moon set up. And we want to not just get to that same circle of a larger orbit, but we also want to get to that circle at the same time that the moon is there. So we're going to go there. We're going to fire an engine, go into a larger orbit, and then meet the moon at an unspecified speed. So these are all the different states that we have to do in this setup to make it happen. We've got to determine how big the burn has to be. So that's determining the insertion burn delta v. A lot of jargon here, sorry. And then we need to determine the location of where we're going to have that burn happen, because if we get to the lunar orbit, and the moon isn't there, that's a problem. So we want to determine when we want to fire the insertion burn. Then we're going to wait for the point where we're ready to burn. We're going to, we have a fire near mid here because we're going to use a warp factor in the game, so we don't have to sit here and wait until like basically the end of the conference. We're going to actually do the burn, which basically means instead of doing 100% throttle, we're going to bring it down to like 10% throttle just so that we can get a more precise finish to that. We're going to go into our trans-mooner orbit. We're going to do outer-moon orbit, mid and final approach. And final approach is the last state for obvious reasons. All right, so let's hope this works. We're going to load a save to the moon. We're actually going to start off in orbit, just to avoid the having to get into orbit and everything. So here we are, we're in orbit. There's our, this is like the last stage of a multi-stage rocket. I'm going to zoom out here. And there's the curbin, not Earth curbin. So we're on that. So this is kind of the overview orbital thing here. So this kind of looks familiar from the last couple of slides, right? We are in this tiny orbit and we want to get to this big orbit where the moon is. See, the moon. All right, so I really hope this works this time. And this, if I haven't made the implication already, the directory of where this should probably kind of give it away. All right, so this is again just going to start immediately. And so you can see, so what we're doing is we're adding a planning node that's just creeping its way out by, we're going to tell it like, add a little bit of extra oomph to it. Is that far enough? No, okay, keep going. Now we're at the right distance. But if we had just stopped there, we would have ended up where the moon is now, but not where it's going to be. Hockey and all that, skate to where the moon is going to be. So now we're determining, oh, now we're going to get into the sphere of influence of the moon. And now we've established an orbit that will figure out that will get us there. Probably refresh this. And we have kind of a dashboard. Hopefully some of you are seeing that. Again, you have to restart that, because action cable, whoo. So we're about to do our insertion burn and we're lined up and there it goes. You can see the throttle jump up. It was down here and it went up to here. And so you can see the blue line is slowly growing to where we need it to go. And this dashboard code is all written in Elm too. So if you want to talk about that afterwards, I love to spread the word of Elm. It's using the action cable Elm package that yours truly wrote. So here we go. We're doing this insertion burn. This is how much Delta V that we have left doing the insertion burn. As we get around like 30 or 20, it's going to go into that finalizing insertion burn. I'm going to jump that throttle way down, get to about zero, close enough. All right, cool. So we're going to time more because again, this would take forever. And so the problem with this game is that, well, there are many problems with the game. But one of the major problems of the game is that it doesn't do multi-body physics. It only does like two body physics. And so in the game, let's zoom in here. See, there's the sun, oh, there's the moon. So you can't do a three-body problem situation, which means you can't do Lagrange points, which is kind of unfortunate, but it was just the game a lot harder to program for the folks. So we're coming in real fast, but we're warping, right? So, okay, we're back to normal speed here. And here we go. We want a profile version of this. Coming down, coming down. There's three of them on this one. Jebediah, Bill, and Bob. Hope you enjoy the landing. And boom. And that's it. Thank you, Kerbonauts, for that. And appropriately, my Ruby program crashes once there's no vessel to talk to. So that's it. Thank you very much. If you would like to see a demo of the middle project in person, I'd be more than happy to show it to you, not up on stage. But thanks again, and I hope you enjoy the rest of the conference.


What kind of childhood did you have? Oftentimes when you talk about having a bad or abusive childhood, people will associate it with physical abuse, the kind that leaves marks and bruises.  Childhood emotional neglect is a type of abuse where the child is ignored, not taken seriously, told their feelings don't matter, and treated like they're not even there.  To learn more about this, here are five signs you've been emotionally neglected in childhood. Number one, you have trouble understanding your emotions. If your feelings were ignored as a child, you never would have learned how to feel and express them in a healthy way. Instead of talking and supporting you, your parents may have ignored you or told you that it's not a big deal. As a result, you may now find it hard to recognize the emotions you feel, let alone express them to others. A research article from 2013 even found that early emotional neglect in childhood played a role in developing alexithymia, which is when you experience difficulties in identifying, decoding, and communicating your own emotional state. After all, if you have difficulty understanding your own emotions, then you'll have a harder time coping and overcoming them as well. Number two, you avoid social situations. The home you grew up in becomes the baseline for the types of relationships you form. In childhood, the time spent with your parents is the time when you learned how to converse, express your emotions and opinions, and have fun with others. So if you experienced neglect, your opportunity to learn how to socialize became neglected as well. A 2019 study showed that growing up without a sensitive and responsive caregiver who provides emotional support and security has negative effects on social functioning. This means as an adult, you may have become afraid of people and will try your best to avoid social gatherings in general.  Number three, you have low self-worth. As a child, you are completely dependent on your parents. They're here to teach you not only about the world, but also about yourself. In this way, you end up internalizing your parents' ideas and values and making them your own. So when your parents neglect and ignore you, they're sending you a message that you don't matter. This is where your self-image and self-esteem may have been damaged.  As an adult, you may neglect taking care of yourself due to feelings of inadequacy and feeling like you're not good enough for those around you. Number four, you're trying to please everyone. Children who grew up in emotionally neglected households often had to pay attention to their parents' emotions instead of their own. If you had to constantly make sure to never upset or anger your parents, you may have grown up to become a people pleaser. This can mean being afraid of rejection or abandonment, being preoccupied with what others think and feel, and becoming fearful of saying no because you don't want to appear mean or to hurt others' feelings.  Overworked because you've taken on too much responsibility or becoming exhausted and burned out from trying to take care of everyone else. And number five, you feel unexplained resentment towards your parents. Sometimes parents are not intentionally neglectful. They may provide a roof above your head, access to education and food on your table, but as much as they're able to provide you with all the material things you need, they may have forgotten that you need love as well. As a result, when you grow up, you may feel unexplained anger or resentment towards them. Maybe you avoid them or never visit them. You may even become confused as to why you feel the way you feel.  You knew something was missing and you still feel it today, even if you're not sure how to explain it. So did you recognize yourself in some of these signs? If so, know that it was never your fault and no matter how hard it is, it is possible to recover. Getting professional help could help you learn about your needs and emotions, gain self-confidence and get your life back on track. If you found this video helpful, be sure to like, subscribe and share it with those who might benefit from it. And don't forget to hit the notification bell icon to get notified whenever Psych2Go posts a new video. As always, the references and studies used in this video are added in the description below. Thanks so much for watching and see you in our next video.