Welcome back to my channel or if you're new here, my name is Steppy and today I'm going to be filming a loungewear haul for you guys I did a huge loungewear order from a pretty little thing who sent me all this stuff kindly So thank you so much But basically I've been either living in workwear or loungewear lately And it's the main thing that I've had to look forward to is like what I put on in a day I feel like it really affects my mood if I have something cute to wear or If I have something new to wear so whether you guys are on the lookout for something new or you're in the lookout for some Inspe from the things that you already have. Hopefully at this haul will give you guys a bit of info So I will start as per usual and my blogger style The first thing that I'm going to show is the item that I'm wearing. I am so obsessed. It is this a nude Ribbed detail kind of long sleeve Top it's meant to be like a top but it can also be like a dress as well I want it with nude shorts underneath and you guys will see in the trial as well And I've just paired it with some gold jewelry. They have a matching trousers to this But unfortunately when I did my order, they didn't have it in my size So I'm gonna keep an eye out for a restock of the pants because I love the combo of wearing kind of matching sets I think it makes the outfit look put together and effortless You didn't have to do a lot in order to make this outfit look cute So yeah, and how soft it is I just feel like this is so comfortable to be sitting around in at home with and I could even wear it to work I think it's one of those pieces that you could use both at home chilled vibes or at work with a nice skirt tight And boots and you could rock it that way too. It's so soft Which is the most important thing for my lounge where everything that's lounge in this haul is soft pretty This thing is amazing at coming up with really soft pieces and like on trend and I think nudes and chocolates are so on trend this season So love this speaking of on trend this whole has a lot of chocolates in it And first up is this chocolate colored dark brown zip-up hoodie I feel like the lighting doesn't like my ring light doesn't show that it's actually a true brown So in the try on I switched off the lighting as well To show you guys what it's like with and without the ring light But I absolutely love this I think that it's so good to have both hoodies and zip-ups in your wardrobe depending on what you're in the mood for Jeremy is sometimes you just want a hoodie to throw over sometimes you want something with a zip in it so that you can show like your Bralet underneath or your cute t-shirt just depends on the vibe that you're going for but I absolutely love this I love the color. I think chocolate is the color of autumn winter 2020 and so I really really like it. I know we're in 2021, but I'm pretty sure that's the season So yeah, I absolutely love this piece to go with it I got the jogging of bottoms now. I love a pair of PLT jogging bottoms I think that they make really really good ones. They fit really nicely. So this is in a size 8 and The tracks the hoodie is in a size 12. I think that their waistbands fit really nice and comfortably I like of the drawstring on it so you can tighten it if you want to and this one has cute pocket detailing on the front of it Which is really like makes it stand out makes it different to just your standard pair of joggers Also, this is the type that is cuffed at the bottom, which I also really like I think depending on the vibe you're going for but with this where it's like a baggy tracksuit vibe the cuffing at the bottom really helps to just kind of show off your sneakers you can put your socks over if you want and Like have it cuffed in like that. So yeah, I really like this I love the color of it and I just think that I just think that this together again Like I said matching sets is so effortless and easy and you just look so wet well put together without having to put in much effort With your outfit which I'm obsessed with continuing on my lounge wear theme I have this gorgeous orange hoodie. It says worldwide on the front and also down the sleeves And when I saw this on the website, I just automatically fell in love with the color I do have a few I think I have one hoodie that's like pink or purple tie-dye and when you have like a standout hoodie I just feel like it's the first one you always reach for in your cupboard and it's so cool And what I love about this is now that we don't really have anywhere to go It's such a cute piece and the color is good to brighten up your day But when we can go out again, I feel like I could match it with black shorts and black Knee high crocodile boots and also like wear it for a day out or even with black shorts and sneakers And wear it for like a trip to like high park and like picnicking and stuff like that I think it would just be so adorable. You can wear a leather jacket over it as well Makes it really stylish in the trial and war. I wore it with some feel of shorts that had like green detailing I'm not sure if I showed you I think there's some colors that you can match so like black green orange It all kind of works together So you can really play with this color as much as you like not to mention It's the standard pretty little things soft material hoodie material and I got this in a size medium The next hoodie I have to show you guys also in a size medium is this white one and on the front. It says Lake Lake Chellen Lake Chellen in Washington state I might have completely just messed up that name so badly So let me know if I did but I saw this on the website and it's just jumped out at me because I Love white hoodies. I I have I think like only one. No, I have only one full-size one That says PLT on the front and then I have a cropped one as well That is with a law so I really wanted like another white hoodie And I just love a fresh white one because the colors are so crisp It hasn't been in the wash a million times and lost its color. So yeah, I really wanted like a nice cute one I just really like this. I like the print on the front of it I feel like it's super like brandy Melville style, you know, I mean so you could style this with jeans You could match it with white joggers, which is what I did in a try-on haul And I also matched it with in the try-on haul this white puffer jacket also from PLT I actually received this like a month ago So not from a pop this whole but actually pop a different collaboration and I really love this I want to wear this to work all the time And yeah, I've been wearing a black one that I have all the time and now I'm gonna switch to white So I like to like rinse one thing then move on to the other So I'm definitely gonna be wearing this a lot more in the months of like January over to spring I think I think white winter wear is so cute. It just reminds me of the snow So I wore this on top of the hoodie in the try-on haul But really you could wear this any way that you like puffer jackets are so in I'm pretty sure they're like a classic piece And I feel like with classic pieces you should try and get them in like black and white browns nudes, you know So I really really like this one and I got this in a size UK 12 the last of my hoodies is this gorgeous Nude or sand colored hoodie, which I adore I think that this is one of those staple pieces that you just need in your closet, you know You need a black hoodie need a white hoodie and you need a nude hoodie and I didn't have a nude hoodie to be fair I don't even think I have a plain black hoodie I have like a Levi's one, but I don't have like a plain plain one So I'll probably need to purchase one, but this nude color is so nice Hoodies are one of those things that you can just wear chilling at home Or you could wear it with a black leather blazer on top leather look Leather look trousers and trainers or you can wear it with shorts underneath and Trainers you can literally do whatever you like with a hoodie But I think that getting them in some basic colors really helps to build up your wardrobe and kind of gives you options of ways So I layer outfits, which I adore sitting next to the fireplace and actually boiling guys Continuing with the comfortable lounge where I was living in this today And it is this white kind of buttoned front ribbed material and I got it in a size UK 8 long sleeve at top and it's very long very baggy It is quite see-through, but it's like the softest material I can't even explain like this feels like something you get from like the white company It feels so luxury and soft and beautiful and I just love it and I've been wearing it all day And I didn't want to take off to film this video, but I did so that I'd be wearing something different to my previous video So literally it is the softest and nicest thing you will ever feel in your life And I love it because the same as this top, which is quite similar You could dress this up or dress this down So this one's got buttons all the way down whereas this one just has like buttons on the collar But you could wear this as pajamas, which is what I've been doing all later on when there's more time to go out You could wear this with like a bra on top white shorts And it's just like a black leather blazer by Kaboot and it's like a daytime going out look in keeping of my pajama theme I also got the matching trousers for it in a size UK 8 and these are again the white ribbed material These I would say are definitely to wear at home because they are the same kind of see-through Not see-through, but as in they don't completely cover you up where you would be able to wear this out But for a pajama, I think it's really good and I absolutely love how soft this is I think when you wear them together, you just feel like very cutesy at home vibes The penultimate item in this haul is probably one of my favorites is this trench coat. I love this trench coat Oh my god, it's so beautiful I got it from the petite section because I'm five foot two, but I just think the color of this is so nice The quality is like this linen material. Is it linen? I'm not really good with fabrics. Is it cotton? Is it linen? I'm not sure, but it's not plastic my point being. It's like a very nice Well-made coats, which I think goes really nice over hoodies I think it goes really nice over formal clothes for work It really is up to you how you dress up or dress down a trench coper I think again, it's one of those classic staple pieces that you need in your wardrobe, which I absolutely adore I wore this over the chocolate hoodies in the try-on and I just think it's such a cute look if I was going out for brunch I would get this if I was going to Waitrose and it was raining. I'd pop this on So it's really up to you how you want to wear this, but I absolutely love it and the last item in this haul Of course, it had to be another chocolate piece because I'm clearly loving chocolate this season Is this brown chocolatey-coloured cord? Is it corduroy? Corduroy? I think it is corduroy. It's this bag basically That has this tie detail at the top and it's very slouchy It's very big and it has just this button to close it and it says pretty little thing at the front It says pretty little thing at the front and I just love this.  I'm gonna wear this to work from tomorrow I think it's so big so slouchy so comfortable and it will fit everything in there My stethoscope will fit in there. My lunch will fit in there. My Notepad will fit in there. My pen.  Here you go. Like I just feel like it's one of those Really big really cool nice bags will work So if any of you guys are searching for an affordable cool trendy bag, you can wear it to work You could re-wear it anywhere school college not that anyone's going to school or college But you could even wear this to the supermarket and put all your shopping inside because it's so big I absolutely love this piece and I think that it's really nice to style with so many items in this haul It's like a perfect Accessory that is the end of this haul I really hope that you guys enjoyed it if you did then please don't forget to give this video a thumbs up It really goes a long way and helps me so much. So thank you in advance for doing that Don't forget to subscribe to my channel for more videos I film my vlog of my daily life and pretty much everything to do with me So if you guys want then please subscribe or mean so much make sure to check out my socials They're always linked down below. My Instagram is Persian bunny. My snap is seppy Samoy and my tiktok is Persian underscore bunny. I love you guys so much and I'll see you next time


This is Amit Dan of AmitDan.com Today I'll have another episode of Toronto Walk Video and I'll be walking along Lower Street starting Dufferin Street. If this is the first time I repeat visit, thank you for your support on this channel. I'm always trying to gain different ideas. If you're into thinking outside the box, this is the channel to subscribe. If you're looking for more walk videos, there will be links in the description box below. So it's very cold today, feels temperature is minus 27. So I'm going to make it short and I'll just walk a little bit, it's very sunny but it's cold. So it looks like my fingers are freezing, so I'm just using my left hand right now and I'll switch to my right hand. So guys, gimbal is malfunctioning due to very cold, it's extreme cold. This feels like minus 27 today and looks like the gimbal is giving trouble so I'm just going to stop at 20 minutes. Also it's very difficult to hold the gimbal because my fingers are freezing and they're already numb. So thank you for watching this video, there will be more videos coming up. So I'll see you shortly, thank you.


Cardiorespiratory fitness is strongly linked to a reduced risk of developing type 2 diabetes. Genetic factors play a role in determining one's level of fitness and these genetic factors can be used to predict an individual's risk of developing type 2 diabetes. Additionally, certain proteins may act as mediators of this relationship, suggesting that increasing levels of physical activity could help reduce the risk of developing type 2 diabetes. This article was authored by Lina CAI, Thomas Gonzalez, Eleanor Wheeler, and others.


joining us now is fan dual betting expert Tom Vecchio and Tom. Let's take a look at the odds to win the Eastern Conference and I need to know what your view is with the impact of the moves today on the new numbers for the race for the East. Well we're dealing with essentially two co-favorites up the top between the Nets and the 76ers. I have a bit more interest when it comes to you know going to the heat and I think that they are a solid team. They're number one in the East right now and they're somehow not the favorite. They have arguably the best six man in the league with Tiger Hero. They're getting some of their depth back hopefully later in the season with Morris and with Oledipo coming back. We need to be considering them as a very solid option considering that they're fully healthy at this point. So I like them. I also think that the Bulls are very very much worth considering at plus 1900. They have three stars on their team. Yes they're still dealing with some injuries. Lonzo ball is out. Outs Caruso is out but those players are going to be coming back. This gives them an advantage later in the season getting that offense back in rhythm and being a healthy team pushing into the playoffs.


Today, we are going to talk about performance and benchmarking. And we'll get through what we can today. This might spill over a little bit to Monday. But I've assigned papers for Monday and Wednesday. I think this is a pretty important topic and something that you guys don't necessarily get exposed to in other parts of the curriculum. It's related to operating systems, of course. But of all the things that we talk about this semester, it's probably one of the things that's more broadly applicable to other things that you guys are going to work on. Because in general, people don't necessarily get excited about hiring programmers or developers who write slow code. That's just not something that companies are usually looking for. When you look at their job descriptions, they usually don't say looking for a programmer who can write very slow code. That's not something that people want. OK, so sorry about my, I don't know why I can't count suddenly, but so you have three weeks from today to complete assignment three. Three weeks plus a few hours. So it's on a huge amount of time. People are working on it. Somebody is very close to maxing out assignment three. Maybe since I've been kind of hoping that someone's going to hold a patch that they know works to write before class and submit it and then just come to class and wave their arms, like no, it's 100 out of 100, it's me. Anyway, but this is a few hours old. So good to work. OK, so OS performance. Why does this matter? Why does OS performance matter? Why are we talking about performance in a class on operating systems? Yeah, yeah, yeah. So the operating system, remember, is involved in a lot of stuff. And Isaac has said it perfectly.  And people also prefer, I would argue, people prefer a fast and mostly correct operating system to a slow but broken operating system. Now the assignment three auto grader requires that your operating system both be reasonably not slow and correct. But most people would perform this. So one of the things I ask people to think about is if your computer, let's say that your computer rebooted instantly and not just rebooted, it somehow restarted and recovered all of the state that you, for the programs that you were using, would you care if something had gone wrong? You might not even notice.  Who cares? Something went wrong. It doesn't really matter. So this isn't quite true because as I mentioned before, there's been some more recent work on provably correct micro kernels. But some of the earliest computer systems, particularly built by people like Dijkstra, who obviously had sort of a theoretical bent, had this as a goal. So he claimed in the THE operating system, which was designed back in the 50s or 60s, we have found it is possible to design a refined multi, I like that, a refined multi-programming system because I don't want an unrefined multi-program. In such a way that logical sound is can be proved a priori. And its implementation admits exhaustive testing. The only errors that showed up during testing were trivial coding errors, trivial. Occurring with the density of only one per 500 instructions, each of them located within 10 minutes. Classical inspection at the machine and each of them correspondingly easy to remedy. So and this operating system was quite slow because everything was slow back. So now I could hopefully convince you that we care about performance. But so OS performance isn't necessarily that different though than the performance of any other process, any other application. I mean you remember the operating system is just an application like any other application, it's a little bit special. So we can apply the general principles of performance analysis to this application, right? So what do we do? Okay, so we start out, we measure the system. Measure something about the system. We analyze our results at step two. Step three is we improve the slow parts. Then in step four, we drink our celebratory beer. And then if there's more work to do, we just return to the top. At some point I would suggest that you pause after step four and maybe go to bed or relax a little bit because the celebratory beer may reduce your ability to continue the rest of the process. If you return to the top a little bit, okay. Okay, so that's it. So on Wednesday we're gonna talk about the paper on... Actually, so today's Friday, right? So Monday we'll talk about the Butler-Lampson Hints paper and then on Wednesday we're going to talk about the kernel, right? Is that really it? Last year I got somebody to get up and start leaving. Scott Florentino started packing up this stuff. He's like, all right, 10 minute class, no problem. No, it's not quite that simple, right? You guys may wish, of course, it's not summery outside anyway, so who cares, right? If it was 70 degrees outside maybe I would stop there, but it's not, so let's just keep talking. Okay, so, but this is not as easy as I made it sound, right? What about the system I'm going to measure and how am I going to perform those measurements? The analysis is potentially gonna involve math. I don't like math. I became a computer scientist so I didn't have to do math. That was my plan. It works out very well, but particularly when you do computer systems. How am I going to improve the slow parts of my system? What am I supposed to do here? This part I'm pretty good at actually, I can offer some advice on these questions. And okay, so let's talk about what's hard about the process that I've described to performance improvement. So the first thing is just measuring stuff. So you would think that it would be easy, potentially to measure time. All of us have some conception of time and obviously time is something that's going to be intimately involved in the process of performance analysis. Unfortunately, hardware can frequently limit our ability to measure time, particularly on the time scales needed to do accurate performance benchmarking. So frequently you might find, for example, that when you try to measure some primitive in your operating system or in any program, using the hardware timers that are available to you, you discover that it takes zero time because it's so fast that it occurs within a single tick of this slow time. So that's a problem. And the problem with low level time, so frequently you can find some sort of clock on the machine that ticks quickly, but that may be very, very difficult to access or it may be very machine specific. So you remember one of the things that the exo kernels we're trying to do is actually export some of this information to applications. Applications frequently do not necessarily have access to really good timing information on real systems. And then the other problem you have with timers is you can do these messy problems with overflow where you have a counter, maybe it's a 32 bit counter and maybe it starts rolling every few minutes and that gets very up. So there are issues here. The other problem, and this I think is a much, much deeper issue with benchmarking and measuring operating systems is that it's very difficult to do repeatable measurements. So for example, and part of this is for this reason, right? So remember, you're trying to measure something that's happening right now, but the system is doing what? You're trying to measure the present, but the system is using the past to predict the future. So the system is adapting to your benchmark.  What are some things that could change after you've run a benchmark for the first time? What are some things that might cause that benchmark to perform differently or that program to perform differently if you ran it again a minute later? Parts of the system are different. Changes have taken place, yeah, Scott. Yeah, so, and this is particularly true when I rerun things inside the same application. Remember, when I start running an application it faults a bunch of stuff initially, and if I keep running that same loop, now all those pages are in memory, they're in the TOB, and so some of the latency I might have experienced on the first trip through is gone. I also might have pushed stuff into higher level caches. So it might not just be in the TOB, it might now be in an L1 or L2 cache where the memory is really close to the processor and super fast. I also might have things that are being loaded into the buffer cache, the file that I'm using that starts out, maybe my benchmark starts up by reading some data from a file. The first time that goes to disk, the second time it's in the cache. So caches and cache behavior frequently are something that benchmarks think a lot about how to either detect or defeat. So there are benchmark suites that the first thing they do is they run some tests to try to figure out things like how large is the L1 cache size on this machine, because I wanna make sure that my objects don't fit into it. And this was one of these things that for years, during a certain decades of computer science research, you'll find when people couldn't understand their results, this was the boogeyman, right? This was the monster under the bed cache effects. And this was used to explain away all sorts of things that people should have thought more carefully about. Okay, so measurement tends to affect the thing that you're trying to measure. It's sort of the Heisenberg uncertainty principle applied to computer systems. The first thing is the measurement might destroy the problem that you are trying to measure. How does this happen? Does anyone experience this with their OS 161 system? Measurement or debugging may eliminate the problem, only temporarily of course. What's an example of this? Yeah, yeah, so you may have a race condition that you see periodically. And then what do you do? You think, I don't like GDB, so I put in a printf. That's a natural thing to do. Try to figure out what's going on. Voila, the printf solves the problem. If only you could leave the printf in there and have it printf on the client's machine all the time. But the reason is the printf has destroyed something about the inner thread timings that you needed to cause the problem to happen. And this can certainly happen with measurement as well. Measuring and recording things always affects the system. I'm printing things, I'm storing information, however I'm doing it, there's code being executed that was not being executed before. And so the machine is going to behave slightly differently. And for extremely subtle effects, this can essentially totally wipe out the thing that you're trying to measure. And so later you have to actually try to separate the results from your measurement from any overhead that the measurement process introduced. And the people who are having the problem that you're trying to study may not want you to measure their system. The vendor or the client may say, you know, I have this problem, can you help me solve it?  And they may say, no way. My system is already slow enough, I'm already having these problems. I'm not adding extra overhead to the system just so you can try to find out what happened. So measurement can limit your access to production systems. So, and you can imagine for the OS this is even more problematic because of how central the operating system is to the performance of the machine. Trying to do OS level instrumentation can frequently affect everything. Well, I've since say frequently, will always affect everything that's running on the machine. It's difficult to find places to put the debugging hooks. You're talking about a very complicated code base. And operating systems can generate just gobs of debugging output. When I was at Microsoft years ago, we were doing some work on understanding page fault behavior in Windows and we did this thing where we tried to instrument windows to record this sort of information and you just end up with these massive log files that you have to go through because these things happen all the time. And of course it slows down the system quite a bit. Now you'll find, so it's kind of interesting, you'll find on real systems like Linux that logging and instrumentation is a very, very efficient operation. And the reason is that people want to use it to understand how the system works, but in order to use it, it has to be really fast. So they've done a lot of work into making these code paths very short and very efficient. Okay, so frequently the problems associated with measuring real systems cause people to give up. And instead, try to measure something different. And we have some other options here. So if I didn't want to measure a real system, what else could I do? What are my other options? You guys have been using one of these for most of the semester. Yeah. Are you using a simulator? So there's two options here. I can build a model or I can build a simulator. Now, modeling is something that's typically a lot more abstract. So a model is to some degree a mathematical description of how a particular part of the system is going to work. And that can actually allow me to prove things about how the system would operate under certain conditions. A simulator is different. A simulator tries to replay or sort of simulate. A simulator tries to simulate. That's a deep insight into the world of operating systems right here today. So a simulator might try to simulate how a real system is working. The Sys 161 tool that you are using is a simulator. It is running instructions from your kernel that are MIPS instructions, and it is simulating how they would execute on a real machine. That's what it's doing.  And if you're trying to figure out what's a model and what's a simulator, it's very easy. Simulators involve code, models involve equations. Both of these have their pluses and minuses. So with models, the nice thing about a model is I can make a strong argument. I might be able to actually prove things about the system that I'm trying to understand.  So let me give you an example. In the world of networks, there's a lot of modeling done on how, for example, an ad hoc network might be able to route traffic. However, a lot of these models have one defining assumption, which is usually referred to as the unit disk model. They assume that every node in the network can communicate perfectly or with some probability with every node within a certain radius of it and not with any node outside that radius. The problem is that that's just not anywhere close to being true in practice. In practice, wireless communication is weird and strange and things bounce off walls and all sorts of weird things happen. And so the unit disk model isn't anywhere close to holding for actual real deployed systems. Now, making that assumption allows me to prove a lot of really cool things about the systems, these sort of ad hoc networks that I'm modeling. The problem is those things aren't actually true because real systems don't behave that way. But in order to make it tractable to say anything about the system at all using this model, I have to make that kind of assumption. So on the other hand, simulations, so you might think, why would I write a simulator to simulate a system I already know how it works? The goal with the simulation is to make the right trade-off between repeatability and accuracy. You don't want your simulator of Linux to become Linux. That's not the goal. The simulator is intended to remove properties of the system that are undesirable and allow you to understand how the system works. And for example, to make repeatable to allow repeatable experimentation. Unfortunately, you have to write a bunch of new code. So here's another opportunity to make a bunch of mistakes. So one of the stories that I didn't tell you from the debate over LFS was that at some point, all the names are omitted here to preserve, to make sure people don't come after me, at some point, somebody was working with a simulator of a disk, a simulator of a file system that they were using to run experiments on file system performance. And they had written some papers about results from the simulator, indicating certain things about how one file system or another file system had performed. Unfortunately, at some point, this particular student discovered that the simulator had a bug. So the bug was that when there was a dirty page in the buffer cache that was evicted, the amount of time that it took to write the page back to disk was zero. So the simulator was forgetting to account for the time that it would take to evict dirty pages from the buffer cache. Now you can imagine this would change your results quite a bit. So this particular student went to their advisor and they were like, by the way, we have this problem. And so you can imagine that that got sort of messy. Okay, so yeah, so if you have bugs in the simulator and your simulator may not end up being as simple as you want it to be, that's the other problem. Okay, so moving on to another challenge with performance and benchmarking, what are the metrics that I use to compare things? So how would I compare two disk drives? And I'm talking about performance here. I'm not talking about, I mean, I can measure things like capacity or whatever, but what are some ways that I might want to compare two disk drives? What are some things that I might want to measure about a disk drive that I would care about? Think about a spinning disk, yeah. Yeah, seek time. I might want to measure things like sustained throughput. What's the maximum throughput I can get from the disk? What's the throughput for reads or for writes? Is that different? What's the throughput for random IO to various parts of the disk, which starts to affect how it involves a couple of different things, right? So I'm also testing things like the scheduling algorithm that disk uses to figure out where to put the heads. Scheduling algorithms, page replacement algorithms. In most cases, there's a bunch of different metrics I can use here. So remember when we talked about scheduling algorithms, we talked about throughput, but we also talked about latency. The throughput is how fast the system can get a bunch of work done. Latency says something about how responsive the system is under load. Page replacement algorithms, how do I choose? I mean, maybe I have a metric, but maybe I don't, because maybe I also care about how fast the algorithm runs. And then when you start to talk about higher-level things, it becomes even more interesting, right? File systems. A lot of file systems make design choices that cause them to have different trade-offs than other file systems. And so this can end up like the canonical example of the bunch of the people touching the elephant. That's my favorite cartoonist, right? Depending on what part of the system I measure, I come to different conclusions. And I mentioned this before, but you guys remember some of you guys may have been growing up drooling on the old Mac ads, where they were always claiming that their processors were faster than Intel processors, always, every ad that they put out claimed that. And it was like some benchmark they chose that look at us and here's Intel down here, right? And that was true until it wasn't convenient that it was true anymore. Okay, so usually when we talk about, so benchmarks are the things that we're actually gonna use to test the system. And when we talk about benchmarks, we can divide benchmarks into three different categories. So microbenchmarks are designed to try to isolate some specific aspect of the performance of your system. Just one thing, a microbenchmark. Just one part of the system, I care about how that primitive works. Macrobenchmarks on the other hand, try to do end to end comparisons. Usually try to measure a big chunk of the system all at once and the performance of that chunk is dependent on a bunch of different things going right. And then, but macrobenchmarks, in contrast to application benchmarks, so an application benchmark you can really just think of as running some application on the system and measuring how fast it performs. The difference between application benchmarks and macrobenchmarks is that macrobenchmarks typically try to make generalizations about how a bunch of applications are going to run, whereas an application benchmark doesn't care. It says, I'm a database server and this is how fast I run on this particular machine. So, here's some examples. Let's say that we're interested in improving our virtual memory system. It's just a random example.  So, give me some examples of some microbenchmarks that are applied to the virtual memory subsystem. What are some small little primitives that you might want to measure? Yeah, so swap out time, amount of time it takes to find a page in the core map. Maybe the amount of time it takes VM fault to run, but that's getting a little macro now. So, just these tiny little operations. How long it takes to map a virtual address to a physical address using your particular mapping data structure? These are examples of microbenchmarks. So, yeah, a single page fault might not be micro enough. Page lookup time. How long it takes my page replacement algorithm to select a page? Not which page it selects and how good that page is, just how long does it take to run? What about macrobenchmarks? What's some examples of larger things that I might want to measure? Macrobenchmark for the VM system. Yeah, I mean, yeah, maybe aggregate time to handle a page fault. So, if I look at all the page faults that occurred and graphed distribution, that might be helpful. The page fault rate that my system could sustain, which has to do with how fast I can move things back and forth to disk and things like that.  But I don't know, unless you're really interested in repeatedly doing three sorts in parallel. Although, I have to say, one of the more famous benchmark contests, at least to me, that goes on a regular basis, is something called the Jim Gray sorting challenge. And if you want to enter, it happens every year. There are multiple categories. The goal is to design and deploy a sorting algorithm that can support billions and billions of records and sort them extremely quickly. And this has been going on for years. You can go find the results online, and it's a very cool little thing that people do every year. I think it started while Jim Gray was alive, but now sort of partly to remember Jim Gray, and also just to give people an excuse to continue to write faster and faster sorting algorithms. That's kind of cool. Okay, so problems with benchmarks. So microbenchmarks, if you deploy microbenchmarks, you have to be really sure that you are zooming in on the right part of the problem. If you deploy a microbenchmark and you're fixing the wrong part of the problem, your fixes are not going to be very effective. We'll come back to talking about this a little bit later. Macrobenchmarks have the other problem, which is that it can be very difficult to isolate or identify the part of the system that you need to change. If you use a macrobenchmark, and application benchmarks are always limited to some degree to the application that they're designed around. So they don't necessarily reflect the performance experienced by a mixture of applications. So unless you're trying to design your operating system to only support one class of application, you may need to run multiple of these to get a sense of the aggregate performance that a bunch of representative applications would experience. Okay, now I would probably argue that the biggest problem with benchmarking in practice though is just bias. So frequently people that are choosing benchmarks are using them to try to motivate some change about their system that they think is going to make it faster. So and frequently you'll find this when you start looking at computer system designs. I don't know who can, it's the sort of no free lunch principle. A lot of times the way to make one part of the system fast is to make something else slow. I'm gonna make this other thing slower, but when we talk about this design decision, I'm not gonna talk about the slow thing very much. I'm gonna focus on the fast thing. Check this out, I made this one thing really fast. Now if your application is highly dependent on the fast thing you may be really happy about that, but if your application is on the short end of the stick you may not be. So frequently benchmarks may hide the fact that there are performance trade-offs that are being made that the people that are using the benchmarks are not particularly honest about. The other thing that happens of course is that people choose a benchmark. They do a bunch of work to improve the system according to that benchmark and they may not be aware, even aware of the fact that the improvements that they made have caused other things to slow down. So this is the other one. Okay. And to some degree, even if you wanna sort of point out that people are a little bit silly about how they deploy this, there's really a fundamental tension here with how operating systems work, which is that the most useful system, I mean operating systems have always been designed, pre-exo kernel, really to try to provide an interface that's useful to a variety of different applications. However, frequently making the system faster involves tuning to the needs of one particular application. To some degree, the exo kernel system is on some level trying to address this, remember? This is part of their argument. We don't need to make these general purpose design decisions that try to work for every application. We can allow applications to achieve better performance by making better decisions on their own. But in general, the operating systems that you guys use today are extremely general purpose machines that try to provide good service to a large category of applications, but you can certainly make them faster by tailoring them and tuning them to the needs of one particular application. Okay, so instead of poorly using benchmarks, let's talk about what actually sort of the right some good things to do and some best practices here. So the first thing when you start trying to improve the performance of your system is to have a specific goal in mind. That's a little bit more general than I just want to make it faster. And this helps you start to design a workflow in terms of picking benchmarks and choosing parts of the system to improve. So you usually have to sort of pick a problem and we'll talk in a few slides about how to do this. If you start, if you decide to use a model or a simulator, it's very important to make sure that the model and simulator match up with the system that you're building. So going back to my example from before, if somebody had done some side-by-side comparisons of the simulator in an actual disk, they would have probably noticed some performance anomalies that would have caused them to realize that the simulator had problems. So if the performance of the simulator is dramatically different than the thing that it's trying to simulate, then you've got a problem. And sort of use these techniques as appropriate. And this comes with practice, but figuring out what is the right tool to attack this particular problem. But certainly do this with data. So now we've come to the part where we have to talk about data and math. And this is totally true. So I started out life as a physics major and I just realized I was too dumb to do physics, mainly because it involved a lot of math and so I became a computer scientist. And so a lot of computer scientists don't really like math very much. I mean, if you talk to like the theory people, then those are essentially math people just wearing different stripes or something. But the rest of us, the system builders and the networking people, not really, you know, we're a little wary about the hardcore math. And so on a good day, we'll compute an average. This feels like a victory, right? I'm gonna run my experiment a couple of times and okay, here's an average result, right? And if you really push us, I'll put error bars on my graph, right? That maybe, maybe, okay? That's asking a little bit much, I would prefer just to use the average. So one of the first things to do when you start running systems and using statistical methods is to make some predictions before you begin the process. And I always tell my students before you generate a graph, draw just a little sketch up on a whiteboard of what you think that graph's going to look like just based on your intuition. This is really helpful because if the graph comes out looking very different, then either you've learned something about your system, your intuition was wrong, or there's something wrong with the experiment that you're running that you need to correct, right? That's what I just said. And particularly if you can make predictions about simple cases, that's a good way to start developing your intuition. So it's not a bad idea to collect some performance results for things that you think you understand. So for example, if you were benchmarking your VM system, you might collect some information about how long it takes to find a page in your core map because you think that you can reason about that. You think you can reason about it, you think it should fall into a certain distribution and that's a good way of starting to develop intuition about how this works. So this is one of my favorite, I take a real common mistake people make when they start to try to use data to do performance analysis, which is they compute summary statistics really quickly. So they compute, they say, okay, I measured this thing, I computed the average in the median, I'm done. And the problem is, summary statistics like averages and medias, I mean averages are dangerous. I think that the average is a statistical thing that should just be banished from our society. I think average should be an outcast. There's really no point in talking about averages. People are like, oh, it's the average income in the United States, who cares? No one makes that much money. The mean is a much, much, much more useful measure. I just need to stand up in favor of medians. Sorry, median, yeah, the mean is the same thing as the average. Medians, please use the median. Median is so awesome. Median is friendly, the median sends a lot about your data, the average says very little. So for example, these two data sets right here have the same mean and median. But there's clearly something very different going on here. Between, if you measured for example, if this was your core map, the time it took to find a core map entry, you might be concerned about this. What is going on over there? And so looking at raw data, even if by the time you show it to your boss or somebody else, you're talking about summary statistics, look at the raw data first so that you have some idea of what's going on. Because if you say, if you sort of make claims about the data based on some sort of feeling that it looks like this, and it turns out that this is what's going on, you're gonna feel very dumb. This is frequently a sign that there's some sort of bug in your system or something very interesting going on in the behavior, particularly part of this. Okay. Outliers, so a lot of times people run into this problem particularly people who like to use means because there's this outlier in the data. I ran it a hundred times and 99 times let's find and then there was this one weird value that I can't explain. You have to think about those values. You can't just say, oh, I'm just gonna delete that row from the spreadsheet, don't need it anymore. Clearly something went wrong, I don't know what happened. I must have just typed in the wrong command or something. Try to understand, they can be just weird remnants, they can also be very important. They can have a lot to tell you about how your system works because if one out of a hundred times a particular operation takes an enormous amount of time, that is going to bother somebody, somebody live. People like things to be predictable. Okay, so now we'll come to the part where we actually talk about deciding what parts of the system I should actually improve. And you might think that this is pretty easy. Just improve the slowest part. And one of the things, so even if this was true, here's the problem that we have as programmers. So think about your VM implementation in whatever state it's in. There's probably some part of it that you feel is dodgy, suspect. There's like one piece of code where you just got sort of wedged into a weird place and you had to fight your way out of it with some sort of really nasty while loop that you're not sure if it terminates or whatever. I mean, all of us have like little bits of code like that in our system. And so if you ask developers, what's the performance problem with your code? That's the part that comes to mind. No, maybe the part that you wrote after Friday happy hour where you had a couple beers or the part that you wrote in the middle of the night like right before the deadline your boss have given you, whatever, we have this intuition about the parts of our system that are problematic. Unfortunately, the intuition isn't very good. In fact, it's terrible. And so if you ask people, oh, if you don't let people measure their system or you don't force people to measure their system and you just tell them, go improve the performance of the system, a lot of times they work on things that are irrelevant. There are things that make them feel happy inside because they got rid of that really ugly piece of code that they were embarrassed about, but they weren't actually the performance problem. But let's make this more concrete. So let's say your code has two functions. Foo takes five minutes to execute. Every time I run foo, five minutes go by. Bar takes five seconds to execute. So which function should I work on in order to improve the performance of this piece of code? Yeah, whichever one you use the most. Okay, do we have any other guesses? Yeah, which one's easier to optimize? Okay, so you guys are sort of on the right track here. I'm gonna go with the, but I mean, a lot of people, this is what we do. These are better answers, but a lot of us will say, oh no, foo, foo takes five minutes. I ran foo and I went, got coffee and came back and it was still running, right? So here's the problem, right? What sort of elements have we missed in our decision-making process?  First, significance. How much does foo matter? Now it's not quite as simple as which gets run more often because depending on the system, if I have small differences, it's not necessarily which one gets run more often. It's how much of a contribution that's making to the overall performance of the system. But the second thing that somebody pointed out, which is how hard is it going to be to change this, to improve it? Let's say that foo is calculating 60,000 digits of pi using the best available algorithm. You are gonna improve on that? I don't know. I'm skeptical. So, and this is very, but this is also very difficult to figure out until you get started. So, after running some experiments, the thing that we're likely to know something about is significant. So let's talk about that. However, I would point out difficulty matters here and this is something that's very difficult to figure out from running tests. You can run a bunch of tests that will say, improve this function. I'll make this system twice as fast. You go look at it and you think, and there's all these comments, improved performance by 4x, improved performance by 20% from the people, the programmers that were fired before you, you were hired to work on this, right? And you might be start to think, uh-oh, there is no performance left to squeeze out of this. So, but let's talk about significance. So this, and this comes down to something that I really wish, if there's anything that I wish that most people in the world knew about the world, other than not to use means and to use medians, this would be it. It would be Amdol's law. So colloquially, Amdol's law says, the impact of any effort to improve system performance is constrained by the performance of the parts of the system, not targeted by the improvement. How many people have heard some formulation of this before? Oh, goodie, okay, all the graduate students. So now, imagine when you have the choice between reducing the execution of foo from five minutes to one minute, or reducing the execution time of bar from five seconds to four seconds. Because remember, this is gonna matter. Now, note here that the improvement of foo is better. It's better, absolutely. I've improved it by four minutes. I've trimmed four minutes off it. I've cut it's execution time also by 80%. So clearly now, foo's the winner, right? Now, now that I, so now I know something that I may not even have known beforehand, and now I should be able to say foo, it's time to work on foo, that's what's gonna do the best. But it turns out, as someone pointed out, if the program spends 95% of its time executing bar, but only 1.1% running foo, then the speed up that I achieve from foo is actually smaller than the speed up I achieve from bar. Neither is super exciting, but one second, just that one second from bar, improve the overall performance of the system by more than 80%, reducing the run time of foo by 80%. Ondelsaw's extremely counterintuitive, and it's something that as developers, I think you guys should be thinking about and coming back to frequently. And this is why, so when I worked at Microsoft, the team that we interacted with a lot was the, I was on the desktop performance, in the desktop performance group, we interacted frequently with the server performance group, and the server performance guys, I mean, if they found an unnecessary instruction, and they were looking at assembly, now so if they found like some way that they could remove one assembly instruction from a critical path, you'd never see them again. They'd be gone for a month in Hawaii, because the system got so much faster it's one instruction, because that thing gets run all the time. And so those guys were really interesting. So another way of thinking about Ondelsaw, if you're not worried about the proportionality, is fix the thing that's killing your performance. Don't worry about the rest of the code, find the thing that's hurting you, and work on that. The other interesting thing though about Ondelsaw is the more you improve one part of a system, the less likely it is that that part of the system is actually still your bottom. So this is another interesting corollary to Ondelsaw, and it means that you have to make sure that as you work on performance of your system, you're frequently pulling yourself back and saying, what now? Because once you've done some work on a particular part of the system, it may not be the top order bottleneck anymore. So you need to stop, re-run some benchmarks, reduce some profiling, and find a new target. All right, so this time I actually am done a little bit early today. Do you guys have any questions? The last couple of lectures have been a lot of me talking. Yeah. It's usually lying on hardware or full software. Yeah, so available simulator. So it's too bad Guru is not here. My own student is Guru, who's the actual Linux hacker in our group. He works on a full system simulator. So it simulates an ARM instruction set. It is kind of like your Sys 161, but you can actually boot an entire kernel and whole system image on it. So we boot Android on this thing, and we use it to experiment with new hardware features. Now on one hand, it's super cool because we can do things to it that you can't do in hardware. So for example, I can come up with new memory architectures and I don't have to build them. I just have to write software for them. Now let me ask you guys a question. How fast do you think the system is? It's like a thousand times slower than an actual system. So when we have to run benchmarks, like for example, you might wanna run a benchmark that opens a webpage. Two days later, that thing's still going. So it is a very fun way to do experimentation because again, you have control over the entire machine all the way down to the metal. I can change anything I want. The price you pay is that it's dog slow, super slow. Like, you can boot Android on it, but you can't interact with it because it's so slow. You hit a character and then it, 10 minutes later, it redraws the screen. So it's just very, very slow. Any other questions about that? Yeah. Well, so the trick when you're building simulators is to make sure that your simulator has its own notions of things like time. So normally, like again, the simulator that we use to simulate Android systems, like it doesn't think that time's moving that slowly. It's just, its notion of time is very slow. So we can measure how long things would take on a real system inside the simulator without having to worry about how the performance is affected by the underlying system. So simulators normally have their own notions of time and no notions of performance. And so the goal is to get to the point where, for example, if I had a disk simulator that I was used to simulate my file system, if I make a change to the file system that improves performance in the simulator, that performance improvement will translate when I run it on a real system. Does that make sense? That's a great question. So to some degree too, I would point out that some of the need to build these types of tools has been replaced by virtualization. So when we talk about virtualization starting at the end of next week, which will really blow your mind, virtualization is very cool. But to some degree, virtualization is almost like simulation except for the fact that I try to make the underlying hardware do as much work as possible. So virtualization you can think of as simulating all the parts I need to make it safe while using the bare metal to run as much as possible. Now, for example, on the stuff we do with Android, we're simulating in a different instruction set. So there's no way to do that on top of x86, right? x86, if I set one of the ARM instructions out to the x86 processor, it would have no idea what to do, right? It's just totally different. But when you're trying to virtualize something, that means that the architectures have to be the same. Great questions. Any other questions about performance? So for Monday, please read the Butler-Lamson paper. It's a fun paper. It's got a lot of cool ideas for improving performance, a lot of great discussions of the trade-offs. And then for Wednesday, please look at the Linux scalability paper. That's also a really, really cool paper. And I think you guys will like how they did things. It's a great application of these techniques. Find a bottleneck, understand what's causing it, fix the underlying problem, and then watch your performance improve. So I'll see you guys on Monday. Have a great weekend.


Hello everybody, Andrew Maeske here with Dental Tutoring. So here is inside my full board exam prep academy course for dental hygiene students. So this is the full course to help you pass the board exam. So a lot of people are kind of asking me, so what's inside?  So I do tell people for this full course, it's a good idea. There is no harm in signing up six months before you take the board exam. However, a lot of people don't even think about studying that, you know, soon. So you know, three months is still pretty good. Now three months I tell people is usually the cut off time because as you guys can see, if you look over to the left-hand side here, these are all of the different topics you will learn inside the course. But I've had at least a handful of people sign up a month ahead of time, that's it, and they were able to pass. So it just kind of depends on how motivated you are, how much studying you are able to get in. But I tell people, if you can, at least three months, but I do prefer you to sign up for six months because there's a lot of stuff to learn. Plus, we will be holding live tutoring sessions twice a month. So even if you go through, say you want to start dental radiography first. So this is sort of the course. So if I click on that, you guys can see everything that kind of logs you in. Now telling me I have to log in probably because I didn't sign in as a student. So I'm just kind of showing you guys how everything looks. So you know what? I'm going to stop sharing my screen and I'm going to rectify that right now. Sorry, sorry guys. So what was I getting at? Oh yes, tutoring. So if you guys sign up, you will have lots to look at. So all of your study topics are right there inside the actual course plus mock exams plus case study. So if you want to read materials one day, perfect. And then the next day you might be thinking, I just want to take a bunch of mock exams to see how I am. That's okay too. The day after that, you might go, I want to take some case studies. That's all inside. Plus the sooner you sign up, the better because you will have full access to all of our tutoring sessions that were this year, 2018 and 2017.  So you will have full access to everything live and our recorded tutoring sessions for this year, last year and 2017. So that's pretty awesome. But what people are typically more excited about is you will also have access inside and actually I can try to log in for you. You will get access inside our tutoring group on Facebook. So I'm just typing that in right now to show you guys. Sorry, one moment. I will share my screen to kind of show you what that looks like. So then that way, you can, if you need help, just post in there anytime and then I can answer you right away. If you need help from other students, they can help you too. It's perfect. In fact, let me just share my screen to show you guys. I just got that up. So this is this is our group. You have full access to everything. And I, we do tutoring twice a month, sometimes more in the summertime. I think it might be once a month in August because that's typically when I take some time off. But I mean still you have full access to all of our tutoring sessions for this year, last year and the year before. So check it out, you guys, right? Tons of different things. And I was just trying to log in right now to show you guys inside the course. So sorry, let me double check that here. I'm just doing that now because I wanted to show you guys inside our Dental Hygiene Prep Academy. So we do have one also for dental assisting too. So definitely have a look at that. I'll leave the links for you guys on the bottom. But here it is. I was just able to log in again. So as soon as you enter, as soon as you sign up, it will probably look something like this, okay? So make sure to join our page which is here and send me a message too because I need to know if you're part of the course. So just send me a message say, hey Andrea, I did sign up. Please allow me entry, you know? So then you have to click those three lines, the upper left right here and this will show you all the different topics. So how awesome is that? And a popular question is, how long will you have access to all of this? You have one full year's access. So that's huge. But to take it a step further, if you take my tutoring course and you do not pass, you can have this whole course once again and you don't have to pay anything extra. So that helps a lot of people because I do have students say, well, what if I don't pass? I don't want to waste the money when I didn't pass. You will not waste anything because if you don't pass, you can see all of this once again for another year, no charge at all. So and it could even be two years depending on when you take your exam. So just let me know. But I do still have a 99.4% success rate helping students pass. So I know I can help you. The key is to follow along with everything. So I'm just sort of showing you guys a couple of things here. Most of it is where you would download a file like just as an example, click on download and I'll just kind of show you what that looks like. It should be showing on my screen in a second, but while that's loading or listen to something else. So you will always have things to either read or listen to, which is nice because some people say that they prefer to read when they're studying, but other people say, I need to listen to something. So I do offer each of that to kind of appeal to as many people as possible. And of course a mock exam. So you will be learning all of that. And that PowerPoint that I clicked on before, I'm just going to click that for you just to show you what that kind of looks like. So this is, I think this is a smaller one actually. They're typically about 30 slides to about 100. So just kind of depends on what topic we're talking about. This would be obviously a smaller one because it's only three. But as you guys can see, I just keep things, you know, simple and a lot more concise. So you don't have to read your entire textbook, but you guys check it out. Look on the left hand side. Everything you want to know is right here, including mock exams, including case studies. You have nothing to lose because we all want to pass, right? We all want to pass. This is how you can pass. I have been tutoring since 2005, I believe. So that seems like a long time, doesn't it? But I have been tutoring you guys for a while. I know I can help you. So let me know though. If you guys have any questions, thank you guys so much for watching. The full course is now open. So now is the time to sign up because the full course is open. And I do offer payment plans now also. Just send me an email and just let me know sort of what works for you. And then we will go from there. Okay. So thank you guys so much. And I will talk to you very, very soon.


Every project comes with a statistics page where you can view data on how often people are visiting your project and from where they're being referred. The data that you see on this page can be changed for your preference. To do this, click on the widgets and dashboard button. Then select the widget you wish to add.


In this presentation, we will create invoices for service items, setting up new service items as we do so. We will be setting up these service items in a similar fashion as you might see for a legal firm or an accounting firm, in which case we'll be having billable rates for different employees that we'll have to count their hours for and then make invoices to our customers based on the work that is done. Our invoices will be based on music lessons, so we're going to imagine in our music store we have different instructors and we're going to get a timesheet from them and bill our customers based on the hours that have been set in our timesheet based on the different instructors. This is kind of a job cost type of system for a service company. So to do that, we'll set up new service items, we'll also set up a new account on the income statement to track this type of income. Let's get started with Sage 50, Cloud Accounting. Here we are in our Get Great Guitars file, we're going to go back up top to our Customers and Sales section. Let's first start off by opening up our income statement, I'm going to go to the reports drop down up top, we're going to go down to the financial statements, financial statements, we want to take a look at that financial statement of the income statement, opening up the income statement, going to be for the month of February. I'm not going to have the zero balances, so we will untick those items and there is our information for this month. So we have the sales income and the service income, these are the two types of incomes that we are currently grouping our information into. We're going to be setting up service items here and we're going to set up another income account related to it and this is going to be service items related to our guitar lessons. So we're going to be providing guitar lessons and we're going to say we have instructors to provide those lessons. Now as we do this, just remember that when you look at the income statement, you don't want to set up too many income statement accounts. In other words, you probably wouldn't want to set up a new account for every type of service item. For example, you wouldn't want one for every guitar instructor most likely, but you might want another one for the group of guitar lessons as separate from other service income that you would have. So just be aware of the grouping or when you would want another account here or not on the income statement. We will set up another account for the guitar lessons. We'll be billing this out in a similar fashion as we would. I'm going to close that out, close this out as we would for a law firm or a accounting firm in which case we have our employees. We pay those employees, but we also charge for their work and those two things are not necessarily related. We're charging for their work on an hourly rate. They're going to give us their time sheet. Then we're going to be charging for their work to the customers. That means we're going to have to kind of lag on our invoices because we have to get the time sheet weekly or whatever bi-weekly and then enter that into our system so we can bill the customers for them. So we're going to go to the sales invoice. I'm going to create another sales invoice here and we're going to create our employees, our instructors, information up top as going to be something that we will be billing for. So our first client that we're going to have, we're going to have an instructor who's going to give us our time sheet and we're going to have our first client. So this is going to be someone who we're giving guitar lessons to. That's going to be Star Lee is going to be our client. I'm going to copy that because we're going to have to add star.  So we're adding the customer at this point. I'm going to put the customer ID is Star Lee. The name is going to be Star Lee. We might want other contact information. I'm not going to put it here for this. I'm going to put lessons as basically the customer type. I might not do that every time, but I'm going to say, let's save that. And that's who we're going to be billing. I'm going to close this back out and there we have that tabbing through. Let's put this as of the 28th. That's fine invoice. I'll put here for purposes of the practice problem. Then I'm going to tab through and I'm going to then enter the new item. So we're going to have a new item. So we're going to set up a new item here. I'm going to say magnifying glass, opening up the dropdown. We're going to say new for the new item. I'll make this large. This is going to be Jodi Jodi guitar lessons. I'm going to copy that. So Jodi is going to be our instructor. She's having guitar lessons and she's going to give us our time sheet that we're going to be billing on. So it's going to be a service item. The rate down here, we're going to say is going to be 190 hours. So she's a good guitar instructor. So we're going to say then the dropdown. Let's make a new income account. We're going to make a new income account here. So I'm going to say we need a new one, new income account. Now, number-wise, it needs to be next to the other income account. So the income accounts are going to be down here in the 4,000. So 4,055, let's say, 4,405 and we'll call this guitar lessons. And then that is going to be an income account. So we want to make sure that this is an income type of account. So that's what we're going to have new service item. I'm going to save this and then close this out. And that looks good. Let's save this now. This looks good. And let's close this out. And then we're going to take the item is going to be Jodi guitar lessons. And we're going to be charging the hours. We are going to say our five hours. At the 190, that's going to be the 950. No sales tax applicable. So what's going to happen when we record this? It's going to be increasing the accounts receivable. The other side is going to go to income. In the new income account, we just set up no inventory or anything involved. So now we're going to say, let's say, save up top. So we're going to do this for, we're imagining we're going through the time sheets now. So I'm going to say save up top. So then I'm going to go back up top and do this again. We're going to add another customer. So I'm going to say new customer. And we're picking this up from Jodi's time sheet. Now, Diana Martinez, Diana Martinez, I'm going to copy that. So we're going to copy the name and put that down below. And then I'm just going to save that. And again, we might put down here that this is going to be the lessons as our customer type may not do that every time, but that could be useful. I'm going to say save and then close this back out. Then everything looks good up top. So I'm going to put this is going to be Jodi guitar lessons. So that's going to be the item. And we're going to say once again, five hours here as well. So that's going to be the 950 same effect on the financials. Then I'm going to say save up top. And we'll do this again. Notice I set up the customer, but then didn't then add the customer. So it should be Diana Martinez. Then I'm going to save it. There we have it. Next, we're going to add another one. This is going to be, I'm going to say new. We'll have a new item again, new customer name is going to be a Len. And this is Jackson, Len Jackson. I'm going to copy that and put that down below as well. We're going to say this is going to be for lessons. So we'll pick up the lessons and then save that and close it out. So that looks good. So I'm going to pick up Len, Len looks good. Tab through here. We're then going to be down below. Once again, this is going to be Jodi guitar lessons. And we're going to say 10 hours a lot of work here for Jodi. And that's going to be the 1900 same effect on the financials increasing the receivable increasing revenue. So let's say save up top. I'm going to say save up top. And we're going to go to our next employee's time sheet. Now we're looking at the time sheet for Angela. So Angela's time sheet. And so we're going to say that her client is Jenny, Jenny Jones. So don't we have a Jenny Jones here, Jenny? No. So we'll set up Jenny. So we'll say new. We're going to say new down below, new customer. That new customer being Jenny Jones. And then I'm going to copy that. So I'm going to put that down on the name down below. We're also going to say it's going to be a service or a lessons that lessons. So we will pick that up. And then I'm going to say up top, we will save that and then close this out. So then we're going to make sure that we pick up the name again, which is going to be Jenny, Jenny Jones. Then we're going to go down to the item down below within the item. This is for Angela. So we haven't set up Angela yet. This is our other instructor now. So I'm going to set up another inventory service item. So it's going to be a new inventory service item. And we're going to say this is Angela, guitar, lessons. And I'm going to copy that. They wouldn't let me put the S there because it's too long. I'll put it down here. And then it's a service item. I'm going to put it here too. We should have done that on the last one probably. And then I want to put in the account. It's going to be the guitar lessons account. So that's the only one I need to change there to make sure it goes to the proper account. So let's go ahead and save that. And then I'm going to close this. And then I'm going to put in here Angela, guitar, lessons. And we're going to say that this is going to be for seven hours. And I didn't put a rate for the Angela, guitar, lessons. So I'm going to put that here. The unit price I should have put in place. I'm just going to add it here. We could go back into the items and add it. But I'm going to say it's 150. So I'm just going to put it in here for now. And that's going to do the same thing. It's going to increase the accounts receivable. The other side is going to go to that service revenue account once again. Let's go ahead and save that. So I'm going to say save. Next customer for Diana, we're going to go back up top. Or for Angela, she's our instructor. We're going to say new, set up a new customer. The customer is going to be Diana. So it's going to be Diana Miller. So we're going to be in here. We're going to say Diana Miller. And we're going to copy that. So I'm going to copy, put that in the name. We're going to say the type is going to be lessons once again. And we will save that. And then I'm going to close this one back up. And then we're going to go into the items down below. This is going to be Angela. And it's going to be six on the quantity. And once again, I'm going to have to fill the rate of 150. And that's going to be 900 there. So same accounts affected. We're going to say save and move on to the next one. I didn't set up, I'm going to say, okay, I didn't pick, I set up the customer that didn't pick the customer. So it's going to be Diana Miller, Diana Miller. All right, then we'll save that one. Now we'll set up the next one. I'm going to add a new customer. So we're going to select the dropdown up top. We're going to say new customer. This is going to be Jill. So I'm going to say Jill Gonzales. So Jill Gonzales and we'll copy that. I'm going to copy that, put that in the name as well. I'm going to say that type is once again, going to be the lessons. And then we will save that and then close that. And that's going to be then Jill up top. So we're going to say Jill. And then the item is going to be for Angela's guitar lessons. We're going to say nine hours in the quantity and the unit price, $150 for $1,350. So $1,350 increasing the AR, increasing the revenue. We're going to save that one. So I'm going to say save up top. And we're going to do this for one more instructor and that's going to be Rebecca. So three more clients, one more instructor. So we're going to say another timesheet for Rebecca's guitar lessons. We're going to add a new customer up top. That customer is going to be Noah Davis. Noah Davis, I'm going to copy that. And that'll be the name as well. The type is going to be for the lessons. And I'm going to save that, close this back out. We're going to be picking up Noah here. And then I'm going to add a new item. So this is for our other guitar instructor. We're going to say new item for this guitar instructor. We're going to make this large. We will then pick up, this is going to be Rebecca. Guitar lessons. And that's all I could fit there. So I'm going to copy that, put that down below lessons. And there we have that. Going to put that in the for service. Going to see if we could pick the price level this time, which is going to be $100. And we want to make sure it's going to the GL account, which is going to be the guitar lesson, GL account 4055. Then we're going to save that. Going to close this out. Item then being Rebecca guitar lessons for $100 an hour. And we're going to have here eight hours, $800. We're going to save this. Next one, we're going to say plus and add a new customer, new customer. Rebecca, our guitar instructor, second customer, which is going to be Grace Matthew. Going to copy that, going to copy, put that down below as well. Grace, this is going to be for lessons. So I'm going to pick up the lessons and save that. Close this. We're going to put that up top and this is going to be Grace. And then we're going to say this is for the item of Rebecca. And the amount here is going to be six. So we're going to say six and I missed the amount. It's going to be on this side, six. And it should be Rebecca's guitar lessons. I'm going to delete it. And that'll give us the 600. So we're going to save this and do it one more time. So let's save this and do this one more time. Last customer's PAM. So I'm going to select the plus button up top. We're going to have a new customer. And then we're going to say this is PAM Smith, PAM Smith. I'm going to copy this, put that down below. Then we're going to say that the customer is going to be or lessons for the type. And then I'm going to say save. We'll close this out then. And then in the items section, we're going to put the item of Rebecca guitar lessons. And this is going to be quantity eight. And that'll bring us to 800. Let's go ahead and save this and then take a look at our financial statements. I didn't add the customer again. So I'm going to close this back out. We made the customer but didn't add the customer. It's going to be PAM, PAM Smith. Now let's save it and now let's close it. Let's go to our financial statements. Do we have our financial statements open already? We've got the income statement open. You'll see the guitar lessons now at the 5,500. So then if we were double clicking on the guitar lessons, we're going to have our information in there. So there's going to be our guitar lessons that we have. This is going to be a different income account. We set up another income account for those guitar lessons. The other side, of course, being on the balance sheet. So if we were to go back to our forums, I go to our reports, drop down, go down to the financial statements, then the balance sheet. Choosing February, the month that we are in and then in the accounts receivable, double click in the accounts receivable. Here is going to be all the information in the accounts receivable. That then also being tracked by the subsidiary Ledger report, which will track this information, tying out to the accounts receivable, tracking by customer. That's going to be it for now. Let's get out of here.