Hi, so my name is Ray Ramadurai. I am principal avionics at Planetary Resources, and what that means is I'm responsible for the hardware and the software that goes into our vehicles and ground stations. Before that I worked at Intel for about 12 years working on microprocessor architecture, design and so forth, did some stuff on the Core i7, the power management stuff, turbo feature, things like that. Back in 2011 I saw that this company was getting started in Bellevue, Washington, and I gave the president a call and said, what are you guys up to? I should introduce Mark Allen. Mark Allen is a senior software developer. He is one of our refugees from JPL. We recruited him out of there. While he was at JPL he worked on the MSL second chance landing software, which was a suite of landing software that was intended to take over in case there was a crash on the flight computer as Curiosity was descending to the surface of Mars. He's one of the few software engineers I've met who is happy that his code did not actually get executed as part of that mission. You might be asking yourself, asteroid mining? Is this for real? Are these guys at the wrong conference? What in the world does any of this have to do with Linux? You really see a very interesting opportunity for new space to incorporate a lot of the open source methodologies, the open source solutions, and Linux in particular into our spacecraft and so forth. Mark's going to talk a little bit about the history of other spacecraft OS approaches and why they don't necessarily map well. But specifically to this conference what we've done is we've looked at a data center and we've looked at a spacecraft and there's a tremendous amount of very interesting overlap in between the two. If you look at the problems that you might have in the context of dealing with a failed node somewhere or if you look at the problems of dealing with widely distributed faults or in particular power, I mean just power efficiency is a huge one, many of these spacecraft are powered by solar so they will want to be as power efficient as possible and we see a significant overlap in between the two. There's also some unique problems on each side of them but when you have that there's an interesting opportunity to leverage what's already been done and we try and pull in as much of that as possible into the development of our flight software. Okay so before we step into the tech what I'm going to do is talk a little bit about asteroids, asteroid mining just to give a little bit of context there and then we'll talk about the spacecraft technology and some of the ways in which we're using Linux and open source solutions. Any questions before I continue? Okay so why asteroids, why now? We think as a company that we've reached the point at which it is technically viable to build small spacecraft to go out and do prospecting and eventually mining of near earth objects. This is the convergence of a lot of different technologies that have come together over the last couple years and then second you know we tend to be a little bit idealistic at planetary, you know we think this is the next step. A lot of us, a lot of people there are former JPL or NASA people, I myself was a huge space fan as a kid and so forth but it's also a business and we think that near earth objects actually represent a interesting potential for significant financial return. But more specifically there's a lot that sort of come together that's enabling us to do this. First of all asteroids have been showing up quite a bit in the news lately so if you think about the Chelyabinsk event that happened earlier in the year and this is when a large bull-eyed came in that nobody knew about, nobody had seen it or cataloged it at all, came in and struck in northern Russia. That NASA has a program right now, they're talking about bringing back a near earth object and putting it into orbit around the moon. So there's a lot of interest in this arena at the moment and we think this is a neat time to go off and start doing this. In addition there's been quite a bit of planetary science over the last couple years that has shown how many of these objects there are, where they're coming from, what they're made of and that has really changed the emphasis on it. I'll show you a slide here in a moment that when I first saw it and when we first put it together was an eye-opener for how many of these objects there really are. Next accessible launch is really changing within the small spacecraft world. So between SpaceX and Orbital Sciences and some of these other small, some of these up and coming commercial providers, the potential for getting things into orbit for less than tens to hundreds of millions of dollars is starting to exist and it's becoming quite a bit more available. Universities have been availing themselves of this to get CubeSats up into orbit and so on and so forth, but now small spacecraft companies and small groups are able to do similar things because of the fact that launch is becoming a little bit more accessible. It's not becoming broadly accessible and the cost isn't necessarily coming down, but at least there's availability that wasn't there before. In fact, tomorrow there's a launch of the first Cygnus, which is an Orbital Sciences vehicle if you're interested in watching launches. Okay, second, there's a lot of things happening in the small satellite industry between companies like Skybox, I don't remember all the other ones, but there are a variety of different ones that are putting up things for doing Earth observation and they are doing data providing for container shipment and things like that. There's a lot of interesting stuff that's happening in the commercial market here and we actually are focused outward. We're actually looking at taking this from a leaving Earth orbit and going interplanetary, but being able to get up there and have a lot of these different companies that are building similar kinds of hardware is quite exciting and it's a real opportunity for us. Okay, there's also a neat thing happening because of Moore's law and so forth. Commercial electronics are reaching the point at which the compute efficiency, the power per unit, the MIPS per unit watt, the capabilities, whether it's virtualization, etc., are crossing over to what is required to actually do a high reliability spacecraft project. And as we're seeing that happen, we're trying to leverage those technologies and use them successfully in our spacecraft. This concept of using COTS or commercial off the shelf hardware has existed for years, but there's a lot of resistance within the aerospace industry to it. And we're hoping that we can actually demonstrate that. And part of the real philosophy there is because of the fact that we don't have to be completely perfect in our operation. It's okay if we crash occasionally. We can actually survive with commodity hardware as opposed to having to have the highest reliability, highest functionality hardware that might go into a scientific mission. Okay, because we've got commodity hardware and we have this type of infrastructure that we can leverage, a small company can actually build one of these things, I think, now. And the way that you do it is you leverage as much of the existing infrastructure as possible. Our software team is a couple of guys, and it would be impossible for them to go and write all the spacecraft code that we have. So I estimate we'll probably end up writing on the order of 5 to 10% of the overall code on a line by line basis of what actually ends up in the spacecraft. That's a huge amount of code. But we can leverage things like the Linux kernel, we can leverage open source and so forth to provide a lot of the interesting infrastructure that would otherwise be written from scratch. And finally, this is a long-term endeavor. We talk about asteroid mining and it's a long-term goal. What we're really working on right now has to do with small satellites that we're putting up in near Earth orbit to validate the technology and figure out where to go from there. All right, I think I'm going to actually skip this slide. This is sort of the company goals and objectives and so forth. But the idea is we want to go out and mine asteroids and so forth. But I do want to give just a little bit of background. So the company was founded by Peter Diamandis and Eric Anderson. Eric Anderson is the guy that started Space Adventures, which is the space tourism company. These are the, anybody who wants to go up to ISS and so forth, they would go through Space Adventures. And then Peter Diamandis is the chairman of the X-Prize. So there are a variety of interesting X-Prizes that have been done, the Anasari X-Prize, et cetera. They've got a current one that's going on for some lunar rovers and so forth. Chris Licky was the youngest flight director ever, and I think he was the flight director for Spirit and Opportunity, the two rovers that were on Mars for so long. And Chris and Peter worked extensively on Curiosity, the rover that's rolling around right now. All right. So I really like this slide. Let me see if I can get it to play. So in 1990, there were about 9,000 known objects, known near-Earth objects. And at that time, there was just beginning to be real interest in it. And what you're seeing here is every time there's a flash, there's another pixel that shows up there, that's discovery of an individual asteroid. That number grew enormously because of the number of space surveys that came online as a result of things like the Shoemaker-Levy comet impact that hit Jupiter. And when you start to look at it and you see how many of these objects there are, it really changes your perspective on the solar system. It's not just the eight or nine planets, depending on your perspective. It's hundreds of thousands, and actually estimates of 1.9 million, not near-Earth, but overall objects. So there's a lot of material that's out there. OK, so there are approximately 1.5 million objects in this solar system. There are about 1,000 of these that are larger than a kilometer that are what are called near-Earth asteroids, meaning that they intersect Earth's orbit or that they're reasonably close from an energy standpoint. And then there are about 20,000 that are about 100 meters in diameter. The interesting thing about these is it's not so much about the distance to them. It's about how much energy it takes to get to and from them. So 17% of these require less energy to get to than it requires to get to the moon. And that number goes up when you think about the return energy required to get back. So this is typically calculated in what's called delta V. And that makes these very accessible. They're easier to get to than going to the moon. Come on, slide change. There we go. OK, this slide is sort of a collection of different asteroids that have been visited by various different spacecraft over time. And you don't get these kind of images from Earth telescopes. You have to get very close to get this kind of imagery. So these are from things like Hayabusa, from Dawn. They're very different probes that have gone out over time and looked at these. To give you a sense of perspective on exactly how big they are, sort of get a feel for the size. That's to scale. Exactly. One of my favorites is it would be a lander. Now, because of the size of these, you don't really land on them so much as dock with them. But we think with something like the 300, we would be able to go out, collect a small amount of material, bring it back, demonstrate the capability, and so forth. That's odd. OK. So just to give you a size perspective, this is the A100. It's built in what's called a 12-view form factor. So there's a standard that's called a CubeSat standard. And it's a 10 centimeter on a side cube. And when you put a bunch of these together, you can get into fairly standard launch vehicle sizes. This is a 12-view configuration, which means that when it's in the stowed form, the panels are folded up and so forth. In the back of it here is where the avionics and all of the electronic hardware is. These are the solar panels on the backside. And then we have a deployable 8-inch optic. One of the key things that we think will enable us to do very small spacecraft is dual use of systems. So for example, the primary optic also will double as our primary communication system by using laser com. And the problem when you're a couple AU out from earth is you can't generate enough RF power to go out in all directions. So you have to have a directed beam. And we certainly can't afford to make use of the deep space network on a continuous basis the way NASA or JPL could. So we think laser com is a very appropriate approach for solving that problem. And then finally, I skipped a slide there. Yeah. And then finally, the problem when you're one or two AU out, the light time, the act time on a single TCP packet is like 32 minutes. So by the time you've received the fault or the condition or whatever the case may be, 32 minutes have passed. And you have no idea what happened. So autonomy is absolutely critical. And if you think about the problem of autonomy, there's a lot of simulation involved. There's a lot of analysis involved. So you need quite a bit of compute. And that really pushes us towards some of the more modern hardware. Speaking of which, this is the Rad 750. This is a power PC-based architecture. And it represents the standby for most interplanetary spacecraft. It runs at a blazing 133 megahertz. And typical systems here we'll have on the order of a couple hundred megs of RAM and mega or two of non-volatile storage. It's rad hard, though. That's its heritage and ridiculously expensive. We think that we can leverage something a little bit more modern. So take the Z5 there. It's several years out of date at this point. But it contains support for things like virtualization. 10x the speed, a fifth of the power, and a 200th of the cost. But again, it doesn't have to be perfect. It doesn't have to survive every single event upset. It just has to be good enough for us to do the mission. And if I use a number of these together and do redundancy in different forms, I can get the same kind of reliability that I potentially would have out of something like the Red Sun 50. All right, so deep space data center. I'm going to talk about just some of the places in which we're using open source software and Linux. And we'll start with the OS. We really want to run a fairly straightforward Linux solution, either with Yachto or maybe Buildroot. We're still working on which one we like better in that context. But the key thing here is we actually want to run it both on the ground and in the spacecraft. We can't afford to go and write a completely different messaging layer for our spacecraft versus what we do on the ground. Now, obviously, the disk may be different or the exact usage will be different. But we want to have the same tools, whether they're on the vehicle, on the ground, or in the cloud. So the core flight software is written to sit on top of that. We make extensive use of Ethernet. And then this is an interesting concept that we've been working on. Having our telemetry go to an on-vehicle SQL database as opposed to having it be just text files, which is how it's traditionally done. And then we're playing with the idea of using MDRAID to see if we can make SSDs a little bit more reliable. And then finally, we want to be able to do simulations. We want to be able to do Monte Carlo simulations of the entire flight software within a cloud environment. So we'll take the system as a whole, instantiate 10,000 of them, and then put faults into each one and see how our flight software responds to it. And then just as would be expected, all of our development tools, all of this kind of stuff are set up so we can run them effectively in a cloud environment. And with that, I'm going to switch over to Mark here, who's going to talk in detail about a few pieces. Sorry about that, guys. All right. So Ray mentioned a lot of reasons why we're looking at Linux and open source and commodity hardware. And I'm going to give you more details on how that works and our motivations there. And as he mentioned also, I'm originally from a more traditional aerospace background. I worked at JPL for five years on flight software there. So working with guys like Ray at Planetary who have been doing cutting edge stuff for the last few years and kind of the mix of both worlds at Planetary, we have a different way of approaching these problems, kind of combining the best of both, hopefully. And to that point, traditional missions, deep space missions in particular, are very expensive. They require decades of work a lot of the time, hundreds of thousands of people, the billions of dollars in the works. And so they're very risk conservative. They basically will find a thing that works and they'll use it forever. And that's for good reason. They're really focused on the science. And the engineering is really only existing to serve the purpose of creating more science. So there's not really an incentive necessarily for them to go do brand new things or push the boundaries in significant ways. And additionally, they only produce a couple of vehicles per program typically. You might have two or three. That'd be kind of unusual. There's some new programs coming on which will make swarms of satellites, but those are just coming to the fore. So we have a very different motivations and a different philosophy. So we're approaching this from a business perspective. And we need to create for ourselves many opportunities to interact with asteroids and acquire asteroid data. Because we don't have a lot of information on the asteroids really. The odds of going out to a given asteroid and successfully finding the right one to mine are pretty low. So we really are looking for the ability to create many, many satellites so we can fly very often. And that sort of implies we're mass production, commodity, cheap hardware, and a platform that can evolve and change rapidly over time as we have the opportunity to do that. And you don't have the chance to really do that with traditional once every few years type missions. We're going to fly hopefully multiple times a year and try new things fairly often. So that allows us to do things like incorporate open source and Linux and commodity hardware and experiment to find the right way to do it. And there's a lot of reasons why we wanted to take this approach. The other reason is we want a long term sustainable strategy. We can't be relying on the same hardware forever. We need to be able to constantly evolve and change. So for these reasons, it's really important for us as a low cost spacecraft developer to try something else, which in this case, Linux and open source and quantity hardware is kind of the way to go. So what this offers us, which is pretty standard for you guys probably, but coming from the aerospace world, you have these silos where the flat software is a silo, the ground software is a silo, simulation is its own thing. And these guys don't have a lot of incentives to reuse or find commonality across their platforms. But now we can see Linux being the spacecraft operating system. It can be the operations framework. It can be the simulation framework. And it's how we develop our code. So we use Linux just everywhere. And that's very advantageous for us. We can reuse software across all these different environments and different venues. It can be in the cloud, on the ground software, in our office or in space. So that's definitely an important factor for us. And open source and the cloud especially has had a really strong, created a lot of tools recently that we've been able to use for spacecraft development, which has been really important. Pretty much everything that you could imagine using for a small web startup in Silicon Valley, we can also use to accelerate our development and make us more efficient. And of course, there's so much software available. There's a solution for any given engineering problem that we're going to tackle in flat software, ground software. And it's just a matter of trying to find the right way to stitch it together in a higher liability system. And that's where it's a little bit more complex for us. But we think there are ways to do that. And of course, there are many more talented engineers around the world using Linux. If you have a proprietary system that only a few people in the world know how to use, the odds of getting new ideas and more motivation into your program is not as good. So having more perspectives and a deeper pool of people to draw upon is very beneficial. As a concrete example of what we're talking about, let's talk about inter-process communication. So on a traditional spacecraft, you're running in RTOS, like VxWorks, maybe a uniform memory space. You're going to write off of scratch, essentially. You're going to write the state machines from scratch by hand. You're going to have your own messaging layer. It's all going to be something you have to maintain forever. So we're taking a different approach to that, where we want to basically take a bunch of different open source libraries and tools out there and tie them together using auto-generated code for the most part. So we can take models of state machines in XML and messaging in XML, use Python tools to generate code via protobuf and cheetah. And then on the spacecraft in the runtime environment, we can use something like 0MQ in Linux, which is normally used in financial systems and low-latency messaging applications, along with the quantum framework, which is an open-source state machine framework, which is really great. I don't know if anyone has heard of it here. And Nanopv is also another really cool library we came across, which allows you to do embedded protobuf serialization and deserialization in a more deterministic and fixed way, where you don't have the STL or dynamic allocation available. You can use NanopvB. So it's a pretty cool tool. So something like this allows us to save a lot of time and just why reinvent the wheel. It's very powerful, and it allows us to leverage these same open standards and open software tools at all levels of our system, included in the ground. And virtualization is another important thing for us. It plays a role in all of our contexts. And we use it for running the mill stuff the way you guys probably do all the time for IT, for enterprise, for building your software. But it's also applicable on the spacecraft. You might ask yourself, why has no one ever done virtualization on a spacecraft before? Well, if you look at the RAID 750, that's 15 years at a date by now. There's no way to do virtualization on that platform, and that's kind of the position that most of these programs are in. So if we take a step forward and try to learn how to use commodity hardware in space, we could certainly take advantage of virtualization and all the benefits that it offers us as a real-time system in space that has a lot of risks and vulnerabilities. So there are obvious benefits for this. We can decouple the hardware and the software, so we can continually evolve the hardware platform and make changes without having to re-verify and redevelop large swaths of the software. And that's really important for us as a very small company. We can't spend a ton of time revalidating the software every time we tweak a small thing in the hardware. So this is really great. And then we can deploy payloads, independent payloads, to the spacecraft without huge concerns about adversely affecting the spacecraft or each other. And that allows us to add maybe new instrument, like a new radar, add a customer payload. And I think it's important to point out that in solving this really hard problem of asteroid mining, it's kind of like when Apollo was underway in the 70s, NASA had to find new ways to do things because it was too power, hungry, and too massive efficient the way they were doing it. They had to basically invent the microchip to make it reasonable. We're going to have kind of collateral technology development as part of this that we hopefully can leverage in other areas other than just asteroid mining. I think that solving these problems in this new way will be applicable across many different applications. So one kind of more interesting example of this is using hypervisor on the spacecraft to emulate hardware redundancy. So radiation is a huge problem in space. How many of you have had some strange hardware anomaly that's caused a bug in your flat software and caused you days or weeks of pain and trying to debug it? Anybody? All right, well, I think this is more common in data centers than other venues probably because there's so much hardware and it's more commodity. It's kind of inexpensive. So you have a lot of potentially hardware issues to deal with. And in space, that's true in spades. We have a radiation environment where the sun is generating particles that can fly into the spacecraft and cause bits to be flipped, corrupting state and damaging hardware and potentially killing hardware. So it's a very unfriendly environment to electronics and to software. So this is the kind of thing that keeps me up at night. How do we design a system to not be totally vulnerable in this case? So the hypervisor can provide one avenue for emulating traditional TMR, which is where you basically vote three signals together and the majority wins. So if you have one misbehaving entity, we have three identical virtual machines here. They're all getting identical inputs. And they're computing some kind of GNC control algorithm, which is what's the next thruster output. If one of them is halted or has cryptid state, which causes it to give you a huge value, which would destroy the spacecraft, we can vote that out. And I'll be the first to agree that this simple diagram has a lot of complexity. But for us, it's massively important that we not develop Boutique hardware for this purpose. So we have to maintain forever. And we want to try to leverage this in a generic way, where this is kind of platform-independent TMR, where you don't have to know anything about what you're actually doing at the software level or the hardware level. It just knows that here's I.O. and this I.O. has to be correct. So that's very important for us. We think this could be a way we can leverage virtualization in these other platforms in a new way. And we plan to fly a hypervisor on our first mission sometime next year. It's kind of a proof of concept. Try it out operationally. See how it works. If you have any ideas for that, we'd love to hear them. Another analog to the data center we could talk about is the data story in terms of how we acquire data, process data, and deliver data to our users. So we sound like an asteroid mining company, like we're with pickaxes on the asteroid, actually trying to get ore off of the thing manually. But we're really a data company at first. We need to go out there and find the asteroids of value, figure out where the right ones are, when they're going to come around so we can access them. And that's really our fundamental value to our customers and to ourselves right now. So if we can't deliver data, we're not really very valuable. So we don't have the DSN either to leverage in terms of traditional methods of getting data down, as Ray talked about. We don't have the resources to do that. So we have to find new ways to be more efficient about it. So you can imagine that relational databases or like a NoSQL database is kind of a natural thing you might want to use for this purpose. You have data that's very well structured. You can easily query it. But this is never, well, I don't say never, but it's uncommon in spacecraft, mainly because of the RTOS issue. It's difficult to get it compiling. The process model is very different. And for risk reasons and heritage reasons, this is just not typically done. But we're learning Linux, so why not give it a try? And there are a few challenges that we'll talk about in the next few slides here. But we think we can make this work. So a spacecraft has very limited communication windows. You have a latency issue that Ray talked about. And there's a line of sight issue where you have two moving bodies, and they're both rotating. So you have very small time windows where you can actually conduct communication. And we have a lot of data on the spacecraft. We have images potentially. We have a whole host of metadata about the asteroid. And we want to sort of mirror a subset of that data down to the ground, but only the stuff we care about. We have too much data to get it all down, so we can't kind of go through and cherry pick it and have a luxury of deciding what exactly we want with the full data set. And we can't keep it forever because the spacecraft is very limited. So I feel a little bit smarter about this. And traditional systems really just, they'll tell you basically what type of data is on the spacecraft, but you don't know what exactly is in it. So you can't be very efficient in terms of what you choose to download. You're going to get a lot of stuff you don't really care about. So using SQL, we can say something like, give me all the times when this device exceeded a certain voltage threshold, and that'll help you maybe debug a power issue, maybe something's consuming too much power. You can tell the spacecraft a priori. Here's the stuff I care about on the next comm window. Prepare to assemble this data set for me and deliver it as best as you can. Maybe it's too much data for one compass, but it'll kind of figure it out as we go. And this kind of allows you to, with very little information, tell the spacecraft what you really care about. And this is, again, not rocket science, but in spaces has not typically done. So by using Linux and open source technology, we are able to do a little better than we have before. Integrity is the other major issue with using a database in space. We're using commercial, solid state disks, we're using commercial disk controllers. This stuff is not meant to fly in space. So we have to think about how we can incorporate a database like this and actually make it reliable enough to be useful. So there are a couple of ways we can do that. The first is just we have to design, at our level, for faults. The absence of the database should not be a fatal event for the spacecraft. We have to have good defaults. We have to be able to handle missing data or connections that are not available. And that's just kind of on us to do. We can partition critical data away. So you have a separate database for, like, configuration and state data, which is very small. That can live in maybe a more radius and hard e-prom. Or non-critical data, which is telemetry, that can live in the SSDs. Losing that's OK. We can deal with the fact that we might lose telemetry once in a while. And again, this is, we're not NASA, so we'd have to have 100% reliability. This is kind of, we have more freedom to experiment and take a little bit more risk here. ECC is another important thing for us. When the database is in memory, we have a flight computer that has ECC to protect us. And that's another area where the blade servers have kind of pushed the feature that was normally high end into commodity hardware. And we can finally take advantage of that with very inexpensive flight hardware. And at the file system or database level, we can also use ECC. And then there's RAID as well, which is, again, this is kind of a no-brainer for data centers. But in space, typically RAID is not the way this is done. We can use something like MD RAID to, inexpensively, and with very little hardware, provide disk redundancy and protect against corruption of data. And the last thing I'll talk about is the cloud. Like everyone else, we use the cloud to scale to, for data storage, data processing, all the things we've talked about already. We can create a lot of data with the spacecraft, not as much as most of you guys, though. But what we can do that's more interesting from a spacecraft perspective with the cloud is do Monte Carlo type test campaigns, where let's say you've got a critical event, like an asteroid rendezvous. You want to simulate that with 1,000 different asteroid rotations or centers of gravity or spin axes. And you can seed the software simulation with all those different cases and run them in the cloud and with the flight software in the loop. How's it going to perform? And maybe inject faults at different time steps within that scenario. And this is important for us as a very, very small team. We can't possibly test every case we care about. And test by time is very hard to get with the actual hardware. So this is kind of a requirement for us to get the reliability that we need. And you might be wondering about ITAR. ITAR is definitely an issue for the cloud, for us, because data can be anywhere. And who has access to your data and to your products can be anywhere, pretty much. So Amazon is a new product called GovCloud, which is ITAR compliant. And that's the thing we're looking at to help us get this sort of sensitive information into the cloud and utilize it in the way that I've just described. I'll bring Ray back up here now for the last view. OK, so I just wanted to make a quick pitch. We are looking to hire software and hardware engineers. We've got a few open positions, so if you're interested, bring a resume or a card or send a note. You can go to the website as well. And finally, I think we've got a little time for questions. So you talked about simulated triple over dot and with the three VMs, right? But do you have any, sorry, so that doesn't protect against any corruption in the hypervisor, right? Is there a good solution to that? So that's correct. It doesn't do anything for the hypervisor. But if you look at the amount of residency time in the hypervisor and the size of the memory footprint there, it's substantially less. So what this is giving us is a solution that may take us from a reset case where we're resetting three, four times an hour to something where we're resetting once a day, right? Because the goal here is not to get perfect. The goal here is to be able to survive long enough that we can actually successfully manage the faults. So yes, but here the trick is you're not spending a ton of time in the hypervisor for the most part and the memory footprint small. It's a probabilistic game with the radiation. So it's about cross-sectional area and what's vulnerable. So we're making less of a software vulnerable, basically. Other questions? I got two, I guess. Are you worried about SQL and all this being massively complex versus traditional space software? I mean, it's a general purpose solution that seems like it has a lot of extra code that could easily just crash for reasons that just didn't need those features kind of thing. And the second question that's completely different is, have you ever thought about putting like a relay station in orbit to collect all the data, all the extra data from the satellite you're talking about, and then that would give you more bandwidth back down to the ground? OK, so let me just talk very briefly about the database question. We're still evaluating different databases. It's absolutely a concern. But unless you're going to go off and write a custom solution, you're going to have to take a certain amount of dead code that you wouldn't otherwise be needing. So yes, there's a certain amount of risk there. We haven't picked the appropriate final solution yet. We actually spent quite a bit of time looking at SQL Lite just because of some interesting properties that it has. But its performance, for other reasons, wasn't appropriate. So the answer is we haven't really picked quite the right solution in that space yet. This is a general philosophical design question, I guess, about how you integrate open source and stuff that isn't necessarily meant for higher reliability systems or for real-time systems into a real-time system like the spacecraft. So we have to think carefully at how we do that. And the database is a great example where you have a server that could be servicing any requests, and your real-time threads can't get blocked on interacting with that piece of software. So we have to use asynchronous methods, I think, to prevent that. And Linux provides, I guess I come from this VxWorks context originally where it's one giant memory space. Just having processes is such a big jump that having a database like SQL is not that scary to me. I think we can solve that problem. And it's been solved before. And then you'd asked about relays and so forth. The COM problem is a really, really complicated one. And the challenge there is pointing more than anything. We don't specifically have the notion of an individual relay like that that you build out. But because everything's moving all the time, it's very difficult to sort of have a relay that you can point back like that. But what we have talked about is developing a symmetric spacecraft where you have one whose purpose is to relay back and then you have a swarm at the object, at the asteroid. And then they all communicate locally and then send back. And that is a concept that we've thought about. It's very exciting. Other questions? Good question. You were talking about the generations of the arcade telescopes that you want to send out. What are the timeframes that you all are thinking of? Any ideas? Just curious. So exact timeframes are TBD. We're still figuring it out exactly where everything's going to line up. I will say that we do have launch manifests for next year for a early hardware prototype that we're working on. And we'll see things going up from there. But the problem with launch is that you get moved around all the time. And you never know what vehicle's available when and so forth. So it's very difficult to nail down a particular one and say, I'm launching on this exact vehicle, on this exact date. So the question was, who are you launching with? And for the same reasons, it moves around. I can't specifically answer that. So you mentioned why you can't do TCP, because the handshake would take too long. Are you still using IP? Are you using IP 4 or 6? What is your layer to pack it to laser com encoding? So we're not doing TCP. And maybe we can talk about this separately. This is a new area that we're just working in. So I don't want to get into too many details there. But there are some high latency protocols. And if you do a little bit of research, there's some very good high latency protocols that are effective for this kind of thing. And we're looking at incorporating one of those into a networking stack. One more question? So you get an advantage for writing your flight software as regular Linux processes that you can run in other environments. At NASA, there was work by Goddard to build something called the core flight executive that would achieve sort of the same goal without having to run Linux on their embedded board. Have you looked at that sort of approach so you can run a real time OS on your vehicles? Yeah, I took a look at the core flight software. Being from JPL, we looked at that as well there. I think that the idea of trying to run Linux in every context, including in the cloud and in the virtual environment and in the ground station, kind of implies that we want a more general solution. And Linux is, I think, a better platform for that than the core flight executive. And I think there are some other architectural considerations that we wanted, things that we wanted that the core flight software didn't quite provide, though I think it's a good baseline. OK, thank you very much for coming. I appreciate the time.


Good morning all of you and welcome to this discussion on the lab session. So far we have been discussing a hypothetical dumbo to represent our computer. Then we looked at the computer's internals, looked at how machine represents information using binary numbers etcetera etcetera and then finally, we decided we will look at the actual computer. If you recall when we drew the architecture, at that time we had shown that we would have a keyboard and a terminal in front of us. Most of you would have used the terminal sometime or the other, some of you have never done that, but that is ok. I cannot show you the keyboard here, but I think you should have seen the keyboard of a typewriter at least, if you are all familiar with keyboard and various keys. So, that is the front end of the machine that you see. At the back end connected through some kind of a network, there are not necessarily one, but multiple computers.  In the lab that you will work, we have provided for a separate server for CS 101. That is the place where all your computer programs etcetera will reside. Remember, we talked about a disk, a disk which can contain your programs and so on. All of that will be at the back end server. You will not be seeing that. Your own PC that you will use will also have a disk, but that is called the local storage. Now, couple of things that we should understand before we start looking at what we do with the lab. What we know is that we are going to write some programs to solve problems. The programs which we write are called application programs. These programs are to be executed on the machine and we saw that these programs must be translated into the native language. Who does the translation? So, that person is called a compiler. He is not a person actually. Compiler is a specialized program which some experts have written earlier. So, we must know how to invoke that program, how to give our C++ program to that compiler and what will happen to the translated program? Where will it go? It so happens that the C++ compiler program when it is running for it, your program is the input and the translated program is the output. It is not executing your application, but it is translated. So, it will take all the symbols and lines in your program as input, convert it into its own machine instruction and will produce an output which will be the executable program. Where will it keep this? Where would you like to keep your program which you type in? For all of that we said that there is a device like this. So, on the disk, I would like to keep all this information. Now, I want to keep my program. You want to keep your program. You want to keep one's own program. You will not only keep C++ program, but the translated programs also you may want to keep for execution tomorrow. All these pieces of information are kept in the disk in terms of files. You know what a file is? So, let me open up a document. You can see what it being typed here. So, file is the name given to a unit of information that will be maintained in the disk by the computer. For example, we have office files. You have seen the files in which you keep papers. Here, instead of keeping papers, you keep a sequence of bytes. That is what is kept inside of file. Obviously, each file will have to have a name. What is the naming convention? The name, for example, for our program files, you will remember from the lectures, I had used some name as, do you remember some such name? This name has two components. One before the dot and the other after the dot. What is written after the dot? This portion is called actually extension. And there are some standard extensions which mean something to the computing environment. Please remember what we are discussing now is not a computer, but we are discussing the computing environment in which you will work in the labs. So, that computing environment recognizes various extensions to mean something. This dot C P P is recognized to mean a C plus plus program. So, if there is a file called something dot C P P, the computing environment treats it as a C plus plus program. There could be similar extensions. For example, an extension called dot txt. Txt stands for text. So, if there is a name with dot txt extension, it would mean that the file contains some text. It is not necessarily a C plus plus program. It could be a story. It could be any text in English. That could be the file. There are many such extensions. We shall see how these extensions are handled. What we now want is that the computing environment should be able to help us enter our C plus plus programs, should help us to invoke the compiler, make it translate my program and then the environment should help me to run my program. This entire task of handling everything is done by some specialized programs. Those programs are called operating system or for short OS. So, OS is not one program. It is a collection of programs. Who has written them? Well some experts have written them. There are various companies which make different operating systems. You might have heard the name Microsoft Windows. Many of you are familiar with that. Windows is one such operating system. Another operating system which is quite popular is called Linux. The major difference is Linux is an open source operating system. So, several people in this world have collaboratively written this operating system means all the programs which make up the operating system and have dedicated it to humanity. You can freely use it. You do not have to pay any money to any. So, it is called open source operating. We use in IIT Bombay mostly and most certainly in the OSL is a variation of Linux which is called Ubuntu. Ubuntu is the operating system name that we shall use. There are many variations of Linux which are available. Ubuntu is one. Red Hat Linux is another. Suze Linux is third. There are so many of them. Linux itself is open source. So, all of these are open source. The name Ubuntu comes from Africa and a great philanthropist had dedicated a lot of resources to support this development and therefore this has come out as a major operating system which people use. So, what the screen that you see here is actually the Ubuntu screen. So, whenever you start the machine, the machine will come up with a Ubuntu screen. This is the first sign of an operating system. There is a program which is a front end between you and the machine and that program will show you this. In fact, the screen that you will see will be of this kind. So, there will be some icons in the screen. There will be a title called applications. There will be a title called places. There is a title called system. Why you cannot see it here is I have increased the font size so that you can read it easily. Normally the fonts will be smaller and there will be many more things at the top line which you can see. So, let us go back to what we were trying to do. So, we understood so far what that information can be kept in the files in a disk. So, file has a name and an extension and this is an example and this extension means a C++ program. We have understood. Now, there will be many files on the disk, your files, my files, etcetera. It is quite possible that I have a program called add numbers dot cpp and you also have program called add numbers dot cpp. Now, both these names must exist as two different files on the disk. Who will manage that? So, there has to be some management of files on the disk. One of the tasks which the operating system has to do is, now you pile up on the computer and you want to run various programs. The very first task you want to do is to create a program. You have written it on piece of paper that C program how will you write? Can you just type a program on the terminal? It will remain on your terminal. How does it go to the computer? In fact, how will you correct your program, modify your program? So, you require text editing. So, there is a program called g edit which will be using for this purpose. After you have created the program and stored it in a file called add numbers dot cpp. For example, you would like to compile the program. So, compiler will have to be there. Now, if all programs remain in files on the disk, the compiler will also be sitting in the disk. You would like to use that compiler. What is that compiler called? So, you will need a compiler program and the compiler which you use is called gcc. It stands for GNU C compiler. The actual command that we give is C plus plus. We shall see that in a moment. So, you can say a variation C plus plus. G stands for GNU C compiler. GNU is not necessary to understand that. Gcc is a very standard compiler. Many of you might have used turbo C for example, that is one compiler. This is another compiler. The point I am making is that the computing environment should provide these programs to a C compiler or C plus plus compiler. It should have an editor. It should have. You may want to browse the network. So, you will require a browser program. The browser that we use is I think, is it Firefox? You want to do emails. So, there is a mailing program that you can use. There are multiple mailing programs that are available in IIT, like Scriral Mail or there is a web-based web mail program. You can use any one of those. You would like, when you do the assignments, you would like to submit those assignments. In old days, people used to take printouts of the program and submit, but that is silly because the programs are on the disk and I have access to the same disk through some other means. So, therefore, you would like to upload your assignments automatically onto the computer. Similarly, these printouts which I have given today, it should not be necessary to circulate printouts. I can put this document as a file on the disk and make it available to you to read. Now, I need a system which will manage this interaction between us, where you can upload assignments. I can upload announcements. I can display grades, marks. I can put notices there. You can read that any time. You can see who are the students in your group. You can see the bar point slides which I use, converted into a PDF document. You should be able to see them on that system. Such a system is called a learning management system. The one which we will be using is called Moodle. Moodle is used extensively in IIT. You must have been introduced to the notion of Moodle. Now, this is the background. We need all of this to be provided and all of these programs, text editing, compiler, browser, email, LMS, all of these are programs. And all the programs, their execution, their safekeeping, etcetera, is controlled by the operating system. The operating system which we saw, which does the management of file system as one of the function, it also does something else. It also does loading and execution of all programs. So, this is, that is why the operating system is called the manager. Remember, operating system is a collection of programs. So, just as you know, one Dumbo to be one computer, imagine there is a operating system Dumbo, who is sort of a manager. And he has several assistant Dumbo. One assistant Dumbo is text editor, another assistant Dumbo is compiler, a third assistant Dumbo is file manager, which manages the files on desk. A fourth assistant Dumbo is what is called process manager, because it has to manage memory allocation. You remember, I said memory is in bytes and computers have gigabytes of memory. But when I use the machine, I want some portion of that memory for my program. Simultaneously, you may be executing a program. So, you will require some memory. How will the, just like files have to be separately kept. The memory also has to be separately assigned for different thing. I might be running three or four programs simultaneously. The memory inside the computer has to be allocated to all these programs. All these tasks are done by the operating system. So, memory management, management of files and management of execution of all programs or process management. These are the main functions of the operating system. In addition, it has to manage user interaction. So, if we imagine that operating system is some kind of a Rakhvaldhar or a gatekeeper, the big Dumbo, how do I interact with Dumbo? Dumbo himself does not understand C++. So, in which way I will give it a command? I want to make a file on the desk containing a program. Or I want you to run my editor. I want you to run my compiler. I want you to run my email. How do I tell? How do I interact? This user interaction is controlled by a component of the operating system, which is called the shell. So, shell is the user interface to us. And this interface is obtained using a terminal. What do you mean a terminal? I mean after all for me the computer terminal itself is terminal. But that is not the terminal. So, let me show you what a terminal is. When you go, as I said, when you switch on the machine, you will see this screen. Actually, you will see a login message that login followed by a password is to be first done that is authenticating yourself to the operating system. The operating system must understand that you are a valid user. Otherwise anybody will come from Pawai Lake and start using your computer. It is not permitted. Now, you all have your roll numbers. Roll numbers have been entered by what we call system administrator, who is the boss of the operating system. He is a person. So, the system administrator in our lab has created login IDs for all of you on our computer environment in the lab. So, when you go, you will login using that roll number. And first password you will have to be. Initially, your password is your roll number itself. And then you are permitted to change the password, how to change the password, etcetera, is part of the exercises here. Now, what I was telling you is that what you see here is not the terminal. This is the physical terminal that you see. The word terminal that I use is actually a utility program of the operating system. And for that, can you see the mouse moving on the screen? So, there will be a mouse by which you can move this cursor. This cursor, you take it to applications and press the left key of the mouse. You will suddenly see a menu. It will have accessories, education, games, graphics. Please avoid this during the lab timings. Internet, office, programming, whatever, you go to accessories. In the accessories, you see so many things here. Out of these so many things, the terminal, this is the terminal. So, when you press this, see what happens. You suddenly get, this is the terminal. This terminal is your interface to the operating system. Whatever you type here is read by the operating system DUMBO. And whatever operating system DUMBO wants to tell you, will be shown on this terminal. The dimension of this terminal can be modified. So, for example, I can take this screen and make it smaller. For example, I can move this window. I can move this window like this anyway. So, what you see is the background screen and you see a terminal here. In a nutshell, how did I get this terminal? I took the cursor on applications, looked at the accessories, looked at the terminal and press this. Oh, I got another terminal. What it means is that the operating system is capable of permitting me to open multiple terminals. These are all windows on the screen. Later on, we will see that this is a very exciting possibility. In one terminal, I can run one program. In another terminal, I can run another program. In third terminal, I can be doing something else. So, that is all possible in a single physical screen. But anyway, for the time being, let us remove this. Now, this is the terminal which permits me to interact with Mr. DUMBO as I said. You see how I am changing the size of the window. So, I can make it small, big, whatever way I want. Please note that the example that I was using was being typed by invoking a program called OpenOffice, which is a word processing program. It is almost like a text-intel program. So, I am using that online to type text which you can see. But I can store this as a file. I can give it a name and then I can store this as a file. So, this I am using as a sort of white board for you. Anyway, now we see something more about the files. Files are organized in directories because I may have multiple C programs. I would like to access all of them together. You would have multiple C programs. So, there is actually a hierarchy of directories that is created. What is a hierarchy? You will have a main directory in which you will have one, two, three, four sub-directories. Under each of those, you will have one, two, three, four, five other sub-directories. Under each of these directories or sub-directories, you can keep some files or you can keep additional directory. Ultimately, the smallest unit of information is file which has a name. When your usage account is created in our computer, the Ubuntu automatically creates some directories for you, whether you like it or not. Those are known as the default directories created by the system. Additionally, you can create as many directories as you want. This directory structure is visible whenever you want to open any file. I will show you the directory structure here. So, when you go to places for example, you can go to home folder. It is called a folder in Ubuntu. What I call directory is called a folder. So, instead of directory, sub-directories, you can imagine it is folder, sub-folder, etcetera. So, you press this home folder and you suddenly see this screen. Notice what it says. It says location is something slash dbphotag. dbphotag is my name. So, this is my home directory. Whenever you log in, you will go to some home directory. In that, there are so many directory – Apple iPhone photos, Autumn CS1012010, Ock Scripts final, SEBI. Notice that these are all names that I can use for either for files or for folders. Same names can be used for folders. So, let us… If I want to see what is there in this folder, the notation for the folder is like this. I go there and click. I press the left button of the mouse. I have to click twice. And suddenly what I see are the list of files which are inside. So, there is an ASC list, CS101, Computing, Environment, ODP. All of these are files which are inside. I can see these files differently by going to view and saying, I want to look at the files in the form of a list. So, when I say list, the files are seen like this. This is the name. This is the size of the file. I hope you can say what is KB. KB means kilobytes. So, bytes, kilobytes, megabytes, in that you will get the size. And it will say type. Notice this is called .txt file. I have named it. I have a choice of naming the file. There is no issue there. So, this is how files are handled. Now, we come back to our terminal. There are two terminals in fact. So, let us remove one terminal and keep only one. What you see is a dollar sign here. That dollar sign is a signature of operating system. Whenever you log in, this dollar sign will come. It is called a prompt. So, operating system is prompting you. Please give me some command. I will execute. So, whenever you are at the dollar sign, whatever you type is a command to the operating system. There are certain commands which deal with the file system. These commands are given here under elementary unique shell command. You remember I mentioned the shell. Shell is the interface between operating system and you. This dollar is the shell program. So, whatever command I give here will be executed by the operating system. For example, I want to know which directory I am currently in because I will have some access to the directory. I can say pwd. pwd is not public works department. It stands for print working directory. So, currently I am in some directory which is that directory. When I press enter, it will say this. Slash home slash db further. Slash home is my home directory under which I have created a directory called db further. Under that there could be many other directories and files. Currently I am here. What are the files inside this directory? I say ls. ls means list. Give me a list of all files. I press enter. I will see all these lists. So, it has template, test, trial.vp, trial.cpp, videos, expert, expert, no member, nine, etc. The other way of looking at it is places. You remember what we saw this when I go to home folder. Whatever I see here, actually I have a very large number of mess in my directory here. So, whatever you see, all of these are directories and some files are also there. Inside this, when I go to home directory, I will get some specific. Now I want to go to this 2011 CS101 directory for example. So, please note that once the operating system has finished the job, it will give me a dollar prompt again. So, the shell is at my disposal. It is like my servant.  It will again come back with a dollar. Its job is to execute my commands. So, two commands we saw PWD and LS. But suppose I want to change directory. How can I change directory? If I want to find out whether a specific directory exists or not, I can say LS CS star. That means show me all the files, all the sub directories which start with the word CS. Star means anything after CS. When I do that, it shows me CS101, autumn 2011, 2012. It shows me greetings.cpp, which contains this. So, I have this directory. I can change to that directory by saying CD. CD means change directory. Currently I am in home db folder. Now I want to change it to something else. What I want to change is to, I want to change it to this CS101 dash autumn dash 2011 dash 12. This is the name of a directory. So, I press return. It doesn't say anything. But if I now say PWD, it will show me this directory. So, it has gone one level below. The levels are indicated by the slashes. Slash this, slash this, slash this means go down. Now I want to see what is inside. I will say LS. It shows me A dot out, greetings.cpp, greetings v2.cpp, tilde tilde. Notice that for every dot cpp, there is a tilde. The additional file that is created by the editor. I am not concerned. But since we are at it, let us look at an editor. If I want to invoke an editor, I will do it from the same place. How do I do that? I say g edit. Remember I gave you the name. g edit is the name of the editor program. When I say g edit, another window will come. This is the editor window. In this editor window I can start typing any text that I want to write. Usually I will use this to create my C++ program. So I will say, for example, hash include IO stream. As I type, it will appear here. You can see the cursor.  Notice that I made a typing mistake here. I said using blank NAM space. So what I can do? You can see the cursor that is moving. I can take the cursor to this NAM. I can place it here and press the left key. The cursor will move there. See the cursor was somewhere here earlier. The cursor can be moved by the arrow keys also. So I can use the arrow keys and move it. Now I want to add E here. I will just type E. I want to delete something. I press backspace. It will get deleted. It is so easy to edit text. When I do all this, I can store this as a program. So I can say save. It will show me where it is saving. In the DB folder, inside this folder, some unsaved document one is the default name that editor has given. I do not like it. So I will give it another name, try1.cpp. This is not a full program. But I have given it a name. And when I say save, notice this save button on the right, this program will be saved. Now you notice what it says that the top is try1.cpp because now it has a file. This file, when I complete it as a program, I can actually run the program. Now here I already have some programs written. I have just created a file try1, but let me open another program. See it has these many programs. Let me say greetings.cpp. I double click on this. The same editor window will open greetings.cpp. Notice that it has opened two files. One is try1.cpp. I take the cursor here and press the left key. I will see that file. If I go here and press, I will see the second file. You will agree that this is a complete program? Greetings.cpp. Sorry, come again. No. This is the C++ standard. GCC, the compiler that we use, uses this standard. Anyway, we will know. He pointed out that according to him, there is possibly some error here. But whether there is error or not, we do not know. In fact, let us make some deliberate error. Let us write only one slash here. C out less less. Instead of that, C out less. You agree that this is a definite error? I will save this now. And after saving, I want to run this program. So I will say stop. I will go to my terminal. I do list. I will see this program is there greetings.cpp. I want to compile and run the program. What is the name of the compiler that we are going to use? GCC is the GNU C compiler, but the specific command we give to compile C++ program is called C++. So we type C++. If I just press return, the major Dumbo operating system comes back saying, you are not specified any file. You say compile, but what do I compile? So I have to type here C++ blank and I have to give the name of the file. What was the name of the file? Greetings.cpp. So when I say C++.greetings.cpp, it has given me these errors. No match for operator less than in something-something. You see for one simple error, how much that compiler is shouting at me. These messages are not given by operating system. These messages are given by the compiler. So what the operating system does? It invokes the compiler says, you run and whatever error messages are there, indicate it to the user, but when you finish, give the control back to me. And when the compiler gives control back to operating system, it throws me these lower. Now I can see these messages. I know there is some error. I will again say g edit. I will again go to that window. Now everything else is gone. So I have to open that file. I open this file again. Greetings.cpp. Now I see there is a mistake here. I correct that mistake. So I take the cursor down here, like this, wherever I want, by arrow keys or by mouse and putting it here, I will say this and I will now save. The name has already been given. So it will not ask me for the name. It will save the file. After I save it, I can close it. Now I come back here and I again want to give the same command. What was that command? C++, something, something. Now there is an interesting feature that operating system gives me. That operating system shell tells me that, look, if you want to execute a command which you have already given earlier, you can press the up or down arrow keys and I will keep showing you those commands. You can execute any one. So I press the up arrow key here. You remember g edit was the command I just gave? I press the arrow key once again. I get this command. So this is a shortcut. I don't have to type again. If I have given a command earlier, I use the arrow key, get that command. I still have to press and enter. The operating system shell does not know which command I want to enter. When I press enter, it will now execute the compiler and compiler will translate the program. When it translates the program, it does not say anything. It just gives me a dollars. It has executed the compilation is done. But after compiler, how do I run the program? Do I say greetings.cpp? Because this is the program I want to run. I say this, what happens? Sorry. It says permission denied. Mr. Dumbo finds out that this was a C++ program. This is not a machine-read, a machine-executable program. Dumbo cannot execute any program directly in C++ or whatever. It has to execute program which has been translated. The translated program is kept in a special file. This special file is called a.out. It is an output file created by the compiler and to refer to this file, we have to type against the dollar prompt that we see .slash a.out. I will leave it to you to figure out why do I have to say .slash. It is not easy. You read some material on the file system and I will explain it to you in the next week in one of the lectures after you have completed the first class. But this is for the time being just understand that by default the operating system is looking at some place for this a.out. It will not find that place unless you specifically tell that place. . means the current directory. . slash a.out means the a.out file which is in the current directory. That is the meaning of it. When I give this command, not here. This is the word processor. Where do I give this command? In my shell. So here is my shell. Now I say a.out. It worked. Let me try to give .slash a.out. This also worked. What it means is in my computer I have set environment variables such that I do not have to say .slash. But you may have to say .slash a.out if just saying a.out creates a problem. You see that the program is executed. Is this program executed correctly? Of course. Whatever we have written the computer has done. But why am I getting hello blank word nothing. How blank are you? Question mark. And my dollar has come immediately after that. I would like these messages to come in different lines. This is not happening because we did not tell the computer in our C++ program to insert new lines after the messages. It will not do even that on its own. So we will edit that program again and correct it. And here is another trick that I can do. So far we saw whenever I say g edit I would go to the editor window. But I had to close the editor window to come back here again. How nice it would be if I can see the program that I am editing. I save it there. But without moving away without moving that screen out of my side I can come to the terminal window execute the program. While the execution errors come I should be able to see what that program was. I can move to the editor again. That means what I want to keep the editor window as well as terminal active. If I just say g edit the terminal will disappear only editor will come. Unless I close the editor I will not go to the terminal window again.  This g edit and in plain English means that Baba you run the editor but run it in addition to this terminal. Keep the terminal as it is. So give me a dollar prompt here so that I can do something else. Simultaneously open a window for me. When I press return here you will see some interesting thing happening. See this editor window has come but the terminal window is still there. Notice what has happened in the terminal window. When I say g edit and it says some number 1 it says 5397. Actually the operating system Dumbo is telling me through the shell that look mister you asked me to run an editor so I am running it. I have internally given it a process number 5397. It is running there somewhere else. However if you want to give any more commands I am at your service. So now I can see both of them here and I can switch between them by simply moving the cursor. Let me open this greetings.cpp. This is my 5. There is a command in C++ called end L that is end of line. If I insert that as an additional output this is capable of showing me different lines. So if I save this notice that this program is still there. Now I come to the terminal. Here was my terminal. How do I compile that program up arrow keys twice, twice, four times, five times. It has compiled again run it. See now the results are better. I can write any types of programs, any computations I want to do. Let us quickly execute a program for adding numbers. How do I prepare a program for adding numbers? Should I start typing everything from the beginning?  Since I am an editor I can modify this program itself so that I do not have to write those lines include IO stream, using namespace etc etc again and again. So what I will do? I will do some cheating. I will not say save. I will go to the file and I will say save as and instead of greetings I will change this to add numbers. Of course, just by giving it a file name add numbers the program does not change. So I will now edit it here. So I will say a simple program. I will edit this add numbers. Then inside this I have to define let us say I want to add two numbers. What do I have to write here? In let us say a comma b semicolon. Now instead of saying hello word I will say give input numbers.  After all these mistakes are likely to happen. Now I will say see in. I have written this program. In a hurry I can see I have made two mistakes. One is that I have not declared see. The second is I have not put double quotations in this. But this is the beauty. While writing a program I may make such mistakes. So I save this. I have to save it because this is still on my terminal here. When I save it will be saved to add numbers.cpp. I go here and I now want to run c++ compiler c++. What I want to say? Now that name is very long. If I just type some add for example and press tab just one key it will expand it. Provided there is only one name by that. So it was add numbers 2.cpp add numbers 3.cpp it will get confused. But unique name is automatically. I compile it. Now you see the error messages. In function int man give was not declared in this code. Please note we have said what? See out give values something something. It thinks give is the name of a location and says you did not declare it. So it is not giving me the right error. Then it says expected semicolon before input and then error c was not declared in this code which is correct. Now without changing again saying g added I simply take the cursor to this window come here and start editing I say ah c is not here. Now before I start typing I would like you to see something at the top. You remember this add numbers.cpp is the name of the file it shows what that file is. But see what happens the moment I start changing it. I say comma c. Now it has put a star here before the name. This star means that this file has changed and unless I say save it will not have any impact on my compilations. So this is a reminder anyway. So this was one thing I wanted to do. What was the other thing? I want to put this here. Save it double code and I want to put this in. Now this looks alright. I will save it. I will go here and again I will use the plus arrow up arrow key to get c plus plus add number. This time it compiles. What do I execute? You will have to use that dot slash in most of your machines because that environment may not be set. I will let let one explain how that environment will be set or your TA can tell you that. But anyway when I do that see what happens. Give input numbers. So you see my c plus plus number has executed the first instruction.  I can give one blank and 56. A blank separates out multiple values on an input line. So when I press value of sum is 79. Notice there is still one problem. It is showing correctly value of some ease but there is no blank between ease and 79. Is that a decent way of seeing the output? No. So very quickly I go to my editor. I see what is the problem. The double code comes here. There is no space here and this c plus plus stupidly prints the value of c starting immediately after the last character that was printed. So just before ease I will just say here colon and space space. So that means the value will appear slightly displaced away. I save this. I execute the program. I give the value 23 56. Nothing has happened. I change the program but I did not compile it again. So it is running the same old executable file. So I will again have to compile it. And now when I run a dot out and now I give values. Notice that I can give the value of one at a time. I give 23 and then press return. I give 56. Since it is expecting two input values still I give two values. It will not leave me. Value of sum is 7. This is the main thing that you have to do in the lab compiling and running programs. There are several other things that you are required to do. You are required to go to the Moodle. You are required to create backups. You are required to upload files onto the Moodle links. You will have to study how Moodle links work. Lot of this is discovery. You will see that there are a lot many more things to be done in the lab. I have tried to tell you the basics of the computing environment. There is a lot more to be discovered. The point that I am trying to make now is that hence forward your learning such as learning in the laboratory will be a supervised learning but essentially learning on your own and it will be collaborative learning. I do not think you have learnt like this in your past school or college. So far everything that you have learnt is somebody gives a lecture explains you solve some problems correct wrong somebody tells you and then you proceed. That is not how the life works in reality. Most of the time you have to discover things yourself. You have to experiment. You have to make mistakes and you have to learn. Many times you have to ask somebody nearby saying what does this mean? How do I do that etc. Many times you have to discuss with friends. Somebody comes up with a good idea. Somebody for example pressing this arrow key to get the previous commands. Even I did not know it when I started using Ubuntu first but a colleague of mine, another colleague of mine told me Professor why are you typing this command again and again. Just press the arrow key you will get the previous command. So this is the power of collaborative learning. While there are occasions in this course where you will be required to submit individual assignments, those you must attempt on your own without anybody's help. In almost all other cases you are encouraged to do this collaborative learning all the best.


On the personnel front we're we're bringing in 4,000 new sailors this year and we're going to continue to bring in new sailors in and over the next well throughout the fit-up to address shortfalls in the fleet. Gaps at sea in particular that we we know we have and we've been under quite a bit of pressure the last two or three years to fill those billets so we're adding people to it and we're we're doing a lot to try to change the way we train our young men and women as they come as we call street to fleet from the through the boot camp and into the fleet that training has often been long too long with too much information and a lot of waiting around waiting for the next school to start because we don't have a steady throughput for a variety of reasons that have occurred over years and also to deliver that training at the right time at the right place for the sailors as they're progressing through their careers even in the fleet so bringing more simulation more capabilities to the waterfront and our flight lines so we don't have to rotate sailors back to school houses as often as we have in the past those those efforts alone on the people front will do a great deal to help us on our readiness side


Family Theatre presents Dean Stockwell and Roddy McDowell. Cation with Family Theatre presents Dean Stockwell in Hans Brinker. To introduce the drama, your host, Roddy McDowell. Thank you, Tony LaFranco. Family Theatre's only purpose is to bring to everyone's attention a practice that must become an important part of our lives if we are to win peace for ourselves, peace for our families and peace for the world. Family Theatre urges you to pray. Pray together as a family. A great gale rolly against the seawalls and dikes of Holland. The Netherlands fought the ocean back with oak and piles braced with stone, with huge straw mats covered with clay. Buffalo Dutchman leaned into the wind as he made his way towards the dikes. Under the voice of the storm, he heard a faint frantic shout. You roll me down the river. I'm on my way to the dikes. I'm no boatman. Winner, it's a matter of life and death. So is my work. The sea is pounding against the piling. Please, Winner, roll me down the river to the bridge. If ever a man needed help, I needed now. In trouble, eh? Yeah. I've got to get away. I've got to leave Holland.  All right, young fellow, I'll roll you to the bridge. Storm this is. This dike is starting to crumble. I'll climb up on the scaffold, tighten those ropes. Careful, Ralph. Those boards are covered with sleet. I'll watch it. And there's ice on those ropes. I'll take care. I won't slip. I'll bring you never far. That's the second rope, Ralph. Yeah, that's the one. Pull it up. I was hurt in a great storm many years ago. Oh, Gretel. I don't want to talk to those ragamuffins. I'm going on to school. Go ahead, then. Hello, Gretel. Hans. Good morning, young Frau Van Gleck. Good morning, young Frau. Hans. Gretel. Have you heard about the race for the Silver Skates? No. A race? Yeah. Two races. One for boys and one for girls. And the prize for each race is a pair of Silver Skates. Silver Skates? Oh, Hans, just think. When is this race? December 20th. A celebration in honor of my mother's birthday. Will you both be in the race? Young Frau, all we have are these wooden skates. I carved myself. Oh. You need better skates for the race. Oh, Hans. Did you carve this beautiful wooden chain that Gretel has? Yeah, I carved it. Then will you carve me one? I'll pay you. Four guilders. Oh, young Frau, that's too much. Oh, no. Hold out your hand. One, two, three, four. There. Can you have it done for my mother's birthday? Oh, yeah, yeah. Oh, I'll have to hurry. I'll see you at school. Goodbye, Hilda. Thank you, young Frau. I'll start carving the chain tonight. Oh, Hans. When the stork built the nest in our house, I told you it would bring us good luck. Now we can get some steel skates. Yeah, and maybe even some silver skates. Hans, your supper is getting cold. Just a minute, Mother. I want to finish carving this link of the chain. Oh, me, you wouldn't need to work like that to get your skates if we had the money we lost. A thousand guilders, wasn't it, Mother? Yeah, Hans. Roth made good money before he was hurt. We had a thousand guilders put away in an old stocking. And then the money disappeared. Yeah, Greatle. When Roth was hurt, there were many people in and out of our cottage. One day when I looked for the money, it was gone. Mother, tell us again about the Silver Watch. Well, when they brought your father home that morning, he had a great Silver Watch in his pocket. Maybe he paid the money for the watch. Oh, no, Greatle. It's a fine watch, but not worth a thousand guilders. I wonder whose watch it was. Well, inside the case of the letters L, J, B. But your father has no memory of things that happened before he was hurt, so we may never know. Well, I'd better wake him and give him his supper. Roth? Oh, Roth? Yeah, Major. Supper Roth. Here you are, the soup is hot. It is good, young. You are good to me. A good husband deserves good treatment. We were talking about the thousand guilders. Thousand guilders? Try to remember, Roth. The money we saved. We kept it in an old stocking. Remember? I... I tried to sink and everything goes round and round. Greatle, bring the watch in the cupboard. I know where, Mother. A watch? Yes, Roth. You had it in your pocket when you were hurt. Here it is, Father. I showed it to him dozens of times, but always he shakes his head. Look, Roth, did you pay the thousand guilders for this watch? I... I don't know. Look, Father, there are letters on the case. LJB. Does that mean anything? Think. Think hard. I... I'm trying to. I'm... Oh, I can't think. My head hurts. No more. No more. Don't ask me anymore. We'll skate back even faster when we get our new skates. Oh, yes, we'll just... Oh, here comes Carl Schimmel. Oh, I don't like him. He calls us ragamuffins. Now, Hans, don't make trouble. You two are doing an Amsterdam. We're buying two pairs of skates. Oh, but you don't think you're going to skate in the race? Yes, we are, Carl. Are we going to win the Silver Skates? Well, they won't let you skate. Hilde van Gleck herself told us we could. I know you're afraid Hans is going to beat you. Not a chance.  The Silver Skates are not for ragamuffins. Ragamuffins, are we? No, Hans. Come on, we must buy our skates. All right, but I'll show him. The race all skates so fast. Great. Look, who's coming? The great Dr. Bookman. Dr. Bookman? Are you sure? Sure, that's him. Maybe he would come to see father. I dare you to ask him. Yeah? My dear Bookman. My dear. What's this? My dear, you are the famous doctor. Would you do us a favor?  I never give to beggars. We are not beggars, my dear. Look, I have four guilders. It's yours if you will only come to see our father. Our father is ill. Oh, it's that. What's this all about? My dear, many years ago, my father suffered a bad fall. On his head? Yeah, his head was hurt. He has no memory. When he stands up, he falls down. But he is a good father, my dear. My dear Bookman, please come to see him. How long has he been this way? Ten years, my dear. Ten years? That's bad, very bad. Oh, but you are such a great doctor. Mother told me of you.  She said you were the greatest surgeon in all Holland. But also cross and cranky. Gretel.  These gates are wonderful. We're nearly home already. Yeah, look. There's mother outside the house. She sees us. We're leaving faster, Gretel, faster. Your mother a great surprise. Your mother, you won't believe it. The great Dr. Bergman. He's nicer than he looks. He's coming to see father. Hans, not the great Dr. Bergman coming to see Ralph. Yeah. Oh, the good God has heard my prayers. For your father is worse, much worse. But mother, the doctor won't be here until next week. Oh, heaven preserve us. Mother, let me skate back to Amsterdam and try and bring the doctor now. Yeah. Yeah, go my son. As fast as you can. This is no race for silver skates. It's a race for your father's life. I've examined the man as well as I can. And what do you find, mine here? Something is pressing on the brain. A part of the skull, perhaps, a clot of blood, a tumor, something. And the remedy? What is in there must be gotten out. And if something is to be done, it should be done now while he is unconscious. Come, young Frau. Yes or no? Oh, Hans, what shall I say? See what God tells the mother. Your mine here, Buckman. I consent. Good. Put more peat on the fire, water in the big kettle, clean linen, soap, bandage it, hurry up. Is father all right? We don't know yet. His pulse is good. His color is coming back. Doctor, he's awake. Steady boys. Pull the mat higher. Throw on the clay. The water is rising. Holders. Rough. Rough. Are you all right? It... Oh. Oh. Is it you, Major? What... What happened? Dr. Bergman has fixed up your head. My head? It feels better. I heard it a long time ago, didn't I? I... When I fell off the scaffold. Rough. You remember that. You remember the storm? Of course I remember the storm. I remember everything. He is sleeping now. That is good. Keep him quiet. Keep him warm. I must get back to Amsterdam. Yeah, doctor. I don't know how to thank you. Thank your son, Hans. I did it for him. For Hans? Yeah. Because he looks like my own boy did years ago. My son Lawrence, who ran away. Oh, my dear. I'm so sorry. Yeah. Yeah, they... They called me a crabby old man. Now you know the reason. Doctor, all the rest of my life I'll pray God that he'll return your son as you have brought back our father. Your father is not out of danger yet. I'll be back tomorrow. Good day to you. You must be careful.   Why does just one week since the good doctor operated? Yeah. And in another week I'll be working on the dykes again. Oh, listen to the man. He's out of his head completely. Well, in seven or eight weeks. That's better. Let me fix your pillow. Thank you, major. All this expense. Do we have enough money? I suppose you spent a thousand guilders long ago. You remember the thousand guilders? Of course. In that old stocking.  I dug them up? Yeah. I buried them in the ground. You know. Oh, yeah, yeah. In the ground, yeah. Oh, it was so long ago. Let's see now.  Well, I write by that young willow tree behind the house. Oh, yeah, to be sure. It was on the north side of the tree, yeah? Major, what a poor memory you have. On the south side. Oh, of course. Now, now you rest a bit, Ralph. Well, I go look for Hans and Gretel. Yeah, I do feel a little sleepy. It's dark. Did we have to wait till night time? Yeah, Gretel. So people won't see us digging. Hans, do you find anything yet? Not yet, Gretel. But mother, father said he buried the money on the south side of the tree. Oh, but we have dug on the south side, the east side, and the west side. If it isn't where Hans is digging now, oh, but no, it must be there. Hans, is it there? No, Gretel. There's nothing here but the roots of the tree. Hans, let me dig a while. No, mother, it's no use. A thousand guilders is gone. It's such a nice day. Can't I go outside? No, no, Ralph. The doctor says not yet. Where's Hans? He's outside, father. His fairy godmother has put him to work. I didn't know he had a fairy godmother. Yeah, Hilda Van Gleck. She pretended she was our fairy godmother. She granted our wishes. Well, what did you wish for? To win the silver skates. And Hans? To find a buried treasure. Oh, mercy me. Hilda, I mean the fairy godmother, waved her magic wand. It was really just a stick and told Hans to dig at the foot of her golden throne. That old stump she was sitting on and he'd find a treasure. And what is Hans doing? Digging a hole out there. Girls can make boys do the silliest things. Yeah, yeah, I remember once your mother... Mother, father, Hans, not so loud. The small willow tree where we dug last night wasn't there ten years ago. No, of course it wasn't. Why didn't we think of that? The stump is the old willow tree. I dug by the stump and look. The thousand guilders. Told you to keep him quiet. No excitement. Yeah, doctor. But we didn't expect to find a thousand guilders. It was the money my father had buried before he was hurt. He thought he told mother about it, but he never did. It was buried in two places, doctor, in the ground and in this head of mine. I hope there's no harm done. You thought the money had been stolen, huh? Yeah, that. Or he had paid the money for a watch he had. What watch? Oh, mother, we forgot all about the watch. Let's show it to father again. Yeah, great. I'll get it, please, dear. A watch? Yeah, I remember something about a watch. We found it on you when they brought you home that awful morning. A fine silver watch. Here it is, father. Remember it? Yeah, good. Yeah, it's coming back to me now. See? Inside the case. L-J-B. L-J-B? Let me see that watch. Here, doctor. Yeah, I remember it. That watch belonged to my son, Lawrence Young Bookman. Oh, yeah, yeah. Ralph, where did you, where did you get this watch? On the night I was hurt, I met this young fellow. He was in trouble of some kind, but I liked the lad. I rode him down the river when he got out of the boat. Munair, do me one more thing. What is it, lad? Here's my watch. Give this watch to my father. Yeah, I will. Tell him where I'm going. Tell him the name I'm going to use. If he can ever forgive me, tell him to write to me. Yeah, lad, that I'll do. I must be on my way. Goodbye, my friend. Goodbye, lad.  I went mine. I was hurt that night and remembered no more about him until this moment. Where was he going? What new name did he take? I can't seem to think, man. I'm trying to. You must remember. Here's my son. All these years, he's been waiting to hear from me. Who is he? Where does he think? Doctor, my poor Ed, I'm trying to... I'm sorry, my friend, forgive me. I've been warning you, good proud, not to get you excited, and I'm doing that myself. I understand, doctor. My son Lawrence, he was my assistant. He mixed the wrong medicine for a patient. I discovered the mistake in time, but the patient died anyway. And your lad thought it was his fault? Yeah, yeah, poor boy. He thinks I've never forgiven him. The name he took, the place he went, they may come back to me. Don't worry, Dr. Berkman. Father will remember. Who won? Peter von Klopp. Sit down, Ralph. The doctor said you could come out here on the bank of the canal for the skating races, but you must not stand up. But I can't see sitting down. Well, I can see for you. I'll tell you what's going on. Peter won the boys' race. Yeah, but what happened to Hans? Well, the race started before I could tell you. As soon as I was ready to start, Peter broke his skate strap. And Hans took off his own strap and gave it to Peter? Yeah, yeah. Well, you'll know without me telling you. Yeah. Well, doesn't Hans feel bad about it? Oh, no. No, he's grabbed hold of Peter and they're dancing jigs. Jigs, eh? Jigs, eh? That sounds like higs. That's it, higs. Ralph, sit down. What in the world? The doctor said that's his name. Higgs, Tom Higgs. Oh, Ralph. As soon as the girls' race is over, we'll send Hans to tell the doctor. Ah, Tom Higgs, Tom Higgs. No, now the girls get ready. Keep your eye on Gretel. They started. They skate to the flagstaff and then back again. Here they come.  Gretel. Right behind Hilda. Tinker is behind Gretel, but gaining. Skate! Gretel, skate! Ralph, you mustn't get excited. Me excited? Come on, Gretel. Where is she? Oh, Gretel is even with Hildenholm. They're coming to the flagstaff. Yes, I see them now. I see Gretel. Go, Gretel! Go on, Gretel. Faster, faster! Who's excited now? Where are they? I can see them. They're skating back toward the finisher. Oh, oh, Meakin fell down. Oh! Killed on Gretel in the front. Yeah. The trick is gaining on them. Go on, Gretel! My goodness, we're back home. Ralph, maybe you should lie down a while. No, not I, Major. The day has done me good. It did me good, too. Yeah, Gretel. You won the Silver Skates. Here he is, Father. Here's Dr. Bertman. Oh, come in, Doctor. Hans told me the good news. You remember the name. Yeah, Tom Higgs. Fine. Fine. Ah, but the world is full of Tom Higgs. If you could only remember the country, the city. Someday, Doctor, tomorrow, next week, next year... Oh, Gretel, I forgot. So much excitement we've had. Here in my knapsack, something to you. For me? Ah, when Madame Van Gleck gave you the Silver Skates, you ran away so quickly, she couldn't give you the case that goes with them. Oh, what a beautiful case. Red leather with silver trimmings. Oh, what is it saying at the top? To the fleetist. Is that me? Gretel, that's you. Let me see the case. Here, Father. Ah, such fine, nice work. That's velvet inside where you put your skates. Look at this, Doctor. Yeah, yeah. Oh, very fine workmanship. The man who made this took pride in his work. And see, his name is here in a small silver plate. My eyes are not that good. Can you read it? Oh, yeah. It's made by... an heir, Birmingham. Oh, no, Gretel. Birmingham is the place where it was made. Birmingham, England, from where comes our finest steel. The maker's name is those small letters right above. I can read them, my dear. Thomas Higgs. Thomas Higgs of Birmingham, England. That's it. Gruff, my son made the Silver Skates. In the autumn of the year 1855, a great gale roared in from the Atlantic. A man fell from a scaffold and so began the story of Hans Brinker. In the winter of the year 1865, a memory returned. A fortune was recovered and a long lost son came home. And so ended the story of Hans Brinker and the wonderful Silver Skates. This is Roddy McDowell again. Haven't you often heard it said of people you know very well? Isn't he a fine man? Or isn't she charming? Yes, time and time again, we have all heard such references as these to people we know. Yet, how different some of these very people appear to members of their own family group? It's so very easy to be kind to people outside our families because, well, with outsiders, we feel that we're somehow on parade. But when we are habitually kind to each other within our families, there is a stronger bond between us. And that is where family prayer comes in. When we pray together for a few minutes each day, we naturally reflect a little on God's love of all of us and how trivial our family tensions are. When we pray together, kindness towards each other is nearly always the result. And that is one reason among so many others why the family that prays together stays together.  But Family Theatre has brought you Dean Stockwell in Hans Brinker with Roddy McDowell as your host. Others in our cast were Norma Jean Nielsen, Ted Osborne, Janet Scott, Bill Johnstone, Tommy Cook, Janine Roos, and Joel Nestler. Hans Brinker was adapted by Harry Lawrence with music composed and conducted by Harry Zimmerman and was directed for Family Theatre by J.F. Mansfield. This series of Family Theatre broadcasts is made possible by the thousands of you who felt the need for this type of program, by the mutual network which has responded to this need and by the hundreds of stars of stage, screen and radio who have so unselfishly given of their time and talent to appear on our Family Theatre stage.  This is Tony Lofrano expressing the wish of Family Theatre that the blessing of God may be upon you and your home and inviting you to join us next week at this time when Family Theatre will present Pat O'Brien in the story of Peter Zenger. Join us, won't you? Podcast throughout the world and originates in the Hollywood studios of the world's largest network, the Mutual Broadcasting System.