Welcome to 15721 at Carnegie Mellon University. I'm the instructor for this course, Andy Pablo. As I posted on Piazza, I can't be in Pittsburgh right now. I'm actually in Amsterdam with my friend 187 Owen. The problem is that 187 booked us a hotel, but it's actually not the kind of hotel we'd want to stay at. So right now we're just kind of hanging out here in the red light district, trying to figure out what we need to do next, but Owen lost all his money and I don't have my credit card with me right now, so we're kind of homeless. So I figured now would be a good time to sit down and cover the first lecture for everyone. So before we get started, I just want to give a shout out to everyone who's been down with us since the very beginning, JL in Seattle, MC in California, and EZE in Brooklyn. These people have been staying true to us since the very beginning. I also want to acknowledge that this semester we are being sponsored by two foundations or two groups. The first is the Amazon database group. Amazon is actually surprisingly one of the largest database vendors. Everything they do is on the cloud, and a lot of the topics that we'll be talking about this semester are relevant to the kind of systems that they are building, and so they are helping out with course development. We're also being funded by a non-profit called the Steve Moy Foundation for Keeping It Real, and again they are helping out with paying for TAs and lecture notes and other things. So we appreciate both of them with helping us out, and for Amazon they will become giving a guest lecture later in the semester. So today's agenda, the things we want to discuss are first the overview of what the course and the semester will look like if you're a student at Carnegie Mellon, and then I just want to do a fun lecture about the history of databases just to provide some context about what the kind of modern systems we're talking about today, what things have people tried in the past. So if you're not enrolled in the course and you want to skip ahead to this video, you should skip ahead to the history of databases. Everything else is just for people that are here at CMU. So the first thing I want to get to discuss is why should you take 15-7-21? Why should you take this course? So I say this every semester, and every semester it continues to be true. Right now, databases from developers are in huge demand, not just in Silicon Valley, not just in the United States, all over the world. And it's because that there's a lot of unsolved problems in databases, data management, processing, and these companies can't hire people fast enough. So if you take this course, and you do well on it, you'll be immediately hireable or immediately employable, and that's a good thing, all right? The other thing I'll say also, too, is that even if you don't go off and end up spending your career writing database systems or building database systems, the things that you'll come across or learn throughout the semester are going to be applicable to almost every other aspect of computer science or information technology. And what'll happen is that you'll see is that the people that are good enough to write code for database management systems, in addition to operating systems or embedded systems, you can get pretty much a job in any other application domain.   So the kind of systems background you'll get out of this course goes beyond just database systems, but we're going to discuss these things in the context of databases, because that's all I really care about. I can just give you sort of the brief alumni role of the students I've taken this class in, where they've gone to, but this is just a subset of the students that have taken 721 and then hung out with us and worked in our system even further at CMU, and they're all, everyone's gone off either to grad school or are now building database systems at either companies that have built databases or startups that are specifically just building database systems. So I'm pretty happy about that, and then the companies can't hire our students fast enough. All right, so the goal of this course is to give you the background and understand about the bottom practices in building database systems. And as part of that, you'll become better at doing sort of low level systems programming. So the goal is that by the end of the semester, you'll learn what it means to write correct and perform its system code. In the context of databases, we need both, right? You don't want to lose data, so you want your system to be correct. And obviously, you want to process the data as fast as possible, or query as fast as possible, so you want to support high performance. So I'm sort of in my ivory tower in academia, and I like to say, like, oh, correctness matters first, performance comes second, and that's how I'll teach things. In practice, in the real world, that's not always followed. You definitely look at examples like MongoDB or MySQL, you know, wildly successful database systems that are used all over the world, and they started off with going for performance first, and then correctness second. So the other thing you'll learn about in this course is that we will teach you proper documentation and testing for your database system. You'll also learn how to do code reviews and you work in a larger code base, right? So these are things just beyond the university. These are things that, you know, help you out through your career no matter where you go. And the major tech firms, when I ask them, what are they interested in? My students taking this course, what kind of, you know, do they want them to learn B plus Gs or locking code? They always tell me they want students that are able to work independently on a large code base. So that's not something I would take lightly. That's something that, you know, I think doesn't come easy for a lot of people, especially me. And this is something you'll get exposure to during the semester. All right. So the sort of core umbrella topic for this semester will be single node in memory database systems. And so that means that we're going to ignore, for the most part, writing data at the disk as part of like a disk ordering database system, and I'll clean with that is later on. And we're also going to ignore the problems and challenges when you have a distributed database system. So it's not to say distributed databases are not important. It's just to say that for this course, we're going to focus on getting the single node system working as fast as possible and as correct correctly. And we don't worry about going distributed, right? It's in my opinion, it's better to have a database system that works well on a single node and try to scale that vertically before you go to a distributed environment and try to scale horizontally, because that brings in a whole bunch of other challenges. So this means that we're not going to cover things like a census protocol or fault tolerance at a wide scale. We care about the things, but not just here. And so this course is also not going to be on classical database management systems. So that means that we're not going to cover the basics as we did in the introduction class about two phase locking or B plusries and things like that. I'm going to assume you know those things. And instead, what we're going to cover are state of the art implementations and other topics that that modern systems are using today. I said this is going beyond what we cover in the intro class. So the kind of things that we'll talk about during the semester are concurrency troll indexing data structures, storage models, database compression, how to execute joins in parallel or vectorize execution models, networking protocols, logging recovery, and then we'll spend a lot of time at the end of the semester talking about query compilation and query optimization. All right, these are sort of the more modern things that you don't really get the chance to cover in the introduction class. So as I said already, I'm going to assume if you're taking this course that you already have taken another database course, whether it's 15, 445, 645 Carnegie Mellon or at your undergraduate institution, some kind of intro to databases. So and the reason why I'm going to assume this is because we're going to discuss modern variations of the classical algorithms that are designed for what today's hardware looks like. So I'm not going to teach you what how to do a hash join, I'm going to teach you how to do a vectorized parallel hash join that can run multiple cores with SIMD instructions. And so this is sort of you need to understand the basic way a hash join works in order to understand how to do the sort of the modern implementation of it. So the core background that I'm assuming you already have would obviously be SQL because we're going to focus on relational databases, serializable theory or concurrential theory, relation algebra, and then the basic algorithms and data structures for sort of classic databases, again, B plus trees, Aries, two phase locking and so forth, things like that. So the course policies and the schedule is all available on the course webpage, right? There's a syllabus, there's a schedule and I'll cover what the schedule means in a few more slides. But any questions you have about what the course sort of how the course will be held and how it'll be graded, you always refer to the course webpage. In terms of academic honesty, I encourage you to go look at what SIMD's policy is on their webpage about what plagiarism and what cheating means. If you're doing something like copying a piece of code that you're not sure whether that's okay or not, I encourage you to please ask me. I'd rather you have asked me and you and I discuss it and see whether you're doing the right thing or what you're doing is okay rather than me catch you cheating and I have to go report you to Pointer Hall, right? So, you know, let's not plagiarize.  If you have questions, just ask me. All right, so I'm holding office hours on Mondays and Wednesdays at 1.30 to 2.30, immediately after this class in my office in Gates. That time is not good for you. Then please email me and we can make an arrangement for another time. So if you come to office hours, what can we talk about? Well, a lot of times students want to come talk about implementing their projects or if they read the paper, I'm not sure about what, you know, if they fully understand it. But there's other sort of life things you want to talk about. I'm happy to do that as well. Like how to get a job as a database engineer or database database developer. If you want to introduction to a database company in a certain state or region, I can definitely do that for you. And then because of my background, I think I'm qualified to talk about how to handle police, you know, if you're in a situation where you, you know, because you do databases, you may end up in a bad place and you need some help getting out of it. So by all means, come talk to me. I'm happy to do so. We have one TA this semester. He's Trilla. Matt Butchovich is a second year PC or second one and a half. It's not clear what he actually is. PC student with me in the CS department. He's actually a student that took 721 crushed it and I encourage him to hang out and be a PC student and now he's here. So he is currently the lead architect or developer helping build our database system at CMU. And this is what you'll be using for all the projects before actually coming to CMU. He was he's from L.A. So he was like an ex-gang member of the systems.  But actually right now, since I've sort of got him on the right path as being a student, he is now I'm training him as a licensed boxing manager. So he's going to be a cage fighter. He's currently undefeated and, you know, through our training, we hope that it will continue to be his way. So any development questions that I can answer, I encourage you to go ask Matt because he will know more things about the internals of our database system than I do. All right. So the breakdown for which expected for you this semester is the following. So there's reading assignments, programming projects, final exam and extra credit. So one change we made this year the previous years is that I dropped the midterm exam in brought along a brought back the second programming project because I think students got more out of it last year than the midterm exam. So I'll explain what that is as we go along. And there's two additional reading assignments then in previous years. So the if you go to the course that schedule on the web page, you will see that for every single day there's a broad topic. What will we discuss for that lecture? And then there's a list of readings and one of the readings will have this aren't our yellow star next to it. And that's the mandatory reading for that class. So sort of be the primary paper that we will cover in the lecture. So before each class you're required to submit a review of our synopsis of this paper that just discusses like the overview or the in the main takeaway of what the proposed system actually does.  And so in addition in the synopsis it also includes, you know, what system they use for the evaluation and whether they modified and how they modified it. And then what workloads they did to evaluate their proposed method. And this last one is actually really important because when you do the final project and you want to measure how your system, whether the system actually improved or got faster or or whatever you're modifying, you want to go see what the workloads are that people are using. In these other papers and apply the same apply the same experiments to your own implementation. So the reviews are the synopsis are due at 11.59 a.m. right before class. That stinks. That's harsh. That's sticky. The reviews are due right before class and there's no late days. But you're allowed to skip four readings throughout the entire semester. And then your final grade will be based on the ones that you do submit. So again, please don't plagiarize these writings. I think other people follow along in the course on YouTube or I've looked at the previous years and sometimes you can find the synopsis on on GitHub. Don't plagiarize. Don't copy from each other or run everything from awesome. If we catch you then we have to report you again.  So now the bulk of the grade we surprised are basically the programming projects. So we are building a new database management system here at Carnegie Mellon. It doesn't have a name yet. It doesn't have a public name yet. The repository is currently named after my dog, which is just Terrier. It's not going to be the name of the system because that's not a good name for a database system. So we will announce the name later in the semester and post the website. Publish the website once we get the first version out. The things you care about is that it's going to be a modern code base that's written in C++ 11 or C++ 17. It's multi-threaded. We use LLVM to do query compilation. Again, I'll explain what that is throughout the semester. Everything's open source. It's designed to be progress compatible. So it'd be easier for you to actually interact with this thing using the terminal. So all the programming projects will be based on this and we're going to use GitHub to manage everything. So Matt will be running a recitation later early next week to give you an overview of how the system source code is laid out and give sort of pointers on how to get started on the first project. So we'll announce that where that's going to be on Piazza later this week. So all the development you're going to do is on your local machine. The database system currently builds on Linux and OS X. I think somebody has tried to build it on Windows with the Ubuntu packages. I haven't tried this. I don't know whether it works. But we'll also provide you with a vagrant VM file that you can just download if you want to run this on a Linux VM on your Windows machine. So you do all the development on your local machine, but for the first and second project and potentially for the third project, you'll want to do all your benchmarking and sort of performance tests using Amazon because they're an EC2 machine because you can get a machine that has more cores than your local laptop does. So we'll provide everyone with coupons or credit codes you can use on Amazon to get, you know, a couple bucks to get these machines so you're not paying out of pocket. And so we'll send that information out later later this later this semester. So the first two projects we're going to provide you with the test cases and the scripts and provide you clear instructions on what you need to modify the system for your project. We're also going to teach you how to profile the system using perfect call grind because this is presumably not something that most students have experience with. So the first project will be completed individually. The second project we've done in a group of three. So currently the class has roughly 36 people. So leave out 12 or 13 groups of three people. I like to keep it three people because that's sort of the it's not too few and not too many. The with some exceptions will take on a case by case basis. If we have extra people we could do a four or three or four or two person group. But again, most everyone else should be in a three person group. So it's OK for you to start thinking about what group you want to join to get right now. The third project will be the group project and this will be something that you get to choose to build in our system. And so it has to be something that's relevant to the materials or topics we discussed in the class. It has to be require a significant program effort from everyone that's on your team and has to be unique. You can have two groups work on the same project and obviously has to be approved by me. So don't freak out about this now. You don't have to pick a project until the we come after after spring break and then I'm also going to provide some sample project topics that you can choose from to build in our system. So again, for the first and second project, please don't plagiarize. Please don't copy from each other. If you're barring a library for project two, that's probably not necessary. Project three, again, come talk to me.  Don't copy. And nobody will have any problems. All right, so the final exam will be a take home exam and that'll be long form of questions based on the mandatory readings to stop discussing the class. I'll give it out in class on April 22. So it's also the same day that the guest speaker will become and give a lecture. And then it'll be due potentially the last day of class a week later or when we do the final project presentations. I haven't decided yet. All right, and the extra credit for this semester is the same as we did in the intro class. So we are writing in a cycle PDF database systems at Carnegie Mellon. I currently know about I think the numbers like 683 database systems now that we know about. And so you can get extra credit if you write a Wikipedia style article about one particular database system. So there's a ton of them in there. Pick one that you find interesting and you'll write about how it's actually implemented. And you've got to provide citations and attributions attributions for where you found this information. It's not just saying, this is what it does because I watched a video. You've got to actually have citations because we're trying to have this thing being scientific. So this is entirely optional. You don't have to do this. But if you want to, the option is there. So again, for the for the extra credit articles, this happens every year. It drives me crazy. Do not plagiarize. Do not, you know, even those extra credit, you can still get in trouble. We still report people to Warner Hall that plagiarize for the extra credit, right? Like the reason why I'm saying this over and over again in these videos is because I'm telling you don't plagiarize. So then if you do plagiarize, I go to Warner Hall and show them this video and say, look, here's what I told the class, not the plagiarize, and they plagiarize and then so don't do that. The breakdown for the grades this year is that the reading views are worth 15 percent. Project one is worth 10 percent. Again, that's mostly designed to get you familiar with working in the code base. Project two is 20 percent. Project three is 45 percent. The final exam is 10 percent. And then you can order, you can earn extra 10 percent for your extra credit. So all the discussion throughout the course, we done a piazza and that's the link there. Everyone should already been signed up, signed up before the semester started. If that hasn't happened, please email me and we can fix this. If you have a technical question about the projects, like I tried running this in a VM and it didn't work, I tried compiling it and it didn't work, or what does this piece of the code do? Please don't email me or Matt directly. Please post in piazza because again, it's a group discussion. If you have questions that other people have similar questions, so piazza is the right place to do that. Anything that's not about projects or homeworks or assignments for other things, please email directly.  All right, so that's it for the background of what the course will be about. Logistics. So now I want to do sort of a fun mini lecture on the history of databases. So this lecture is actually based on two papers. One was written by Mike Strombricker called What Goes Around Comes Around, and that was published in 2006. And that's sort of a retrospective of the history of databases up to that point. And then the second paper is one that I wrote with a industry analyst out of London called What's Really New with New Sequel. And that sort of picks up where Mike left off in 2006 and talks about the rise of the new sequel systems and how they sort of fit into the history of databases. So again, databases are a super old topic. It's surprisingly still hot today. I love databases. So it's good to understand where, how do we get to the point where we're at now? So the main takeaway from those two papers is that a lot of the issues that the early database systems were facing back in, even all the way back to the 1960s and 1970s are actually still relevant today. How do you run transactions correctly? How do you maintain indexes? All these things still matter. It's just what's different is the hardware landscape is different. So the one thing in particular that's really fascinating about all this is sort of how history repeats itself is it's been a decade now, but this idea of sequel versus no-sequel in which one was better for different workloads, that debate was basically the same debate that they had in the 1970s about the relational model versus codosil or the network data model. And if you've never heard of codosil, it's no surprise because it lost, right? The relational model one, that's why this whole course is on relational databases. So the relational data model has proven to be resilient and robust and useful for almost every possible database workload. The only exception I would say is potentially machine learning because those are arrays, and although you can model them in a relational database, it's not the most optimal way. So many of the ideas that we're talking about throughout this entire semester are not new. Again, we're just discussing the modern implementations or incarnations of them. And all of the times you're hearing me say throughout the entire semester that when we talk about a particular topic, I'll say, oh, actually IBM did the same thing in the 1970s with System R or Ingress did the same thing at Berkeley in the 1970s. A lot of these techniques are not new. It's just they're now, some of them are back in fashion because the hardware can actually support this. So I think that's super interesting. And it's part of the reason why databases are still relevant, still hot topic and still in demand today. All right, so let's go back to the very beginning. One of the very first database systems was developed in the 1960s called IDS, the Integrated Data Store. And so this was developed at GE General Electric internally for some customer, I think it was doing a, it was like a timber service or timber company out of like Seattle. So they built this database system and for this one customer and it helped them get a hold on their large organization. So you may be thinking, well, Andy, I've never heard of GE selling computers or selling databases. How can GE be responsible for building the first database system? What happened to them? Well, it turns out that GE at the time had this business philosophy where they said if they can't be the number one company in a particular sector of the marketplace then they didn't want to be in that market at all. So they said, well, we're not number one computing, let's just sell it all off. We don't want to be involved in that. So they sold their entire computing division to Honeywell in 1969 and as part of that, they also sold IDS. I actually don't know whether IDS is still around today. I mean, it potentially is, but this is usually deemed as one of the first database systems. So the two key things about IDS that are relevant to us are, they're gonna use what is called a network data model which I'll explain in a few slides and that when you execute queries, you're gonna basically be writing a bunch of for loops that operate on a single tuple at a time and will contrast with that with their relational model which can operate on bags or sets. So the guy at actually GE that helped build IDS was this early computer scientist named Charlie Bachman or Charles Bachman who's actually still alive today and he ended up leaving Honeywell in the early 1970s and went off to this other computer company called Kulane Database Systems which still exists today and he helped build a new network data model system called IDMS or the Integrated Data Management System and that's actually still around today. So Bachman and a bunch of other people that were involved in co-op programming got together in the late 1960s and proposed a standard called CODACIL for how programs written in COBOL should access a database. Think of this, they were trying to define a standard API that every database system that written in COBOL could support. So again, based on his experience at Honeywell, this CODACIL was based on the network data model and therefore it operated on one tuple at a time during query execution. So Bachman was an early database pioneer and he won the Turing Award for this work in the early 1970s. He was one of the first people to actually win the Turing Award for databases. So here's what the network data model looks like. So for this sample application, say we're like a large engineering company and we're trying to model how to keep track of all the different parts we have to buy from different suppliers to build some large rocket which is actually a true example we'll see in a few more slides. But so I have in my database, I wanna keep track of suppliers parts and which supplier supplies each part. So the way the network data model is set up is that you have these collections of data like a supplier, a part, and supply. But then you're also gonna have to define these membership sets that say whether a record from one set is owned by another set. So to show an active instance what this would look like. So say these are my collections of data, my records, supplier, part, and supply. So I would have now these membership set called supplies and supplied by that would have pointers to say for a given membership between a parent and a child, here's all the parent pointers to the parent records and here's all the child pointers to the child records. So now let's say I wanna do a query and say find me all the parts that are supplied by a particular supplier. I'd have to write these bunch of nested for loops that finds the supplier that I want, iterates over the supply set, then it iterates over the supply set, then it iterates with the supplied by then I reach my part record or a part collection of data and I can find the thing that I'm looking for. So the sort of first obvious thing to point out here is that the network data model requires you to have to write complex queries. You're essentially writing low level for loops to traverse this network to find the data that you're looking for. The other issue is more of an implementation aspect but these databases turn out to be easily corruptible because obviously back then in the 1960s and 1970s disks were expensive, they weren't as reliable as they are today and people weren't maintaining multiple copies of data. So what would happen is if one of these membership sets got corrupted, you essentially lost the whole database because now you had no way to know how things got linked together. So the network data model and the IDS came first but another database system that was sort of built around the same time in the late 1960s was this thing called IMS or Information Management System at IBM. So IMS is super well known, it's widely used still even today. If you ever used at ATM, chances are you've interacted with an application that talks to an IMS database, it's still around. So IMS was actually a database that IBM built to keep track of the purchase orders, the parts supplies and supplied information for the Apollo Moon mission for NASA before it was called NASA. But unlike Codesill, it didn't use a network data model, it used what is called a hierarchical data model. The other interesting aspect about IMS was that they had programmer defined physical storage formats. So when you declared, I have a collection of data like a table, you also had to define what was the underlying data structure you would use to physically store that data on disk. Whether you want a hash table or some kind of order preserving tree. And so also like the network data model though, you would write these for loops to diverse the hierarchy and do queries that operate on a single tuple at a time. So again, now it's sort of simple supply or information example, now we just have sort of two collections. We have supplier and a part, but in the instance, we actually see a problem with a lot of redone information. So we'd have this supplier collection of data with our records, and then each of these records would have now a pointer to some other data structure that would have all their part information. So the obvious problem we would have here is that we're duplicating data because if multiple suppliers provide the same part, I have to have different instances of that record, in this case large batteries over and over again for every single supplier that sells that part. And that means now if the name of the part ever changes, I have to write extra code to go find all instances of the batteries, the large batteries and make sure that their names all get changed together at the same time and that they're in sync. The other big problem in addition to sort of the tuple at a time for queries is that there was no independence between the physical data structure of the database and the logical abstraction that programmers interacted with. So for example, if I declared that my table was gonna use a hash table as this underlying physical data structure, but then I later realized, oh, I wanna actually execute range queries, well now I gotta dump the table out and load it back in as a B plus tree. And then now the API that I'm exposed to for that table changes and I have to rewrite all my application code, right? So that's wasteful, it's very painful. So now in the late 1960s, early 1970s, there was this mathematician named Ted Cod who was working at IBM Research in New York and he saw all these programmers at IBM rewriting their IMS and code sale programs every single time the database scheme had changed or the layout changed. And he saw this as being wasteful, right? Because every single time the scheme had changed, you had to go rewrite your application code. Now back then computers were way more expensive than humans and so he was sort of pressuring in this goal of removing this burden because now humans are way more expensive than machines, machines are cheap, right? So back then this wasn't maybe that big of an issue of it was hard to find programmers, but certainly now it'd be a big cost problem. And so what he came up with in the relational model was this high-level abstraction of databases to avoid all this sort of maintenance burden on humans. So the relational model has sort of three key ideas that are widely used in databases today. So the first is that instead of storing the database as this hierarchy or this network with these sort of graph structures, we're instead store the database as just these simple data structures as relations or tables, right? And now we're gonna then write our program or to access the data through some high-level language that can operate on these relations. Now at the time in the first paper, he didn't actually propose a language. So this is the first paper he wrote in 69, but this is the more common one that everyone cites as the relational model of data for large shared data banks. So in these seminal papers, he actually didn't find what this high-level language would be, of course now we know this is SQL, at the time SQL didn't exist, right? So the paper is strictly sort of strictly describing the relational model from a mathematical perspective. Quell was actually the first programming language or query language that people came up with for Ingress that followed the relational model. The IBM later came out with SQL, which is the SQL to Quell, it's a play on words. Ted Cod actually proposed his own language called Alpha in a paper, I think in like 1975, but no one ever actually uses that. The other key thing that he came up with that goes beyond what IMS was doing was the physical storage representation of every relation was actually left up to the implementation of the database management system. So what that means is that I just declare that I want a table, I want a relation that has these attributes. I don't say how I actually want it stored physically. And now the database system can decide on its own how it actually wants to store things, right? If it wants to use a hash table, it wants to use a B plus tree, it can do whatever it wants. And no matter how the data changes physically underneath the covers, in theory, if I'm doing this correctly, I shouldn't have to change any of my query, any queries in my application because they're only operating on the database at a logical level. So these ideas sort of seem obvious today, but back then this was actually kind of controversial, right? The idea of having a database system be able to support a high level language that can generate query plans as efficiently as what humans can write was considered a farfetched idea. Back then, also you gotta understand, people didn't think a high level language like C and having a compiler for C could ever produce machine code as efficient as someone writing assembly. And of course nowadays nobody, very few people actually still write assembly, we write in even higher level languages, right? It's again, in our modern world, these don't seem like controversial ideas, but back then it was. So just to go back to our simple example before the relational model, now we have three relations, supplier, part, and supply, and these are gonna have far and key relationships between each other. So now in my installation, or instance of this database system, I can just do joins now between either supplier number or the part number to find the parent record for my supply record. So now to do a lookup to find all the parts applied by giving supplier, I can just do a join between these three tables and find exactly what I want. And this also means that in a high level language, I'm operating on the database as through sets, right? I just say, this is what I want you to find for me, and I don't specify how to iterate through tuples one by one to find what you're looking for. Again, this is a very powerful construct that is sort of the basis of what we talked about for the entire semester. All right, so this now, so the relational model sort of sort of in the 1970s when it came out, as I said, it was controversial. So it wasn't immediate right away that this is the right way to build database systems. So there was a couple other relational databases that were being built at the time, but the three that most people talk about so today are System R at IBM, Ingress at Berkeley, and Oracle by Oracle. So System R was at IBM Research in San Jose, and it wasn't led by Jim Gray, but he was probably one of the most famous people that came out of that group. Ingress was developed by one of my advisors, Mike Snowbreaker, if you've never heard of Ingress before, you may have heard of Postgres, right? So Snowbreaker has built Ingress, and then he built Postgres after Ingress, like Postgres stands for post-Ingress, right? So again, we'll talk about both of the systems about the time of the semester, and then Oracle is a commercial system about Larry Ellison, and now he's like one of the richest people in the world. So this listing is amazing, right? You look at Jim Gray, you look at Mike Snowbreaker, both of those guys won the touring award for databases. Larry Ellison, as I said, he's like the seventh or eighth richest man in the world. This is all because of databases, like this is crazy, this is awesome, right? So this is why I love databases because now only can you do research that has an impact. You can make some decent money. Now you can buy your own Hawaiian island, it's awesome. All right, so there's the debate going on between the relational model and Codasil in the 1970s, but eventually the relational model went out, and it's clear that this is the right way to build database systems. So Ingress and Oracle were commercialized, but IBM actually never released a system R as a commercial product. What they ended up releasing was, their first relational data system they did release was this thing called DB2, which is still around today, and that came out in 1983. So there's some bits and pieces of system R that made it into the first implementation of DB2, but I don't know how much of that code still exists today. And so because for system R, they were using SQL, IBM used SQL in DB2, and because IBM was sort of the computer juggernaut at the time, that essentially became the standard. They had to change the name though, so set a spell out S-E-Q-U-E-L, it just got shortened to become SQL. And I think that's because somebody sued them over a naming issue. So SQL became the dominant programming language used for databases. Ingress was supporting Quel at the time, they eventually had to support SQL, but Oracle supported SQL from the very beginning because they copied what IBM did, and when IBM came outside, and we have a SQL database, Oracle was like, oh look, we already have one too, and then they essentially won the marketplace. So the other thing that happened in the 1980s was in addition to IBM putting out the first database, there was actually a lot of other startups that came out at the time, but also built relational databases for enterprise market or commercial market. Informix, Sybase, Tanda, non-stop SQL, Teradata was late 70s, Interbase is another famous one. All of these database systems are still around today, not in the exact form that they existed back in the 1980s, but these are still billion dollar products that still make a lot of money for these companies. The other cool thing is that Sternbreaker, after running the Ingress company for a while, he goes back to Berkeley, and he starts a new database system built on his lessons that he learned from running Ingress, and he put that into a new system called Postgres. And this is actually, I don't know how, obviously not much of the same code is still there, but the same Postgres you're using today is a direct line to exactly the same Postgres code, or it's derived from the Postgres code that Mike developed with his students at Berkeley in the 1980s. All right, so now we get into the late 1980s, and now we start to see this idea of people repeating sort of not the same mistakes, but trying to fight the same battle that maybe people that they had in the 1970s. So, in the 1980s, object-oriented programming languages became more prevalent, and people recognized that, well, if I'm running all my application code in object-oriented programming language like Smalltalk or C++, but now I need to store things in my database, well, my database is storing things as relations, so I have to take my objects, which may have nested arrays and other objects inside of them, I gotta break them up and then put them into relations or single records of tuples and put them into my database. And so people recognized that, or observed that this was a potential bottleneck. This is called the relational object impedance mismatch. So, a bunch of people said that, well, rather than taking my objects in my programming language and then splitting them up into tuples from a relational database, what if I just could have a database system that could store objects directly? So then I don't have to do that translation and did serialize or deserialize and break things up and put them back together any time I need to access them. So, the couple of database companies that came out with what are called object-oriented databases for saunt and objects to are probably the two most famous ones, they still exist today, but they're essentially in maintenance mode. This sort of category databases never really took off because there was no sort of standard way to interact with, you know, to program these systems. And just, you know, because you have to use a proprietary programming language that made you, you know, tightly coupled with the database system where SQL is potentially an open standard that anyone can implement, you know, these other databases were proprietary. Martha Logic is an XML database that came out in the late 1990s, but it was similar to these things, there was sort of an XML database. So, although these systems aren't really around today and people aren't widely using them, a lot of the technologies that they developed to store data in these object-oriented databases actually exist today in the commercial relation databases or even the open source ones, right? Anytime you store data as a JSON field or XML field, that's essentially doing the same thing that the object-oriented databases guys did back in the 1980s. So again, so as Mike said, what goes around comes around. So let's look at a quick example here. So I say I have an application that I wanna store student information. So every student has an ID, a name, an email address, and then an array of phone numbers. So if I wanna store that in a relational database, since a student can have multiple phone numbers, I need to have a foreign key relationship between a student phone relation and a student table. And so now when I wanna do a lookup to get all the information I need for a given student, I either have to do two queries on these two relations or do a join between them to get the data that I need. All right, so again, this would be called the object-relational impedance mismatch. So what a object-oriented database would say is that, well, instead of storing this as two separate relations, what if I just stored all the information for a single student as a JSON field and inside that I can have my nested array. So now to go get all the information to instantiate that object in my application code as one fetch into the database. So this seems nice, right? But now this is gonna cause problems because for a simple example, like go get one student, that's easy to do. But now if I wanna start doing aggregations across multiple students and start joining things together, not only do I have to traverse the hierarchy of the every single record in my query, but now I need to make sure I can join across these multiple records. So the queries to do complex things end up being more difficult than what you would have written in using SQL. The other issue is that as I said before, there's no standard API. Even today for JSON databases, there's no standard programming language that people use to interact with these object-oriented databases. MongoDB or Redis are sort of becoming the sort of de facto standard, but there's enough document databases or object databases out there that do something completely different. Whereas SQL, again, the dialects are slightly different, but they're still similar enough that you could understand it pretty easily. All right, so now we get to the 1990s. I typically call this the boring days of databases, and it's not to say that people weren't putting out new database systems, it's just that there wasn't any major advancement or major change in how people were gonna design database systems and how people were gonna, or applications people wanted to run. Yes, the internet was coming around, but in the early days, there weren't that many people on the internet and the complexity of the applications that people were building and exposing through the web were not as sophisticated as they are now. So existing databases were sort of sufficient. The sort of four major events that I always like to say during this period were that Microsoft bought a license to the side-based source code, they forked it and ported it to Windows NT, and that became SQL Server. SQL Server today is still a state-of-the-art database system, and I don't think that much of the side-based code is still there, but that was their starting point, and side-based is sort of in maintenance mode now that still makes a lot of money, whereas SQL Server, I consider, to be a state-of-the-art system. The next major trend was that SQL Server, or so my SQL came about in the 1990s as a replacement for MSQL, and that's why they use today. Postgres added support for SQL, and it was based on the academic code that was developed at Berkeley in the 1980s. Postgres actually was forked, and then there was a commercial version called Alustra that I think supported SQL was eventually bought by InformX and sort of died off, but two grad students at Berkeley in the 1990s took the academic version of Postgres that only supported QL and added support for SQL, and that's why the official name of Postgres is Postgres QL because it was the added SQL after the original Postgres code was written. And then SQL Lite was started by one dude down in North Carolina, and it's most widely used, and that's why they use embedded database and what's why they use this database in general because it's used everywhere. So now the big change that happened in the 2000s was the internet. So the number of users online grew significantly and the size of the databases and the number of concurrent operations that these systems need to support was way larger than what existed before. So the problem was that all of the major sort of enterprise database systems, the oracles, the side bases, the DB2s, these were all very heavy weight and they were expensive. And the open source systems like MySQL and Postgres at the time were sort of missing important features that you would want in a database system. You couldn't quite use them in production safely. So for example MySQL didn't support transactions directly until NADB came along in the early 2000s.  And so that would allow them to support a larger number of concurrent users and ingest data more quickly. But now if you have a lot more data and you wanna do analytics on it, you need a specialized database system to actually support these kind of workloads. So this was the rise of data warehouses. So these were the special purpose database systems that were built in the 2000s that were designed for these larger, larger datasets. That's not to say that the existing database systems at the time couldn't do analytics, they were sort of jack of all trades and not designed specifically for it. Whereas these newer systems were designed just to do analytics efficiently. So the six most famous ones sort of at the time were Natesa, Park Cell, Mode ADB, Green Plum, Data Lager, and Vertica. Of these, Natesa, Park Cell, Vertica, and Green Plum were all forks of Postgres. Like they took the Postgres source code, hacked it up to make it support analytics more efficiently. The other thing about these systems that was different than the existing ones is that they were primarily distributed and shared nothing, because you wanna be able to scale out to do large scale analytics. And unfortunately, most of them were also closed source. So the key thing about them that makes them different than what was done before is that these were all column store databases. So column stores has existed since the 1970s, but it wasn't until this time now these special purpose data warehouses that people recognized that the decomposition model that a column store was superior for doing high performance analytics. So now we get into the late 2000s and the NoSQL movement. So how this all sort of started is my take on it was that the companies like Google recognize that for the kind of applications that they wanna support on the web, they cared more about making sure that the data system was always available and that they could scale to support a large number of users. So they end up foregoing traditional things like the data system provides, like transactions and joins and SQL support in exchange for these sort of other data models or proprietary languages, programming languages or access APIs. So there's a bunch of these systems that were sort of cloned based on what Amazon had done or what Google had done, but other ones sort of came out from just somebody was booting data system at a company and recognized that it solved a particular problem that was useful for other people. So of these the most famous ones are probably MongoDB, Cassandra and DynamoDB. Most of these are open source except for DynamoDB, Oracle NoSQL and Bigtable. But again, the main thing is that they called NoSQL because they weren't support SQL at the time, although a lot of these do now today because they were focusing on high availability more than correctness. So as a response to the NoSQL movement, there was a sort of another database movement that I was involved in called NewSQL. And this is where we're trying to build databases for transactional workloads that could have the same performance and scalability as a NoSQL system, but without having to give up transactions without giving up the relational model or SQL. Because these are useful things to have in the databases, in a database. So unfortunately most of these, at least when the NewSQL system originally started, most of these were closed source. The kind of cool thing now is in recent years with like CockroachDB, TidyDB and Yugobyte, some of the newer NewSQL systems are actually open source. So that's pretty exciting. Spanner is probably the most famous one at Google, out of all of these and they do transactions using special proper clocks, which we're not going to discuss this semester. All right, so now in 2010s and 2000s, this is sort of the rise of these specialized database systems. So these are where now, instead of this building to a single purpose database system that could try to do everything, you try to build these ones that could do transactions or ones that could do analytics efficiently, but not the other. But then in the later 2010s was these HTAP systems or hybrid systems, where it was trying to get the best of both worlds. It was like, and it was trying to be a NewSQL system where you could do transactions very quickly, but you also wanted to support some of the analytics that you would only be able to run on a data warehouse. And the idea here was that, instead of having to maintain two databases, one for transactions, one for analytics, you could push some of those analytical operations directly to the front end system and extrapolate new knowledge, new information on the data as it arrives in the database system. So of these, HANA, Splice Machine and MC Core, probably the two most famous ones, Hyper is originally started as an academic system, but it got bought by Tableau a few years ago and is now a commercial system that comes with Tableau's software. Hyper is actually an amazing system. We are actually going to discuss it multiple times throughout the entire semester. And next class or later this week, I'm actually going down to the Hyper headquarters to try to get, you know, go through like a German seance or get some German influence in my life to help me build a better database system. So look forward to that in the next class. So some of these are open store, some of these are closed source. Again, but all of these are going to support the relational model in SQL because that's sort of the main thing people want especially for analytics. The other big thing that happened in 2010 was the advent of cloud systems. So these are now database systems that are designed specifically to run in the cloud environment. And so how these first started were like the major cloud vendors would sell you a database as a service that were just taking an existing database system like Oracle or MySQL or Progress and running them inside a container or VM for you. But since then, there's been newer database systems that are designed specifically for running in a cloud environment or shared disk environment which I'll show in the next slide, right? So these are, database systems are not necessarily built from the ground up but the systems assumes it's running in a cloud environment and therefore it takes into account the latency of accessing disks that may not be local to the machine where the computer is actually running. So of these, Snowflake, Redshift, Aurora and everything from Amazon, Spanner, Bigtable and Cosmos DB are probably the most famous ones. Xeround was a cloud version of MySQL that went under, it's based out of Israel. They failed a few years ago. FaunaDB is a serverless OTP system and SlicingDice is a cloud server from MySQL based out of South America. So there's a bunch of other ones these are the main ones that I'm showing. So as part of the cloud database you had this new architecture that was assuming a shared disk environment. So that means that instead of having to write a custom storage manager in your database system that accesses like a local disk you would use the existing interfaces or API that the cloud vendor provided you or distributed file system would provide you and use that as the underlying data store. So to think of this instead of writing to a proprietary local file that's managed on the disk I would write my data out to HDFS or Amazon's S3 or EBS. So in these environments the storage layer is usually appended only and so these are gonna favor or typically use a log structure approach because you just need to keep appending to the log.  So again, although we're not gonna talk about shared disk systems or distributed databases you have to bring the data from the shared disk into a compute node and at that point it's in memory and so you're gonna do all the things that we're gonna talk about throughout the entire semester, right? So even though we're not talking about explicitly distributed databases our techniques that we'll talk about here are still used in them. The other cool thing about shared disk systems is that because now we separated the compute layer with the storage layer I can scale them out independently because the execution layer is essentially stateless. The final state of the database is always on shared disk. So if now I can't process queries fast enough then I can just keep adding new compute nodes and start running more queries in parallel. Likewise, if I need to start scaling out more machines I can just add new disk or the shared disk layer. All right, so I briefly wanna talk about graph databases although it's starting to rain here. Every year people always ask me why don't I cover graph databases in the class? And the answer is I have not really seen a from the low level systems perspective that I care about I've not seen a compelling argument for why you do wanna use a graph database. The only really main image that they have over existing systems is that they're gonna provide you a graph central query API. So that means is like if I wanna do a graph traversal instead of, you know, as I walk the graph going back and forth through the application and the database back and forth to do that traversal I have a single command that does the traversal and then it all runs on the server side. So, but there's nothing specific about that that makes this as, you know, you couldn't do that in a relational database that's storing a graph. And in fact, there's a recent research and it's a few years ago, 2015, Insider that shows that it's actually not clear that using a graph centered a specialized graph-centric database system it's gonna do any better over a existing relational database system with a graph API. So for that reason, we're just not gonna talk about graph databases this entire semester. The other major trend this decade in 2010s is the advent of these time series databases. So again, these are more specialized database systems that are specifically designed to store time series event data. I think of like a monitoring service where you're collecting the CPU utilization from every machine in a data center, you know, once a second.  So the reason I bring up the time series databases is that this is actually a good example about how if you make assumptions about what the data looks like and the workload pattern you're trying to execute on, then you can actually apply some additional optimizations at the storage layer and the execution layer for them. So you could make the same argument about graph databases. It's just at the execution layer maybe or the planning level, but at the low level storage level it's a relational model can still do this. So a time series database is they're still relational.  So of these, the ones that's probably the most interesting to us in this semester is Clickhouse at a Russia. I'm gonna spend a little time talking about how they do things, because it's actually a super state of the art system that does a lot of the things that we're gonna talk about this entire semester. And it's open source, so that's very cool. All right, so again, the major trend, I would say of the last decade is the rise of these specialized systems. No longer it's Oracle or SQL Server, DB2 that tries to do everything for everyone. There's enough database system out there that can better for different classes of workloads. Again, a lot of these are still be relational. It's just how they actually implement things and can be tailored towards a particular application environment or domain. So there's a bunch of embedded databases that are interesting that we're not gonna have time to talk about. Multimodal databases or multimodal databases are systems that try to do graphs and documents and key dive stores all within a single database. Blockchain databases are a thing, apparently. Again, I don't find them very interesting or compelling. These maybe I just don't understand it enough to say that they're a good reason for them. So we're not gonna talk about them. And there's also hardware accelerator databases. We'll talk a little bit at the end of the semester. Basic databases that not just running on the CPU, but could you run on FPGAs, GPUs, or new non-volatile memory? So the main takeaway when you get from all of this is that there are a ton of database systems out there that all do things differently. And sometimes they make good decisions. Sometimes they don't make good decisions. And so the goal of this semester is to understand these trade-offs of all the different design points of building a database system so that when you go out in the real world and someone comes along and says, hey, I have this great new database that you should give me money for or you should start using, you can now make an educated evaluation about whether that's actually a good idea or not. All right, so here's what I think's gonna happen in the future. I think that the specialized databases that start off very specialized over time as they get more users and see adoption, they will sort of expand the scope in which the type of problems they'll be able to support. So the time series databases maybe don't do transactions very well, but eventually they will add transactions or maybe they don't do analytics very well in a document database, but eventually they'll do analytics, whatever.  But the ones that do thrive, I think will just again, they'll just get better over time. It is also my opinion that the relational model and particular programming languages are a boon for doing high quality engineering or data engineering in an organization. So instead of just having a bunch of Python scripts that are hacking up the data, if you have a way to sort of programmatically define what the data looks like and operate them all in sort of structured manner, then that makes it easier for other people to reuse what you're doing. It may not be the fastest way for you to do it in terms of you actually writing the software, but for an organization that has a lot of people touching data, I think this is actually the better approach. That's sort of just my opinion. All right, so next class, we will do the introduction on memory databases. I just sort of contrast them with dispute databases and try to understand why they're different, how they're different. And that'll be the underlying assumption we make throughout the entire semester. And for Wednesday's class, you also have to submit your first reading review. So go check this course schedule and see what paper you have to read and then submit that on the link below, okay? So it's like, I don't know, 10, 30 at night. It's getting kind of smoky here. Let me go figure out where 1-8701 is and we'll figure out where it's in and then hopefully I can record the next class when I'm down in Germany at the hyper headquarters. All right guys, take it easy. See you. Bank it in the side pocket. What is this? Some old Porsche. Ayo, ayo.


Hi everyone, in this tutorial we're going to talk about that, how to create infinite loop in Python and when to use it. But first, let's answer to the question what infinite loop is. Infinite loop is loop that keeps on executing forever. Infinite loop happens when loop condition is always true. How can we create an infinite loop? Well, I will repeat again. Infinite loop happens when loop condition is always true. So we need to use a loop. For example, we can use while loop and we need to provide a condition which is going to be always true and then inside this while loop, we're going to put some code in a code block and that code is going to be indented in while loop and this code block is going to be executed forever. Some examples of infinite loop are while one. Here we have condition one and one is number that is always true in Python. So if we put some code block in this while loop, that code block is going to loop forever or until we make a break from that loop. Similarly, we can use as condition keyword true. This keyword true provide us again condition which is going to be always true and again we can put inside code block anything that we want to be looped forever. I'm going to type these examples in Python idle so you can type while loop with condition one which always going to be true and inside it you can put anything in the code block. I'm going to keep it simple. For example, I'm going to print something forever. Let's say that I want to print this forever and if we want to stop this infinite loop, we're going to break this code. Also you can define some more complex condition which is going to be always true. For example, let's say that x is equal to one and let's make condition while x is greater than zero which is going to be true every time, every single time and we're going to have again an infinitive loop. Okay, let's say a few more words about this topic. For example, when we're going to use infinite loop, first we can use it when we want to provide a service to run indefinitely. For example, we can create a web server of a program that provides a service. Let's say that we have few client computers and these computers send out requests to a server on the network. And server is going to look at these requests and then it's going to send response. The main thing that we need to notice here is that web server is getting requests from clients in an infinitive loop. So if we have a server, we're going to provide an infinitive loop and in this infinitive loop, our server is going to get requests from clients and if our server is in the situation to send some response to these requests, then it's going to send response. Then also you can see that a lot of programmers often use infinite loop when they're creating a game. For example, just simple rendering images to the screen requires from us to have an infinitive loop with which we're going to render images during the gameplay. In this example, infinitive game loop is going to keep rendering of these sprite images over and over again while we're playing this game. And often where you're looking at other developers code, you can find that in game loop, very often we have a variable that's called running and that variable has value true and main game loop is created in format while running and inside this loop goes all game code which is going to render images and so on while we're playing that game and finally when our game is over, we're going to break this loop by making that the value of variable running becomes false which means that this while loop and code inside it is not going to be executed anymore. That's all in this tutorial. We've talked briefly about that, how to create infinite loop in Python and when to use it in your code. Don't forget to subscribe to my channel. See you in the next video.


And another dude I like is Taylor Gabriel. Anthony Miller is day to day with a dislocated shoulder and Miller has been playing roughly half of Chicago's snaps this year. Gabriel has been hovering in the 80-85% range and he's seen over 21% of the Bears targets this season. He also gets a plus matchup against a Tampa Bay secondary that ranks third worst according to Number Fires metrics. He's definitely more of a desperate or waiver wire play, but the matchup and peripherals are actually there for Taylor Gabriel. It would just be nice if his quarterback was good at throwing footballs.


Data collection through syndromic surveillance provides a continuous stream of information which offers real-time insights into the health of a population, allowing health authorities to promptly detect and respond to outbreaks and new and emerging health threats. Health threat, in a most recent case, would be the COVID-19 epidemic which caused immense pressure on health systems globally. In this case, syndromic surveillance aided in monitoring the effectiveness of public health interventions. On January 29th, the Ministry of Health, Wellness and elderly affairs began training sessions on communicable diseases and syndromic surveillance. The session was invigilated by CAFA's technical officer for infectious disease Dr. Maurice Frank and covered many areas including the delivery of key messages to the public. With the diseases all of them on the tables right now, the health education, how are we reaching the population? What is the target population that we're aiming to get to? So sometimes we just put out a message and whoever receives the message receives it.  So we say that we have a high literacy level does not mean someone is health literate of course persons can read does not mean that they can understand the scientific jargon that we're putting out there. The sessions were interactive and required the participants to create their own surveillance system. Dr. Frank touched on a number of thought provoking aspects relating to national surveillance methods. We are living in a globalized world. Whether we pay attention to it or not it is so easy for disease to just walk right into St. Lucia from Martinique. There's a ferry between Martinique and St. Lucia so I just came from France I went to Martinique then I come here. So what is the role of Port Health? What is the role of isolation at the port? So we have to consider the health security aspect. What is happening on the grand scheme and the picture of St. Lucia's health system? So when you're working through the scenarios don't just think in terms of a clinical setting consider what is happening for the whole country and who is needed for an outbreak response who's needed for surveillance. From 2014 St. Lucia has had an established syndromic surveillance system set up at 36 reporting sites throughout the island. This allowed for the detection of the Zika outbreak in 2016 and any changes in disease patterns which may appear throughout the year. Whilst the COVID-19 pandemic allowed for increased capacity it also highlighted the need for continuous training and retraining of healthcare personnel so as to improve the country's preparedness to respond to new and emerging diseases. For the communication unit of the Ministry of Health, Wellness and Early Affairs I'm St. Justin


Truth, Satya, implies love and firmness, Agraha, engenders and therefore serves as a synonym for force. I thus began to call the Indian movement Satya Agraha, that is to say, the force that is born of truth and love or non-violence and gave up the use of the phrase passive resistance in connection with it. So much so that even in English writing we often avoided it and used instead Satya Agraha. Gandhi was actually conferred the title of Mahatma by Rabindranath, right? And the word Mahatma in fact is a very lofty word because it just doesn't mean the great soul which is the ordinary English translation of Mahatma but it means someone who is enlightened and I think to go very early came to the realization that there was something exceptional about this man. In fact, when you call a person a Mahatma, in part what it means is you have taken him out of the fold of the family and placed him within the larger ambit of the citizenry of the country. It was said at that time, right, by people like Einstein and many others that Gandhi belongs to the ages, right, I mean not just to India, not just to the world but he belongs to the ages. Would you like to be like Gandhi? Maybe. I think it's very hard to be like he was. I think he was a great man and I think he taught many people to fight for their rights in a peaceful way and that's what we like so much about him. Do you think Gandhi is relevant in today's world? I think so because I feel that if I do something big one day, I will do it his way, his way of non-violence and I think that is the most intelligent and powerful way to guide the world. If Gandhi was alive today, how would you reinvent him to be more acceptable to the young generation? I don't think anybody would have required to reinvent Bapu because Bapu would have been reinventing himself periodically. The man who lived a life of experimentation would never have stagnated. So he would have reinvented himself as times changed. During the Satyagraha in South Africa, I had altered my style of dress so as to make it more in keeping with that of indentured labourers. And in England also, I adhered to the same style for indoor use. For landing in Bombay, I had a Katyawari suit of clothes consisting of a shirt, a dhoti, a cloak and a white scarf, all made of Indian milk cloth. Let's discuss what Gandhi is. So we'll do the brainstorming first. Yeah, we can do that. He said quit India because you know he would concentrate on these Indian business people like the Birla's, Tata's and the Bajaj, where he is, he has taken the term, quit India. So he said like quit India for the foreign investment and he could promote these Indian businessmen so that they can have their own economy. And he also did promote India.  It was purely business. If we see Gandhi, when he was in India, before he went to England, he was dressed as a traditional banyan, how they dressed, when he went to England to study there. He changed himself. He thought that you know the western people cannot accept him. So maybe he dressed accordingly so that he could at least say hi, hello to them. He underdressed because he had to appeal to masses and at that time, that particular time, the people, the masses consisted of poor and people who were underprivileged. So he had to be with them. Same philosophy we have put it in our design, the clothes that we have taken and the details we have put in. It has to appeal the masses yet it has to appeal masses as well as the classes we can say. So I don't want to kill the DNA of Gandhi's look, whether it's a watch or the glasses. We have given him the look of a business leader where it's more of a corporate look. The trouser is inspired by the dhoti. And I would dress up in a traveller's thing because he has to be a youth icon as well. We cannot forget youth at all. If we see the trousers, they are Jodhpuri trousers, Jodhpuri again it has a relation with royalty. And then I would also give him Apple iPad, tablet. Because he always used to carry Bhagavad Gita but now it can be an e-book to just go and sing with the youth. I believed at the time of which I am writing that in order to look civilised, our dress and manners has as far as possible to approximate to the European standard. Because I thought only thus could we have some influence. And without influence it would not be possible to serve the community. I therefore determined the style of dress for my wife and children. How could I like them to be known as Kathiawari banyas? The Parsees used to then be regarded as the most civilised people amongst Indians. And so when the complete European style seemed to be unsuited, we adopted the Parsees style. Accordingly my wife wore the Parseesari and the boys the Parsee coat and trousers. The Gandhi view is that there is an intrinsic relationship between your own body and the body politic. And the so-called inert world of nature outside. What he did in effect was to transform his own body into a complete ecosystem. And this is where you would have to look at how every little thing, you know, his enemas, his fasting, what he ate, what he didn't eat, what time he went to bed, what he wore. This is all part of what I call Gandhi's own ecosystem. Mr. Chohan, if Mahatma Gandhi were alive today, would he approve of your water business? Definitely not. And not only Mahatma Gandhi, I think it is way before him, the Banya community did not accept the concept of selling water. And water is something which you are supposed to give free and you have matka outside your house from where people can take water. And if you see that in 1949, where my father started the softening business, he was bombarded by a whole lot of his friends saying that a Banya, how can you be selling water? But to justify what I am trying to say is we are doing a good service to the community. One, for every 1 liter of water we use, we conserve 10 liters of water by way of water harvesting. Two, we give an employment of 5000 people. Three, if we can prevent you from getting sick for 15 rupees, will that not save you thousands of rupees of medical expense? The earth, the air, the land and the water are not an inheritance from our forefathers but a loan from our children. So we have to hand over to them at least as it was handed over to us. Our country remains poor in wealth both materially and intellectually if it does not develop its handicrafts and its industries and lives a lazy parasitic life by importing all the manufactured articles from outside. There was a time when we manufactured almost all we wanted. The process is now reversed and we are dependent upon the outside world for most manufactured goods. We do not want to follow the frog in the well policy. Nor in seeming to be international, lose our roots. We cannot be international if we lose our individuality, that is nationality. I am a farmer. I am a graduate in agriculture. I am working for the National Agro-Foundation as a director. The greatest motivation is my personal satisfaction because as a farmer I have seen the darker side of farming or the problems of farming. But as an educated, the two in the agriculture based education, so I have seen the brighter side of the farming. So I thought I can make a proper blend of the technologies which can serve the farmers and that this foundation gives me a platform to actually share this with the farmers, fellow farmers for their betterment. So the personal satisfaction is that most motivation I have. One lead farmer learning it, doing it, showing it to others and then replicating to the fellow farmers. So that is the ultimate motive of our foundation, that is from the lead farmer to the lead village to the lead district. I had only the milk of the cow and the buffalo in mind when I took the vow. I had before me a picture of the wicked processes the cow herds adopted to extract the last drop of milk from their cows and buffaloes. Moreover, I had always held that milk is not the natural diet of man. He is our lead farmer, Raghupati is our lead farmer, I already told you know. So he takes the technology and then he uses that for the welfare of the community. And he is the motivator for this village. Actually he is a volunteer for this. He actually volunteers himself for this services for the betterment of his village. As a group in the village, they avail the loans from the banks for getting this cows. From the income generated from the milk, they repay their loans.  Yes, I am a bachelor because I want to serve the service to the villages. If I am married fellow, it is not able to serve for the others. So not only that is the reason, but it is. You have got such a beautiful house. No, for you it may be a beautiful house. But in my view it is not a beautiful house. Because I also want to live in luxury. But I cannot live in luxury. Just like Chennai papers or incoming papers. Why are there no young people? They don't like living in villages? Yes, because here the earnings are too low. In Chennai, in industrial work, they earn per day 300 rupees. But here, although we work hard for 24 hours in agriculture, we cannot get 300 rupees per day. So we can average, we can buy 50 to 100 rupees. It is also not stable to us. So they want to migrate to the outer places. And they are going and earning money. Today Mr. Raghupati, if someone came and said, I give you a lot of money for your land, will you sell? No, we won't sell. Because it is our mother. Land is just like our mother. We cannot sell it. We will enjoy it still in future also. We will never sell it. So we want to live here, we want to earn here, we want to die here. What do you know about Mahatma Gandhi? He served for the nation without any expressions. He want to grow the villages. I know something about them. What about young people? Do they want to learn about Mahatma Gandhi? No, they don't want to learn. If we say them about Mahatma Gandhi, it is our ancient period. Now if we want the computer period, now we don't want to learn how to do it. Yes, some of them are saying. What is the aim of National Agro Foundation? My father called it as the Second Green Revolution, which he said the objective is to make sure that the migration should be stemmed. For that agriculture should be made viable so that we have no more slumps which is crowding over. Because there is less land available now for agriculture because you know the main reason according to me is the causes of the population pollution and poverty. And to overcome that Second Green Revolution came into this thing that is National Agro Foundation's role or objective is to make sure that the purchasing power of the farmers has to go up. Gandhiji and father, why I relate to them was they were all not looking at the next election. They were looking at the next generation. That's the most important thing, the next generation. Look at the future. Why should a man at the age of 90 when he starts the National Agro Foundation to bring about the Second Green Revolution he wanted to do more and more. And it's like a relay race. Somebody takes a bait and runs and it hands it over to the next person and that's how it should go on. In India, far too long we have built individuals. You have to build institutions. And it should be, you know, people should come and take over. I think that is all the, these are some of the learned essence of Gandhiji's teachings which are relevant even today. There is an art that kills and an art that gives life. The fine fabric that we import from the west or the far east has literally killed millions of our brothers and sisters and delivered thousands of our dear sisters to a life of shame. True art must be evidence of happiness, contentment and purity of its authors. And if you will have such art revived in our midst the use of khadi is obligatory on the best of you at the present moment. If India is to attain true freedom then sooner or later the fact must be recognized that people will have to live in villages not in towns in huts not in palaces. I do believe that the yarn we spin is capable of mending the broken warp and roof of our life. I want to be an engineer. Do you learn weaving? No ma'am. I can't because I know how tough it is. In previous days there is a lot of people are trying to do this thing. And in those days all are working together in urban areas. It's not possible to do this thing in the future I think. But don't you want to learn this art from your father? Yeah something I know. I don't know exactly full and fully. I don't like to know about it. My dad deserves it. It's end with me. No need for my son and my future generation. Four members mending. Rs.3,000 incoming. Gandhi was taught more or less at the suggestion of Mahatma Gandhi himself. See the history goes back to death of Kasturba. She died in 22nd February 1944. Soon after a Kasturba trust was created and Mahatma Gandhi himself was the chairman with Sarojini Noido as the treasurer. Even in those days they collected more than 1 crore. And then Gandhi decided that it should be given to responsible people in different states of the country to start some welfare activities for women and children. And one condition which Gandhi had put was that it should be at least 7 miles away from the nearest town. That way our founder Dr. Saundram who was personally known to him was selected as Prithinithi or agent for Tamil Nadu. She was a child widow. She was probably married when she was 9 or 10 and she became widow at the age of 12-13. What is your profit from Lijjath Papad? We provide employment opportunities from 67 to women and they earn a lot depending upon the input of labour. They may be making for Rs.1.50 to Rs.200 very easily. What are your future plans for the Gandhi Ground Trust? Future plans means first keeping the existing thing that itself is a challenge but future means because thanks we have got now 1,000 self-ful groups of women who think sky is not the limit they want to do many things. The Gandhi philosophy we are following. Basically every village should be self-sufficient. Employment opportunities should be created in the villages. Whatever we have is a replicable model of the village industry how it can be run successfully. We cannot go for a large scale. With many public institutions which I have managed it has become my firm conviction that institutions maintained on permanent funds are often found to ignore public opinion and are frequently responsible for acts contrary to it. It is the duty of a nature cure doctor not only to look after the body but also pay attention to and prescribe for the soul of the patient. Whatever the apparent cause of fever the real cause in every case is one and the same. That is accumulation of waste matter in the intestines. Science has not so far discovered any recipe for making the body immortal. Immortality is an attribute of the soul. I have made a loan from this. I have made a loan and I am doing well now. I cannot say how much a day I have received. If anyone comes I will get Rs. 2500 for Rs. 2000-3000. We will make a small bill so I will get Rs. 500. How do you know about Gandhi? We do not know about him. Gandhi Ram should not eat mutton and should not eat here. My ahimsa would not tolerate the idea of giving a free meal to a healthy person who has not worked for it in some honest way. A customer is the most important visitor on our premises. He is not dependent on us we are dependent on him. He is the purpose of it. He is not an outsider in our business. He is part of it. We are not doing him a favour by serving him. He is doing us a favour by giving us an opportunity to do so. Why do you buy food? There is no grain in the house. There is no grain. To my mind the life of a lamb is no less precious than being. I should be unwilling to take the life of a lamb for the sake of the human body. I hold that the more helpless a creature the more entitled it is to protection by men from the cruelty of man. The idol in the temple is not God but since God resides in every atom he resides in an idol. God is an unchanging law normally by law we understand what is prescribed in the religious text but here what I am talking about is an eternal principle which does not change with change in circumstances. This is the truth and that is why I say that truth is God. I think Mahatma Gandhi is relevant in India today. If truth, love and peace and non-violence as a corollary or as the fountain of peace are important to civilization then he will always remain relevant because as he said in his own words truth, peace and non-violence were as old as the rivers and the mountains and he had not invented them and so as long as those are important for the existence of humanity he will always be relevant. I learned the true practice of law I had learned to find out the better side of human nature and to enter men's hearts I realized that the true function of a lawyer was to unite parties the lesson was so indelibly burnt into me that a large part of my time during the 20 years of my practice as a lawyer was occupied in bringing about private compromises of hundreds of cases I lost nothing thereby not even money certainly not my soul. The Delhi High Court in May 2006 inaugurated the mediation and conciliation centre Do you think it has been beneficial to client and lawyer both? It is beneficial to both it has brought about a change in the legal fraternity who is connected to the mediation centre it has brought about a sense within the a confidence sense within the a confidence sense it has brought about a sense within the confidence sense within the litigants that a lawyer can also be a felicitator to settle the matters it has also brought about a satisfaction with a litigant to say my case can be settled at an early date with the intervention of the lawyer You can't just say I'll return the principle or a minimal interest What is the mediator's fee? We are not paying him we are not compensating him for the time that he is putting in because most of us does this work pro bono The purpose is to change the image of the legal fraternity in the minds of people So the lawyers I would say if the clients are agreeable to 12% let's go with it But 12% only if he returns it in 6 months 18% even a day after that Mr. Mathur So hopefully now you had a good agreement and you will be able to take loan from me for your next one instead of going to court In your opinion was Gandhi a good lawyer I call him a good lawyer because as I said lawyer is a profession to ensure peace harmony goodness in the society and the fact that Gandhi Ji was able to do that I call him an excellent lawyer There is no such thing as Gandhiism and I do not want to leave any sect after me Was it that you wanted to pull my leg transporting me to the frozen Himalayan heights of Mahatmaship and claiming for yourself absolution from having to follow my precepts