One of the things that you're going to notice as soon as you turn on Microsoft Access is this is a little interesting. We don't actually start off with anything. What actually happens is because of the complexity of a database, Microsoft Access isn't just going to magically make a blank one for you. You actually have to specify it. Instead of Microsoft Word, which opens up with a blank document in Microsoft Excel, which opens up to a blank spreadsheet, we do not explicitly open up to a blank database. We actually have to make one. And like always, you can see we have all of these different styles that we can work from. So I can make a project management one. I can deal with inventory if I'm a small mom and pop shop or bigger mom and pop shop. But as you can see, we have tons of these that we can build from. Look at that desktop home inventory if you want to maybe keep track of your own inventory. But the one we want to focus in on is that blank desktop database. Now, the first thing it's going to do is it's going to ask you, what do you want to name this? Well, we're going to at least kind of follow suit with the textbook. And I'm going to call this Chatham. Chatham. What we're doing is we're going to deal with building a nice little emergency care place. And so we're going to hit create. Now, again, if we look at this, notice we don't see much at all. So what do we want to go ahead and do? Well, the first thing you see is we do now that we've created our blank database. It starts off with a blank table for us. So we need to go ahead and start to add in our data. Now notice you see it says click to add. Basically, we need to specify what the next thing is going to be inside of my database. Right now, I only have my ID for all my records. I need to go ahead and say, let's add in something. So if we click on this, you see we get a dropdown menu with a few different options. We're going to go ahead and start with short text. Again, just like I had mentioned, short text allows me to store texts, numbers, symbols, basically anything that you can find on your keyboard. So we're going to go ahead and call this one patient ID. Now here's a lovely thing. If I go ahead and type enter or hit the inner key, it's actually going to move to the next one. It's going to go ahead and do that click to add again because it understands what's next. So this time we're going to go ahead and say, well, since we're dealing with the emergency care and we're dealing with our patient, when did they show up? When? Well, that's a kind of date and time little concept. So I want to go ahead and select date and time. And we're going to actually call this one visit. Now here's the interesting thing. I'm not going to put a space. I'm going to say visit date, capital D for the date. But notice if you can, I did not actually put a space. Now the reason behind this is it actually goes back way back in the day when we were designing out databases years, decades ago. Spaces were actually kind of not something you did for your field names because the computer back in the day couldn't handle that. They actually kind of reserved that for, oh, if you hit a space, that means you're doing something else. So we kind of still follow that same mentality. We do this just because there are systems out there that still deal with databases that might not be able to handle spaces. So we don't put spaces, at least to keep in the back of your head when you're doing your SAM assignments as well. Don't put spaces. You're going to get points taken off if you do spaces. So let's keep on hitting enter. So the next one I'm going to go ahead and say is we're going to do a long text. Actually, let's, yeah, why not? Long text. Now this is obviously if we're going to the urgent care, we probably have a reason for it. Now that reason, whatever reason it is, it's probably going to be a long laundry list. So we wanted to have a little bit more information. Now the last thing I want to do is we're going to also deal with something known as a Boolean data type. Now a Boolean data type basically means that it only has two potential answers. Yes or no? True or false? Boolean, it comes from George Bull. He was the kind of guy who built this logic. But again, that yes, no. Now you notice all of a sudden that yes, no, instead of just being blank like everybody else, it was a check box. All right, that's interesting. But it's something to kind of be aware of. And we'll say we're looking at whether or not they were a walk in or not. Now a walk in meaning they just walked in, they didn't call for a reservation or not. Now, okay, now we want to go ahead and start to flesh this out a little bit more. Except I do want to make one final change. You see that ID all the way over there where it says new. Well, what that means is I can't change this. I can't notice how I can't change that number. Well, that's not good for me. So I want to adjust that. Now notice when I clicked on it over here in the formatting section, that became active all of a sudden. And at that data type section, you see how it says auto number. Auto number means that it's going to automatically increment. For our sake for this example for the textbook, I don't want it to automatically increment numbers. I actually want to kind of control that on my end. So what I'm going to actually do is I'm going to drop, click the drop down menu for that. And I'm going to select short text, short text. That allows me now to type in my data. The last thing I'm going to do is I'm actually going to adjust what it's called. Instead of it being called ID, I'm actually going to right click, which allows me to now go through a song and dance of options. But I'm going to go with rename field. And so I'm going to go ahead and rename this visit ID. Because if we think about it, any one patient can visit multiple times. So I want to record every single time they do. Now, before I start typing, the last thing I want to do is I want to save this table. Because if you notice right now it still says table one. We'll get into typing in just a bit.  As you see, we get it up here or I can do control S. Or I can actually hit the close table option. You notice it's all the way over here on the right. Do you want to save changes to this? Yes, I do. And we're going to go ahead and call this table visit.


He's told me different things like that that really helped me to stay alive or helped me to understand life. I just thought about that when I see him on three and I'm like, dang, he should have stayed in that car. Man, I would have rammed a hill again. You see what I'm saying? Because that car still could roll. I'm so scared. It's a weapon. I'm scared. Yeah. You know what I'm saying? He ain't scared. I know. Three got the car ready for war. I know that. You know what I'm saying? If he was scared.  That's it. We on boss talk one on one. We're about around, you know, they became stars and they outweigh. I gotta ask you this about the white girl that went viral that she singing actually Drake song and a couple of Drake and somebody else's song. She went, she just went crazy.  This gun ain't gon' jam when I blow, I ain't miss it. I'm flopping, hit out the hit, I'm just chillin' but I seen the hit while I chill with my children. On the internet, what would you do with her? Would you be able to? I need her. I need to come to the white girl. You see what I'm saying? She went crazy. I need to go to the, I need to have an artist at the Grammys. Boy, y'all see me, y'all see my, boy y'all, if y'all see me, if they call my artist name out at the Grammys, I'm gonna slide across that stage and hit that baby. Like Michael Jackson. Dial that baby, it sound the new moon one. Oh, that moon one with the, yeah. Ain't my baby.  You know what I'm saying? I need an artist to hit that Grammys man. Like, that is wonderful. She went crazy just in one day though. So, I mean. Where she from? I don't even know. I just said, I got a trip talk, no pill talk, sent that to her. She was lip-syncing the song. She was lip-syncing, but she knew it. I always tell my little baby. Yeah, a little baby. Yo, yo, yo, yo, no, yeah, that was a, no, no, she just think, so you white girls out there, y'all trying to, y'all think y'all think. She done blew up? Yeah, y'all think they gon' blow up out there? No, that girl was dipping, she had swag, she was making, she was making the justice, she had it going like, she was really on it though. Now that girl had swag. Let me ask you about this, Dave Chappelle, they whooped a nigga all up and he tried to run up on the stage. And they whooped a nigga all the way in the back, broke his shoulder and broke his shoulder, ribs, what you think about that? Jamie Foxx was in it too, nigga, Terrell Texas stand up. I'm scared of the industry.  Oh, so you think they set it up?  He tried to do what? Will Smith. So you think he came in with that ill will? Yeah, yeah, he got a gun and a knife on him. He wanted to be known. He known now. He was a rapper. He was a rapper? Yeah, but it's hard, like, man, I'm scared of the industry. Yeah. Bro, they running up on stage. What'd you think would happen if they run up on stage with you and Mo3 up there doing them song like this? I ain't gon' make it. I would tackle them.  And so Zach could be DJ and I stand next to three. And go look at any show on YouTube, you'll see me standing right there. And I don't know what I could do.  But I would run up through them niggas.   All you gotta do is grab one and hold onto them. Yeah, you gotta hold onto them, you know what I'm saying? Like, I wish I was in that car with three at that time. They got to shoot and I would have ran. I would have told them, I would have grabbed him and I would have rammed, they caught him. Bam! Yeah, that's right. They would have been talking about a wreck on 35.  You know what I'm saying? No, that's what you, and that's something I thought. And I'll talk about that a little bit before we get out. I'll talk to them. I really, when I seen it, I liked to die one time in a truck. We had some wood on the truck. I used to haul wood and my uncle grabbed me. If he see this, he's like, damn this boy be thinking about stuff.  Needle was driving.  Me, my intention, I was gonna get out and try to get away from it. But he pulled my arm back in. And he said, staying in his truck. He said, man, don't you get it? He said, that would have killed you out there. But he showed me different things like that that really helped me to stay alive or helped me to understand life. I just thought about that when I see him on three and I'm like, dang, he should have stayed in that car. He was running out of Ram to heal a gun. You see what I'm saying? Because that car still could roll. I'm so scared. It's a weapon. I'm scared. Yeah. You know what I'm saying? He ain't scared. I know. Three out of the car ready for war. I know that. But I'm just saying, if he was scared.  That's it. I would have kept ramming the car. That's it. And I went around him on four wheels. Yeah, cause it would drive him on rims. Yeah, yeah. If he wasn't scared, I mean, if he was scared, he could have got away. Cause I hear a dude jump over the meeting and go. Man. He had time to do that. Man, so he didn't want to. You know what I'm saying? Just like at that club that night, I seen too many guns. Mm-hmm. I got running. With night. Mm-hmm. Uh-oh. With night. Yeah, the night. Oh, okay. The night is a million dollar night. I got you. Yeah, we on Boss Talk 101.


As we celebrate the 25 years of the Beijing Declaration and platform for action and observe 20 years of the United Nations Security Council Resolution 1325 on Women, Peace and Security, IOM stands with every woman and girl on the move. We stand for real advancement and empowerment of women and girls everywhere. We stand for safe, orderly and regular migration for all women and girls. But as we celebrate, in these difficult times with the COVID-19 pandemic, we must hear the voices and realities of women and girls before, during and after migration. We must note the particular challenges that the pandemic has brought to their door. IOM will continue to step up its national, regional and international efforts with the Beijing roadmap firmly in hand, in line with the global compact for safe, orderly and regular migration and for the achievement of the 2030 agenda.


I know what a world without nuclear weapons looks like. It's not a very nice world, because a world without nuclear weapons is the world before 1945. And if you just think about the six years prior to August of 1945, when the first nuclear weapon was employed, we've been in the nuclear age ever since. But if you look at the world the six years prior to August of 1945, in those six years, somewhere between 60 and 80 million people were killed in that six-year period. If you do the math, that's somewhere over 30,000 people a day were being killed during the six years of World War II. That's a world I don't want to live in. Nuclear weapons have helped keep that major power conflict down. It has helped eliminate that major power catastrophe that was World War II. That's what nuclear weapons provide. That strategic deterrent to prevent major power conflict. It doesn't eliminate conflict. Conflict will always exist. Sometimes it will get to be violent, but it has kept down the major power conflict all the way through. Modernization is critical to the future of our deterrent capability. Sadly, we've delayed the modernization of those programs really too long. But we've put a process in place that is very bureaucratic and very slow and very deliberate. It prevents big mistakes, but it also puts huge schedule into programs. And when you have adversaries that are going fast, you don't have the time to take to go through that very deliberate process. Because if it takes you 25 years to build a capability, which is what it's going to take us to build a number of space capabilities and a number of missile capabilities, it takes you 25 years and the adversary can do it in 10 years. In 50 years, you've had two cycles and they've had five. There are three cycles ahead of you. We cannot be behind our adversaries anymore. We have to move quickly. We have to understand the risk. We have to take appropriate risk, not crazy risk, but appropriate risk, and give the authority and responsibility to the people that can move fast. And then American industry will move fast, just like we've always done. One of my favorite stories is General Shriever at the beginning of the space program as he's building the corona satellite program, the first spy satellite. It didn't work until the 13th attempt. 12 failures in a row and then it finally works the 13th time.  Sometimes when the satellite made it to space, it didn't make it back to Earth. It flashed in the ocean multiple times. Things broke all over the place, but each time he did that, they learned and they didn't make the same mistakes again. They learned from the mistakes they made, and because of that they were able to turn it fast and they were able to test on a very rapid sequence. In today's day and age, you can imagine the headlines of the paper if you had any program that failed 12 times in a row. It would just be a death knell. The program wouldn't be allowed to succeed, but that's actually how you go fast. You go fast in this business, which is a very difficult business, by pushing the envelope, learning, instrumenting the test so you understand what happens and what goes wrong, and then go fast. So the three priorities for this commander, I think pretty simple and straightforward. We already won. Above all else, we will provide a strategic deterrent. Priority two, if deterrence fails, we will provide a decisive response. And priority three, we'll do it with a combat-ready force. Whenever I say those priorities, what people hear when I say that is they think about our nuclear capabilities. That's probably where your head went. That's where most people head go when I say we will provide a strategic deterrence. If deterrence fails, we'll provide a decisive response. We'll do it with a combat-ready force. Everybody goes to the nuclear capabilities. But it actually applies to every element of this command. Nuclear, space, cyber, missile defense, global strike, electronic warfare, intelligence, targeting analysis. All of those capabilities we bring to bear on the fight today. We need to, in the future, and that's the vision for this command, we need to move where all of those capabilities are integrated to provide a single deterrent effect, a single decisive response if we're threatened. All those capabilities together will be much more powerful than each of them separately. And that applies to the nuclear capabilities as well. From an assurance perspective, assurance is one of the most important things we do for our allies. When you look at our allies, like the Republic of Korea or Japan, we have capabilities here that provide an extended deterrent for those two allies and a number of other allies around the world. It's important that we always assure them that we will be there with the capabilities that we have when we're attacked with the nuclear capabilities. That's what extended deterrents mean. And so we have the responsibility to assure our allies through demonstrations, through partnerships, through exercises that we will always be there if there's a challenge that they face. And there is a challenge right now with North Korea. And it's very important for the Republic of Korea and for Japan that they know that we will be there and we will be. The greatest gift a commander is given is the sons and daughters of our nation. And they come to work every day.  Under the water. Silent service. Always ready, always capable. And they are so bright, so energized, so motivated. They understand exactly what they're supposed to do every day when they come to work. They are ready. If you go to the missile fields of Montana, North Dakota, Colorado, anywhere you go, you go into a launch control center. You'll find two young Air Force officers sitting alert 24 hours ready at a moment's notice to respond. And they are highly motivated. They understand that they're doing the job that their country has to give. And they're doing that, and they're ready. It's just, it is the greatest feeling in the world. It is the best part about being a commander, without a doubt. The best part of being a commander is actually seeing the young men and women who do this mission every day, the soldiers, sailors, and airmen and marines who sign up to do some of the most difficult jobs that our country has. The young men, they do it. They love it and they're good at it.


In terms of impact evaluation, evaluating the impacts of our policies and programs, the environmental area and conservation included is in the dark ages compared to most other policy fields like medicine, public health, poverty, labor, training, education, even criminal justice, they're much more advanced. And not only that problematic because we don't have the evidence base that a lot of other fields have, but we also have one of the most difficult contexts to do evaluation it. We've got large airsheds and watersheds, we have complex spillover relationships, we've got impacts that we don't expect to see for five, ten, twenty years, so we've got really complicated scenarios to evaluate impacts and the kinds of approaches we're using are rudimentary, things that were used decades ago in other fields and of long since then abandoned. So one of the biggest problems we have in the environmental context is we don't design our new policies and programs with the intent of evaluating them. We talk about monitoring evaluation often what we're really doing is just monitoring. We're looking at trends and status of the forest, the fuel wood, of people's assets, that's not the same as evaluation where we want to draw inferences or understand why is that trend going up, down, staying the same. And it's hard to do that without designing the program at the beginning to be evaluated. We don't collect the right data, we collect huge amounts of data but it's not the right data so we can't draw any inferences from it about program impacts. So we need to design more new policies and programs right at the start with the intent of let's try to evaluate this program, let's not assume it works and let's take it as a hypothesis, we have good reasons to believe it works and design it where the explicit intent is not only to achieve whatever social objective we're trying to achieve but to generate evidence about whether this works and under what conditions does it work. And we don't do that. Part of the problem that we have is we don't have a lot of evidence about the value of evidence right so does it matter if I can show credible evidence that things work or are there more important things to policymakers than whether something works or not. Is it politically popular might be more important, do important stakeholders like it or not that might be more important and how to communicate that evidence is harder to do. That's why it's important if you integrate the evaluation in the beginning and get buy-in from the policymakers about this is the design that we're using usually it's a lot easier to present those results in a credible way because people the policymakers were asking the questions they want to know whether this works or not they understand the roughly how the design is going to work and how we look at the evidence at the end of the time period and that's going to make it more convincing whereas a lot of the evaluations we're doing now policymakers didn't ask for and they're being done with very sophisticated methods because the programs weren't designed to be evaluated and so that makes it much harder to communicate when the policymakers didn't ask for these evaluations and the methods are very complicated and opaque. I want to be clear I don't know the answer all I know is zero is not the right number and that's essentially what we have now and we're close enough to zero to be to say it's approximately zero so I don't know if the optimal level is 10 percent of our programs 20 percent 40 percent of our program should be evaluated but it's certainly not zero where we are now so we need more and I would say it's not a hundred percent most programs I've seen some nonprofit organizations who now having their mission statement to evaluate the impacts of every one of their programs and initiatives that's not possible most of these programs will be too difficult we should be putting our money into programs that are very popular payments for environmental services protected areas decentralization and devolution information technology transfers subsidies for forestry those sorts of things that we're doing in lots of places and then we have a good opportunity to learn something from some of the pilot programs that are out there and learn from those and then for the others we're just going to monitor and try to extrapolate and fumble along in the dark so my answer is more than we're doing now


So, you don't understand what collections are for. Not a problem. You've probably noticed that every time you generate a new search, it shows up on the right side. But if you scroll all the way down, you'll notice that at a certain point, your oldest searches have been replaced with your new ones. And sometimes when you want to see an old search and you scroll all the way down, it's not there. And you're wondering where it went. And unfortunately the truth is, unless you saved it to your computer, you have lost that image forever. That image is long gone and you are not getting it back. I made this mistake myself the first time. I was having fun trying out new words and generating new stuff. And I had the perfect ice cream dragon. It was super cute. It was exactly what I was imagining. Before I knew it, it was gone and there was no way I could get it back. Now I did record myself going through the process so I have a video recording of it, but I do not have access to the full sized image anymore. I probably used hundreds of searches trying to generate the same image again and I never got it, which brings me to my most important point. Every single image that you generate here on Dalit is completely unique and cannot be found anywhere else on the internet. No matter how hard I tried, I was never able to get this exact design again. And that is because it generates new designs each role. The only way to ensure that you don't lose an image that you really like, go up on the right and click the save button. Once you do that, it'll be added to your collections, which you can view over here. I really like an image, save it, but again, I really recommend you just save it directly to your computer because you will not get the same image twice. If you're lucky after $100, you might get something close, but I wouldn't count on it. Save the images you really like. Oh that helps and as always, hope you have a fantastic day and I'll see you around.


I think I've always had a community spirit. I've always wanted to help out and the devastating fire season of 2019-20 just made me realise that it was the fire brigade that I wanted to help out with. It was the CFA. I just said to myself I couldn't go through another fire season like that knowing that I was perfectly capable of helping out with the right training and so I decided to put my name for my local brigade. I was just welcomed with open arms from the very first moment I walked in and I think that no matter what your skill set is the brigade here will try and find a role for you. I was really excited to put my hand up for the community safety role here at Edith Vale. I do communications and event management as a job so I'm able to help the brigade organise in community events like school visits, kindergarten visits and even taking a truck to the local school fate and then I can also manage the brigade's social media channels and other outward-facing roles within the brigade so it's a great way for me to get more involved and I'm really loving it so far.


In order to lubricate the urban grow machine, it's essential that land is commodifiable, which means that it needs to be divided into relatively clear units, which are usually overlapped with private property rights. Actually the planning, this is one of the reasons why I'm interested in post-grow planning, is that planning is bounded historically, since 100 years, to the idea of zoning as a way to divide property. In fact zoning was invented in the beginning of the 20th century in the North America, in order to guarantee property rights.


Oh, my God, so many people. So, welcome to the 2023 Blender Conference. So, my name is Tom Roosendal. I'm the chairman of Blender Foundation. And today I want to talk about the very important, but boring topic, the GNU General Public License. Or is it called the GNU GPL? Because why? Well, there was one thing remarkable of last year, was that really, literally, everybody starts using Blender. So whether it's big film studios like ILM, DreamWorks, Sony ImageWorks, Animal Logic, the games companies are all using Blender, Gorilla here in Amsterdam, they're using it. The automobile industry for some reason. Every German manufacturer is using it, even in Amerika, Korea, Japan, de userblender. Design companies, architects, film academies. It's really amazing. But, they said, there's one thing holding us back. And that's the legal department. Especially the big ones. Because they say, yeah, yeah, yeah, Blender. Free software, the GNU GPL. This will contaminate our IP. If we start using Blender and we make one little mistake with a piece of Blender code that ends up in our product, we have to make everything we own open source. We have to give everything away. Or maybe everything will become property of the Blender Foundation. And this kind of myths are really being told by lawyers and legal departments. So I let the lawyers talk to lawyers, right? I'm not going to bother you with this. But we do have a lawyer ourselves now, the free Blender Foundation. And if you have a big cooperation in the legal department, connect with me. And I will connect the lawyers together. But for everybody else here, today I want to put an end to this horrible myth of the GPL being viral, right? As if it's an ink blob polluting your beautiful clear water. As if it's a piece of dog poo under your shoe.  Well, it's not, right? This is not true. And to show that, I prepared a little demonstration to get a better metaphor for how open source works. To start with, I want you all to realize that the Gnoed CPL is about copyright. It's all about copyrights. And here is a visualization of your rights, right? This is what you own, your privacy, your data, this is your browsing history. And if you are an artist, or if you are not an artist, it doesn't matter. If you make something, like a nice drawing, let's make something nice drawing here, then this is yours, right? And you put it in the box and say mine, right? You own it, your copyright, that's how it works. Now, for this simulation, I want to expand the context a little bit. This is not my house. This is going to be the company where you work for, the institution, big companies. They hire lots of people, so imagine I'm an employee, I'm working for the company, and I also find a box that is the corporate IP. Here's the copyright from the company. I can still make drawings, right? That's what we do as an artist, we work for companies. And then we say, yes, I made a drawing, but this goes to the corporate box. It's very sad, but that's how it works. In the business, otherwise the company cannot do business anyway, right? This is how things work. Good, so far so good. Inside of companies, you have another box. Here, this is what we call external IP. This is everything the company doesn't belong to. For example, magic trick, a rabbit, a raven rabbit. This is Ubisoft. Of, for example, I find here my good friend, he's a little girl with a frog owned by Disney. It's also not my stuff. Look what's there. See, here there's tools like Maya, or there is Random Man, Photoshop, what is it? So, what can I do with Photoshop? Of course, I make a drawing, something here. And this drawing is my drawing, because Photoshop is still here. And I can give this to the company. And the company can also decide to sell it to other companies. Because in this box is also the IP from your clients. And if you are a sensible business, you don't mix those things up, right? Because that keeps things clear and simple. So far, everybody get it? Because in recent days, another box popped up in businesses, the free software box. So, what's in it? Wow, also kinds of nice tools, right here. Look at that. Crease pencil. So, that's interesting. So, let's see what happens if I make a drawing with it, right? Oh, yeah, so this is super cool. Hey, my drawing. That crease pencil is here. Company can still put it in their IP or sell it to their clients if they wish. So far, so good. This is just three different boxes, three different types of copyright. And the very sensible people will separate these things and don't mix it up. But that's one big difference, right? So, imagine I'm a freelancer and I leave the company, I will work for another company en I'm going to say, hey, I'm going to take my work. Which one? Okay. Oh, maybe I can take my tools, right? That's because I'm not working. But here is this box. This is what? This is my box. So, that's what free software is about. And it's not so much about what's in the boxes. What this is about is what does the copyright holder in turn, the owners of things. The corporation wants to have a box because they want to do business. They want to do servicing. They want to work with clients. So they want to make products and sell it. So they have to make sure that what they own is clear. Here is your clients, right? If you want to make movies, computers or games, and you work with other companies, you make sure that what is here belongs to them. That's in their interest because they want to make money with it. They don't want you to do that. They will make the money. And this thing is public copyright. That's what the free software makes so powerful. It's public copyright. There's a large community of blender contributors that own parts of blender and they say this has to stay free. You can do within the company whatever you want. But what's in here, you can always take it with you and do whatever you like with it. That's the first key difference between the boxes. Now there's another thing and I'm going to make it more interesting because people of course want to mix, right? That's what you have copyrights for. You want to make all kinds of interesting combinations. So look to see what happens if I... If I... If I... If what happens if I take... I have to start digging a little bit here. Maya, right? And I want to have this in my own box. Right? Of course you can't, right? Because this is Autodesk property and you cannot say I want to do anything with Maya what I want. Similar goes for this wonderful piece of blender code I want to... I want to... This copyright is also protected because the blender foundation and the blender community wants to keep this free. You cannot lock it up, the important aspect. The other way around however that is possible. So you can say for example what I did before I have my drawings and I say I give it to the client box. Clients are usually fine with it most of them will say but you have to give us the copyrights. Right? Because we don't accept mixed copyrights now movies will make it way too complicated we want to have your things. So what if you as a business say I have a beautiful brush right? And I want to contribute that to blender. Right? Because it's great. The blender organization will say it is nice we would like to have this brush but we have to accept this to become Kino CPL licensed or compatible. The best thing is you don't have to give up on this. You simply do a little magic trick and you make a copy. And this goes to the orange box and you can keep this yourself and do whatever you want with it. So that's what is possible. Now, for this simulation to work mixing up copyrights has a different way. You cannot put it in the boxes but you can do it outside of the boxes. So you can say well I have in my studio another tool and I get this is RenderMan I get something for myself this is my software and I got a piece of blender that's not a piece of blender and I want to mix it up and call this my pipeline. That's what you can do. Supposed of course that you pay it for the licenses for other the mariage and stuff but with blender you can give it and mix it and do whatever in the company you want. You can even say well here I'm going to make my own version of blender and I'll give it to everyone in the business. That's another problem. One thing you have to be careful with that is if you take it out again you get license. Because what you need to do is separated but this is what you own this is what you don't own. But you can sell this product to your clients and say well just go to a GitHub or whatever blender.org and get the software you can put it back together and use it how you wish. In that sense the free software gives you also a lot of extra freedom which you cannot do with commercial access. Now let's go to a couple of more practical examples. Email Ja That's my email. Dear blender I've been making this amazing piece of code and I want to sell it as a plugin under my own terms. After all I wrote it. It's mine and I want to make a fur living with my hard work. Needful code from far, far away. Look here, this is my code. Or is it the blender code. That's the problem. How do you define the difference? First of all blender is a C code C++ C++ C++ Python scripts of blender are C code is just a development language that we make things with. That's why Python scripts are blender code. You can also say simply does it need blender to run then it becomes C is it independent like a fluid simulation library or something that you made that doesn't need blender to run then it's yours. But the add-on developers would like to sell things under their own terms. Well, it's not really 100% what they made. So what they have to do is the same thing again. Just separate it up and say well, dear client this is what you can buy from me and here is the free software component and just go to your own place put it back together with how you wish to use it. Next Bill So dear blender, we are a large studio working with other studios a lot. We provide access to our infrastructure and software via a remote connection like VPN. We wish to use a modified blender internally to integrate with pipeline. Our lawyers say that we cannot do that for blender because it would be considered distribution CTO of a streaming, giant incorporated studio in Hollywood. Good. Well, this is the same thing again that's what I demonstrated before. We have this mixed pipeline we put all kinds of things together here and that's what I learned especially in the last SIGGRAPH is that nearly every big studio if they are a member of the Motion Picture Association of America all the studios have to make sure that every computer where even one byte of the movie available is not allowed to be on the internet so there is no internet connection on any workstations or any computer that they are using because they don't want this to be contaminated with other IP and of course they don't want this to leak so everybody is working on movies it does not have internet on the computer and even more what they do nowadays is they make this mix and put it on servers and then they say you provide remote access right? so you got internet connection to the table and then you say okay I am going to use the stuff that is over there provided of course that you made a deal with Autodesk and all the others for Blender, that's not a problem because this is not considered distribution for the Knut-CPL so please streaming people go ahead use Blender last email so, as a pipeline TD I find it really hard to maintain our own version of Blender please the uniform plugin API so we can extend Blender easier from studio format max whatever we get this a lot, right? people think that Blender is difficult and if it would have a plugin API it would be amazing well, let me show you how that looks like first clean up my stuff and I'll show you the plugin version of Blender this is the plugin version of Blender so, that's it smaller leaner, but it doesn't fully work anymore and to make it work you have to plug in the stuff from yourself here and plug in stuff from all kinds of commercial vendors that also have cables hard to the cable in the right box what and this plugin is always difficult to do so here is the plugin version of Blender and for that this latest sentiment is what people call open source this is what corporations like to see and this is free software right? because the difference is that we, the Blender Foundation of the Blender community want to make this box complete everything that is here should allow you to make anything that you ever would dream of so this is your ultimate freedom because it's yours it's mine and it's ours right wow is it the first time I fully do this so I have five more minutes I still have some more slides and I will do that a little bit more on a up tempo because I want to show a couple of highlights of what we did in the last year that's always so cool we have an annual report you can download it on Blender.org it's important for our foundation to be transparent what's interesting to see especially is the money even though in 22 er was still the corona stuff and the industry was collapsing a little bit tech industry was firing people we kept a little bit on the same rate and we are doing actively very good and for that reason we have over 50 people on the contract line this includes development clients, part-timers people that get a little bit of money and it includes people in the Blender headquarters in Amsterdam we had we made a new projects website this is the site for developers to collaborate together we want to do this in the box the Blender concept is that we want to have our own infrastructure not always the best solution but it does keep us free and independent so go to theprojects.blender.org website if you want to be active as a developer we made 3 releases and this is the fantastic software only what we can count we only count people who don't have art we don't have art advertisement we don't even count this we had 20, 30 million people downloading Blender and you can also see the steam and the windows store coming up a little bit we made a film, pet project watch it online there was a talk from the conference about it I'm very happy also about the documentary series the Blender Heights, we already have 3 episodes where you can see the people behind the project how they live, what they do how it works Episode 4 is coming very soon I think next week or the week after that it will be online currently we walk on so many awesome topics this will be also part of the conference I'm not going to bore you with all of it Blender 4 is coming next week really good and project that we keep doing of course that every technology project we keep going on, we want to make much more fun with simulation real time for you ports want we have to become real time controlled by nodes of course and I'm very happy with the progress of the animation 25 project they still have one full year and then it's 25 we can still use animation developers but the team is already making a great progress and I'm sure there is a talk also at the conference where you can get updates on it the Blender Studio the headquarters are updating the whole pipeline section because for us pipeline means free open source software and if you as a studio want to use Blender or other open source we make sure that you with open source software can be fully productive for everything including project management and the whole administration behind that we are working on a new film I think there will be also some snippets visible in this conference this is going to be completely different abstract and artistic very nice Beacon LA so unfortunately this event has been sold out already for like six weeks before and it's horrible I hate it we disappoint so many people we had so many people begging for last minute tickets we had to say so many times no so I hope that now everybody go to the LA event that next year it will be a bit more quiet now we already did make a reservation for this venue for next year but I hope the LA conference will take away a little of the stress here another thing that I want to announce is that we are making December the donation companion month because I remember this slide there is this little thing there it's quite we've got lots of donations from the community but we don't really push this a lot like Wikipedia's doing with flashlights everywhere to remind people to donate and even though this is a lot of money this is like 4% of what people spent on the blender market and that's a little bit something we could do better and I also want this to be solved in a way to keep us independent because it's not good that 70-75% of the income is coming from the corporations and the community should be at the same level so that we are going to try that in December good, yes last year I announced the blender lap initiative to secure the future of blender like what is going to happen in the 30's how are we going to deal with all this stuff with metavers some AI's what is going to happen with computing and creation in the coming decade and if blender wants to stay relevant we have to be ready for that and you can't wait with that because we keep making new versions of blender day to day work keeps going and if we keep doing that in 5 years we might lose it and become obsolete so I would like to have funding looking forward to get a small team of people who are fully independent of rethinking blender rethinking open source creation and make something that can take like 5 years I don't care but that's something that we have a future with blender still so thanks for listening I wish you all a great conference and special thanks to the sponsors


My name is Red Dauze and I'm a fashion designer and I'm working with a method called upcycling. Upcycling is about bringing leftovers back to the production through design. It means that we're working with quite big factories, helping them to organize the waste. It means that we always go in, we do the waste analysis to understand the characteristics of the material and then we help them to produce from their own leftovers. And mostly we are working with industrial upcycling. To take upcycling into industrial level for that we have developed the upmade business model. The upmade business model brings brands and manufacturers together and we have been implementing it quite successfully in Asia and Europe also. When we're talking about Asia then I have to mention India and Bangladesh and we have been testing it with the bigger manufacturers and also with the smaller ones. As I said upmade brings together brands and manufacturers and it means trust and transparency for both of them and upmade business model gives very good overview what happens what's happening in the production and also for brand the knowledge about the leftovers. So in the end it's going to be win-win situation that the brand can produce more items from the fabric they have paid and manufacturers can sell more working hours and can get rid of the leftovers what they have.


All right, welcome back to operating systems in this boiling room. Why is it like this in October? I have no idea So everyone's favorite topic is about to come up virtual memory so Before we start that oops Let's ask a question How should we implement it? so all we have to do for virtual memory is Find out a way to map Virtual addresses, which should be independent per process to a physical address Actually residing in memory So I will take a little detour just in case you've discord open if not we can discuss it and That question is simple. What are your ideas for how to map this? So I will paste that so Any bright ideas for how to map actually physically implement the mapping from virtual Virtual address to a physical address. Yeah, so find some chunks of memory give it So, yeah, that could work for actually finding physical memory But what about actually doing the translation from virtual to physical like how would you implement that? Yeah so if it requested a big chunk size just kind of Calculate it figure out it's offset and just like Map it one-to-one somehow so you could give each process just a chunk like a fixed-size chunk and that's it Could do that any other ideas What about?  We want to look up something about a hash map or something like that Does that sound sane at all? Yeah, how's the hash map different than chunk and what? Oh, how is it better? So it's a bit more flexible right? We could just map it to any arbitrary. We don't need everything all in a row That could be one. Yeah Yeah, you might have to access memory all the place and Remember memory is byte addressable, right? So every address represents a byte So if it was a hash map or something like that addresses are like 64 bits or 8 bytes So my hash map would like need to be keyed by a virtual address So that's 8 bytes and its value would be like a physical address. That's 8 bytes So that's probably a bad idea because for every byte I need 16 bytes to keep track of the mapping even if the rest of it was free, which is not Probably not a good idea got another one divide up memory into small chunks and work work it with their hash map so Hash maps you should have implemented one hash maps are basically just fancy arrays that just do the indexing for you So it essentially just fakes a large index makes it into a smaller one But hash maps are essentially arrays. So if you can just get away with arrays, that's also probably faster So let's go with the first idea. I like the first idea of like having just blocks that represent stuff And then you could just calculate it, right? So in fact You have described Oops, you've described a technique we'll use but first we'll keep this checklist in mind. So Remember with virtual memory needs to be independent for each process So multiple processes have to be able to exist at the same time They shouldn't be aware that they are actually physically sharing memory They shouldn't be able to access each other's data unless they're explicitly allowed Which we'll see how to do that later So type of the commute type of way to communicate between processes but by default everything should be independent for each process Because you wouldn't want another process to read your passwords your private key or whatever We also want good performance So close to using physical memory and to limit the amount of fragmentation Which is just a fancy word for wasted memory. So My hash table idea would obviously fail at number at the last point and it would probably Performance would probably also be fairly terrible So here's just so we remember memory byte addressable So the smallest unit every address represents a single byte You can read or write one byte at a time minimum. You can't just access individual bits. You just get one byte at a time So you can think of like an address as just an index into a byte array So each address Uniquely identifies a single byte memories basically just one big array of bytes if you want to think it that way with the address being the index So your idea was essentially Segmentation and they're fairly coarse-grained. So you could have a virtual address space for like code data stack and heap and It kind of corresponds to an elf file or what your executable file looks like So it's large sections of memory with different purposes and different permissions. So like your code That's something you would execute and read probably not right Data you might just only read it your stack. You would read and write same with your heap So each segment can be a variable size dynamically resized And this is a good idea and it was used back in the day in the 70s But it's no longer used primary reason for that is those segments are really costly to Reallocate because they have to correspond with a big block of contiguous memory So if you want something to grow and it can't quite fit Well, you might have to move all that memory somewhere else copy it to make sure it is in one straight contiguous line and Another thing is it might lead to a bunch of fragmentation because we have variable size things Some allocations just might not fit. We might actually waste a bunch of memory and This was used in the 70s and not used in modern operating systems So how it worked. Oh, sorry. Was there a question? Yeah, of course grained is like I can't really share anything That's not part of a segment So like I can't if I wanted to share code between two processes and like fake a mapping or something like that I couldn't do it in this case because I can only map one big block at a time, right? So I might be able to do it with like two processes, but past that I can't do anything And I just have a segment for each individual thing. So it like kind of works But we'll see as we go on and understand what actually happens. We'll see some more disadvantages to it but It works it will get a bit messy once we get into once you add features on top of it, but At its core each segment. It's a pretty good way first estimation of it So each segment would contain a base physical address So where that segment actually starts in physical memory a limit basically the size of the segment and then permissions read write execute something like that and then You get a physical address by using this as your virtual address So it splits it up into two parts you first ask for a segment which is called a segment selector Basically just a number that says what the segment should be and then an offset So how many bytes from the beginning of that? Segment is the information. I actually want so offset will always just be the number of bytes from the beginning So the MMU or the memory management unit, which we'll get into later Whatever it checks if the if the translation is valid It's going to check if the offset is within the limit of the segment You're currently in and then if it's within the limit it'll check permissions then after that to do the actual translation to get the To get the physical address.  We went through that whole library thing where you're never allowed to change anything So that's why it's called a segmentation fault even though once we go through this will figure out that hey They don't use segments anymore So if they did use segments your virtual address would look like this So this means select segment one and I want to do offset ff Which is like 255 bytes into it and then as part of your description of the segment which your kernel would manage it would say hey segment one Starts at physical address 2000 and hex its limit is 1 ff or size and then when it did this translation it would see that oh Ff is less than 1 ff So this is within bounds assume that it has the correct permissions So to calculate the physical address it would just do 2000 and hex plus ff to give you to zero ff. That's your physical address So what links does to get around it because you're like old x86 hardware still has support for this because they cannot take it out They set the base to every segment to zero and then limit to the maximum amount of memory you have on your machine So essentially it turns Segmentation into a no op where it just doesn't translate anything. So the address is just the offset So we also like the other idea. So we're kind of on the right track of dividing memory Into chunks so the easiest thing to do in terms of allocating things is to divide memory into fixed size chunks So everything is the exact same size and it makes allocation a lot easier. So that way We just pick a virtual block with whatever size it is. So these numbers represent offset So like zero bytes into the page one byte in the page two bytes into the or sorry into the block three bytes into the block and Then if we need to translate we just translate the blocks So you wouldn't need to translate where you are within a block You just need to do the translation for a block So our only question now is like how big should this block be so that will be an engineering trade-off and Someone made it found a good trade-off in like the 80s so the MMU or the memory management unit that is the actual hardware on your CPU that is map doing the Translation of a virtual address to a physical address and also does all those permission checks. I was talking about So this dividing up memory into fixed size blocks. Well, we call them something special in operating systems We call them pages. So a page is just a fixed size block Pages are typically 4096 bytes which is that magic number I was using in some of my code examples So the reason I was using that number is because that is how the operating system deals with memory It deals with it in those fixed size blocks, and they are of 4096 bytes So there's going to be some terms as we go through this so a page in virtual memory Generally, you just refer to that as a page or virtual page and then if you Have a page in physical memory Sometimes people call that a frame Sometimes they'll call that a physical page Sometimes they will just call that a page if they if it's obvious that you mean physical memory So another thing we have we all have CPUs that have 64-bit addresses Typically, you don't have that much RAM on your machine, and you wouldn't need to use all 64 bits so CPUs as we will figure out have different number of Like different sizes of virtual address spaces that they support But the implementation details are the same It's just a trade-off with some of the data structures and how slow some things are which we will see So in general right now to this day if you have a 64-bit machine You have a 39-bit virtual address space So that means within a process you can only use at most assuming the kernel doesn't do anything Limited by hardware you can address at most 39 bits of memory So that means you could address up to two to the 39 bytes of memory which would be 512 gigabytes of memory So that is the maximum memory your process can actually use the machine could actually support more memory so This is something called SV 39 in risk five Every system will call it something different and How it's implemented is it there is a page table and is basically a giant array so the page table will be indexed by the virtual page number and All the entries in that page table are essentially going to be physical page numbers so we just do a quick look up in a table and then Substitute the virtual page number for the physical page number keep the offset the same and now we have a virtual or a physical address So in a diagram, this is what it looks like. So our virtual address if it is 39 bits Well, then our offset or where we are within a page depends on how big our page is so if we have a page size of 4096 bytes Well, we need 12 bits to be able to address every single byte within a page So why is it 12 bits? Anyone want to tell me why it's 12 bits? So the offset is like Which byte in the page you are? Yeah, so To the 12 is that page size. So this page size of 4,000 4,096 why is it so hot in here? I wish the AC was not broken So if we want to address Any single byte within a page we have to be able to address 4096 bytes So we would need 12 bits to do that because to the power of 12 is 4096 so that's where that comes from in our offset So the size of the offset is determined by the size of the page so if we have a 39-bit virtual address and we know 12 bits have to be used for saying what byte are we accessing within a page? That means we would have 27 bits left over because 39 minus 12 is 27 so that 27 Bits would be used for our virtual page number, which is basically just an index into this page table So this page table would need two to the 26 entries Because we need to look up a maximum of two to the 26 Virtual page numbers, which would be the indexes and then this page table Essentially would just be a giant array of physical page numbers So if we were to translate the virtual address We would get the index from these 27 bits use it as an index into this page table Which has the physical page number and then we would just substitute that in for our physical address and That would be our physical address We don't we keep the offset the same where you are within a page Because it's going to be the same we want to make this as fast as possible So they would all be aligned so there's also a nice reason why this is 12 bits Because typically we write numbers in hex So can anyone tell me how many bits a single hex digit can represent? for right so the nice thing about this number is well if Each hex digit is four bits and an offset is 12 bits How many hex digits would represent an offset? three right so 12 divided by 4 3 so Three hex digits represent an offset. I don't have to translate them makes it really really fast I don't have to do any math So The entries in that page table like I said The most important thing is this physical page number, which in this case is 64 bits But this is the entire what the Page table entry looks like in its entirety so Because it doesn't have to translate the offset The important part for translation is this physical page number So some of the other information in this is used for permissions for the entry so the most important ones for us is this Valid bit so if it's one it means the page table entry is valid and I can use it for translation The other ones that are important for this course are is this memory readable and then is this memory writable? That's it for this course There's other ones you could imagine which would be useful is this memory executable The user just means should this only be valid in user mode Global means is this mapping the same for every single process then there's like access bits and then dirty which Get your mind out of the gutter that just means that There was a right to the page and it's been modified. It doesn't mean what you probably think it means Then there's like two bits that are reserved for supervisor use or the kernel use Which you will find useful when you do this yourself in lab three and then they reserve some 10 bits Just for future use they could extend the physical page number if they really wanted to but for now That's like they have 56 bits for physical addresses So that's enough for this foreseeable future, but if they wanted to they could expand it if they wanted to so The kernel is what keeps track of all the page tables And if we have a simplified version of our page table where we'll just list like the virtual page number Which is the index and then which physical page number that maps to? This would mean that virtual page number zero maps to physical page number one Virtual page number one maps to physical page number four So on and so forth so if we have to do the translations where on the left is a virtual address And we want to find the physical address Well to do that translation First you find the offset the offset is three hex characters So we take AB zero and just write them for the physical address. We don't have to translate them So the last three hex digits are going to be the same So they would be the same in the physical and the virtual address So that means if it is not the part of the offset It means that this is the virtual page number. So all you have to do is look up virtual page number One or sorry zero in this table figure out that it corresponds to Physical page number one and then you just do the substitution. So our physical address would be one AB zero Not too bad. Hey Same thing for this address. So you don't have to translate the last three hex digits. So it's f a zero same thing in The physical address and then to translate this virtual page number. It is virtual page number one We'd look it up in the table get physical page four Just substitute it and this would be our physical address for f a zero. Yep sorry Yeah, so All your processes they only use virtual addresses. So every address you see is a virtual address it you will only ever see physical addresses if you are the kernel and Most kernels actually use virtual memory as well Yep, sorry Yeah, so the MMU is like the actual hardware that does the translation and the kernel manages all the page tables that the MMU uses So like The the kernel would be responsible for these tables and then the MMU would be the hardware that uses the page tables to do This for you. So it automatically does all these using the page tables So the MMU is like the physical hardware. So if the MMU Would just so this would be part of the definition of the MMU It would define a page table entry and how you're supposed to use them So yeah, you would just have to follow whatever that CPU says So it would have to be formatted exactly like this And we have a one The page table entry translates the virtual to physical But how come in the PT example doesn't have a virtual page number So the virtual page number is essentially just an index into this page table So it doesn't exist in the page table entry. It is how you find the page table entry So this virtual page number is an index. I use it to get the index into my page table It gives me the page table entry and the important part of the page table entry is this physical page number Which is why we did these translations So any questions about these translations the last one makes sense So there's any questions about those translations asked now because it's So remember how processes started off okay, and they got real weird real fast This will get weird fast All right, same same page. We're all good All right, then let's try a question to see if we remember this So I can describe any system and you should be able to figure out how to do some Translation so in this system, let's assume I have an 8-bit virtual address and a 10-bit physical address and then each Page is 64 bytes. So we have to Essentially do what we did before except the numbers are a bit weird now So you will probably get asked questions like hey, how many virtual pages are there? How many physical pages are there? How many entries would there have to be in this page table and then given a page table actually do the translation? So I will give you a second or a minute to think about this and then we'll go through it So think about how you would get each of these answers and what this system would look like alright Do you have any ideas how to start yet? Yeah, all right everyone agree with that everyone heard that So first part of this is given the page size the page size influences how many offsets I Offset bits I need to say where in the page. Am I so if I have a 64 byte page and memory is byte addressable that means I need to Be able to access up to 64 different locations within the page So I have to essentially figure out two to the what Equals 64 and that X is how many number of bits.  I'm a bit slow I can only multiply by two like two or three times, but if you remember two numbers, that's all you need so if you remember that to the five to the five is 32 just remember that and then that to the 10 is 1024 If you know those two numbers you can figure out the rest by just multiplying by two a few times every time you multiply by two The exponent just goes up by one So if I know to the five is 32 then to the six has to be 64. I Whoops, I Don't have to do any complicated math The the only level of math I can do is multiply by two a few times and add that's about all I can do But for this course, that's like all the math you need to do things need to be real fast. So That's also why you know, you can bring your calculator to exam But if you're using your calculator, you're going to be like five minutes slower than everyone else That's doing something like this so in This case for my virtual address well We figured out how many bits we need for our offset That was whoops six bits So how many bits do I have for my virtual page number? To I hope right? Like I said, I can only do a bit of math at a time subtraction One thing I can do so eight minus six. That means two Why is it eight because it comes from the size of the virtual address? so If that's the case, how many virtual pages do we have? four right right because The number we have Corresponds to how many number virtual pages we can actually index so we have two bits so we could actually Index two to the power of two pages. So to the power of two It's only multiplying by two once or yeah two times two. I can do that. So that's four any questions about that All right, then what's the next one how many physical pages can I support in this system? But yeah, and what's two the four? 16 right so Same thing for the physical address. It looks like this and The offset is going to be the same which is six bits So what's left over for the physical page number? Well ten minus six I can do that too that is four bits So the number of physical pages we can address is Two to the four which is just two the five divided by two So that's 16 All right next question then how many entries would there be in the page table for right? So This is a trick question kind of there's just one entry in the page table for every single Virtual page number. It's just an index. It's just how you look up How you know what to access in the array? So it will always be the same as the number of virtual pages in this kind of a system and Also, there's a hint that it gave you a page table. It had four things in it So you could probably figure it out from that so This page table is a short form of a page table where for this I just it's a page table full of Physical page numbers and it's written like an array. So each of these is a physical page number and Then the index of each one of them. So it'd be like zero one two three Well, that's the virtual page number That is how we look it up in the array and know which element we actually need to use for a translation So then the question said well Oops, if you have fit virtual address F1 What does that translate to? What physical address does that translate to using this page table? So This is where it gets a bit more of a pain because our offset that we don't have to translate is six bits Not a multiple of a hex digit. So I can't just kind of chop it off This gets annoying. So this is why you were drilled on like binary and hex and all that stuff to prepare you for this I guess so the easiest thing to do believe it or not is to just write this number out in in binary so Let's see if we remember stuff. So what is f in binary? Yeah Yeah, f is one one one one well about one So it's hex. So there has to be four bits. So if it's one, hopefully it's just zero zero zero one right So another little trick for remembering how to translate from hex to To binary You only really have to remember one really important one and then from that you can figure it out So just remember that a is one zero one zero What's a good way to remember that? Well a is supposed to represent a Decimal ten so just write ten out twice a is ten two times and then pass that you just have to add a bit So like B would just be adding a bit in the least significant spot So B would be one zero one one Just write this down. You can you can work out the rest from knowing this one so if this is our virtual address in binary and We don't have to translate the offset part. Which numbers do I? Which numbers are part of the offset that I don't have to translate so like hey don't have to translate these six No other way, right? So the offset is at the least significant bits So this represents my offset. So when I translate that to a physical address Means I don't have to touch them. So it would be one one zero zero zero one So that is the offset part of my physical address. So that would mean that this is my Virtual page number. So what is one one in? Normal decimal Three right one one is this three. So I would go to my page table Look up what I need to translate this virtual page number two. So it is eight, right? So instead of the virtual page number, I just write the physical page number as indicated by this page table So what is eight in binary? one zero zero zero right three zeros so We just write out eight one zero zero and now if we want to translate this back to Back to hex we just start grouping in groups of four from the back So that's one group. That's another group So the physical address we end up with would be what is This in hex One what is this in hex? Three what is this in hex? Two so given this page table if a process tried to access virtual address F1 it means it would be translated to physical address two three one Everyone see how we got that? Fueler fueler. We're good. All right. So this Okay, usually people are already lost by now. So this is good. We're much better than previous years So some other fun things so each process like I said before gets its own page table So what happens when you fork it will copy the page table from the parent So part of being exact clone of each other that means it will copy the page table and all their virtual memory will be the same so what the kernel actually does as a trick to make fork really really fast the page it copies the page table and Both processes have the same translation if the same virtual address points to the exact same physical memory and If you only read information in both processes you can actually share it and it's really really fast So you don't have to allocate double the amount of memory They both just share it and then one of the things the kernel does is turn off the right bit To that memory so it can tell if one of the processes tries to modify memory Then if one does the kernel will then create a copy of that page and then separate them out so it changes the mapping in both processes and that is that That optimization is called copy on right and you get to do that for lab three So that will be fun so There's also a big problem here So we might have noticed that Hey, this page table has two to the 23 entries If you put that in your calculator, that's a lot of entries So there are two of the 23 entries and each entry is This big which is 64 bits or eight bytes so eight bytes is like two to the three bytes, so that means this page table is Two to the 27 times two to the three. So that's to the 30 Bites this page table is to the 30 bytes Which is one gigabyte and like real gigabyte which sounds really bad, right? Yeah, that poses a problem. So you can also see why This index the virtual address is small because it essentially corresponds to the size of this page table So if we just made a 40-bit virtual address and just bump this up to 28 bits Well, suddenly your page table just gets twice as big So now it would be two gigs if we did something like this So you can see why we would restrict the size or the amount of number of bits we use for the virtual address because Corresponds to the size of the page table With wall just this physical page number corresponds to the size of the entry which It's just always going to be eight bytes in general so We have that issue Yeah, so we have that big issue that we will tackle later You also might be thinking this seems like a lot of work so like in the sub process lecture and also in your crate you do like a or in your lab to Minus a few things You basically always do a fork fall by an exec so Assume we're still in a world with a gig page table Well, we wouldn't need to copy a huge page table if we exact directly afterwards we are executing a new Program and it would reset the page table that process would you know It would reset the page table for that process for the mappings for that program so it's a bit of a waste to copy the page table in that case and There is a special system call that will actually not copy the page tables so there's a system called called v fork and that makes the page tables the same in both processes Which also means that if you modify memory in one process the other process can immediately see it So they only have the system call with the intent that you immediately call exec and then if you try and modify anything In either process while they're both active that's undefined behavior and the kernels allowed to do whatever it wants So this is only for like very performant sensitive application. So you get some control over what fork does so What we saw today we use pages for memory translation divide memory into fixed size blocks Typically of that 4096 page. Oh wait also before a little aside So you might have noticed I wrote GI be and not gigabyte so That is very intentional. So in Computing generally we like powers of two so two to the power of ten It's generally like a kilobyte, and I'm gonna write an I here To the power of 20 is like a megabyte and to the power 30 is a gigabyte looks like a bit weird I'm writing that little case I because a Gigabyte is actually not well-defined neither is a kilobyte neither is a megabyte. So for some people They believe in powers of ten. So some people will call a kilobyte Ten to the power of three which is a thousand and that is also a valid definition of kilobyte So whenever you sit see kilobyte It could mean ten to the power of three or it could mean two to the power of ten And you might notice that to the power ten is slightly bigger. That's that one thousand twenty four So it would go up like this So this is also why if you have bought like a 500 gig hard drive and tried to use it and it says it is only 400 and something gigs because This number is what they sell you that is the marketing number if you look at the fine print on the hard drives you buy they'll say one gigabyte equals one billion bytes While your computer thinks a gigabyte is this So it reports that that number is way bigger than what they sell you So it's going to report a much lower size than what you actually bought So that's the differentiation this little I in that it always means powers of two And if you just see gigabyte you have no idea whether it's powers of ten or powers of two so That is your fun aside for the day Yeah, so the kernel is the only thing that keeps track of the page table So the curl is the only thing that's managing it. So it would know so like for example You could have you know process a process B and Say this is their same virtual page for whatever reason well the kernel could map both of those to the same physical memory and If they both read it say like it just says x equals one or something like that They could both read it if at the time of the fork x was one. They're both happy, right? so the only thing that happens is whenever one of the processes Modifies x. Let's say process B modifies x then the kernel is going to grab a new physical page and Do the update to x there and then change this mapping in process B So now process B will point to this physical page, which is different than the one for process a so and This don't worry about this will get into this in the next lectures too, but this is generally how it works So whoops? So today we use pages for memory translation divide memory into fixed size blocks only have to translate once per block Don't have to translate the offset pretty fast Because page tables are basically just an array The array is indexed by the virtual page number and it's a ray of page table entries the only thing we care about really that's in a page table entry is the physical page number and three flags valid read write and We have a new problem on our hands we get to solve in the next lecture that this page table is huge and Our program is probably not going to use 512 gigabytes. So we should probably do something about it So that is where I will leave you off for the next lecture. So just remember pulling for you


Hello, this is Bob Cook here from Manchester Institute of Psychotherapy, this is a presentation for psychotherapists on how to work with the vulnerable self within the therapeutic process. Okay, so let's look at defence mechanisms that clients will put up in terms of keeping away from the relational contact of the vulnerable self. So there are psychoanalytical defences which were first talked about from Freud onwards. I've put a few down, denial, projection, regression, dissociation, compartmentalisation and splitting. So denial is the first probably primal defence mechanisms that all of us use. So denial is the refusal to accept reality, acting as if a painful event, thought or feeling did not exist. Next one, projection is the misattribution of persons and self thoughts, feelings or impulses onto another person who does not have those thoughts, feelings or impulses. Projection is used especially when the thoughts are considered unacceptable for the person to express or they feel ill at ease with having them. So projections are important ones to confront to actually get hold of to sort out whose projections they are and of course projections are used as a protective mechanism for the distortion of reality to confirm the person's script. Dissociation is a move away from the self, all forms of dissociation there. A person who dissociates often loses track of time or themselves and their usual thought processes and memories. People will dissociate often in the face of trauma and extreme stress. Compartmentalisation is a form of dissociation and again the person will compartmentalise in the face of stress and trauma. It is a lesser form of dissociation. Splitting where the different parts of the self split or fragments through the mechanism of dissociation. Again, splitting is used creatively as a defence mechanism. So they are defended against the will self and sometimes the splitting is called the move to the adapted self. Either way the therapist's job is to help the person integrate the different parts of the person. Okay let's look at regression. So regression is going back to an earlier developmental stage in the face of unacceptable thoughts or impulses. So in the face of trauma and face of stress or unacceptable thoughts or impulses they will regress to a younger age often to protect the self and a move away from reality. Okay and the defence mechanisms are TA mechanisms, we can look at them. First analysis defence mechanisms. Eric Byrne and the Gouldings came up with the decisions that the young child may make.  These are called injunctions and TA terms and they're injunction to the script and it's defending against the person being hurt. It's defending against the real disturbance and the therapist needs to get to these injunctions to work with the don't exist, the don't think, don't be a child, the don't grow up and find out where those decisions came from, how the person made those decisions. Of course they will be made at a time of stress and they stop the person achieving the nectar of today. Other TA defences which are defence against the injunctions of course. Try hard, be perfect, please others, hurry up, be strong. Point again for the therapist to look at what those behavioural defences are, to work with those defences to get to the injunctions so they can get to the early script decisions. Other TA defences, as I said the core script decisions we must get to, the rackets and of course the games, all defending against the vulnerable self. Okay, how do we reach the vulnerable self then? That's the important thing, now we've talked about all this and the defence mechanisms. Firstly, we must respect their defences, honour their defences. We must work with integrity, a sense of genuineness, an expression of compassion and of course love. So the person will feel met within the relational contact. Three methods I really enjoy or like in the search for connection with the clients, comes from Richard Erskine's integrative set of methodology. That's the use of inquiry, asking questions, being curious, but in an open way and not in a closed way. To be attuned to the client in a developmental and within Nick view, to actually get alongside the skin of the client and to be truly in tuned with them. The client involves himself, they don't stay passive. That will show interest and validation to the client in the search for connection. These are the methods I really like when we're working with the client to get some sort of connection with the relational self. And of course, we must use the transference, especially the idealising transference, a cohort who was a psychoanalyst and a self-psychologist, talked about how we can use the desire of the client to be better, the desire of the client that someone will be dependable, have a sense of continuity, be able to help them through their distress. As through this idealising, idealising transference, looking for the ideal person to really help them in connection, to feel safe and secure. Of course, we know eventually they need to move away from the idealising transference to be able to tolerate negative transference and to be able to tolerate negation and to get at home status and central integration. OK, a quick slide on the relational needs. The vulnerable self will need. They definitely need to feel sense of security and self-definition, to feel loved. They need to be expressed love. They need acceptance by the dependable other, i.e. the therapist in this case. And they need to make an impact and not be ignored or not heard. So when these needs aren't met, the person will feel vulnerable. Their relational needs are not being met. And they'll defend. We talked about some of the defence mechanisms earlier in the actual presentation. So as we start to prepare the fertile ground, i.e. the need for security, self-definition, etc., then we'll be able gently to work with them through their defence systems to give support and to help repair some of the relational needs that weren't met back in their origins and early history. So these relational needs are very important to recognise when we're working with the vulnerable self. OK, hope that was useful for you. Bye bye.