Hi, I'm Sandy Olnok artist and paper crafter here on YouTube and today we're gonna be painting with dot charts I was excited to hear that hero arts and Daniel Smith were partnering for one of the monthly hero arts kits And this is what the kit contains and I didn't get the dies with my set But I'll show you the rest of what I've got and this is available for April 2016 only so get them while they're available As soon as they're out they're out But in the kit you get a bunch of different wonderful things You get a stamp set of course because hero arts makes rock and stamps a flower a bunch of buds There's some leaves and greens and then three really nice sentiments a thinking of you a thank you and a just a really nice Wishing you the most beautiful day, which is perfect for flowers, right? And I've got two packs of pearls little jammies Then they give you a bunch of card bases I'm not going to use these because my painting ended up coming out more on the peachy orange side Rather than the purple side, so I used one of their sunshine card bases But I'll talk about the paper in a moment I want to talk for a moment about the watercolor palette and the brush This is a water brush if you haven't used one before you just put water in it This is one where you just stick it under the sink so let me go fill that sucker up and be right back and Look how fast I am I ran all the way to the bathroom and fill that up And you break break up the surface of the brush often they have a little bit of something on them So just bend it a little bit and then squeeze the brush and water comes out Now generally I like a regular brush because I get more control over it But I'm going to use the water brush just because I can and all you do with these dots They are dots of paint you pick up the the color with the brush and paint it on your paper I just got a little piece of scratch paper to show you how and then I wipe it off on my hand or on a paper towel or whatever So that you aren't contaminating from one dot into the next dot because you don't have much paint here And it would be easy to contaminate them if you're not careful now I've taken my tube paints and done a large swatch chart because I want you to be able to see it I would recommend doing a small one like those little little dots that I did Rather than a giant chart because you'll use up all your paint using the giant giant chart Here is the paper that's included in the kit. This is letterpress paper. It's not watercolor paper It's like a heavy heavy cardstock I've used it for watercoloring before and Before I knew a whole lot about watercolor paper and it worked fine. So I'm going to go ahead and use it today The letterpress paper just has an interesting surface to it It doesn't pill too bad these long as you don't scrub at it So I'm going to show you how to do that. So you're not like working up the surface too heavily I'm using my misty To do my stamping and one of the reasons I like the misty is because I'm a terrible stamper I intend to get things uneven and when I use the misty I can re-stamp So you put your your image or your stamp down in place And you can see there's just an area on the right that I didn't quite get so I can re-stamp it real easily done and Then I can move it around I can change the location of the stamp and the paper and everything and stamp another flower and Then stamp all of my my little pieces in there and the the misty just makes my life easier This is the regular sized one. I do have a video coming soon with the mini so you'll be able to see the two in comparison So this is the palette that I've made that that I made larger And I want to use yellows underneath and then some of the pinks on top and looking at these two yellows There's the cadmium yellow deep hue and the quinacridone gold and I'm looking at these two little circles The quinacridone gold has an empty circle and the cadmium yellow has a half a circle, which means it's partially opaque So I was originally going to try to do the pink first and then Do the yellow on top but since I want to use the brighter yellow. I decided to do that first That's one of the reasons why the Daniel Smith paints are pretty fabulous because you get these Numbers with them and you know how transparent or opaque it is I could have ended up painting the pink first and been really surprised When it covered up part of that pinky color now when they say opaque or partially opaque or semi transparent semi opaque They don't mean like acrylics. It's a watercolor type of of opacity It just means you're not going to get as much color showing through below But when I do the pink on top I'm gonna get plenty of that yellow underneath And you know me and yellow I like to have yellow on everything so I'm just throwing the the yellow paint across this I I'm squeezing the brush and water comes out and I get plenty of water in there and then just kind of Moving the color around I'm using puddles of paint that maybe got too thick in one area and Pulling it around to fill in the rest of the flower This is really easy if you want to leave your flower just like this Totally fine. You don't even have to do the second layer that I'm gonna be doing with the shading on it But I'll show it to you Because it's really pretty The paint is still wet here. So I am going to go wet in wet with my Connectome paint and I just have paint on the tip of the brush Just on the very very tip where I touched it to that little dot Which means it's gonna put color out on the tip and I'm gonna get that Somewhat hard edge the paint is not soppy way if your paint is puddley Then you'll end up with it bleeding all over the place, but this is just kind of damp and Then I'm letting the the brush which is putting out water Have that soft edge in the side that's toward my hand so that you get the hard edge on one side and the soft edge on the other And I'm gonna do that underneath each one of the places where the petals curl You can see in the drawing there's these little curls on on the ends of a bunch of them And then on others. I'm just trying to knock back the petal that's behind by putting a little color into it I'm letting the watercolor vary in how heavy it gets so sometimes it's really heavy sometimes less and Watercolor will soften over time as it dries So I'll be going back in at the end to add some really strong contrast in a few spots But for now just trying to get the really soft watercoloury shapes of each one of those petals kind of established so that I At least have a base down there for these I'm not going to show you both of these flowers because they are the identical flower But we're just going to look at it on this one So we can get an idea of how to paint a flower Now if you're using other watercolors to do this kind of a flower You may need to look at the opacity and you may need to test it out for yourself because most companies don't even tell you what those Opacity ratings are So I'll just put that out there for you because if you end up painting this pink on top And you wanted it to be this kind of a soft see-through pink. You may not have that with all of your other paints and While I'm also chit chatting while you're watching me paint The paints each one of these tubes is available as add-ons in with the kit this month at Hero Arts and Add-ons meaning, you know, they're gonna cost you more than the kit. The kit is I think 29.99 I'll put it on the screen if I find out that's different. I'm pretty sure it's 29.99 the paints vary by Which painted is so each one will cost a different amount because it depends on how much the pigment costs and all that sort of thing But you can check all that out on the Hero Arts site There's also another stamp set and you know more more stuff that you can get as add-ons that will go with a great Spring kit so some Mother's Day type stuff if you're interested in that as well But you can get quite a bit of painting done just from these dot sheets And it's a great way to try out different colors You can also get dot sheets of the entire Daniel Smith collection and just buy the dot sheet itself I've links for you on my blog and down below in the description for that as well If you just want to try out colors and see what colors you want what what you might like That's a clean off the brush in between colors Just scribble it onto a piece of scratch paper. You can see the discoloration on the end of my brush is not making any difference I'm still getting clear water. So don't worry if your brush gets a little bit on the funky side Now I had a little issue here I'm speeding this up just because this is going to take a little while if we if we keep going at that regular speed But when I started doing the leaves I was just happily painting along and everything was all great and I was you know thinking about Okay, which colors am I going to put in with this and then the phone rang and Usually I'll just stop the video and start answering the phone and seeing what's going on Well, it was an 800 number and it was my bank lady and she was calling about my refi And she was reading disclaimers You know like all that legal mumbo jumbo that they have to do bless her heart and I had to sit and listen to that I thought I really don't have time to pause the video So I'm just gonna paint while she talks because all I had to do was listen and say yes So I was really not thinking about what I was doing and I painted these really awkward looking stems on these two buds in The middle and I was like that looks really weird And I'm like well, maybe I can add a little bit of you know little leave type things to them And I'm mindlessly just starting to put leaves in the background now I'm like well, I could throw some leaves back there Maybe that will hide the fact that I messed up on the stems and they just have an awkward curve to them and then I thought well, maybe I need more leaves then because You know, I started putting some leaves in you can't have just some then not more And you know, I the whole time I'm thinking this is a wasted piece of paper now I've wrecked it. I'm gonna consider it practice as soon as the phone calls over I'm just gonna go ahead and restart and stamp all over again and start the piece over But since I had the paint out and she was still talking Don't tell her nobody tell her if any of you works for Bank of America Don't tell her that I was painting while she was talking because she was being very sweet I just kept painting it that well, let me just put more leaves and more of a bush behind it And as I got further on and realized I kind of liked it So don't stop your watercolor even if you think I've really ruined this let yourself practice and finish it If it doesn't come out you can still throw it away later. It's still just a piece of paper But as I went I kept making that little puddle of water down at the bottom So I'd have some water to pick up and then when I was picking up that really light green water I could make this really soft kind of edge to it on that right side And I was like, oh, I kind of like this. This actually looks pretty good. That's pretty excited So yeah a little lesson for you in Don't answer the phone while you're doing things except when you do maybe fun things will happen And you'll come out with something like anyway So next I wanted to add a little bit of dark to this I wanted a little more contrast because I had some of those dark areas in the greens And I wanted to just get a little bit on the dark side Somewhere else in the the image So I decided those centers and the little I don't even know what those things are called the little thingy's inside the flower Pistols and stamens or something isn't that that I'm trying to remember back to my days of School and my brain is not working Anyway, I just started coloring those in with a little bit of that Poonacadone violet and then I wanted to add a little bit of this fuchsia as well The fuchsia doesn't look at all like it looks in the solid paint It looks pinker in the solid paint and it's a little more I Guess warmer. I'm not sure if you'd call it warmer, but I liked the color I liked the contrast it was gonna give it and I went to some of the areas Underneath some of the petals. I just wanted some of the petals to have a little more contrast in them And so I looked for ones where that there would be a petal on top of it So I just put some shadows in the very deepest parts of those and just a few I didn't even have to do all of them. So don't obsess about it Just do it until your eye is a little bit happy with what you're seeing there And actually did end up adding a little more yellow onto that flower at the bottom too because I got more yellow at The top and I think I was just too light in my coat of yellow on the flower at the bottom Decided to add a little more of the fuchsia as well to the buds just to pull them together and make them fit with the coloration I'd done on the larger flowers and Just going into the very deepest areas that and you can tell the deepest areas usually by the stamp drawing Usually the artist will give you some sort of a clue So This is also by the way going to be trimmed out more so I'm not worried about the tape covering up some of the areas Because I'm gonna cut the panel down Now I'm using a yellow car base as I said earlier from the sunshine collection because I had I didn't have enough purple on this I thought I was gonna put more purple in it and I didn't it ended up with more of the yellow and the pink So There you have it so I trimmed it down so that I would have a little tiny yellow border on the left and a much Larger yellow border on the right and I've got my phone tape under it I put a lot of it when I use watercolor just because I want to make sure it stays really stable So I put a bunch of it around different areas And I've got my stamp runner and my sentiment I stamped with the same two inks I'm not sure if I mentioned them It's bubble gum and field greens that I stamped this in all the supply links will be in the description down below of course And then I had my sentiment to be able to move it around and figure out where I want it And did I want it down below? Did I want it up above? I have it stamped on the same Cream letterpress paper so it would match and I decided as I was nudging it around to make sure that that top flower Didn't peek through underneath at all So there is my finished card which came out so pretty the gems that I put on I added the large gem on The right hand side where the card is recessed a little bit So it didn't pop up and it won't go through the envelope when I mail it to somebody So here's a couple more flower videos that I've done before There's a white and a red in different mediums and then a link to my watercolor flower series as well This is number 12 I'm sure that I've done more than 12 water color flowers But I've collected a bunch of them into a playlist here on YouTube You can also subscribe if you'd like to get more videos from me There's more information on my blog and I will see you guys later. Take care. Have a great day


Back to ThinkTech. I'm Jay Fidel. This is Community Matters. You're only given Tuesday. We have Jeanine Sullivan. She is the executive director of The Pantry, Feeding Hawaii Together. I don't know. I've got all the words in there. What's your corporate name, Jeanine? The Pantry by Feeding Hawaii Together. Okay. Very important. Food is important. Feeding people is important. Feeding people is always important. But in time of COVID, when a lot of people do not have the same, you know, resources they had before, it becomes all the more important because, you know, you have a breakdown of society if people are hungry. This is a serious problem if people are hungry. So tell us about the company. It's a nonprofit. Today is Giving Tuesday. It's an appropriate time to discuss how we can support you, Jeanine. So, and you're decades old. That's very interesting. So tell us the history. Tell us what you're doing these days. Absolutely. No, thank you for taking the time to meet with me. The Pantry is a 20-year-old organization and we're built on the concept of providing fresh, diverse, nutritious food to those in need. And so I think in the times of COVID, that, I mean, of course, the need has increased during the times of COVID, but we're not just a COVID-focused organization. We've been here for the past 20 years and we expect to be here the next 20 years. And so, you know, we're really excited about what we're doing and we feel strongly that no one in Hawaii should go hungry. A recent survey came out that said one in five Hawaii residents struggle with food insecurity, which is an astronomical number. And certainly, you know, we've seen that increased due to the financial difficulties that COVID has created. But we're really passionate about making sure that anyone who needs help can come to us and we'll be sure that they get that fresh, diverse, nutritious food. Oh, I want to drill down on all of that. So interesting. We cannot afford, as I said before, we cannot afford to have people hungry in our community, not only for the human empathy of it, but it undermines the social compact. It undermines the viability of our community together. And we can't stand it if they're hungry. We can't stand it. And I guess you feel that way too. What made you join this organization?  Absolutely. So I'm a Hawaii girl, born and raised, like many people. You know, I was fortunate enough to go to the mainland and spend some time on the mainland, working for different organizations, different companies. And I spent a lot of time on the corporate side of the world really looking at finance and venture capital and startups. And I really had always had my heart set on coming back home once I had enough experience. And so I was home, working from home, actually, before COVID all hit. I was just doing some consulting work and working from home. And I had learned about this opportunity to help reopen the pantry in the beginning of the year. And I just really felt that that was the opportunity that I had been working my entire career to find, that I could lead an organization and make sure that I'm able to make that impact that I had been looking my whole career to make. Great story. So it was closed at the time. What's the backstory on that? Absolutely. So as I had mentioned, we're a 20-year-old organization. We closed a few years ago when our property in Kaka'aka was sold to a developer. And so for about a two to three-year time span, we were looking for our next facility. And so with the support of a community development block grant, we were able to purchase a 13,000 square foot facility in Kalihi right at the intersection of the H1 and H2 to make sure that we're at a location that would be very easily accessible for our clients who are coming from all over the island and just make sure that they would have easy access to us. So we reopened on April 1st of this year. And since then, we've served over 60,000 individuals. We serve about 11,000 individuals every month. And we just want to make it known that if anyone is in need, we're here to help and visit the pantry.org to register for food, to shop for food. But especially in the season of the holidays, no one should go hunkered. And we're here to make sure that that doesn't happen. Especially in the holidays, it's really depressing when you don't have food in the holidays. That tears at you, tears at everyone. So I was going to actually start a show, Janine, counting the number of people who had died from COVID. So right now, it's 260,000. And we thought we'd get some people together and just simply count. The problem was, it would take you weeks, 24 by seven, to count to 260,000. On the other hand, it would take you a long time to just count to 11,000. So you do a lot of things and we don't have time to count to 11,000 today, but that's a big number. And a 13,000 foot facility, that's a big number too. That's a big facility. That's an ambitious plan. No kidding. Can you talk about how you acquired that facility? Absolutely. So we worked, we were working with a number of different organizations once our organization had to close in Cacaaco due to the real estate. And so we were working with a number of agencies. We were applying for a number of grants and the community development block grant was gracious enough to accept our grant and help us purchase this three and a half million dollar facility so that we could carry out our mission of making sure that no one goes hungry and that we saw food insecurity in Hawaii. How long did it take you to implement that plan to buy and to set it up? The purchasing part was the most time consuming aspect. It took us about two years to find and purchase a facility. And then it took us about another year to bring the facility up to code. So, you know, a number of wonderful organizations and charities within Hawaii helped us do that. So we had to put in a brand new fire sprinkler suppression system just to make sure that we're a safe organization for all of our volunteers and clients who are on the facility. And we were able to do that with the gracious support of a number of organizations who all shared our vision and continue to share our vision. Wow, that's a major project. And so you store all the food in this 13,000 foot facility. If somebody wants food, they go on your website, the name of which is the pantry by Feeding Hawaii Together. The pantry.org. Pantry.org. That's simpler. Very simple. I go on the website and it's going to ask me about my income and see if I qualify. And if I qualify, then you'll invite me to come over and pick it up or how will you get it to me? Yep, it's actually an even simpler process than that.  And so once you self-certify, you're immediately welcome to shop online and pick the items that you and your family want to eat. And so in the same way that, you know, you might go grocery shopping at a store, the same concept applies but online. So you as the client are able to go online, pick what you want, what you eat that's within your dietary restrictions and desires. Add that to your cart. Check out and you'll be given a pick up date. And so you can come to our facility on that pick up date. We operate a drive-through, walk-through. So just bring your order number. Come and we'll give you your order in a contactless manner to make sure that we're keeping our volunteers safe, our clients safe, but also our community safe, especially during these very uncertain times. Well, I'm really impressed. So it goes from the website to somebody who goes and pulls it off the shelf and puts it in a basket or a box and then sets a date or you set the date, I suppose, and then you meet that person. And that includes frozen goods as well as, you know, room temperature goods. That's absolutely correct. You've done it in a certain time. So it's, you know, hasn't defrosted and so forth. Right. So we have walk-in refrigerators and walk-in freezers on our facility that we obviously use to supplement the dry goods. So for anyone who's shopping online, for example, today we have a number of dry goods, but we also have frozen fresh local fish. We also have frozen pork patties. And so obviously we're not putting those items on the shelf in preparation. We get those items and we add that into the orders at the time of pickup to make sure that we're maintaining all health standards. Well, I suppose I'm the kind of person who really feels, wants to take advantage of the system. Okay, I want to game the system. I want a lot of food and I qualify, but I also ask for a ton of food. Do you have controls on that? Yes, we do. So we have three rules in place for the pantry. The first is that you're able to shop once per week. And so because everyone is registering online, we're able to see who's coming and who's picking up. But also the second rule is that we put a quantity restriction on the number of items that you're allowed to take. And that depends on your family size. So for a family of two, you get for each person in your household, you get a lot of 10 items. If you're a family of two, you get 20 items. If you're a family of eight, you get 80 items. And we've really found that our clients take what they want and what they need. And, you know, just because they have eight people in their family doesn't always mean that they're getting 80 items. They're really just taking what they want. Yeah. So what about the quality of these products? Are they below standard? Are they seconds in some way? Or is it the same thing I could find in any food market in Hawaii, I suppose, no? Yes, no. This is not anything that you or anyone wouldn't go to the grocery store and get yourself. Anyway, this is all same quality type of food. Everything is, you know, of course food standard within food standards. But we actually, the way that the organization works is that we partner with local food suppliers, with local food banks, to get the food into the hands of those that need. And so that, of course, includes a number of food purchases. So we work with a number of food partners within the community, all local, that we buy things either at no margin. So we're saving costs as best as we can. But I mean, we make food purchases and they're the exact same things that would go to a Costco, that would go to a Safeway, that would go to a Food Land. What about high-end thing? What about extravagances? I mean, not to say this is an extravagance, but suppose I put my whole budget of items on Ben and Jerry's ice cream. And it's obvious that's not healthy for me or my family. Do you have control on that? We do. And that's actually a great point in that what we're working on for our upcoming releases, right now we're on the website, but in the next 30 days or so, we're launching the Pantry app that is going to incorporate a lot of those nutritional suggestions. And so definitely stay tuned for that and more news to come when we go live. But yes, we do put restrictions to make sure that one family isn't going away with 50 gallons of ice cream. Yes, we make sure that that is out. Not cool, not cool. Well, just the logistics. Who is room for 50 gallons of ice cream? Now, what about caviar? I like caviar a lot. Can I put some of my budget of items on some caviar? We have not made food purchases of caviar. As the leader of this organization, I don't feel like that would be a good use of our financials. So you talk about how the beneficiary, I'll call them beneficiary or her, comes in on the website and check boxes on what he or she wants for themselves and family. But what about you or your buyer, so to speak, the one who goes around to, I don't know, Safeway, one of the other food stores and is going to buy from them at no margin or however you set the economics up. Is that also mechanized? Is that also done electronically? So I would say it depends. So the way that it works on the buying side of things is that I'll work with local food suppliers to understand and take in what they have in stock. So certainly I put it in a big order for white rice just because that's a household staple here in Hawaii. But I also work with them on seasonal items. So for example, our Christmas special, we're distributing giant turkey legs and stuffing and mashed potatoes. And so because those are holiday items, they take a little bit more effort to find and secure. But a lot of it is just, of course, relational in that everyone knows everyone in Hawaii. And so we're always looking for more food partners and anyone who might have access that they're looking to donate and to make sure that that goes to a good use. What about alcohol? We do not serve alcohol. Good. That would really be a risky business. No kidding. Yeah. Okay. So you're going to stock the shelves with this. You're going to let people order it. You're going to deliver it to them. And one question I was going to ask you is who qualifies? What are the income levels that are established here to determine whether I can have the benefit of your operation? Absolutely. So it's as long as your household doesn't exceed 185% of Hawaii property levels, which is a federally set standard around income levels, you are eligible for our services, we'll be very happy. What is that roughly now? For a family of four, it's about $55,000. So if I'm less than $55,000, I would qualify for the pantry food from the pantry. Interesting. Exactly. And when you say household, do you measure this by the number of people in the household, or is it just a household, however many people there are? So the household is defined as the people that you're registering as a group unit. And so for someone who lives with maybe two children and themselves, that would be a household of three. And so unless the children are making income, it would be that one individual's income level. The situations look different for different scenarios of families and what each family is in their own situation. So it sounds like you open an account. You create an account so the pantry knows who I am, so to speak. And when I come in, I log in on that account. And then we don't go through this each time. You already know who I am. Yes, exactly. So for anyone who's new, they register once. And that's when you give us your information, your name, your phone number, so that we can contact you, your email, how many people are in your household. And then after that, you're able to shop once per week. And so like you had mentioned, our inventory is changing every day, depending on what we have purchased or why anyone donates to us. That changes every day. And then we have a large number of volunteers. And we're also always looking for volunteers who help us custom pack every single order or pickup. So what you order is what you will get. And we have volunteers who make that a reality. Fabulous. So tell me more about the volunteers. Who are they? And what about your permanent staff? Who staffs these 13,000 feet of facility? I am the only full-time staff member. Is that right? Okay. I'm really impressed now. And so, you know, especially on Giving Tuesday, please know that, you know, any financial donations you may go directly toward feeding our communities and making sure that no one goes hungry. It's there's very volunteers work free. My volunteers do work at no charge. And they're wonderful. I have a huge assortment of volunteers who come from all over the place. Some of them, you know, I have come on a regular basis and we see them weekly. Some of them, you know, build their work schedules around volunteering for us. We certainly have members of different organizations that come with us that come and volunteer with us. The Coast Guard has been a phenomenal supporter. I warn you, Janine. I'm former Coast Guard. I know. I saw your interview with one of our regular volunteers. The Coast Guard is phenomenal. And, you know, we're always looking for other organizations who are looking to make sure that no one goes hungry. Hey, there's a picture of the Coast Guard right there. Okay. All right. Great. So what's the demographic of your volunteers? They old, young? Where do they come from? Why do they volunteer? Who are they? Or maybe you can't even answer that because they come from so many different places. But what's your general impression anyway? There's probably two groups of volunteers that we have. We have those that come by themselves because, you know, they're just believers in the mission of making sure that no one goes hungry. And then we also have groups that come in. And so groups like the Coast Guard, groups like the Rotary Clubs, church groups, volunteer groups. We welcome anyone and everyone, you know, every single volunteer matters, every single hour matters. And what they do is, you know, everything that is needed to maintain a 13,000 square foot facility. So that includes packing orders for our clients so that their custom orders are picked up. It includes putting items in the trunk. It includes making produce bags from the produce that we have going out that day. We have many volunteer needs and would love to work with anyone who has time and is interested in making a difference in the community. Yeah, that's a great way to spend time, really. So is it 24 by 7? Are you open and running all seven days or what? What are your hours of operation, Ginny? So anyone is welcome to order and shop and register 24-7. We are open for pickup 30 days a week, Tuesdays and Fridays from 10 a.m. to 2 p.m. and then Wednesdays from 10 a.m. to 12 p.m. And then we have volunteers only on Mondays and Thursdays who come and help us custom-pack those orders. All right, so now I want to talk about, we have a few minutes left, I want to talk about the larger picture. You know, through this discussion, I keep thinking about Andrew Yang. Remember him? Of course. I thought he was the most selfless guy on the stage. As a matter of fact, you know, I thought he was fabulous.  Universal basic income. Yeah. Oh, I was so impressed with that. I think that is the future. And that's why I mention this to you because I think what you're doing, it's not temporary. And COVID or no COVID, that's where we're all going. That's where this country, with its diversity and its economic complexity, that's where it's going. And what you're doing now is kind of a forerunner of what will happen and it will continue. Do you agree with my vision on that? I think that I certainly think that, especially COVID has shown us more so than previous years, that the need for basic support services is absolutely fundamental. And it's something that, you know, a number, if not most all developed advanced countries, especially in Europe, are doing. And that's just something that I think we've all realized is something that we need more of. And I certainly hope we would see more of in the future. Yeah, I think we'll have to, but it's okay. It's okay to have to, and it's okay to do it. But, you know, one question is the economic question. I'm sure you think about this day and night, that, you know, that's a primary function of your job, isn't it? You have, you've described the model where you put the cash in and the benefits come out. It's that simple. You're taking that money, you're buying food and you're giving the food away. Beautiful. Simple. However, you got to bring in the cash. So where does that come from? What's the array of supporters, so to speak? Who are they? What companies? What kind of organizations are giving you this money? And is it sustainable? Because if for some reason it dries up, say because of a bad economy, oh, that's a headache for you. So tell me, how do you raise the money? Sure. I mean, I really think of them in really four groups of donors. One is going to be the city, state and federal. You know, the CARES money just finished yesterday. That was an enormous help. We also received support from city and state, city and county of Honolulu, as well as the state of Hawaii. That's of course a much more variable income source, but I think that the government has been a great supporter of us and we certainly hope to work well with them in the future. The second would be corporations. So a number of corporations have been incredibly generous because it's their employees, it's their neighbors who are going through these economic difficulties and they understand the value of being good community partners. We have a number of phenomenal organizations who have given us a wide range of financial donations and no donation is too big or too small. Every single penny matters and we're incredibly great for those generous donors. The third would be different foundations and organizations like that. We work with a number of foundations to get this building and facility back up and open in April of 2020, of course. And so we hope to continue to work with different foundations that will continue to see and realize the incredible value that we're bringing to the community. And then the fourth group is individual donors and every single penny matters. There's no donation too big or too small. If you work in a corporation, there's frequently corporate matching. Every single dollar matters. All right. What's the future of it, Janine? Is the 13,000 square feet going to be enough for you? Do you need another one in some remote location to serve another community? Neighbor islands? I don't know. What's on the drawing boards here? Where is the pantry going? Absolutely. So our vision is to solve food insecurity by 2025 and we think that we have a plan to do so. A large portion of that plan comes from the app that I had mentioned that's going live at the end of this year. And that will allow us to work with other organizations in a more streamlined manner. It will give us better operational visibility so we can think through and think about where we want to expand. And how do we eventually give or share this technology with other organizations? We're a non-profit and our goal is to solve food insecurity and we want to do that through partnerships. And so we have a lot of plans in the future and it certainly involves growth. So stay tuned and visit the pantry.org to keep up to date on what we're working on. Will you ever cover, you know, ever sell things other than food, like for example dry goods? Would you include that in the future? I think that everything's an option at this point. You know, we're looking for sustainable ways to make sure that we're able to continue to serve the community. And if that involves a social venture, that's certainly a possibility. But we're always open to everything and everything, anything. So there's no hard nose on the table. And you're bored. Are you close with them? Do they give you direction or are you the kind of leader that can do most of it by yourself? I have a phenomenal board. I'm very close with my board. I actually have two board members volunteering right here right now. We're in the middle of a distribution. I have a phenomenal board that provides wisdom and guidance and sometimes just physically being here. Sure. Sir, that's the support all of its own, isn't it? Exactly. So I want to ask you one last question. It's a question largely out of curiosity. But here you are. You were on the mainland just talking to you. I know you could make a lot of money that you're well trained and in some fashion or another, maybe banking, finance, what have you. And yet you're here. You're here doing altruistic things, elimousinary things for the community, serving the community in a very poignant way, I might add. Some charities, you have to really figure it out. Here is food. That's different. So you do you. I sort of think that you do represent a new generation of Hawaii people who are definitely Hawaii, who understand they're part of Hawaii. They're part of the fabric. It's built into them. And they're trained. They have experience on the mainland. And one, they decide to come back and do altruistic things, community-based things. And I sense that you're not alone.  I'll say that. But you're not alone. And that maybe with you shoulder to shoulder, either now or coming soon, there are others, other people just like you, who come and they want to help the community. They want to make Hawaii sustainable. Am I right? And to what extent am I right? You're 100 percent right. I have a number of classmates from high school here who I've had conversations in very recent weeks who are planning their journey back home and are trying to figure out what do they need to do to make it work here? Because they want to come back home, they want to give back to their community. And they want to make a difference. And so you're 100 percent right. I think that that's absolutely a growing trend. And now more than ever, we need those individuals to come back. And you're here.  We have to follow you. We have to talk to you again. We are very impressed that I mentioned that before. Thank you. Thank you, Janine Sullivan. It's a wonderful discussion with you. And I wish you all the best here on Giving Tuesday. And I hope that you find all the support you want and more. Thank you so much. Aloha. Aloha.


So Dan, you know thanks so much for you know doing the interview with us. Can you tell us who you are? You know what your background is. Yeah, so my name is Dan Garfield and I'm the chief open-source officer at CodeFresh Which is abbreviated to COSO or SOSO. Okay. All right I'm a co-founder at CodeFresh. Raziel, the CEO is really the brains behind the operation and then I'm also an Argo maintainer though I'm the least of Argo maintainers and I helped create open GitOps and the GitOps working group and Create that standard for GitOps. I do a lot of work with CICD I do a lot of work with software delivery enabling companies and helping people improve their software processes and Be more secure and deploy more frequently and all that kind of good stuff. Right So what kind of got you into like the open-source space to begin with? Oh Gosh, I started actually working on Helm. Oh, really? But but not not that much with code. I mean I did I did my first open-source commit Years ago. I was very proud of it because it was basically my first open-source contribution was for Quake Okay, because somebody was making an HTML5 version of Quake Uh-huh, and I'll literally all I did was like fix the launcher so that it worked proper properly, right? It's like a very small thing, but I Love though, right? Yeah. Yeah So I loved doing that. That was like cool to be like, oh, I I contributed to that thing. That was really neat And you know my I don't do as much code work these days But every once in a while here and there all all makes a few commits, but I started working on Helm just trying to We we we thought there was definitely a strategic interest in Helm with CodeFresh because we help people deploy to Kubernetes Helm is definitely becoming the de facto package manager, right and so the shift from Helm 2 to Helm 3 and Spent a lot of time just honestly just chopping wood and carrying a little a little bit of water Yeah, don't ask Karina. She'll be like damn. He didn't do anything She's not wrong. So so yeah, we I started doing that, but then With Argo, this was a project that came out of company Applatics, okay, and they were They didn't have a commercial path for it So they were acquired by into it and once they joined into it into it donated the project to the CNCF And we started contributing pretty much right away. We joined the project and then we launched The very first commercial version of Argo like five months later four months later. Oh, wow So we we've been doing commercial Argo, and we've been helping companies adopt Argo for Three years now. So we have more experience in it than any other company We've done it in more diverse locations more edge deployments. I like diverse. That's yeah, that's a good way of putting it Versus, you know, crazy Difficult So let's back up a little bit. What is Argo? So Argo is as a project has four tools the one that people are most familiar with probably is Argo CD Which is a get ops tool. So you basically define this is where I want My software to be deployed. This is the source of truth for that software And this is the policy for how you're gonna keep that in sync and that that shift to get ops That's like a pretty revolutionary thing and I don't mean that because Well, I mean, I think you probably know people were doing stuff like that with puppet, you know 15 years ago I actually actually wrote a what do they call them? Plug in but it's not plug in for engine X. Oh, yeah did some of that And sorry fighting with a big truck trying to get over So, yeah, because I didn't want to install puppet You know like that Kind of can't think of words today You know, I didn't want to stop install the puppet like client Yeah, all of these machines because I was really afraid of them So, you know, so I wrote it engine X was already there. So I you know, wrote a little plug in for engine What's through that? Yeah, yeah But yeah, so a lot of people have I mean, I think the you know Like it gets a lot of buzzwords these days of the you know configuration is code and all that jazz but at the same time it's You know people don't realize the power of it if you're kind of doing it properly Yes, well, I don't think that until we had the Kubernetes API It's been very it's been a lot harder to achieve and now that we have this standardized API for delivering cloud native software Whatever that means. Yeah, we have these get ops operators that can Suddenly operate in a very high level of efficiency where you have very little Drift and things like that. I mean we like we we use Terraform, right? Everybody uses Terraform, but Terraform state management state gets corrupted all the time, right? And so that Makes it a lot more difficult to use in a proactive get opsie way Whereas if you're using Kubernetes Argos CD is gonna be Perfect, it's just gonna work. Yeah. Yeah So what's what do you feel like the kind of learning curve is on? Kind of doing the get ops model Not so much the the technology involved, but like kind of the mindset. Do you think that's a is it a? You know difficult thing to come across or is it do you find most people get it pretty fast?  So how is this better? and I I get that because If you if you don't just start doing it you might not realize how much easier it is, right? And you might not realize like how much time you spend babysitting deployments or like if you ever have a deployment go Wrong during a CI CD process and you haven't written some sort of imperative case for it If you're really good at writing imperative operations You can make it feel almost declarative But as soon as you go outside the bounds of what you can imperatively script Suddenly you run into problems and so something That's like we move to declarative for a reason, right? We moved to declarative because it's way easier to operate and you know what you're going to get at the end and you can have Operators and policy that gets you there, but you can just worry about being declarative So moving from imperative to declarative from on a CI CD perspective I think that's something that people have a hard time wrapping their heads around, right? The other thing that we see a lot of is Just bad git management Yeah, and that's not shocking right, but if you're using when you're doing app development You're using branches for all of your development and get flow and that's great and it makes a lot of sense When you start to do environments doing get flow and Having branches like a different branch for different environments. That's actually really awful Like it doesn't work very well, and it creates a lot of problems because you're like, oh well I'm gonna I'm gonna promote a change from staging to production and what is that entail? Oh, I need to cherry-pick 37 commits perfectly, right? Okay. Good luck. Yeah, you know, that's probably you're gonna have merge conflicts It's probably gonna be a pain and if you bring one of the values along with you that you didn't mean to suddenly you're gonna be in trouble whereas what we recommend is Do it using the environment per folder? Oh, yeah, and now you're running diffs on that super easy You just diff two folders. You've got it all figured out right promoting changes and segregating things that are long-running values for staging or long-running values for Production that's a lot easier. So things like that. Those are pretty common One of the things that I I was kind of you know, it's like you learn things sometimes and you're like surprised that that's the Really interesting thing you learned. So one of those for me when I joined Red Hat It's after I was there for a couple years is how much better at source control I became Because you know like Red Hat, you know is is really really good at that, right? It's really good at you know kind of this very machine approach to releasing because you know like Red Hat's been doing Essentially continuous delivery for 20-something years. Yeah, you know, it's just we call it package managers, right? and It's really it was really interesting how how much I learned about how like software is really created and like the best Practices around it and the pain when you don't do it, right? Well, that's that's a good use case to get your engineers not yours, but yours writ large to contribute to open source Yep, because Get management and open sources act tends to be actually very good, right? Because it has to be you have you have 5,000 contributors to this thing So you need to have really good get hygiene and so I've working on Argo and I've been doing Some security work recently. I'm on we have we created a special interest group focused on security for Argo Mm-hmm, and so I've been helping doing like cherry picks and things like that But there's a lot of things that I've learned By doing this with open source that I didn't learn just contributing code Into a company organization where we right, you know most companies don't have code owners files, right? Right, that's a that's an open source thing, right? Well, and I think the other part too, which you know People don't really realize right is that you know when you're publishing code internally You don't have the fear factor of oh my god Everyone can see the terrible thing I did in this software You know or at least not as much you know, so I think one of the Really cool things one of the really freeing things in a sense about open source is not only do you get a sense of You know, hey, I'm gonna put this in public So I better do a you know a good job But also you get the the feedback that you did do a good job, you know, which I find sometimes really well You're more likely to get a complaint about what you've done. Yeah, but at least you know, you know When it's when it actually gets accepted and consumed you're like well no matter what they said, right? It they shipped it so it must been pretty good. Well, and you can see One of the common things in our industry is imposter syndrome, right? Because Technology is so vast. Yeah that you're always gonna run into something that you've probably never heard of and The person you'll be talking to knows all about it, right? And you'll be like, oh, I thought I was like a senior engineer I thought I was a good junior engineer and I don't even know what he's talking about right and with open source You know, you can sometimes have that alleviated a little bit because you'll be looking through something You're like, oh They forgot to squash their commits.  So, right? Yeah, the yeah I mean, one of the things I talk about a lot actually is like one of the best things I learned in college was really actually how to learn And how to learn quickly. I think I spent a bunch of years in consulting which also taught me a lot of that But the you know because the industry is just changing all the time I think I've gotten to the point where I just assume I never know anything and that way You know that way I'm like good to go. I had a conversation with a friend Years ago and actually was focused on Kubernetes because he's he's a senior engineer He was one of the most brilliant engineers I've ever known. He's like learned a lot from this guy and Anytime I talked to him. I always thought oh man I have a lot to learn and one day I was talking to him about some stuff with Kubernetes and containers And he had no idea what I was talking about. Oh, yeah And I was like whoa, did that just happen like I actually know something that you don't you didn't already write like a doctrinal thesis on this thing. Yeah. Yeah, that's what I Yeah, it's a containerization. I think in particular I I find that a lot where it's like somebody who I know knows technology really really well And then is like has never been anywhere near a container. Yeah, which I find interesting because like I got into them Because they made my life easier, you know, because I didn't have to like spin up a VM every five minutes You know work on a project So yeah, huge fan So, you know, we call this the insider show because you know, we want to know what you think is coming So what are you kind of most looking forward to coming through our goer? Even CD? You know are kind of those concepts What do you think is the the thing to watch or the thing to be hoping for in the next six months a year? Hmm, let me think about what? Because there's stuff that you know, I'm Where I'm like betting our company on oh, yeah, I don't necessarily want to like go as deep under those things as much But like there's definitely more democratization of these tools and technology. I think going back to your puppet example Orchestrating GitOps 15 years ago. Mm-hmm was it kind of a dark art, right? It was like you had arcane knowledge. You had these super specialized people that Like if they ever disappeared, you know, your company's just gonna collapse And that's you know, it's nice for the people who are getting the paycheck, but Now with tools like Argo, it's becoming so much easier, right? And so it's becoming more accessible and so we're just seeing this huge explosion of people doing it and you know Three years ago when we started telling people, hey, you should be using Argo. You should be doing GitOps Here's how you should be setting up your repositories The value wasn't necessarily immediately clear to everybody, but now you can definitely feel that push So I think a democratization of that is happening. That's really exciting Obviously machine learning and AI is a very hot topic and there are a lot of ways we could apply that within Software delivery. Yeah, and they're not necessarily always Comfortable because if you have something like oh, I want to You know have an AI watching all of my logs and all my metrics and looking for anomalies and have it automatically trigger rollbacks Most people don't deliver their software without a human clicking deploy Right, right. So how comfortable are they going to be with an AI doing a rollback in an automated way? Yeah, but I think we'll get there I mean, it's like driving a car like ten years ago the idea of an AI driving a car was I could never trust it and now We still don't trust it, but we could see a future where we might trust it, right? Yeah, it's the other part that I think is really interesting around that kind of AI ML problem for those scenarios, too is the you know the changing baseline Where like I still remember talking to a friend of mine who like was running a company that did You know log analysis basically and you know what was really interesting was that their big Thing that they were trying to figure out was like how do we recognize when the baseline changes so we can stop alerting you? Which because now this is just a normal day And I think that's where you know things like machine learning really start to come into play and get interesting But I don't know that we You know the problem with machine learning is that you need a lot of data to You know get good models and I don't know that we have That in any sort of unified way because one thing we're not seeing a lot of in kind of the open-source world at least yet is the sharing of how your You know get ops whatever environment works So that we could kind of be learning more from each other You know that still that tends to be a very I don't think it's intentionally secretive, but it tends to be secret And so I think that'll be a really interesting, you know kind of breakthrough when people start getting a lot more I hesitate to say open as much as like it becomes more of its own community Yeah, I don't I wouldn't hold my breath for people to be started sharing their data too quickly. Well, right. Yeah, so that's that's the other challenge, right? But yeah, the and then there's definitely a lot of like nuance in how you train those algorithms because You could see scenarios where oh this this is learning and it's learning how to detect the It's learning how to detect anomalies But anomalies are building up slow enough over a long period of time that it assumes that anomaly buildup is normal You know and so you can see a situation where it's sort of like you're slowly boiling the frog Right, and you didn't get to the point or you get a rollback because you're not getting enough errors, you know Yeah, yeah, it's like oh, I expected more errors better better roll back This is the devil. I know not ready for this new world of no errors, right Yeah, although although to be honest right as a human who has some level of at least intelligence. I have Looked at systems and been concerned about it because I'm not getting the errors I'm expecting yeah, and and been right occasionally right where you know it the reason you're not getting any errors It's because it's completely broken You know well that sealed joke what scares you more as a software engineer when you make a change and it works the first time without errors or You get errors that you know right right. Yeah, I think yeah, if I if I get no errors that definitely makes me think I miss something Oh, no, yeah, I totally hear that So I was gonna ask you kind of a little bit of a sidebar I was doing a little bit of background on you and saw you did a backpacking trip around Europe Yes, here's to go. Yes a long time ago, and I was in Holland. I had some friends in Utrecht. Oh Yeah, I don't know if that's I was pretty close. I think it sounded it sounded like I knew what I was right, but yeah We I we stayed in Utrecht. We went into Germany went into Switzerland. I slept on the street in Switzerland Oh, that's always I was a poor college student, you know, I went to Sicily. I slept on the beach in Sicily nice That was a lot of fun Got into motorcycle accident. Oh, that's that was you know an adventure, right? Yeah, it's great adventure Would you do it again? Oh, well, I Would go back in time and do it again.  Yeah, I do that Because it was funny like I I think I was talking to you earlier I drove from Prague to Krakow for a conference and I am really glad I did it and I will never do it again Like yeah, maybe if one of my I don't know if I can handle one of my kids driving my kids are inner-city kids Oh boy. Yeah, I'm driving But yeah, I you know, it was it was great once you know, but you know So I'll have to find another opportunity that was similar There's a guy I used to work with actually who everywhere he went he would drive And I always thought it was kind of crazy. Oh, I think I was the left. I wanted We'll get there eventual consistency Eventual consistency is all we care about and software delivery Get off the world So, yeah, the So it was kind of a lot of fun So I was kind of curious about the the backpacking experience the same way, you know, but it sounds like it repeat it, you know Yeah, I mean when I did it I Actually, I was doing it and I didn't have a job so I had I had worked and then the company I was at and I was like working my way through college and The company I was at downsized and I was like a college student and so I didn't have a job and So I and I had already booked my ticket to Europe So I came out here with like almost no money and spent a while and I you know I would buy like a baguette and some cheese for two euros and that was like the day, right? And I was I had a train pass. So I was just moving around and stuff and it would definitely be different now because You know, I can I can afford to buy food. Yeah, so that would be a pretty exciting. Yeah. Yeah. Yeah. I hear you Yeah, it's cool. I still I'm kind of jealous that you had the opportunity Opportunity to do it in the first place. Oh, yeah, of course Yeah, I did manage to get to Prague while I was in college You know, but mostly just like a trip and we went down to Rome and stuff But it was much more of a vacation than it was a you know, kind of a long tour, you know Yeah, and I mean now that now that you put it as like would you do it again? We got robbed five times We got accosted by a soccer team that had just won a championship and was high on cocaine. All right. We got You know in a motorcycle accident like It was high adventure. Yeah, and adventure comes with a lot of stories and it's great to look back on I wouldn't necessarily do those parts of the adventure again, right?  Yeah. Yeah, exactly. Uh, I totally hear you.  Yeah, that's the thing. That's the thing. Yeah That's awesome. It actually, I mean, we're pretty lucky working in software because We work with companies all the time that are changing the world And I know it's cliche and I don't talk about it much because it feels a little cliche, but yeah Like if I help a team at a healthcare company deliver software faster, it's like literally Saving lives right and I'm not smart enough to save lives directly Right, so if I can save lives indirectly that feels pretty good. Like I'm happy I could contribute to that cause Software is amazing in that way. Like you can touch so many things. Well, it's particularly interesting that you you mentioned that because, um One of the things that so in some of the classes we teach, uh, that you know, like I teach and I help oversee and stuff um We do these projects for third-party organizations like nonprofits and local government mostly and what's so interesting about it is Trying to get the students to recognize that, you know Every row of this table is a human a lot of the time and that that's so important. Uh, and you know, we we try very hard to Make sure that they recognize that, you know, it's not just data, right? It's it's real people or real, you know, something Uh and getting and I think it really starts to appeal to the students that way where it's like, hey I am I can make a difference without being a doctor, right? um Yeah, we we talk a lot about empathy within dev ops within software and I've I've started to actually, uh, I'll phrase it poorly. I've started to move away from that. No more empathy. Okay. All right. Yeah No, uh, I've started to move phrase. Yeah. No, I've started to move towards Charity and the way that I think of that is empathy plus wisdom. Uh-huh because Somebody delivering software poorly or someone having a bad experience. You can empathize with them But not necessarily have the wisdom to to help in any way, right to know what to do And so you could say, oh, you're doing this. This is really hard on you. You know what you should quit software Right. That's very empathetic of me. Right, but if maybe charity is saying Oh, this is really hard. Here's how you could fix it So I started to say, you know, I think you need an extra part of the equation So not not moving away from empathy but empathy plus wisdom charity interesting. Yeah, because I mean, that's you know Sometimes with empathy, it's right. It's like you can be maybe potentially more proactive than empathetic Right. It's kind of what you're getting at because I can feel bad for someone but then not actually be helpful Right, right. Whereas if you can do both, it's even better. Yeah, that's amazing. Well, thank you so much for the time I really appreciate it. And I hope you had an enjoyable drive. Thanks for the drive. Do I do I tip or exactly? Exactly. You can tip your way


We had the privilege of welcoming both Columbia Asia and Vikram Hospital into the Manipal family some months ago. Our new logo with its four colors – teal, blue, orange and red reflects our optimism, confidence and vibrancy of this new organization and also acknowledges the expertise and experience that our new colleagues have brought into this integrated organization.


I was Billahim Nishritwar Rajeem, Bismillahir Rahmanir Raheem, very venerable viewers. We are to share learning time management. This one is the potential and ability of a person that how we see the time and also we to manage within a span of limits, how we to start our task. When we to start, brother, when the time started, no, we to start before the time started, we to schedule, we to prepare ourselves, we to see things, we to overview things while we have yet not started. And there are some preparatory actions in it. I mean, time doesn't mean that we have to start thinking and work from that time. But the first preparatory actions that we are making us to manage and accomplish that particular assignment in a very successful way. In this, when we are in the position to say yes, that we to start and we to accumulate different potential to complete that assignment or task, then for that, we have to be a part of it with all kinds of circumstances and with all kinds of circumstances. And for this, when we manage all our activities, then we should spend potential time in it. And if we have some hazards about many things before time, then we share some things about which we have such challenging situations, so we already get prepared our time span we can manage. And in this, we to develop sort of impression that we are taking up this all activity and story in a successful way. And in this, the time we have dedicated, how much time is there? There are some things in which we got disconnected at a different stage. We will get rid of our tasks, or our time can be wasted, or our time can break, or some kind of spaces can be developed that can develop our time management. So we are already planning it about that. And we are already thinking about we are ready to accommodate those functions. And we go back sometime and we review the time, minutes, limits, everything. And we develop sort of things in the perspective in which we are more of completion of the task is going on. And in that, our assignment completion priority, what about that? And to what extent we are involved in that? And what is the focus of all our efforts? And the focus should be in the completion, the accomplishment of the task within limited time. And in that, we use the time and the wastage of time, the leakage of time, we reduce the waste of time and understand it. And if we execute the potential time, then we can fulfill our project. One thing is very important to add. If we have some ample time or spare time after the completion of that, we can review the things. And it will enable us to be a good reviewer and we are coming, going towards the perfection of the task. And this one is the quality of leadership and also successful task in the self management. Thank you very much for listening.


OK. Sorry for being late a little bit. So today we're going to go through our eighth recitation. We're going to start with assignment 3. So we're going to have an overview today of assignment 3 and we'll give an overview just to understand the big picture so you can start working through these three deadlines that you have. So we're going to go through assignment 3. Then I'm going to explain the virtual memory subsystem and the virtual memory interface. And then we're going to go through the DOM VM and what does it provide and what limitation does it have. And then I'm going to explain what you need for the design document. So an overview. So assignment 3, you need to implement a virtual memory subsystem. And the implementation, as you know, is divided into three incremental parts. First you need to implement the physical memory management, which is the core map. And then you need to go into the address space and TLB management, which is the user paging. And then you need to implement the swapping. We have three deadlines set for these three parts. So each you will have two weeks time to finish it. So these are the deadlines. And our next deadline going to be not this Friday, the one after, for a working core map. So the virtual memory subsystem. Basically, the virtual memory subsystem is just like a memory management technique that maps virtual addresses used by the user process into physical address in the computer memory. So the user process, basically, what it sees is a continuous address space. This is the first one. And then the operating system manages the address space and assign it to the real memory that is the physical memory in the computer. And the hardware unit that is part of the CPU that is responsible for translating the addresses of the memory management unit. And that basically translates the virtual addresses into a physical address. And that is what we call, once you start implementing, is the TLB management. So you're going to implement a TLB that MMU are going to use to translate virtual addresses to physical addresses. So what are the benefits of this virtual memory system? Basically, it provides just like a continuous space for the user. And also, it tells the user that just like you have the whole memory for you, you can use it. And it also provides a smooth allocation for the user, just like it gives them the illusion that the memory that it has is continuous and smooth. And also, it also has just like it provides a memory isolation. And this is used to improve the security for the memory. And also, it is able to conceptually use more memory than the physical memory might have. And that's what we're going to do with the swapping. Just whenever we run out of available pages, we're going to swap some pages out and use that these pages for the new process that are requesting them. So this is the whole picture. So basically, what you have is what you're going to implement a virtual memory subsystem that basically what it does, it just like translates or it's a technique just like translates virtual addresses to physical addresses. And that's what the virtual ads are, the ones that are going to be used by the user processes so that you can provide the illusion that you have a full memory just going to be used by you. No other process is going to use it. And also, it just like provides a smooth memory allocation and the allocation. So yeah, this is basically what the virtual memory subsystem is. Any question? OK. So we have several interfaces. So you already have a virtual memory subsystem that is implemented for you, which is the dump VM. And basically, it's dumped because it doesn't do that much. And you shouldn't even look at it when you want to implement your own virtual memory subsystem. So let's give you an idea of these three parts that you need to implement, which is the physical memory management. This is the first step. And then you need to implement the addresses space TLB management and then the swapping. We're going to go through each one of them. And I'm going to give you a general idea of how these should work. So we can later on, the next week, we can go into details of each one of them, which is the physical memory management and the addresses space TLB management and then the swapping. So we have a header file that is already there that we can go through and see which is the VM.h. So this is the VM.h. And what you have is basically three interfaces. You have the VM bootstrap that is called when you boot the kernel, boots up. And you do a different kind of initialization into that. So basically, for example, whatever data structure you implement for your virtual memory, you need to initialize it through the VM bootstrap in that function. And that's basically where, so we have a collection of just like bootstraps that are already in main.c, I believe. So let's go through here. So in main.c, you will see that in the boot function, you have all these bootstraps that are already there for you. You have the VM bootstrap already there, but it doesn't do anything. We're going to go through this when I explain the DOM VM for you. So this is the place where you need to just like do all the initializations and whatever data structure you use into your VM, you need to just like initialize it here. Whether in that function or somewhere else, because sometimes, if you know, the core map needs to be initialized before the other data structures are initialized. And you can go through just like two or three posts by the professor on this course that's explaining this. Why should this happen? So this is the VM. So let's go through the VM again. OK, so this is the VM bootstrap. We have the VMFault function, which will basically handle if what's for false happens, whether it's page or TLB. Also, we have the allocate k pages and the free k pages. So basically, allocate k pages and free k pages allocate. So when I call the allocate k pages, we'll allocate a chunk of pages, one or more pages. And the free going to do the same but destroying them, not allocating. So if we go through the signature of this function, we will see that allocate k pages receive the number of pages. And that does make sense. OK, I'll give you, I need 10 pages to be allocated. And it will allocate it for me. But the free k pages receives only an address. And this is one of the things that you need to think about, because I'm only going to give you an address free. The page is starting at this address. So how many addresses should I have free? This is one of the things that you need to figure out or implement. So your data structure should be able to retrieve that information, yes. Let's just say you try to allocate 10 pages. What should allocate pages do? Right now I just have a panic. I'm not really sure what else to add. No, so you mean when you allocate the? Yeah, you try to allocate 10 pages. OK. What should happen? So the allocate k pages, this is the kernel one. And it has to be a continuous. So you mean there is a continuous 10 pages, or? There is not. There is not. Oh, so just like, so if there is not enough 10 pages, so I need to go through that case. But what I recall is when you call allocate k pages, it has to allocate 10 contiguous pages. Yeah, but it's a 10 contiguous page. Right now, OK. So basically when you don't have enough free pages, then you should swap. So for now, that's what I wanted to just like, do you mean before the third bit line? Yes. Yeah, OK. Yeah, that's what I need to go through. Because otherwise, if we talk in general about assignment to three, this is what swapping will do. Yeah, yes. So this is one of the discussions that is already on the discourse. Because previously it was able, you were able to just like use the dump VM to allocate pages for yourself before getting to the swapping. Or before you get the swapping done. But what's going on right now is because we are providing tests for memory leak, we cannot allow the dump VM to allocate some. Because the problem is when you bootstrap to the point where you call VM bootstrap, so you're going to use the dump VM way of allocating. And the problem with that is that whatever you allocate with the VM is not going to be free. So you're going to leak memory. And this is, if you go through the post on the discourse, the recent one, there is a discussion on this and should tell you exactly what you need to do about this. So this is one of the differences that we had this year from the last year. So the problem was just like before VM, you cannot, the K-MELIC, you cannot use it. Because you still don't have the core map initialized and everything. But if you don't want to leak memory, you should have the K-MELIC ready. And that means you need to initialize the core map. The core map should be ready. And that's why I said that you need to make sure that the core map is initialized at a very early stage of the kernel boot. But for your case, I think I need to double check what should happen before these deadlines. Before this walking is done. Yeah. Sorry, I need also to edit some of the slides. So I'm going to post an updated one later on today or tomorrow. So also the TLB should down, the TLB should down. All of this basically will flesh out a TLB entry. You don't need to worry about these. So what you need to worry about for your first deadline is the alloc K-pages and the free K-pages and the VM bootstrap. The VM bolt and TLB should down all. These are for the second and third deadlines. Let's see if there's anything else to go through here. OK. So this is the physical memory management. This is the first part that you need to implement, which is the physical memory management. And this is for the first deadline. You should also have a core map implemented here. So the second part is the address space management. You should be familiar with the address space. So we went through that address space header file before for the files as calls. And the interfaces that we have is as create, destroy, copy. Copy is the one that you should have used with fork. We have activate, deactivate, activate basically. So if we have an entry in the TLB for a process and another process when I come and get that entry, then any process should just activate that TLB entry for the current process. Deactivate will just deactivate a TLB entry for that process that I'm going out. So just like whenever a process want to use a TLB entry, it should call the activate. And that should also be used in your, I think, one of the syscalls too. As defined stack basically, returns defines a stack region in the address space and returns a pointer to that stack, to the user stack. These are the new ones that you're going to deal with, which is define region, prepare load, and complete load. So let's go through the address space.h. We can better explain things over there. So OK. This is the address space header file. This is the address space structure that we're going to go through it later on. So let's go through the functions. As we said, create will create an empty address space. Copy will create an exact copy of the past address space. Activate will make the current process address space the one currently seen by the processor. And that means just activating that address space on the TLB entry. So just like getting a TLB entry for it. Deactivate unloads the current process address space. So it isn't currently seen by the processor. So as destroy, it's going to destroy the address space define region. So for define region, basically, we know if you remember the process model or the diagram that I showed you, we have in the address space we have different regions. We have a stack region. We have data region. We have code region. And we have a heap region. So whenever you want to define a region, you're going to use the as define region. And we're going to go through example showing you how this is used. As a prepare load, basically, when you call an executable or when you want to load an executable file, so you need to call that function before you load data into the data segment or, let's say, whatever content you want to load from the executable into the regions of the address space. You need to call the prepare load before loading data into the address space. Once you're done loading data into the address space, code data, whatever it is, you need to call the as complete load. So one of the major examples for using these functions is the load health file. And that's what we're going to go next through. So it's in currencies called load healths. So if we go through the load health function, so basically, the load health is called whenever we want to load an executable into the address space. And that's so load an health executable user program into the current address space. So this is the for loop. There is a for loop in that function. This for loop basically will go through the regions that are defined in the executable and find out how many regions does that user process needs, for example. So we have different regions, as I said. We have just like data region, code region, heap region. And there could might be other regions, too. So for each region I go through, I'm going to, as you can see, call the as define region. And I'm going to give it an address, a size. And also, I'm going to define some flags, which is these are the permissions on that region. So for example, a data region or a data segment, you can read and write into it. But a code segment, you cannot write into it. It should be read only. Otherwise, you're going to override the user code if you're going to write to it. So this is how we define regions. We're going to give the address and also the size and also what are the permissions for that region. Once we define the regions, then we're going to then, as you can see, first we're going to call as prepare load, which is called before I load the content into the region. So now I define the regions. I know how many regions I have. Now I need to load the content of these regions from the executable. And this is what I should do before that, which is calling as prepare load. And then I start loading whatever data or content I have from the executable. And this is done through the load segment, as you can see here. So once I'm done loading all the content into the regions, then I'm going to call as complete load. And that means I'm done loading content from the executable into the regions that I defined in the user address space. So this is for the second part or part of the second part. So you have the address space management, all the as set of functions that you need to define. And also you have the TLB management that you need to implement. So any questions on the address space management part? Yes? Yes. Yeah, this is so address space and TLB management is part two. So we have also one more syscall that you need to implement, which is the ESSA break. And this is for the heap. So basically the ESSA break is a set process break. And that means, or let's say, allocate memory. So if I define a region for the heap, then the initial size will be 0. And as I call ESSA break, I should just like allocate memory in the heap using that system. And you can go through the details of that syscall in the man pages. Let's go through it. So this is the ESSA break man pages. So it tells you just like set process break or allocate memory. It's receive an amount. So basically this is the end address of a process heap region. So the ESSA break call adjust the break by the amount, which means basically allocate memory on the heap. Yeah, you can go through the details here.  So at process startup, the beginning of the heap region is the same as the end. And may thus be retrieved using sbreak0. And as you call sbreak, it will just like start allocating memory for you and bypassing the amount of memory that you need on the heap. OK. And so the third part is the swapping. Swapping, we don't have anything for it yet into the OS161. This is we don't have a slide for it. I presented you with the stuff that already exists on the OS161, the interfaces for VM that already exists. So you need to add to these. And also for swapping, there is nothing currently exist. And that's what you need to implement. So this is for the VM interface. So this is what the virtual memory is used for. So basically, we need to provide an allusion to the user using the address space. And that would be the size of the physical memory that we have. And then we need to just like handle the translation between the user virtual address space into the or virtual memory into the physical memory. And that's what the MMU does for us using the TLB management. Yeah. So this is basically the VM and VM interfaces that currently exist and what you need to implement. Any questions on the VM interfaces? OK. So let's go through the dump VM. As I said, we have a virtual memory that is already implemented for us, but it's dump. It doesn't do anything. Nothing much is done, actually. This is the most correct phrase for it. So let's start going through it. So we're going to go through all the three parts, which is physical memory management and user address space and swapping in dump VM. And we'll see what do we have and what should be done and what is currently happening with the dump VM. So let's open the dump VM. So for the dump VM, we have again the same interfaces that we had for the physical memory management, which is allocate k pages and the free k pages. But what is implemented in there? We're going to see that. So for VM bootstrap, there is nothing implemented. So nothing is initialized. If we go through the allocate k pages, so it will basically call getP pages or get physical pages of that size. So what will happen here is it will call getP pages and getP pages will steal memory. So what's happening in dump VM currently is just like this. So this is the physical memory that we have. When we boot the kernel, the kernel will get its space from the physical memory and what is available for us to use is starting from after the kernel memory. This is where the first physical address will point to or the pointer will point to. And the last physical address is the last page in the physical memory. So whatever between the first address and last address, this is what we have available. What does dump VM do is basically when you call allocate k pages, it will allocate k pages for you and when you call free, it will do nothing. So whenever you call allocate n pages, 10 pages, it will allocate 10 pages. Then you call it allocate five more pages, it will allocate five more and that means 15 pages are now done. If I call k free with dump VM, as you can see here, the free k pages does nothing, basically leaks memory. And that's what's currently happening. So it will basically keeps adjusting the first physical address pointer to the point that it reaches the last physical address. Once it's reached that, it will panic that we are out of memory. Okay, so if we go through the, for example, if we go through the get p pages, as you can see here, it will call RAM Steelman. So what happens in RAM Steelman, let's see here. So basically it will get the number of pages and the size equal number of pages of the current page size. It will keep adding. Once the first address plus the size is a greater than the last address, it will return zero, which basically it will panic. So this is what is currently happening. Maybe you might wonder, okay, so how does the k, so we were just like allocating memory using the k malloc and free, and it was a freeing memory. So as long as you're freeing memory less than a page size, then that should be handled for you. But once you exceed that, it is not handled. So let's say allocating large chunk of pages, that's gonna be a problem currently for you because if it's more than what's available, you won't get anything. If it's less, you will get, and while you keep allocating, once you reach the maximum size of the RAM size or the available size that you have, which is the size between the first and last address, once you reach that size, then the kernel will basically, the dump VM will panic. So this is what's happening in the dump VM for physical memory management. And also if you can see that one of the stuff that is done in dump VM, and you should also worry about is, and get P pages, you can see that it is acquiring a lock. So you should have a synchronization primitive used with the physical memory. Why? Because the physical memory basically is a shared system-wide, so you need a kind of synchronization primitive to just like, so it is a shared resource, then you need to protect it using one of the synchronization primitive that you've implemented. So this is basically how the dump VM handles the physical memory management. It's very basic. So please don't go through the dump. Many students just like use to go through or copy the dump VM file, and then they try to just like modify the file based on what dump VM had. You shouldn't do this. You shouldn't even look at the dump VM when you implement your physical memory or the virtual memory subsystem. So don't follow what is there. So here I'm explaining things to you because I need you to get an idea so what's how the things are working in OS 161. So now you can go back and see how you should improve it. So as we said, the limitations that we have for dump VM physical memory management is basically it doesn't free what is allocated. There is no reclaim or recycling of pages. It keeps stealing until it runs out of pages. How should we improve this by implementing the core map? So how should we think about the core map? The core map basically is just like a data structure that keeps track of the pages that you have. All the information that you need to keep about a page, you should keep it in the core map. So let's say it is something similar to just like a process table, let's say. So the process table keeps track of all the information of a process. The core map is a data structure that keeps a track of whatever information you need for every page. So let's say what kind of information you need for pages is basically whether that page is available or not. It is, so, yeah, whether it is available or not, maybe. So I don't recall the stuff clearly, but we can go through them. So that's what we're gonna go through next week in details. So, but in general, that's what the core map needs to keep track of is whatever information you need for the pages. And also keep in mind that, so the core map is a fixed size. So that means what happens once your kernel boot, you should figure out how much memory you have and then or how much pages you have and you're gonna allocate that size for the core map and it should be fixed. So it's not like the process and let's say the file table that wasn't of fixed size. So you have that number of pages, you need to allocate that number for the core map. This is one of the steps that you need to do, which is, so if we see here, so after we have the kernel, this is the, as we said, this is the first address. So when you initialize your core map, you need to count how many space does your core map does it need and then you need to shift that first address again to point to the end of the core map allocation. So your physical memory basically will be something between after, sorry, after the core map to the last address. So the additional thing will be here is the core map to add. So this is one of the stuff that you need to do, which is figuring out how much memory you need for the core map, allocating it, and then you need to shift the first address pointer so that it points to after the point that the core map ends. Yes, okay. Couldn't do this, yeah. So you need to allocate. So in the kernel, you need to allocate. There is, so the kernel doesn't use a TLB. The TLB, for example, is used with the user and that's why when we have the TLB implemented, we can just allocate different pages in different places and the TLB will handle getting these pages. Oh, this one. Yeah, but in the kernel, the kernel has no TLB. So what happens is that the kernel has to just like allocate a contiguous pages. So if it doesn't find contiguous, then let's say you want four pages. If it doesn't find four pages, then that's where the swapping comes in. And then you need to decide which page you need to swap out in order to just like get these four pages available. So for these functions, which is allocate pages and free K pages, this has to allocate contiguous pages for these functions because these are kernel functions. Kernel has no TLB. The TLB is used by the user and that's why, as I said, you can allocate different pages in different places and then the TLB will just like translate it for the user and it will know where are they. But in the kernel, when you implement these functions, you need to allocate contiguous pages because the kernel has no TLB thing. So whatever you allocate has to start and should be contiguous to the number of pages that you need to allocate and you need to return. So if you don't have that much, then you need to swap out. Yeah, and before you swap out, you need to just like figure out what to swap out. So these are all the stuff that you need to think about. So as I said, so the core map should come after the kernel and the initialization. So any questions on the physical memory management for the DOM VM? Okay. Still have, okay. So the user address. So if we go through the, if we go through the address space, the structure for the address space, we will see that. So I've brought it up here. So if we're running the DOM VM, this is what we have. What does that mean? So we have virtual base one, physical base one, and end pages. This is the size. So and this is points to the code region or the code segment. We also have another V base, P base, and end pages that points to the data segment. And also we have the as a stack. This is the base, the pointer to the stack base. So as you can see here, the DOM VM has no heap. It only defines two region and that's it. It's only a code region and a data region. And no more than these two regions you can define. So for example, if the executable has more regions, that's cannot be handled by the DOM VM. DOM VM only supports two regions and I mean it by numbers, two regions. So no more than these two regions. So it has the physical base for that region and virtual base for that region and what's the size of that region? Yeah, so this is the DOM VM, but what you need to do, so as you can see, fixed number of regions we have. We don't have heap. That's what you need to implement using the S break also. And we have a fixed size stack. So one of the limitations for DOM VM is just like when you allocate a stack, it will allocate for example, let's say four pages for the stack. And that means if the executable or if the user process only needs one page, I'm gonna again using the DOM VM, it will again allocate the four page. It won't allocate the one page. So that means a waste of memory. So we have a fixed size stack and if you go over this, it will just like panic. So the user stack shouldn't go over the defined size. Where you can find the defined size, so this is it, defined DOM VM stack pages, which is 18, which is 72 K. So this is the maximum stack size that you can have. Okay, so how to improve it? You need to just like have the ability to just like define a variable number of regions. So if you have more than two regions, then you should be able and also variable stack size. So the stack size shouldn't be fixed. So it should be variable. Okay, so let's go through the address translation in DOM VM. So we know that this stack starts at address 80 million growing down and the heap grows up. So the address translation in the DOM VM goes like this. So we have the V base, we have the P base and we have the size of each region. So what will happen is, let's say we got a VM fault. So we will get and that will pass to us a fault address which you can see here. So what I will do is first I will get the offset which is by first you need to figure out this address belongs to which region. This is the first thing you need to do. How you should do this by using the V base plus the size of the region. So this is you can figure out what is the size of that region. Then once you identify to what region does this address that generates faults belong, then you can compute the physical address. How does the DOM VM do it? This is how it does it. So it will get the address minus the V base and then so it will get the address should be somewhere here let's say and then it will take out the V base and plus the physical base and it will get the physical address. So this way of translation is only used by the DOM VM. This shouldn't be used by you. So you shouldn't look at this when you implement your address translation. So how should we improve this as implementing the page table? So and page table is basically the data structure that should translate physical addresses into virtual addresses and to physical addresses for you for the physical page addresses into the, sorry, virtual page addresses to physical page addresses. Swapping, we have no swapping and DOM VM. It will basically panic once it runs out of memory. How should we improve it by swapping out pages once we don't have enough free pages available or let's say enough free contiguous pages available? This is for the swapping and then finally we have the design document. Please, this time try to do the design document. So today we went on an overview. I could start with the core map today but that wasn't right because you should have an idea what the whole assignment three is about because once you get an idea you can go through all these files, you can understand what should be implemented and how should be implemented. Assignment three has a lot of dependencies so make sure to write your design document before you start implementation. And this is why an assignment two up until let's say the last two days we still got questions on what is a file table? How should I allocate a file table? If you don't have a design document you won't be able really to finish the assignment to three in its entirety. So make sure to have this stuff in design document which is the data structure, how you're gonna implement them, the core map, add the space and page table and also the functions, the VM fault and all the as set of functions. And then also mention the synchronization that needs to be used. Thank you.