What's going on, guys? So in this video, I want to share with you nine of the biggest, most costly mistakes that you need to be avoiding if you're starting a dropshipping business. So these are going to be mistakes that I've made myself in the past, mistakes I see other people making. They're all going to be as valuable as the last one as well. So make sure you stay tuned until the end. And I can guarantee that if you avoid at least one of these mistakes, it's going to save you some time and it's definitely going to save you some money as well. So mistake number one is going to be setting yourself realistic expectations. Now, this is no fault of anybody's because it can be really easy to go on to YouTube, really easy to go into Facebook groups on Twitter, whatever social media platform it may be, seen screenshots from lots of different people making lots of money via dropshipping on Shopify. And it can lead to expectations of dropshipping being this get rich quick scheme. It's a really easy business model to make money in. It's really low barrier to entry. That is true. However, it's certainly not as easy as you probably think it is. Dropshipping definitely requires a bit of time, a bit of commitment financially and kind of mental resilience, trust me in the last since 2016, I've been doing this. There's been some horrific nights of just worry, basically not being able to sleep at night because I've been worried about how I'm going to pay that Facebook ad bill or what I'm going to do about certain customers that have got chasing me for certain orders. So it's definitely not a case of putting a store together, running some ads for a product and then walking off into the sunshine with millions of pounds is certainly not that easy. So if you don't make any money in those first couple of months, don't be disheartened because if it really was that easy, everybody would be doing it and everybody would be making lots of money. But the harsh reality is that I would say 90% of people probably don't even get that first sale. A way of kind of summarizing this point is think of dropshipping as like a marathon, not a sprint. If you try and do everything way too quickly, you're going to cut corners. You're going to fall over at the first hurdle. You're never going to get to that finish line of actually meeting and making your goals. Mistake number two is automatically thinking dropshipping equals AliExpress. Now, I can understand why people make that judgment because I myself, I mentioned that AliExpress a lot on this channel. However, AliExpress is not the be all and end all. It's somewhere you would go to to see if a product actually exists. But then in my opinion, you should be doing all you possibly can to try and source that product elsewhere. When I say elsewhere, I basically mean agents. So CJ dropshipping is a great one. They'll take care of a lot of things for you and they'll make sure the products is of somewhat decent quality. They are usually a bit more expensive, but they tend to do exactly what they say they're going to do, whereas AliExpress can be a little bit up and down to be fair. To AliExpress, it has got a lot better since they've kind of got COVID under control. But again, I would still try and source your product anywhere else if possible. So you go to places like CJ dropshipping. There's three or four different agents that I've worked with. I'm not going to name them in this video. However, if you do a Google search for dropshipping agents, you'll be able to find them pretty quickly. And what you can also do is try and find them locally. So if you're watching this in the UK, go into eBay, see if you can source that product. There's a lot of people selling products on eBay that are also on AliExpress for two or three pounds more expensive. So you can definitely make it cost effective. However, this is a little bit more difficult to set up because you do need to kind of get the supplier on eBay on your side. Not many people will be that happy about you reselling their products at a higher price. However, some will be it's just a matter of striking up conversation, asking the question and seeing what happens at the end of the day. They can only say no. Number three is starting with too little money. Again, this is no fault of anybody's because you only have to do a YouTube search for dropshipping and some of the most popular videos with the most views. I start dropshipping with zero dollars and I made X amount. The fact is to make money, you need money to make money. Basically, with any business model, if you are on a low budget, then dropshipping probably is your best option because I don't know of many business models that require less money than dropshipping to actually get started in. You can have what comes across to somebody who's never even heard of dropshipping or never even heard of you. You can have a really professional looking business like really legitimate and professional looking and you look like you've been established for years and years. If you know what you're doing with design, working that sort of thing for less than a hundred dollars. Just going back to my original point, though, you need more than zero dollars. You would say anywhere less than three hundred pounds and you're really, really going to struggle. The only way you will make it work with that sort of money is if you have the right product from day one with the right creative out to the right audience and you start making a profit from the very beginning. This is going to be extremely difficult to do. The harsh reality is this won't happen this way for most people. So preferably the closer you can get towards that sort of thousand pound mark as a starting budget, the better off you're going to be. Number four is reinventing the wheel. I see too many people trying to do crazy things when it comes to dropshipping in all aspects of it to be honest with weird and wonderful ad creative. Sometimes they come off and they work really well. They go viral, they get lots of engagement. Most of the time they fall flat on their face unless you are experienced marketer and you understand your audience. Just stick to the basics. Same thing with the products as well. Just stick to the basics that were something simple, easy to source and is in demand and fit for purpose for a specific market. And also same thing for your store as well. I've done countless videos on store design and picking products, that sort of thing. So I don't need to make this video an hour long, but just stick to a white background on your store with black text. Go for an easy to read font and remove any kind of connection to China as well. So any kind of Chinese labels or symbols or broken English or that sort of thing needs to be removed from your store. Number five, a real important one that a lot of people don't talk about. I don't talk about it that much either. In fact, so maybe I'll do some videos on this down the line. Is tracking your income and tracking your expenses. It can be so easy to just keep funneling more and more money into dropshipping and have no clue realistically of how much money you've made or how much money you've actually lost. This was a big mistake I made when I first started again, not to bore you, but I went from basically making about 20 grand a month within three within four months. Sorry, I'm actually starting dropshipping at the time that was unheard of money for me and I just assumed that I was rich and had lots of money.  And it wasn't until I started working with an accountant and we went through the numbers and it turned out I wasn't making half as much money as I actually thought I was plus I had taxes were just non-existent. I weren't considering taxes. So it kind of brought with it this whole load of headaches and things that I had to sort out basically and just become a lot more sensible and a lot more organized. So my advice to anybody watching this video is open up a separate bank account, whether it's a business one or a personal one. It doesn't really matter to be honest, put what you are willing to lose into that account, whether it's 500 pounds, a thousand pounds and then make sure every penny you spend comes from that account because at least then you'll be able to see the balance of that account go up and down and you know everything is dropshipping related.  Point number six is not testing enough products. Too many people come to me and say dropshipping doesn't work when they've tested two products of met people who have tested this is again through nobody's fault because there's people out there that will test one product and make a hundred grand with it. However, on the flip side of that, there will be people who need to test 30 products before they make their first hundred grand. Everybody starts in different place because everybody has a different kind of understanding and skill level drop shipping is a skill. Picking products, picking the right product to dropship is a skill. Marketing is a skill. Store design is a skill. So everybody starts from a different place. So everybody's results are going to be different. The most important thing to consider to make sure you avoid this mistake is that you need to decide whether you are 100 percent committed to this as a business. And if you are, it doesn't matter if it takes you 50 products to test. You keep testing until you find that one product because as cheesy as it sounds, you are just one product away from drastically changing your life for the better. It only takes one product. Number seven is I see too many people trying to do the same as everyone else. Again, it's through note full of your own. If you are making this mistake, it can be easy to go on to YouTube, watch my videos and see some of the products I talk about, see other businesses and how they're selling it and just try and replicate them and do it exactly the same way. In my opinion, you can do that to some extent. However, to give yourself the best chances of success, you need to be doing it the same way with a spin with a better spin in a better way, if that makes sense. Because again, the harsh reality is 90 percent of people make no money when it comes to dropshipping. So if you're copying everybody else, chances are you're going to be copying that 90 percent and therefore you're going to get the same results. So what you need to do is find people who it's actually working for, copy them to some degree, but just make sure you reword everything. Different creatives, different store name logos. Don't replicate something that's illegal. Make sure you copy it or make sure you use it as an inspiration. I shouldn't use that word really copy. Use it as inspiration, but put your own spin on it and just do it better than whoever you're using as inspiration. Number eight, this is probably one of the most common ones, and this is understanding the data. In fact, I would say 95 percent of speak to of people, they have no clue what conversion rate on a Shopify store they need to be aiming for. They have no idea what the data means on Facebook. So when they run some ads for a particular product, if they don't get the results they're hoping for back, it leads them stuck, leads them thinking dropshipping doesn't work or some form of a scam. When in reality, that's just not the case. This is perfectly normal to fail on a product, but unless you understand what the data is and what it means and how to manipulate it, then you are going to be stuck and not know what to do. However, if you do understand the data, then you do know what to do next. When it comes to being successful at dropshipping, in my opinion, the proof. This is where people really prove what they're made of and how well their understanding is of this business model because for you to be successful at dropshipping, you need to understand what conversion rates are and what you need to be aiming for, how to manipulate them.  You need to know what the quality rankings mean and again, how to increase those and make those better. Finally, number nine then, probably one of the most important ones. So if you're stuck with me, I'm glad, this is waiting for the perfect time or the perfect product. Too many people spend months and months and months watching YouTube without taking any action. There's never gonna be a perfect time. If you were gonna start at the best time possible, it'd probably be about now or a couple of weeks ago because we're recording this at the very beginning of Q4. However, the perfect time probably doesn't exist. Well, the perfect time is now or a week ago, as they say. So the perfect time is now. Don't wait for whatever commitment or whatever project it is you're waiting to finish. Just get started now because the best experience you'll get running the business is actually running the business and not by watching YouTube videos. This also happens with products as well. Too many people wait or try and find a product that has zero bad points or zero negative points about it. But the truth is with every single product out there, there's gonna be negative points about it. So in my opinion, there's no such thing. No matter what products you look at, even the most successful products in the world, there's bad points about every particular product. So try not to wait until you find a product that ticks every single box. Just try and find a product that your gut tells you it's okay or that the data tells you that it's okay or potentially a product that I've featured on my channel. I stand by all the products I feature on my channel as great products. So just give them a go, dip your toes in, start with small budgets. And like I mentioned earlier in the video, you're only one product away from drastically changing your life for the better and you never know what's gonna happen.  And so with that being said then guys, that's the nine biggest mistakes I see people making as well as have made myself. I really hope you've stuck with me this long. That way you've seen all nine mistakes and I stand by what I've said in this video.  Thanks for tuning in and I'll see you in the next one.


a hoi hoi and welcome to the channel. Feeling a little rough today, so I figured I would do one off-camera with a little bit less work as well. The thing is, I've been thinking recently a little bit about how SCP drafts come across my desk on a pretty regular basis, and on my Discord server people talk about their SCP drafts on a pretty regular basis as well. And I've observed critique, and I've also observed people having trouble coming up with good critique about articles. Part of the reason for that is that a lot of people don't understand how to deal with an SCP article draft that is just bad. Now there are a lot of ways to look at this. Not every SCP article draft, let's just call it drafts, not every SCP draft is necessarily unsalvageable. An SCP draft usually has flaws. It's very rare, I don't think I've ever come across something that didn't have something that was correctable. Sometimes it's just a basic grammatical error, a couple of vaguely worded phrases or descriptions, or something along those lines. But sometimes you come across something that is so fundamentally bad. It's core level that you really are at a loss as to where to start. And I can think of a few strategies for dealing with such a thing because it has happened to me quite often. At this point, I mean I've been in the SCP community since 2014, so yeah, I've had a little bit of experience at this point with dealing with just straight up SCP drafts that are bad. First of all, understand that you are not a paid editor. What does that mean? Well, there are paid editors out there, people who will do editing work for money.  You owe them nothing. Now, that isn't to say that you shouldn't do your best if you offer to actually help someone. Should know when to cut your losses, let's put it that way. If you come across something that is just so fundamentally bad that it's going to take you all day to work through the problems, then perhaps it would be best if you moved on and just said, I give them a few things that they can fix and then move on. But secondly, sometimes you need to adjust your strategy. There are plenty of drafts where you can be like, this is what you've done wrong here. This is a structural issue that can be fixed. This is another thing that can, this is another thing that can be fixed. But at some point, you can look at a draft and say, no matter how much help I give this person, this draft is not salvageable. Sometimes, and I say this as someone who has on multiple occasions claimed that there are no such there's no such thing as a bad idea. There's just bad writers. And this is still true, but you can also get a sense of somebody's skill at writing from their draft. And if you look at an idea and you realize that this is going to take a much better writer than this to pull it off, feel comfortable telling them. So you do them no good by giving them hope that they can somehow make a difficult idea work. There's no bad ideas. There are difficult and easy ideas. Let's put it that way. Writing is a skill that requires practice. It also requires observation of other people to learn. So in a lot of cases, you'll run across drafts that are just very, for lack of a better way to put it series one. And series one isn't necessarily a bad thing. There are plenty of successful articles even in the modern day that have a very series one vibe. However, it's not the easiest way to get an SCP onto the wiki anymore. And it can be very helpful to someone to just tell them, yeah, you've read a lot of series one and series two SCPs, do me a favor, start reading series three, four and five, and I guess six now. And learn what the SCP wiki kind of expects from you in a modern article versus a classic article. And sometimes that could be the totality of your critique, not even bothering with the actual like, look, this has a very series one vibe. This is a very, this is not working. I think it would be better for you to take a break and read more SCP articles so you can become more comfortable with what an SCP article that's published today looks like. And finally, there's a couple of basic rules for SCP authors that I like to give out just for starting off. It's not necessarily something you have to hold to for forever and you should make that clear. But if people get into a habit, I've seen this a lot and I'm sure people who try to critique article see this a lot. And this is helpful to you if you're trying to write an article as well. If your SCP is a reflection of you or an author avatar of any kind that you're trying to create, or incredibly deadly, or incredibly important to the world that it's in, or the scope is far, far too wide for a piece of flash fiction, narrow the scope, don't try to create an author avatar on your first try on the SCP wiki, and don't try to create like an original character. Let's put that way. And don't make it deadly. These are very basic things you can do to create an interesting article that doesn't feel like you're trying to do too much too early. And I say that because the SCP wiki is still a bit of an elite playground to play in. You're going to have to be rated by other SCP authors. This is just the way it is. And SCP authors have a concept in their mind of what a new be author is rather than just a new author and newbie authors tend to do those things. They tend to create something that's incredibly deadly for no reason or indestructible for no reason. That's another thing. Or they try to create an author avatar off the bat, Dr. Researcher James, who is from Kentucky because the writer is from Kentucky and try to create this that is infected by an SCP. But don't worry, they're still allowed to roam the site and work as an SCP doctor because that's what they want their character to be able to do. But that's all they're doing. They're just creating a character with no nothing attached to them. It's not even a matter of who they are, what they want, and where they're from. It's a matter of only what can they do. And that is a serious mistake when it comes to creating any sort of SCP fiction. I think beyond just some basic rules for your first article, which don't always apply for going forward, once you become more established on the SCP wiki, creating a character is not just not just reasonable, it's also sort of a natural progression for people. But when but only once you've proven that you can write an SCP in an interesting way. And plus writing an SCP without it being based around a specific character often associated with the author is useful for you because you learn what an SCP article needs to look like outside of what this weird conception in your head is. And finally, just as I mentioned earlier, when you tell people that they need to read more modern articles, it's fine to look at a draft and say, this would be more work to fix than to just start on something new. It's very rare that that's often that that's true. But it is sometimes true. Sometimes it is best for them to just scrap what they're writing on and start over from scratch. This is true of some like established authors as well. It's just the truth. But learn to recognize these. This isn't then it shouldn't be something that you're suggesting to people all the time, but it is something that you should keep in the back of your head. Look at an article, evaluate it realistically, understand what it is. And by the way, these are good skills for you to have for yourself as well. Anyway, that's it. Thank you very much for watching and listening. As I said, I'm feeling a little bit under the weather, but I think I'll be all right by Thursday. Just a little rough. I don't think I got enough sleep last night. I look terrible. But I would like you to hit the subscribe button and then hit the notification bell next to that so you're notified when I upload new videos. And then head on over to patreon.com forward slash decimarian and pledged any level like everybody here on the screen already has, including Sinjeriki, who is pledged at $100. It is nice to know that I'm not alone out here and I will see you all again on Thursday.


Marriott Espresso Press Design. Thank you for visiting. Today I'm going to do a little break from the tag series Because I ran across an exciting technique I want to share with you and first a little show and tell and Then we'll get started Craft show Craft show item these cute little purses Adorable they hold a little I'm going to put Probably Hershey nuggets in there, but they also hold a gift card so a little Velcro closure there which I might have to go get different velcro than Dollar Tree because Doesn't appear to be holding very well But they are Super simple to make I will probably do a post and A blog post and post the video where I learned how to make them No cutting just scoring and folding and gluing So those are adorable Okay on to announcements Senior Susie stamps did a Really nice collage this week last week the two-part series where she She doesn't collage very much, but she did very well I thought and it was kind of a unique idea where she Used scraps and stenciling So I thought it turned out lovely and then this week's um Technique I'm going to show you here is How to age any paper? Let me get my Things straightened up here because some of these are already done and some aren't Okay This one's not done So we all have it those shiny images Magazine images cards whatever But this technique is how to age Vintage any paper Using wax And I have been playing around with this all week because I thought it was so cool This is from a glossy advertisement or Periodical I'll show you in a minute here This is from a magazine Take that Make it look like 1950s for sure This is from the same Periodical I Tried a book page and this is from my glossy book that I showed you a few weeks ago or a month ago or so and um very glossy pages So you don't even have to make them look vintage if you don't want but You can at least take away the gloss and That's great So I was very excited about this And it is not my idea. So I'm going to give credit where credit is due and That is from willow 57 sander robinson I'm gonna post a link to the video. I Like you to head on over there and subscribe to her So let me do a brief, you know, we all have them she used So that I don't copy I'm using some different types of items than she used Um, she used greeting cards We all have them Nice cards, but you know Some of us don't like the bright colors But she also shows you how to get rid of text, which is sandpaper but You know, we all have them they don't necessarily bother me, but If you want something vintage And you think well, okay, this is nice, but it might not. It's not doesn't look too vintage So I'm going to show you how to vintage age any paper using her technique So here are some other this is the Periodical where I took one of my images from I've used magazines Um Here is the here is this I have these lovely butterfly books That have been sitting around forever tons of Butterfly images that I can use Never Never knew what to do with them finally. This is my first First and second one here. I also did this little little card so There's some more So today I'm going to be using several different things everything except greeting cards So I went to Goodwill found this lovely book With these lovely images and it is not glossy at all. However Most people would say oh, this is way too bright way too bright and Way too modern so This is what you can do to um Vintage these up Okay so What you'll be needing Here's some more pages.  I just backed mine on index cards You'll be needing a heat gun an iron or a candle Some stamps or glue Some stamps and glue and that's about it. But if there's anything else, I'll let you know So I am going for your sake. Oh And you'll need your cover paper she use packing slip roll tape You can also use tissue. I use tissue Tissue is actually my favorite. I also use Regular 20-pound coffee paper This is tissue This is copy paper This is tissue. I did use her packing tape on one Maybe this one is packing tape or the one thing. I didn't try which I'm going to try is the other the separation from your napkins So and that's another one. I'm going to try today, which is the very bright napkin So here is for your sake. I have these already stamped And I'm just going to do one for your benefit and then I'm going to show it off the camera set up the Everything for process to and then I'll turn it back on so this is tissue Samt and the image from the book This one I particularly particularly wanted to show you because it's a magazine image and it's tissue and Just to age it on its own even if you don't want to do the wax That's that's aged so you don't even you can just leave it with tissue and it looks fine, but Wait until you see the magic This one is Copy paper and I'm going to do a magazine here with you Which I already have it glued and I'm going to show you two techniques if you have your Scrapbook paper that you don't like is too too bright You can add that and and on one of my magazines. I use some very bright Scrapbook paper along the edge here to cover text like this So another thing you have to be aware of is that what is on the back might show through I Don't know if you can see that, but there's a little bit of text That's showing through because this is a magazine from the opposite page is Going to become a little bit transparent as You apply the wax, but usually that's not a problem and If you don't If that's going to bother you You can simply take little piece of sandpaper And just blur it out a little but be careful because this magazine is so thin You think you're going to go right through it in two seconds So be careful and just look if there's something like you know, I might try to Remove that box or just blur it out a little so it just looks like a color Something like that, but generally it's not the problem you might think it is so Don't worry about it too much So I'm just going to put a little tear edge on here glue this down Do the stamping? Glue down my top sheet do the stamping and then we'll get on to the reveal of All of them. I didn't do that part because I want you to see the Surprise on camera a little bit of that, but Just trim trim that off and then I'll do As I said, I prefer that I really prefer the tissue look myself But it depends on the image depends how How much you will really want to obscure it or bring it out? so if you really don't if you want it to really fade into the background I Would use the Copy paper if it doesn't bother you then use away. I still need that Okay Doesn't bother you Then use something lighter the tissue or perhaps the napkin Yeah, and if your roll tape doesn't fit which it's not I'm gonna I Did a little tear edge and I'm just gonna have a little overlap But that didn't bother her and it doesn't really bother me either.  Oh What would be kind of like a ghost? But that's another thing You might use that to your advantage Maybe you don't want to bring out the entire image And there's some text or something that you want to hide So don't glue that spot and then it won't become transparent as transparent Okay, so you're just gonna cover that Like so Nice and secure Trim it off Hope everyone's doing well I'm jealous my one friend on a beach vacation although it's It's been just as rainy There probably as it is here, which is getting to be quite depressing It's been raining now for probably almost three weeks And I decided that tomorrow I'll probably do two videos because this is kind of a bonus But it might not be till Wednesday because I've decided that rather than sit around Being depressed about this weather might as well head out and do my Do some rainy day photo shoots, and I hope I didn't do that, but I did or no did I? Maybe not. I always have a tendency to turn my Index card upside down instead of right upside up, but it doesn't matter just Clip off the top line if I have to and I might have to Get in that edge Just to get it more straight, but there you go. There's your The next step and now for your sake again, I'm not going to do a lot of stamping But I'll do some here and let me get it I'll do some aging and Stamping I'm gonna use gray Don't really like black Really want to use black Just do this one and take this this stamp is I really wish it wasn't this size, but This stamp is a really nice quality stamp. We happy with it. I Was hoping I would have the same luck yesterday That good will but I didn't So let me just think I put that probably should have went the other way, but oh well You get the drift Clean it off And I'm just gonna go probably around the corners here Lately. Oh, actually, that's brown It's not gray That's a spresso It'll still work Lately go on the corners here another section And I'm just randomly Not stamping in this whole square shape so that I can get More random just see if I get a ghost there on the top and bottom my gas a little bit So anyway, it's been rain rain nothing but rain We finally Snuck in dinner last night outside and then sure enough within an hour. It was Thunder and lightning, but at least we got to eat outside That's That's depressing to me. I Look forward to summer. I like every season, but I Look forward to summer And I spend as much time as possible Soaking up the sun. So there you go. There's the stamp We get around the edges here a little bit and I should be going over the center of this a little bit with antique linen, but My antique linen is finally running out so See if I can hopefully get some out of here and Age up this center a little bit Please get that. I mean, I I can barely see this so I know you're not going to but Just going to try to avoid the white as much as I can using walnuts being Aged as aged and that's vintage enough, I guess Okay away Okay, I will be right back in five minutes Get set up here and then we'll do the second part and We can all see the reveal together Hopefully I didn't lose my oh It's that one. Okay the bird the magazine and the napkin and another magazine I'll be right back in five seconds Hi everyone me again So I changed my setup. My iron is nice and hot I want you to know that she used a heat gun, but now it's time for the candle And you'll need a blotter parchment paper and something to melt your wax Which I use an iron you all know I I've shopped a little for craft irons. I don't know.  I'm gonna blot it up here in a minute Soon as I get this other side Maybe my iron wasn't as hot as I thought it was Here we go You should do it Hopefully and as you know, I use a digital to blow up my excess wax and then I have By the time I'm all done waxing I have a new vellum sheet to use for something else. I always use a digital For my blotter. Here we go. I hope you can see that scrapbook paper showing through and the magazine and there is a little more Opaque line from the overlapping tape, but that doesn't bother me But that is awesome Make any magazine vintage So cool Okay, now I'm going to do the bird on tissue and y'all I kind of like tissue the best Although it depends on the image So if you want like a 1950s vintage, I would probably use the copy paper or the or the roll tape But if you like your image, it's just not It's vintage as you would like it or it's just Yeah, it's just a little too bright. I'm going with And that gets hotter much faster So put that up. So there you see I'm getting a vellum Getting a vellum digital as I go Let that a little more make sure I'm in camera here and I know this video is Probably going to be a little longer. I hope I'm not shaking the camera as I go But that could be blotted a little more, but there isn't that gorgeous Love it Love it Okay, now the one Now the one I don't necessarily think needs wax But I'm gonna do it anyway Just so you can see This is getting super shiny. So you're probably gonna get a glare here until it dries Let me get the entire thing That is too cool And I don't I can't remember what was on the other side so I can see if it's Showing through Wax on that one. Look how much of that That's hot It needs blotted more. Just gonna let that cool a second That is gorgeous and I should have Maybe done by stamping in dark, but there it is Still looks vintage though Although I kind of lost my stamping, but oh well Maybe I should have used black on that one But that is awesome Okay, what's next? The napkin Where's my new one go? Oh, there it is. Okay, that's the first one There's the bird There's the other magazine The napkin. Let's see what happens to this bright thing This one has the copy paper It's a pot. Oh, that's nice. Oh, that's nice Just muted it That'd be lovely for a nature journal That's nice. Got a sheet here. That is very nice I kind of find that some of the brightest things You might not want bright or napkins. Don't let me forget one thing To tell you here Don't worry about if it soaks through to the back of the index card the wax that is Because you can still write on it I think I Think I have an example here where I wrote on the back So you can see that. Oh, yeah, that's that's gorgeous. Look at that I think that might be one of my favorites. Look at that. That's gorgeous So that went from I Just bumped the camera. Sorry that went that went from that to that That is fabulous Love it. Love it and see it so through I would Keep going until it soaks the whole way through just to avoid that splotchiness but Here I'm gonna show you here in a second. Let me get this out of the way There see I wrote on that You can write on that with ink if your pen doesn't go at first Just keep going it will Don't worry about it. You can write on it. You can stamp on it it's not as Doesn't become as waxy as you might think it still retains somewhat of the paper quality So, okay, let me get this out of here Love it. Love that Love that. Let me see here. I can't really see That needs blotted some more but I can't really remember what was on the other side of the paper But it doesn't appear to be showing through love that too Love the bird, of course, that's just from the book and it's just some Original color here There you go, that's the original Underneath my iron I'm I'm posting I'm posting the photos of these images before they were covered so that you can See what they were and then what they became There's the bird and their These have to be placed under a book as well and there's the one we did today There's the lavender and the scrapbook paper So, okay, this is going to end up being about 45 minutes, but I think it's worth it That is absolutely Love it. Love it So, thank you Willow 57 Sandra Robinson Please head on over there and give her a subscribe No skin off my back to subscribe to someone And I do it all the time. I think I'm Subscribed to over 450 channels at this point, but Head on over there and be kind and do that Because that is as I said, thank you for Bringing some excitement back to my craft room on this rainy summer fabulous technique especially if you're doing jump journals and you're Harvesting all your images from books and things like that Especially if you do not like the glossiness of magazines, which I do not like you can just cover them with tissue as I showed you or You can do the wax Again, don't worry. You can write on the back Okay, I'll see you probably Wednesday everyone and we'll get back to the cake series, but This is fabulous. Thank you again, Sandra. See you next time. Bye


Okay, hi everybody. So today is our 10th recitation. We're going to go over the TLB and other space management. As usual we're going to just like review what we covered last week. So last week we've covered the physical memory management and we've said that in order for you the first step for implementing the physical memory management is to define your core map. And core map is basically a data structure that keeps track of the physical pages and formation. We've also went through when should we initialize the core map and we've said that the best place to initialize it is before the very first K-malc call. We went through all the bootstrap functions and main.c and we know that the first K-malc call is located in proc bootstrap. So you need to initialize your core map before that and after the RAM bootstrap. Since core map is required for the K-malc then allocating a memory for your core map should be done manually. So you cannot use K-malc for it. So you should end up with such a physical memory where you don't have leaked memory. You have the exception handler first that comes first and then the kernel. Once we reach the RAM bootstrap we have these two regions in the physical memory. Then we need to initialize our core map the way we've presented. So previously some people used to just like use the dump VM way just like or postpone the core map initialization into the VM bootstrap and that's too late. Which means from the time that you start the RAM bootstrap to the point where you call the VM bootstrap you're going to leak memory because K-malc going to call allocK pages. AllocK page is going to call the RAM steel memory which leaks memory and there is no way for you to retrieve such a memory in between the kernel and core map that's going to be allocated. So the best way to initialize the core map as we said is before the very first K-malc call. We've also presented the core map structure and we said that the core map basically should have entries equal to the number of pages that you have in the physical memory. So this for example, this is how it should map. So for example the first three entries let's say should be reserved for the exception handler kernel and core map and the remaining should be the free memory that the user can use. So we've also mentioned that so yeah so they compute the number of physical pages in memory and you need to note that the number of physical pages in memory it is fixed but it is not known at the compile time it should be retrieved or the RAM size should be retrieved at the runtime and that means you need to initialize your core map later on. It shouldn't be just like of a fixed size at the compile time. How you should compute the core map size basically you just like see what is the size of your core map structure and then you multiply it by the number of pages. So as we said if we have a 4 megabyte of memory that given 4k pages we're going to use that mean we're going to have 1000 pages which mean 1000 core map entries. So you identify the size of each of these core map entries and then you multiply it by 1000 you'll get the core map size and then you can allocate it manually. How should you allocate manually if you go through the RAM. Let's see you will see all these first physical address pointer and last physical address pointer. How does the core basically so as we said the dump VM steals memory. So we don't want that if you do not initialize your core map and so once we call RAM bootstrap up until VM bootstrap if you put your core map initialization in the VM bootstrap that's what we don't want because the dump VM will basically steal all that memory while it is initializing all the data structures used in these bootstraps but later on when you want to really allocate memory for your core map you're going to do it the same way dump VM do it which is you're going to again steal memory but it is not a stolen memory because you have a track of this memory. So you're going to just like adjust the first address and make it point to the point where the core map ends and from the first physical address to that last physical address this is with the free memory that you're going to manage through the core map. What information do we need to keep in core map we said that you need to keep the page estate for now those you only need the states of free or used later on when we go into the swapping you need to know you need for example mark the kernel pages as fixed that mean you should not swap them out and the free pages those are the ones that you need to just like having other states like dirty or clean but for now up until the second checkpoint so you can use just like free or used because there is no swapping and you do need synchronization for your core map we've also discussed the how MIPS MMU works or how the physical address space versus the physical memory so we've mentioned that for the physical address space we have three or four regions defines first we have the k usag which is the user segment we have the kernel segment zero kernel segment one and kernel segment two we know that the user segment is TLB mapped and cached we also know that the kernel segment zero is a kernel memory that is cached and it is direct mapped so there is no TLB involved here and to translate basically you just need to subtract the ox 80 million from the given virtual address while for ksig one is again the same it's a kernel memory that is directly mapped but it is uncached why because it is a read only memory ksig two this is not used but it is TLB mapped not used in OS 161 but it is a TLB mapped and cached so what you're really concerned with is ksig zero kernel segment zero you don't really need to worry about kernel segment one and two the last thing we presented is after presenting this picture we know that why we shouldn't swap out kernel pages because there is no TLB that mean we cannot keep track of these pages if we swap them out there is no way for us to know that where do they exist and why allocate pages has to allocate and contiguous physical pages is basically this function is called by the kernel again there is no TLB involved or TLB fault so this is why the contiguous kernel virtual addresses has to just like map to physical addresses so in the user segment since you have a TLB that mean so for the user segment when we allocate pages it's going to be contiguous in the address space but for the physical memory it could be just like sparse or just like allocated in different regions in the physical memory why is that because we can't keep track of them through the TLB but with kernel pages since there is no TLB then we cannot keep track of them and that mean whatever contiguous virtual pages that we allocate for the kernel it has to be contiguous on the physical page otherwise we don't know we really don't know where each page is located in the physical memory so we only get the starting address and we know the size and things will go on so this is what we've discussed last time any questions on core map okay so today we're going to discuss the page table and user address space and TLB management and fault how to handle the TLB fault and VM fault so currently we are we should be everybody should be implementing the second part which is address space and TLB management the user paging and our next deadline going to be Friday after this one April 22nd so next week most probably going to be our last recitation but I'll confirm that through the discourse so as an introduction to the page table so let's just start by step by step to understand what really page table is so we know that every page is 4k and we also now that every virtual address is 32 bit so how should the translation happen basically for the virtual address we need to divide the virtual address into several parts one part going to be the virtual page number this is the VPN what we call a VPN and the remainder the remainder is the offset into that page also we should know that every virtual page should map to physical page and all addresses within a single physical page should map to the same physical page so sorry every all address in the same virtual pages should map to the same addresses and or in the same physical page so if we how should we divide the virtual address we know it is 32 bits so we're going to use the top 20 bits as the VPN and the low or bottom 12 bits as the at the offset so we're going to use the VPN to just like translate and get the the physical page number once we get that we can add the offset to it and we'll get the physical address so now what is a page table page table is the data structure that quickly maps a physical page number into page table entry what is a page table entry page table entry is just like a structure keeping track of all the virtual pages so you can think of virtual page sorry page table entry as an equivalent to a core map core map handles the physical page physical pages while the page table entry the PTE handles the virtual pages so since it is equivalent to the core map that mean or a core map entry so page table is equivalent to a core map page table entry is equivalent to core map entry that means so since the core map entry has all information that tracks all information about the physical pages that mean our page table entry has should also have information for tracking the formation about the virtual pages so every process should have its own page table and there is only one page table per process why because the virtual address could be translated differently for each process and how should we compare page table so per table as I said equivalent to core map it is also equivalent to similar data structures that we've gone through which is file table so file table maps file descriptor into file handle while for example process table also maps a PID into process structure the same thing goes with page table page table maps virtual page number into page table entry which is again kind of structure so what's the requirement for a page table so this data structure what should its functionality be so when I give that page table an address and an operation it should tell me whether this address is valid or not or if the operation on this address is valid or not and then it will retrieve it should retrieve if it's valid then it should retrieve the physical address for that virtual address any question on the page table so page table entry page table entry as we said is a single entry storing information about the virtual pages what information do we need to maintain in a page table entry so this is depending on your data structure that you're using for your page table for example if you're using flat table or flat page table then you don't need a virtual page number inside your PTE why because the virtual page number should be the index into that flat page table while if you use list for your page table then you do need to maintain the virtual page number because whenever you want to just like retrieve a page table entry you should go through the whole list and compare the virtual page number with the one that you have so if it's a list you do need to maintain the virtual page number in your PTE structure you also need to maintain physical page number or location on this so the physical page number is nothing but so since pages 4k aligned that mean the physical page number is also the physical base for or the starting address of a page and once you retrieve that you need to add the offset you get the address inside that page so this is so physical page it could be a physical page number or location on disk for the second entry that you need into the PTE structure yes so yeah it's going to be one page but the physical page number is equivalent to the physical page base which is the starting address of the page and once you retrieve that you add the offset to it and you'll get to your address yes the same thing goes with the virtual page number so again this is the base of the virtual page it's not just like a regular virtual address you also need to maintain the permission which whether that page the permission of this page is read write execute you need to maintain the state of this page so here is a lot of questions pops up because this year we're requiring on demand paging which means that whenever you define a region I'm going to go through with more more details but whenever you define a region you should not allocate the whole physical pages for that region you should allocate only the virtual pages for it but you shouldn't allocate the physical whenever the VM fault happens the allocation should happens at the same time and that's going to save a lot of memory and this is what we call on demand allocation sorry it's not on demand paging the more correct word should be on demand allocation so that mean what you need to just like maintain in the state is first of all is that page so what sort of so is that page valid so whether that means if the page is valid it has a physical page entry just forgot the okay I'm gonna do you know the states of the pages I just forgot them just like it got confused no no no it's I think uh is the page located so oh yeah sorry I yeah yeah no no no I got it yeah oh sorry because with on demand allocation I get confused so there are two states that you need to maintain first of all is that page in memory or on disc there's the first one so you should know the state should maintain this whether the page is on memory or on the disc and also it should maintain that if the virtual page is allocated is it valid or not that mean does that page has an physical page or not allocated for it or not so this is the state the reference basically this is what you need to later on extend for the third checkpoint which is the swapping depending on how you need to handle the pages and page evictions and stuff like this so for example the reference will tell you has the page been read or written to recently or not and this is how you should decide whether to swap out a page or not but for now what you need to really be concerned with is before the virtual page number physical page number and permissions and the state but keep in mind that you're going to extend your structure or the page table entry later on so let's go through any questions on the page table entry yes oh so I think so yes you do need permissions just don't try to implement based on the checkpoints because that's not yeah but if I were you before I would prefer just like implementing this because later on you don't want to just like don't implement it and you run the test it doesn't go through and then you're just like you have two days left and you're still not doing so it could have some dependencies or stuff like this so any other questions on the page table entry sorry okay there is no no no so that's different so page being in memory that means you have the page in memory but if you don't have the page in memory a page fault would happen that means the page is allocated but it's on disk the the valid thing is so let's say once you allocate a region or you define a region and then you load the region so previously dump vm will just like if I just like allocate the data region I will also allocate all the physical pages for it so just like once you allocate the virtual pages you allocate the physical pages at the same time but what we're requiring this time is on-demand allocation which means when I define a region then you only define it in the or allocate it in the virtual part but you do not allocate the physical part for it why is this for example let's say in your code you have an array that is really big and that your memory couldn't handle or let's say you define an array that the user doesn't use throughout the the program so that means you're allocating or wasting memory why should I allocate pages physical pages for that array that is not never been used so I'm just going to define that region whenever a hit happens on that array then I'm going to vm fault will be will happen and then I'm going to allocate the physical part yeah well this is one of the problems yeah and segment yeah yeah you cannot you don't have a variable number of segments and this is what you need to implement this time okay so any other questions okay so let's go through the page table designs so you have several options for your page table one of the options you shouldn't use because you're going to run out of memory which is flat page table flat page table basically you allocate an array that holds all the pte's for each process and that means so you have the virtual address which is 32 bit we're gonna just like dedicate the 20 as we said the top 20 bits for the virtual page number that mean you're gonna have two to the power of 20 virtual pages and that's what means if you compute two to the power of 20 means one million 48 pages so that means if you use a page table a flat page table then even though you're not going to use all these pages but you're going to allocate memory for that and in os 161 you're going to run out of memory so you shouldn't use the flat page table and in flat page table as we said the vpn gonna be the index into the array that means in your page table entry you shouldn't define a vpn this is just i'm giving i know you shouldn't use this but i'm just giving you information so we can compare them and since it's an array and the vpn is an index into that array then we can retrieve in big o one or constant time we can retrieve the page table entry and as we said that most of the entries could be unused in the flat page table the other option is using a link list for the page table so that means you're going to define every page table whenever you need it and that means you're going to have exactly the number of pages that you're using you're not wasting memory but the problem with the link list page table is just like whenever you want to retrieve pte you need to go through the whole list and that means big o n time searching for each time you want to just like retrieve a pte but at the same time all entries are used in the link list yes sorry i didn't understand sorry yes so does that matter with what you want? so that's what i was going to say it doesn't matter okay you can use it so the easiest way to implement a page table is going with uh link list uh while you also have the more advanced one that is you could use it later on maybe uh depends some students uh i took to some student that uh did four level not even two levels so i'm gonna explain the two level yeah that's gonna be a difference because because it's still it's a constant time retrieve so it's four level that means four big o of four so that's constant time yeah so the in terms of space the link list gonna do better but in terms of time retrieving it's gonna do worse than the page table the two level page table okay no for always 161 no for always 161 uh link list is totally fine recommended if you really don't want to get too much complications uh yes just do what you're gonna save time maybe for me i would just like if you ask me what should i choose i would go with list for now once i'm done maybe i'm gonna i want to just like consider improving the performance of my kernel by implementing the two level page table but yeah for now since you have two weeks uh if you prefer just go with the link list and it's much easier so we have another uh third implementation for the page table which is a tree like uh page table so we're going to discuss the two level page table while some people would do more just like multiple levels so this means you're gonna build a tree like data structure mapping vpn to the pte so what what happens let's consider the two level page table then that means as i said the virtual address is 32 bit we're gonna we divided it into 20 bits for the vpn while 12 bits for the offset then we're gonna do again divide that 20 bits into 10 bits and 10 bits and each one of them uh each 10 bits gonna just like point to each level so since we have two level page tables the first the top or the first uh 10 bits gonna point to our first level uh page table and then the next 10 bits gonna point to the uh uh second level page table so what does that mean that means so i'm gonna explain how the implementation goes for this so this is how the two level uh page table should look like so as you can see here we have the virtual address so the first uh 10 bits we call it directory second 10 bits gonna be the table the third 12 bits gonna be the offset i'm gonna explain why directory and table so this first level page table you need to allocate it so this has to be allocated and since it is 10 bits then mean two to the power of 10 that means 1024 entries for that table that's what i need to allocate at the beginning so whenever i'm gonna just like for each entry into these uh page table uh so this is gonna be just like an array of pointers pointing to another level of page tables so for each entry that points to another level of page table it only will point to the base of that uh page table and then from the second 10 bits we're gonna get the index so for example if this 10 bits points to this entry then this entry should have a pointer to the second level page table which is the base uh it should be the base physical uh or virtual address of that second page table of or the base of that page table and then uh using the second 10 bits in the virtual address we can uh we can allocate or uh know which index into that table should we uh retrieve so and since we have two level page tables so we're gonna keep the uh page table entry structure at the leaves because it looks like three that means the first level page table should be array of pointer while the second level page table should be array of structures of pte structures and here where you should have all these information about the virtual page which is uh you should have the physical page uh uh number and permissions state and everything else so once we retrieve the physical page number that will point to the base of the physical page in the physical memory that mean the the beginning of the physical page how we retrieve the address that we want in that physical page is by adding the physical page number with the offset which is the 12 bits in the virtual address and we'll get into the address the physical we'll get the physical address of that page of that virtual address so this is how the uh two level page table uh works so what are we saving by using two level page tables what we're saving is basically so this page table the first level page table we do need as i said we do need to allocate it so that's fine uh but for any other pages so if the page is used at that point we're going to allocate another page table for that entry if it's not used uh we're not going to allocate uh uh a page table for that entry that mean we're going to save a lot of memory so we're going to allocate the second level only if the entry in the first page uh in the first level uh page table is used otherwise we shouldn't allocate the second level page table so whenever a vm fault happen on this you're going to allocate the second level of uh virtual base uh the second level page table and then uh you need to using the second the second 10 bits uh and the virtual address you need to allocate that index in that array and then let it point to the physical page so this is how the two level page table should work uh so as we said each page table is two to the power of 10 and if we multiply it with four bytes because it's holding addresses or pointers then we're going to get a 4k which is still saving a lot of space and retrieving going to be in constant time so constant number of lookups going to happen uh first translation um yeah so space usage depends on the sparsity of address space but better than flat page table and worse than link list so this is all about the page table and page table entry any questions okay so let's go to the user address space so we should be familiar with this user address space basically have several regions we have code we have data heap stack we could have more regions uh that we could just like load from the l file so the code and data the heap should come somewhere uh so as we know that the heap should grow upward while stack should grow downward and where should the heap be is basically uh you should keep in mind that the heap should be after all of these regions uh why because why because if we allocate the heap somewhere let's say between code and data they will hit each other since the code and data are fixed regions but the heap and stack are not fixed regions the size could change so we know uh the stack where should it be located for the heap we need to just like you need to make the calculations by just like figuring out where's the last region that you defined and then you define the heap over that yes during or after yes you still yeah after because you need to just like yeah you need to load all the regions and then you can initialize the yes but you still need to call as defined region for the heap because you still need to set permissions and all of these stuff so it should be it should call be as defined adder space structure so it is defined in adder space dot h the header file what information do we need to keep in the adder space structure so first of all you need to keep information regarding the regions so where does each region start what's the size of each region what are the permission of each region whether it's read only write only or read write or execute sorry for the stack and heap region so these are special regions why because the size is not fixed may change so you need to just like handle those after you load all the regions of formation from the alpha and also you need to keep a page table pointer so this is where you keep the so if you see here there is a pointer which is a page table base you need to keep that pointer into your address piece structure and this should be your page table pointer so through the physical address you can just like using that pointer and the physical page number or sorry virtual page number you could allocate which index you need into that page table or the if you did it into just like to if you used the two level page table as your data structure so for adder space interfaces so we've gone through the interfaces several times but these are the ones that are important so regions setup how should we set up regions using the as defined so if you remember in the last lasso station or the one before we went through the load elf dot c so the load elf basically first of all it will call let's go through it okay so if you can see here and the load elf function first we're going to loop through the regions go through the list of segments and set up the address space so here we're going to go through the regions read the regions from the elf file and then call as defined region so what will what will that read give us is basically at what address should that region start what is the size of the address so this is the address where the region should start this is the size of the region and these are all the flags which are set for every region so for data heap stack we know that it's all read write but for the the only difference going to be with the code region which should be only read only it shouldn't be right so this is the as defined that you need to implement so please remember that now that your vm should replace the dump vm that mean after you implement all the other space interfaces if you run if you're done with the assignment to then if you retest your assignment to using your vm it should pass you shouldn't get errors so that mean you need to re-implement all these functions or interfaces either re-implement or really implementing them because some of them are just like do nothing in the dump vm so we're going to call the as defined region to set up the region and then to load the region we're going to use as a prepared load as complete load why what are the what are important about these functions so for the code region when you define the code region you're going to set the permission as read only that means later on if you want to load the content from the oil file you're going to need to write into that segment but since you set it as a read only then you're going to get a vm fault so what are so these two functions solve the problem for you which is and these two functions or as we said previously that all the as function are only called by the kernel the user has no access to these functions so whenever as a prepared load is called that mean you need to reset all your permissions for all the regions as writable so that means you can write into these pages you should also not only overwrite but also you need to keep a backup of what was the permission before you make the permission as write so once you call as complete load you need to just like restore the permission to what it was previously so this is why these two functions are important and what they should do yes load this is the only place no so after you define the segment so so yeah after we as define region as you can see now the next step is as load and what will happen next now actually load each segment so it will keep loading using the load segment once i'm done loading so it's a for loop that means it will load all the content for every region once i'm done then i'm going to call as complete that mean you're going to restore the permissions to what it was before i think so yes so so yeah you need to restore the permissions to what it was and this is why we use as a prepared load and as complete load and so now you should know what you should have into these two functions the last function which is as activate so whenever a process is using a cpu then the tlb gonna have the virtual translation for that process from so it's going to have translation for that process virtual address to physical addresses so what does as activate do is basically it should just like clear the tlb for you so you could do it some other way just like if you want a more advanced way of doing it is just like you can keep just like a backup if you want of what was the tlb entry because if you just only clear the tlb that mean next time that process a context works happen and that context comes back to the to the cpu then all the vmful is going to happen for all entries so the basic way is just like clear the tlb you want a more advanced way just like try to have a backup or think of an algorithm for just like how should i manage these the tlb and make the performance of the process better so this is what the as activate should do basically handle the context switching by clearing the tlb now any questions on the address space okay so the last thing we have is the tlb which is translation like a side buffer so this is a cache that is used by the hardware which is the mmu which is part of the cpu so it has we do have only 64 entry per core and each entry is 64 bit size so this is how it should look which is the first 32 bit so we have two 32 bits the first one the first 20 bits is the virtual page number and the remaining 12 bits are unused the second 32 bits basically is the translation of that virtual page which is the physical page number and we have some unused bits while we have three flags here first the first one is no cache you don't need to worry about that the second one is tlb low dirty and that doesn't have the meaning of dirty which is just like as we have it in the for the swapping what dirty mean just like is this page writable or not so if the that flag is zero that mean this page is read only while if it's one that means it is also writable read write the valid is basically will tell you if that entry is valid or not or if this page is valid or not no it tells you if so yes I think so I believe yes should tell you but I need to I need to double check this if it's really the same as the one yeah so the valid that I told you you need to have it in the state of the just like when you define your page table entry you have that state you should have the valid which means if you have the page table allocated or sorry if you have the physical page allocated that is equivalent to your virtual page but that one I need to check if that one is also the same as the one that we have in the page table entry so you have a three types of okay we have two minutes left so we have three types of tlb we have vm fault read and vm fault write and then vm fault read only so the read and write will basically tells you okay you have an entry you have the tlb entry oh sorry there is no tlb entry for yes there is no tlb entry for that page if the vm fault read and write happens um but for vm fault read only so keep the difference in mind that for vm fault read only you have the tlb entry in the tlb but the dirty bit is set to zero that means you're trying to write into a page that is read only so let's just like summarize what should a vm fault basically does or do is check if the fault address is valid so we have all these regions in the address space so we have a lot of undefined regions here so this is what we mean if the page if that page address is valid or not so if the page address doesn't fall in a defined region that means the page address is not valid then you need to check the page permission so if the page address is valid you need to check the permission so am i trying to write into a page that is read only or not for example um check if uh it is page fault so this is another thing the next thing you need to do was you need to check if there is a page fault or not that means if the page is allocated then is it in memory or on disk if it's not allocated then you need to uh allocate it as needed so and once you do all of this you need to update the tlb entry with the with the with that with these addresses so few points just go through we have a lot a set of functions that is vm or tlb read tlb write you can find them in kern include arc maps i think arc maps include tlb.h you have a set of functions that you can use to manage the tlb which is tlb read write prop uh also um what else i think that's pretty much it pretty much it so yes so this is it also for the slides please once i whenever i post the slides the slides gonna not gonna be this exactly the same i'm gonna i'm gonna update it because these slides i just made them when every week i just just like on monday or tuesday i start creating these slides so check them when i post them because it's gonna have an updated information or more information so thanks for coming and good luck with the second checkpoint and see you next week