Hi friends. Happy Saturday. I'm about to go grocery shopping. So today is going to be a little bit different of a grocery haul. I'm going to be making a stop at Trader Joe's to pick up some produce. I have a lot of produce on the menu for this upcoming week. So I'm going to stop by there. I really like their produce and their prices are really, really good. So I'm going to stop by there, grab all my produce plus a couple other things on my list. Then I'm going to be going to a grocery store here locally called Natural Grocer. So it's similar, maybe to like a sprout. So those of you that have sprouts and I'm going to pick up some English muffins. There's some sprouted grain English muffins that I want to try. So I'm going to pick those up. And then my final stop is going to be Fred Meyer, which is a Kroger store to pick up the rest of my groceries. So that's what's on the plan for this morning. Lots of stops to make, but I have quite the meal plan set for this next week. My girlfriend is here from San Diego. So we're really going to be careful what we're eating, be on track. We're going to be doing a lot of exercise. So I have quite a few things to pick up in order for that to happen while she's here. So I will be back after grocery shopping to give you guys all three, I guess three, of my grocery hauls. So I'll see you shortly. So the first part of the grocery haul comes from Trader Joe's and then just a local natural store here in my area called natural grocers. So we stopped and got these English muffins for some breakfast sandwiches this next week. And I'm going to put all the points on the screen as usual for you guys. These are the Ezekiel Genesis one to nine muffins. So that's all we got in natural grocers. And then from Trader Joe's we have one pound of 96 for extra lean ground beef. As you know, this is my favorite hamburger. We also grab some roasted garlic hummus. This is just to have as a snack this next week. A spaghetti squash, three yellow peppers. Of course the Trader Joe's light shredded mozzarella cheese. I would have bought more, but they only had one package left. So I grabbed that and the Trader Joe's light Mexican blend as well. Big thing of strawberries, celery hearts, a sweet onion, one cucumber for some snacks, apples, a big tomato for some hamburgers for tomorrow night, green onions, blueberries, zucchini, some mixed green lettuce, some romaine hearts, and a couple of peppers, a red and an orange. So that's the Trader Joe's and natural grocers portion of the haul. Up next will be Fred Meyer. So here is the grocery haul from Fred Meyer. So this is the rest of the groceries for the week. So first I grabbed a huge 96 ounce container of the silk almond milk. This is the unsweetened vanilla. I've just been going through a lot of almond milk, so I decided to go ahead and just buy the huge container. That way it lasts more than just one week. I also picked up some simple truth organic non-fat vanilla bean Greek yogurt. This is for an upcoming recipe.  This is something I pick up every single week and I was completely out. So I grabbed another can, two dozen of the happy eggs, which are my very favorite eggs. I'm going to be using a lot of eggs this next week in recipes. I have one pound of steel cut oatmeal and this is for a breakfast recipe. 99% fat free ground turkey for a dinner recipe. Another bag of jasmine rice because I'm completely out.  My husband wanted pickles, so plastic zesty dill spears, green beans for my dogs as usual. I've been seeing this all over YouTube. So this is the French's Honey Mustard. It is zero points. I'll put on the screen how much you can have for zero points, but I heard this is really good on hard boiled eggs and I thought this would be good even in egg salad on hamburgers. So I grabbed the French's Honey Mustard. Fat free ranch. This is for an upcoming dinner recipe actually, and this is for my lunch meal prep. Two cans of pure pumpkin for a bar recipe that I'll be making. A container of vegetable broth and a container of chicken stock for recipes. I had a buy one, get one free coupon for this perky jerky original in Turkey. So I picked up two packages of that. So I thought we could have this on hand for a snack. I grabbed a package of Bob's Red Mill Oat Flour, and this is for a couple of recipes for over this weekend.   And this is just for a lunch recipe. So that is the rest of the grocery haul for this week. So now let's get into this week's meal plan. As you know, this is my Keriel meal planner. I absolutely love my meal planner. It is so nice. It is comprehensive. It's gorgeous to look at. It has a nice spiral bound.  So you have a resource tab, which is where you can track your favorite websites, meal planning blogs, recipes. There's an inventory tab. This is on my list. So you can do a freezer inventory, a pantry inventory, and really just keep track of what you have on hand. The meal plans tab, which is the one that we'll dive into a little bit deeper, is the one that I use all the time. If you are going to be having any type of a gathering, so any type of an event at your home, there's a gatherings tab where you can track what you're going to have and plan your grocery list accordingly. So this is a super nice feature as well. And then the notes section of the meal planner, of course, is just where you can take notes on different ideas. And then lastly, there is this nice little pocket in the back that you can put notes and things in as well. So let's go to the meal plans tab, as that's the one that we're going to take a closer look at. You can track your meals by the month. And this is something that I always do, because at a glance, I can see what's on my meal plan. And then I know what to pull out of the freezer the night before or make sure I have all the ingredients on hand. And if not, then I can plan on stopping at the store after work. So this is just a really nice at the glance tool. And then each week, you have an entire weekly menu. So you plan your menu day by day. And then this part here detaches. And that's your grocery list so that you can go into your shopping. And I use my grocery list every single week. So for example, this week, you can see that the grocery list is gone. So just a wonderful meal planner, everything you'd ever need. I do have a discount code for 10% off. So if you go down in the description box, click the link and or the code here on the screen, you'll get 10% off. So can't beat that. So let's get into this week. So my weeks go Saturday through Friday. So I have Saturday, June 29th through the following Friday. So for tonight for dinner, we're going to be having chicken fajitas. I did use my weeklies yesterday, Friday. We had a little girls night barbecue. So I'm on track today. So we're going to be doing chicken fajitas on Sunday. We're going to be doing spaghetti squash turkey with marinara on Monday. We're going to be doing London broil cauliflower mashed potatoes and steamed green beans. Yum. Tuesday, we're going to be making sweet and sour chicken over rice with some vegetables. I've been really wanting Chinese food.  And then on Wednesday, I'm going to be making broccoli and cheddar pasta and chicken in my instant pot. So you'll be seeing that recipe in an upcoming video. Thursday is skinny garlic, chicken, potatoes or rice. I'm not sure yet. And veggies and again in my instant pot. So come in your way. And Friday I'm going out. You guys, I'm really excited about this bacon, chicken and mushroom skillet. And that will be featured in a 30 minute meal. So cannot wait to share that with you guys as well. So here is where you plan out your menu for the week. And then on the back side of where I plan my menu is where I plan my meal prep. So for meal prep this week, I'm going to be making mini protein waffles with eggs and sausage. You'll be seeing the protein waffle recipe in meal prep. Really excited for this kind of that country home style breakfast where you have a waffle, eggs, sausage, the whole shebang. And then for lunch this week, I'm going to be prepping turkey salad. And I'll be having that on a lettuce wrap. You'll be seeing that as well as the ranch potato salad recipe. So this week I'm not making anything for dessert because I have left over the scones from last week and the mini butt cakes. So I'm going to be showing you a breakfast and two lunch recipes instead. So that's what's on the plan for meal prep. So there you have it. That is my weekly meal plan. This is my Keriel meal planner. And there you have it. I hope you enjoyed this week's WW grocery haul. Boy oh boy was it a haul. Everything is perfect. I got everything I needed for a successful upcoming week. Some new things, some things I haven't tried before. I'm really excited to try those English muffins. Even though they are about a point higher than a traditional English muffin, they're full of all the goodness.  And they're a cleaner, a cleaner English muffin. So I cannot wait to try those. You will be seeing a lot of the recipes that I shared with you in upcoming videos. So definitely stay tuned for that. And if you're new to my channel, I'd like to extend a huge warm welcome. Make sure that you subscribe. Hit that little bell. That way you'll be notified every single time that I upload. Give this video a thumbs up. Comment down below. Let me know what you thought of this week's grocery haul and meal plan. And I'll see you guys all in the next video. Bye guys.


In this video, I'll give you a quick summary of the concepts of Unity's data-oriented technology stack, but the details, including the API, are covered in other videos of this playlist. Dots is comprised of these four elements. The job system enables us to utilize multiple cores by creating units of work called jobs, and the Brose compiler optionally can be used to compile the code of these jobs, generating highly optimized code. ECS is a new way of structuring data and code that avoids the performance and organization problems of Unity's conventional game objects. The E stands for entity, which is a logical ID. The C stands for component, which is a piece of data associated with an entity. And the S stands for system, which is a unit of code executed in the game loop. Lastly, Project Tiny is a new engine runtime that supports only dots, stripping out support for conventional Unity features, and thus stripping out unnecessary overhead in games that don't use them. So firstly, let's look at the job system. Without the job system, multi-threading requires us to create and manage threads ourselves, as well as to manually synchronize access to data that's shared between the threads. When using the job system, it creates and manages a pool of threads for us, usually one per CPU core. We then create units of work called jobs, and add them to the job system queue. The job system then farms these jobs from the queue to the pool of threads as the threads become available. We leave it up to the system to decide precisely which jobs run on which threads in what order, and once a job is running on a thread, it is never preempted by other jobs. While a job runs, its thread is occupied until the job finishes. For primarily this reason, the job system is not appropriate for doing IO work. If a job were to wait for IO, its thread would be wastefully idle during that time, thus thwarting our goal of maximizing utilization of the course. So jobs are intended only for doing computation on in-memory data. Now it may be the case that two or more concurrently scheduled jobs access the same data. If the shared data is only read, then there's no problem, but if one or more of the jobs mutate the data, we usually then want to ensure these jobs run in a certain order, and not overlap in execution. The job system lets us do this by specifying dependencies between jobs. If we tell the job system that job A is dependent upon job B, then the job system will make sure job B finishes executing before job A starts. A job can have multiple direct dependencies, and those dependencies can have their own dependencies, and a job will not start executing until all of its dependencies have finished. So the idea is that by splitting our workload into separate jobs and creating dependencies between them only where they're needed, we can maximize the use of the course. In this diagram, each box represents a job, and each arrow points in the direction of dependency. Job D, for example, must wait for B and C to finish before it starts executing, and B first must wait for A. Be clear, though, that because A and C have no dependencies, they need not wait for any other job. On the right side of D, jobs E, F, and G all must wait for D to finish, and in turn, H must wait for G, and I must wait for H. Again, be clear that though E, F, and G all must wait for D, they need not wait for each other, so in fact, G, H, and I might all finish before either E or F finish, or before they even start executing. Also note that job dependencies cannot be circular. We wouldn't want job X to depend on Y if Y also depends back on X, because then both jobs would wait for each other forever, neither ever executing. Fortunately, the job system API makes it impossible to schedule circular dependencies, so it's not really a problem. As mentioned, a job should not perform IO, but furthermore, it should not access any managed objects, and it should only access the data explicitly handed to it. Because it can't perform IO or touch managed objects, the only way a job can do useful work is by mutating one or more natively allocated data structures called native containers. For example, if the purpose of a job is to calculate a single number, we create a native array of length one and hand the array to the job before scheduling it. In the job, we store the calculated number in the single slot of the array, and after the job finishes, we can read the result from the array. It is these native containers that might be shared between jobs and so might cause scheduling conflicts. To avoid one job interfering with the work of another concurrently scheduled job that accesses the same native container, one job must depend upon the other directly or indirectly. Which job should be a dependency of the other is up to us, but we don't want to leave their order of execution up to the happenstance of scheduling. Very helpfully, the job system safety checks will give us an error if we try to schedule conflicting jobs with no dependency between them. However, these checks are fairly costly and so they are enabled only within the editor, not within standalone builds. The burst compiler, again, is an optimizing C sharp compiler that can aggressively utilize SIMD instructions, single instruction multiple data instructions. This burst compiler, though, only works on a subset of C sharp that Unity calls high-performance C sharp, and it only works on job code. Especially for computation heavy code, burst can often yield 2x to 10x performance gains, sometimes even more. While there are no plans to deprecate game objects, the game object pattern tends to structure data and code in a way that is very unfriendly to the CPU cache and so incurs large performance hits. Moreover, the game object pattern entangles data and code together, arguably making both less flexible and harder to reason about. In contrast, the entities and components of ECS lay out data in a sequentially contiguous way that is very cache friendly, and the systems of ECS keep the data and code logically separate. ECS may be used in conjunction with Unity's game objects, or it may be used as a full replacement. At this time, however, many of Unity's features have no ECS equivalents, so creating a full game today using only ECS is not generally practical. So an entity, again, is just a unique integer ID number, and an entity can have associated with it any number of components. For a single component type, however, a single entity can have only one instance of that type. The set of component types associated with an entity is called its archetype. Like the columns of a relational table, there's no sense of order to the components, so say an archetype consisting of components A, B, and C is the same as an archetype of components C, B, and A, or B, A, and C, etc. Order doesn't matter. While there is no hard size limit, it's generally best to keep component types small, say under 100 bytes. So rather than bundle many fields into a single component type, it's usually better to split them into very small component types with just a few fields. Unlike GameObject components, monobahaviors, entity components have no event methods like update. While we can give our components whatever methods we like, it's generally best to instead put most game logic in systems. Unlike GameObjects, entities do not have parents or children. However, components can have entity IDs as fields, so in this way, an entity can reference other entities through its components. The key to understanding ECS is to understand how it stores the entities and their components in memory. A chunk is a 16 kilobyte block of natively allocated memory that stores some number of entities with the same archetype. In this diagram, for example, we have a chunk storing entities with components A, B, and C. The chunk is split into four parallel arrays, the first for storing the entity IDs, the second for storing the A components, the third for storing the B components, and the fourth for storing the C components. Because components come in different sizes, the number of entities that can be stored in a chunk varies. Be clear though that while the arrays of a chunk may take up different amounts of space, they all have the same number of slots. The first slot of the arrays stores the entity ID and components of the first entity, the second slot stores the entity ID and components of the second entity, etc. The chunk also has a header with information about the chunk, including the count of entities currently stored in the chunk. If a single chunk is not enough to hold all the entities of a particular archetype, additional chunks are created. Because a single chunk can only store entities of one particular archetype, when we change an entity's archetype by adding or removing components, the entity must be moved to a different chunk that matches the entity's new archetype. The entities in a chunk are meant to be stored contiguously with no gaps, so when an entity is removed from a chunk, the last entity in the chunk is moved up to fill in the gap. So that's how entities and their components are stored. What this structure optimizes for is scenarios where we want to loop through all entities with a particular set of components. For example, if we want to do something with all entities having an A and B component, we loop over all chunks, which include those component types, and for each chunk we can loop over the entity ID and A and B components of the entities in that chunk. Ideally, this data would all be laid out in memory sequentially in one big array, but the chunk structure of ECS is very close to this ideal. Assuming our query matches multiple chunks, yes, we do have to jump between chunks, and the data within the chunks is split across separate arrays, but as long as we access only a few components in the loop, we still get near optimal memory access. Unlike with the game object structure, our data is not scattered everywhere throughout memory, and we waste very little memory bandwidth accessing data which we don't actually need in the loop. Here, for example, say each box represents a chunk, and each letter denotes a component type of that chunk. The chunks themselves may be scattered all throughout memory, but the entity IDs and components within the chunks are stored tightly packed one after the other. If we want to loop through all entities with both B and C components, we touch these five chunks. In other cases, we might want to access entities with a certain set of components, but not access necessarily all of those components. Here, for example, we're still visiting every entity with both B and C components, but we're only accessing the C components. In still other cases, we might want to access entities with a certain set of components that excludes one or more component types. Here, if we want to access the chunks that include B and C, but exclude A, then we would access just these three chunks. A system, concretely, is a class inheriting from component system. Like a monob behavior, systems have event methods called in the game loop. On update, for example, is called once per frame. Unlike monob behaviors, we don't attach systems to any game objects. We can group systems and use attributes to determine their order of updates, but where unspecified, the order of updates is left up to Unity. What Unity calls a world is comprised of a set of systems and an entity manager, which keeps track of the world's entities. The systems of a world normally only access the entities of their own world. While many games may have no need for more than one world, splitting entities into separate worlds can be useful for various purposes, such as networking. We can access entities and their components in jobs using special job types, but two concurrently scheduled jobs will conflict if they access the same entity components. To fix such conflicts between two jobs, one job must be scheduled as a dependency of the other to ensure that one finishes executing before the other starts. Safety checks in the editor will catch these conflicts if we fail the set of needed dependencies. To help us chain the appropriate dependencies between jobs, we use a variant of component system called job component system. While we can read and mutate entity components within jobs, we cannot in a job make structural changes to the chunks, meaning we can't add or remove entities or components. Allowing such structural changes in jobs would create too many potential conflicts. To work around this limitation, a job can record changes it wants made with an entity command buffer, and after the job finishes, the recorded changes of the buffer can then be actually enacted. Rather than directly create entities and components in the Unity editor, we still in ECS create scenes composed of conventional game objects, but using special conversion systems, we can convert the game objects of sub-scenes into entities when a scene loads. After conversion, the game objects are then usually destroyed. A component with no data is called a tag because such components can be used to tag entities. For example, if we want only some objects to be affected by gravity, we might give only those entities a gravity tag. When we then apply gravity to entities in our code, we only query for entities with this gravity tag. Even though tag components take up no storage space, they are still part of an entity's archetype. So when we add or remove a tag component, the entity must be moved to another chunk, just like for any other change to the archetype. An object component is a special kind of component that is a managed object. These components are not stored in the chunks, but rather in external arrays, and chunks reference the objects by indexes. Because these objects are managed, they cannot be accessed in jobs. Well, sometimes convenient, object components are not cache friendly, and so using too many object components defeats the whole purpose of ECS. A chunk component is, as the name implies, a component that belongs to a chunk itself, not any individual entity. When entities are added into chunks or moved between chunks, no chunk component values are affected. Chunk components are useful in a few niche scenarios. For example, a colon system might store a chunk component, which is an access-aligned bounding box, encompassing the bounding boxes of all the entities within the chunk. This bounding box must be updated as the bounding boxes of the entities change, but keeping this chunk bounding box up to date can speed up colon calculations. Shared components, like chunk components, only have one value per chunk, not one value per entity. But these shared components logically belong to the individual entities, not the chunk. So when we change the shared component value of an entity, it no longer matches the value of other entities in the same chunk, and therefore, the entity must be moved to a different chunk that shares the same new value. If no such chunk already exists, a new chunk is created. Also, like object components, the shared components are not stored in the chunk, but rather in arrays outside of the chunks. The chunk itself, for each entity, simply stores an index into the arrays. The other special thing about these shared components is that unique shared component values are stored only once, so entities across all chunks that share a value all reference the very same value, not any copies. This means that for each unique shared component value, at least one chunk is required. If we have 100 different entities of the same archetype, each with a different shared component value, then each one will be stored in its own chunk. Consequently, shared components are generally only appropriate when we expect many entities to share the same values. Otherwise, our data will get scattered throughout memory, defeating the whole purpose of ECS. While regular components cannot contain arrays, we can give our entities dynamic buffer components. These dynamic buffers are expandable arrays. For each dynamic buffer component of each entity, the chunk stores a fixed-size array, but these arrays can be supplemented with additional storage outside the chunk. For example, an entity might have a dynamic buffer component with five fixed slots stored directly in the chunk, but we can expand the array to have, say, 12 slots, in which case, seven additional slots are allocated outside the chunk. System state components are like regular components except for one difference. When an entity with any system state components is destroyed, all non-system state components get removed, but the entity is not actually destroyed. Only once we remove all of the system state components does the entity actually get destroyed. The primary use case of system state components is that we might want to do some kind of cleanup work after destroying entities. If we put any data needed for cleanup in system state components of an entity, then we can find the entity for cleanup by querying for all entities with only those system state components. We then perform our cleanup and remove the system state components to actually destroy the entities. The term blob is an acronym for binary large object. A blob asset in ECS is not actually an asset in the usual Unity sense. Blob assets are not necessarily stored as files and currently they aren't imported into the asset database, though perhaps this might change in the future. Instead, blob assets are simply immutable blobs created in memory that can be referenced from components. Because they're immutable, they can be safely used in jobs without any concern for conflicts. While these blobs cannot contain any absolute pointers, i.e. memory addresses, they can contain relative pointers, i.e. offsets. Because these blobs contain no absolute pointers, the blobs can be trivially serialized and deserialized by simply copying the bytes verbatim. So these blobs are assets in the sense that we might store them on disk at build time and then load them from disk at runtime. Strings can't be stored directly in regular components, but one work around is to have components reference blobs which store the needed string data. Blob assets are useful for myriad other kinds of data, such as collision geometry or AI navigation graphs, or whatever else we can think of that fits the format. Understand, though, that not all binary data formats can be expressed as blob assets. For example, we could store textured data in a blob asset, but most standard texture formats have very particular binary formats that don't conform to the blob asset format, so we can't have the GPU directly load and render textures that are stored in blob assets. So that covers all the major elements of ECS, but again, note that for most games, ECS is not yet truly viable as a full replacement for game objects. Most of the core Unity Engine functionality of game object components, as of yet, has no ECS equivalent, and so if you use ECS today, you yourself would have to implement this functionality or use conventional game objects alongside ECS. The only major pieces in place right now are three packages, hybrid.rendering, Unity.transforms and Unity.physics, all of which are still currently under development. ECS feature parity with conventional game objects is at least a few years away. Lastly, Project Tiny, which we mentioned at the beginning, is a new runtime that strips out everything but support for dots. Because the runtime doesn't support game objects, all conversion of game objects to entities must be done in build time rather than runtime. Like ECS itself, Project Tiny is still currently under heavy development. The project's emphasis for now is on web and mobile games because they would most benefit from smaller download sizes and faster load times.


Hi, welcome to the next episode of Reverse Engineering, a Monro K calculator. We are in the middle of putting this thing back together. All right, so the next thing is we've got this selector axle. It's called a selector axle because when you push these gears together, you get varying number of teeth and that selects the digit that you're going to register. So it goes, let me lift this a little bit, okay, so it goes in this cradle. So this gear is going to mesh with a small gear that's inside here. It's also going to sit on these friction brakes right here, so we need to make sure that we get that correct. And let's just do that now. So the friction brake, I believe, sits in here and in here down there. So they're kind of pulley-like structures. So I'm just going to go ahead and align this one and I think it just sort of snaps into place and align this one and that also snaps into place and I'm not going to lubricate them because they're supposed to be brakes. So now the next thing is that I do need to press this in so that as you can see, these gears are not quite meshing. That's because this needs to be pressed in more. So what I'm going to do is I'm going to, I think what might help is if I rotate this a little bit so that this cam surface is not touching this lifter. There we go, that works. So the other thing, ah, okay, timing, right? We've got a set of timing marks and it looks like I got it right. Oops, I think I'm off by one tooth. Let me move it over by one tooth. Yeah, there we go. So I've got to get the relative phase of the gears all correct and that all-important timing mark tells you where it goes. Okay, so that's that.  So basically this served the purpose of the clip and I believe what I was going to do was find a replacement for the, find a standard, you know, C-clip replacement or E-clip replacement for this. So, but before I do that really what I want to do is I want to lock this down because we've got these screw holes here, here, here and here for half bushing.  So let's do that and that would be in bag four, which is this bag, I'm pretty sure. So I'm just going to have a quick look inside at what parts we've got. So let me just clear my working area, here's my little screw and what have we gotten bag for? Well, we've got a whole bunch of parts, a lot of which we won't need but we've got the bell hammer, we've got the bell and various other parts and one of these, okay, so here we've got the two bushings and we've got one, two, three, four screws of the same kind. So that's what we'll use. So let's do that. Let us compare the bushings to see if they're the same, indeed they do look the same. So as before, I'm going to oil the threads, okay, so that my screws don't rust in place and then I'm going to put one bushing on and just put the screw on finger tight and this other screw on finger tight as well and the other bushing on the other side as well with its screws, finger tight, so now I'm just going to tighten that down and this other one down and this one, I suppose you can't really see that, but it's there and this one is again kind of hard to get to so I suspect they just used like a really long, thin screwdriver so I've got a thin screwdriver here, so I'm just going to use that, yeah, I'm pretty sure that's what they must have done, what the ancients did with their screwdrivers, their crazy custom tools, non-standard, right, okay, good, nice, so that works. Let me just apply a bit of oil to the little bits in there and to the edge of these cams because they are rotating, alright, so let's just give it a rotation, it seems to get stuck at a certain point and that's really not good, uh-huh, okay, so what is preventing this from working properly? I think it just had to align, that's all, I think, unless I'm just trying to see how this actually works, okay, so we've got this cam surface here, alright, which drives this lever, which allows this lever to come up and down, so if I rotate this cam, you can see now there's nothing here, but now the cam pushes the surface down, I believe, yeah, so now this is basically locked in place, but if I rotate it a little more, now it's able to come up, actually like that. Now the question is, what about this guy on this side? Well, it too has a cam surface and it appears to be slightly different, so you can see that now it goes up like that, so that's kind of, kind of odd, not really sure what the deal is there, as you can see that these two things sort of pop up and go down at different times, really not sure why that is, so this is kind of a mystery, so, okay, so clearly this is in the locked position because the rollers are down, right, and as I rotate this, now that's interesting, okay, as I rotate this, so this is in the locked position, now as I rotate this, this comes up, which basically means that I'm now allowed to lift the carriage up, I guess, although this will not let me lift the carriage up, so as I continue, this now pulls the carriage, pulls this lock down, and then this pops up, so I think something screwy is going on here, and I'm wondering what that is, so one possibility, this is a very distinct possibility, a bloody awful possibility, is that I have maybe, possibly, this cam I put on at 180 degrees, I'll bet that's what it is, I'll bet this cam I put on 180 degrees out of phase with this, that would certainly explain why these are popping up, why one pops up, then the other pops up, then the first one pops up, okay, all right, that is very good to know, so, and then the question is, well, unless maybe this is actually correct, and this is the one that is out of phase, all right, so it turned out that it wasn't that the parts were put on improperly, it's that this thing, I can actually pull this out, rotate it, and then put it back, and then it has a certain range of movement, and if I rotate it, turn it around, and put it back again, it has a different range of motion, so obviously I need to match that range of motion with this over here, so if this surface is like that, then clearly this surface also needs to be like that, now they, now I can put it back, so let me raise the brakes, so this is an important and interesting piece of information, at least I think so, so the brakes are on, let me rotate the gears so that they are timed properly, so actually even before I remove the gears, and I rotate this, I can see that that the gears rotate, see that, that's interesting, that is a mechanism, let me, let me remove this because I want to get to the bottom of this, this is a mechanism that requires a full cycle to be done before, before inverting the cycle, so I'm just going to rotate this until it comes back, there we go, so this is, this would be the neutral position, now if I rotate it, if I start, you know, doing an addition say, or a subtraction or whatever this is, now I can't rotate it back, I must complete the subtraction, or the addition, okay, and when it goes back into the neutral position, then I can go back, and you see, I have to complete the cycle, so I actually want to know where that mechanism is, and I suspect that it is going to have to do with this mystery, let's see, this mystery pin, oops, darn it, I'm pretty sure that's what it is, yeah, and in fact as I rotate this, let's rotate it a little more, okay, so now we can see that there's this tooth gear here, and this, essentially it's a pawl, and it prevents it from moving backwards until the cycle is complete, then you can actually go in the other direction, and the pawl, again, works in the opposite direction, so that's the purpose of that pin, that's pretty neat, something I didn't know, how tight does it have to be, well, I don't know, that's the question that I was asking before, let me just look at this, put the microphone back on my shirt, which I keep forgetting to do, where is, here we go, right, let me see if I can just sort of lift the camera a bit, and get to the spot where I'm working, all right, there we go, so we're looking at this nut here, and this is the pin thing, so if I were to just attempt to tighten it a bit, so I'm just trying to tighten that nut there, and it's still loose, which is good, and it being loose, I'm going to put some oil on it, and I'll put some oil on its pin also, so that's pretty cool, all right, so let's go ahead and rotate this so that the arrow over here on the intermediate gear, the middle gear is pointing up, and let's go ahead and put that selector gear back on, now of course I'm going to have to make sure that I have these cam surfaces pointing in the same way, and then carefully put the brake on there, good, then rotate so that the arrow is facing down, and then maybe rotate the cam a little bit, rotate it a little more maybe, what I want to do is push this gear down, and I'm being prevented from doing that by this, I think, yeah, I think, yep, all right, so let me get the alignment exact, so let me lower this, so that maybe you'll have a hope of seeing the arrows boring lowering, so there's the arrow there, now I need to rotate this, match them up, there we go, now they're matched up, now I'm going to raise the camera, and now I'm going to put the bushings back on, get them in there, screws, all right, this is turning out better, so just get that a little bit tightened down, get this other screw a little bit tightened down, this is one of the screws that probably was put in with a very thin screwdriver, get the other bushing, and get the easy screw in, and now the difficult screw, I assume they had magnetic screwdrivers back then, or maybe they didn't, who knows, surely they knew, surely they had magnetic bits, it would be nice to know if there were a patent on magnetic bits so that we could sort of date the the tools that they would have used to put this together, we've already dated Phillips screws, so we know that's why they didn't actually use them on this, I have a love-hate relationship with Phillips head screws, because they're designed to torque out, and when they torque out they damage the slots, which is kind of a stupid thing to do, so all right let's see if this actually works now, so what we want to do is we want to make sure that these two things go up in phase, yes, yes that is what we wanted, all right, so we're getting a little bit of friction somewhere, and it seems to be caused by this cam over here, let me put some oil on there, let's put some oil on the cam surface, rotate this, let's pull this down, and here let's just put some oil on the surface right here, and then try to distribute the oil in there, wind it lock up, okay it's this uh this um pawl back here that locked it up, I'm not sure why, and it's still locking it up, what happened, unless it's okay, so all right, so it appears to actually take some force to uh to get this um this thing rotating, see when it pushes down it actually requires some force, so that's not very good, but I guess if you've got a crank handle, so you've got some mechanical advantage, that's okay, it's um not as smooth as I'd like, let me see uh the other side, rotate, and in the other direction, yeah, yeah the other cam surface seems to be okay, um let me just uh put some oil on that as well, all right, so that's where we are, let's just leave it at that, seems to be working okay, so the thing about the selector gears is that if I push this in like this right, let's see, I'm going to select a couple of uh couple of teeth, so that's why it's called the selector gear, all right, it's a neutral position, now let us talk about um this lever right over here, so that lever pops right onto here, so what I'm going to do is I'm going to rotate this a little bit, and then lift this, so this is a lock right, so you can see, you can definitely see that when this lever is attached to this pin, this is not going to move unless this is rotated back, and then it can just rotate round and round and round and round until it locks into place, so that's an interesting mechanism and we're going to have to find out what actually activates that mechanism, so in the meantime I'm just going to force this over that, and then I said I was going to try to find a clip for this, so you know rather than using this little piece of wire, which I can do, but I'd really rather not, so let's see what I can find, all right, and I don't have any C-clips that match this diameter, I guess that should probably be next on my list of things to buy, a set of relatively small things like that, so I'm just going to put this wire back on and just sort of squeeze it and hope that it remains in place, I probably mentioned this earlier, but I think that what this could be, there we go, now it's closed, it could be a piece of spring wire, oh wait a minute, that's odd, obviously I'm missing a piece, great, all right, let's take it off, there's a piece that's supposed to go on here, oh you know what I think it is, I think it was that, I think it was that washer that I thought was a stupid washer, and it turns out to be not so stupid after all, okay, let's go get that washer and put it on, okay, all right, well I still insist, I still maintain that it's always a good idea to put a washer between the nut and the frame, so I think that those washers were a good idea, so let's just go ahead and stick this back on, okay, well that's what it was, oops, all right, let's go put some oil on this because it's rotational, put some oil all through it, and let's rotate it to distribute the oil, I'm going to keep this lever unlocked and rotate this in the right direction, and there we go, now if I release this, that's going to lock into place and it will simply stop, if this wire were in place, what would happen, nothing, so I still don't know what purpose that wire serves, all right, so let's see what we have left in our bag, so we've got a bell, a hammer, a this thing, a big screw, which doesn't go there, that's the purpose of this small screw, and then we have this large bushing that will probably go on there, and then we have this washer with shoulder that will probably end up going on there, so let's see how all of these pieces get put back on here, and it looks like the first thing that happens is I put this bell back on, now you can see that it's got sort of these indentations, which means that that's I guess just a way of preventing the bell from rotating because it fits on the slot, so it would go on here somehow, well here I'm just going to take the screw, let me put some oil in the threads so I don't get any rust, and let me go ahead and take the screw and just put it on there, let me see where I am, there we go, so now when I screw this on you can see that it actually doesn't rotate, that's kind of interesting, I don't know that they'd actually pay attention to that detail nowadays, they would just let the bell rotate, and you can see that this is the lever that prevents the bell from ringing, so that rings and that's the bell mute, so that's how the muting mechanism works, so there's this lever down here, okay, next parts, we are now incidentally in reversing in video three, so we're getting really close to the beginning, which is kind of exciting and weird at the same time, because you can see that the frame is all taken apart, there's still a lot of parts to go, so clearly those first three videos had a lot of stuff in it, so all of these pieces go together basically like this, we have this lever facing this way and this bushing is going to go in the back like that, okay, we've got this bushing which will actually sit over here like that, this mechanism I believe goes like this and it will fit onto there and then the screw will go through all of these parts like that, okay, so I think I guess that sits on there and this will probably end up I believe going into this hole right over there, because these gears will actually, see, that's how that clapper works, so these gears actually go onto here, so let's go ahead and, okay, and there is a little guide, there's a little guide right over here which I believe is for this, so this would go in like that and let's see, how am I going to, okay, I guess I just screw this in, oh, forgot to put some oil on there, okay, and maybe I should just put some oil in between here, because these will rotate and let me just take the thing apart again and just put some oil on here and I can put this back on, put this back on, great, now everything's coated in oil and let's see, so I want this to be like that, so now this goes up like this and I think that there's a little tiny little tab here and I think this might go above that tab, so let me unscrew this, loosen this, and raise that above the tab, is that how that works? No, I don't think so, unless I have this wrong, that's entirely possible, all right, so I have determined that that's the way that works, okay, so if I go ahead and tighten this up, so I'm kind of wondering what exactly goes here, because it's certainly not these gears and there doesn't appear to be a cam surface, so I'm guessing that there's going to be something rotational over here that will cause that bell to ring, so let me go ahead and tighten that up, maybe I should put the bell mute on so that we're not ringing the bell all the time, okay, so and then we've got some springs here, so we need to determine where the springs go, because this is obviously going to be spring loaded, as I suppose will this lever right here, so I'm guessing that this spring will go on this post, and I'm guessing that so will this, okay, and where do these springs go, they all go on this post right over here, so we can go ahead and try to try to take the end here and put it around, I think probably this will end up going on here, and this will go on the interior of the post, so yeah, so let me actually take that outside one off and take this one, the reason that I say that this goes on the inside is because it seems thinner to me, so let's see, take that off, I claim that this goes around the post like that, is it on? Not quite, there now it's on, and then I take the other one and just put it around the post, there we go, so see I'm moving this and it's not touching this spring, and yet all the springs are working, okay, mute the bell, so the next part, now that we've got all of these done very nicely and oiled and all in place, the next thing is we're going to play with these selectors again, so the way the selectors basically work is, I have some, let's see, I have these, all right, so these are the two different kinds of, I think they're called bails, and you can see that they've got holes here and here, and that basically means that they go between this and here, and they swivel like this, and they swivel in pairs basically, kind of like this, and one basically fits here, and the other basically fits here, so that they can, if I can put this on a pin, it'll be easier to show, put this on the next pin, all right, so basically as the keys go down, put that in, there, here, so as the keys go down, they will push this in varying amounts, so you can see that these tabs are bent more, less, less, and less, and these tabs are all bent in the same way, because this is just five, so just like this, it's zero, and then if I push this just a little bit of the way, it's one, if I push it a little more, it's two, a little more, it's three, and all the way it's four, then I don't push it at all, and I push this, and that's five, and I push this a little bit, and that's six, seven, eight, nine, so in that way, you can select anywhere between zero and nine teeth, okay, and that's the purpose of the keyboard, the keyboard pushes against this, and thus rotates these bales, so the next step is actually putting all these bales on, and I've got a whole bunch of them here, which I believe have already been washed clean, because they were really dirty, and the reason that they were all really dirty and greasy is that the keys rub against them, so I guess the first thing that I'm going to do is I'm going to put some oil on the pins, all of the pins, that seems like a good idea, okay, and the pins here as well, now, so I know that these are the fives, so I'm just going to install those first, just to be maybe regular about it, now am I making a mistake by doing that, let's see, let me take one of the ones, the units, and insert it, didn't seem too difficult, let me try the next one, yeah I'll just go, I'll just do one, then five, then one, then five, so, and the key is that you want this movement to be smooth, because if it isn't smooth, then the key is going to have a very hard time, let's see, this one goes here, that goes in there, it's hard to get the pin in place for some reason, because, ah, there we go, okay, now I need a five, and another one, now because the selector gears actually rotate against this, you can see that there is a wear over here, so that's another place that I should put some oil on, so one, and five, it doesn't matter, it doesn't matter which five is which, they're all the same, as long as they alternate, actually this one goes in that pin fine, but it doesn't actually go in this one very well, and that's really odd, let me set that one aside, and try this one, that one's difficult too, maybe I'm gonna, I don't know if it's a problem with these bales, whether they're bent slightly, let's see, let's try this one, that goes in very well, all right, so those will have to be inspected, and five, one, and five, oops, that's a one, this is a five, that works, all right, one, and the last five, okay, there we go, just like that, so what I need to do is put some oil on this surface, these surfaces here, so I'm just going to smear some oil on, because when the selector gears start to rotate, they're going to rub against these bales, so now when I rotate, I rotate the opposite way, oops, I have to unlock this guy, don't I, all right, so those are the bales, that was easy enough, and then in order to prevent the bales from lifting up, there is a plate that goes right on top of here, so let me, where is that plate, was it in a bag, no, it was not in a bag, is it here, no, where did I put that thing, it is in a bag, it's in bag three, so we're on bag three now, how exciting, so this is the holder for the bale, and it has this sort of a bent profile, and of course the reason is that it goes flat on the plate and then goes down in order to hold the bales in place, that way they don't come up, so let's see, we have in bag three a whole bunch of screws, as you can see, many of them, we've got four big screws, which of course don't fit in there, we've got a whole bunch of screws that have green paint on them, so that obviously came from the cover, so I'm going to separate those out, and I think, yeah, so we basically have, and these are all the same size screws, so here are two screws without any paint, and they of course go here, so let's go ahead and put some oil in there, and I'll use the tiny screwdriver, actually no, I'll use the magnetic screwdriver, and this is why I didn't want to use the magnetic screwdriver, so I'm just going to put this in with a little bit of finger rotation, same thing here, a little bit of finger rotation, now I can go ahead and take the screwdriver and screw it in, I need a smaller bit, there we go, now these bales aren't coming out, and now the exciting part is, at least I think it's exciting, is that we get to put the keyboard back on, so the keyboard goes on, I believe it's probably this way, no, it's going to be this way, because the reason that it's going to be this way, I believe, is that these little U-shaped indents here and here are for the carriage moving mechanism, that little thing over here, and it's always on this side, so the other thing that I'm going to do, now they use grease to grease this up, I'm going to use oil, because that's just me, and I don't like to use grease, because grease will just attract dust, and the dust just stays in the grease, because that's what grease does, so that's why I'm using oil, that didn't take too long, so this has to go on here, so you can see that there are these screw holes on the side, there are actually four of them that correspond to these large four screws, they go in here, here, here, and here, so we just position this carefully, frame, there we go, so it just slides right in, just like that, it aligns, and then we're going to go ahead and I'm going to coat the thread of the screw, and I'm going to put one in here, and get it aligned with its hole, see where is it, is this it, I think that's it, all right, now I'm going to do the same on this other side, I'm going to put some oil on the threads, put it in the hole and get it aligned, okay, that way I know that now this axis is correct, so the only thing that I need to do is just rotate in order to get this, get this correct, and now the other side, nope, that is not correct, is it, or is it, no that is correct, all right, what's throwing the off is that there's this other hole over here, and then I look over here and I see that there's like one hole on top of the other and the top one is populated, so therefore it must be the bottom one, but in fact this bottom one lines up with this top one over here, so that hole must lead to something else, okay, so now that I've got them all in, I can just tighten the keyboard up, I need a bigger bit this time, so here, okay the machine is getting quite heavy now, the machine is getting heavy and exciting, because things are now coming together, okay, so let's just, I'd like to make sure that the keys are actually working properly, so let me go and hit a nine down here, and indeed we can see that back here these gears have stuck together, and if I start to rotate them hopefully it'll turn, unlock it, turn nine positions, one, two, three, four, five, six, seven, eight, nine, good, now I can clear it, and maybe hit the eight, this is actually the 3D printed one, so this will be interesting, one, two, three, well that was unexpected, let's try the seven, three, four, five, six, seven, all right, well that's sort of useful to know, let's just try the eight again, I suspect what happened is that the five wasn't activated properly, let's try again, one, two, three, four, five, six, seven, eight, yeah that's correct, okay, why wasn't the five activated properly, because this is not, because when I press down a key, right, this thing can still move back and forth, and you can see the the gear is back here moving, right, so there's actually a plate that goes on here, so once I put the plate on I'm pretty sure that all of these keys will be lined up properly, they will move up and down only and not left to right, side to side, but yeah that does seem to work, so there we go, the keyboard is now in place, let's lift the camera and get a bigger view of the calculator, so there's a larger view, everything looks really nice and clean and spiffy, so let's see, I believe that the next thing is actually going to be the cover because I've got a ton of green painted screws, so the cover would go on, I'm going to have to clean the cover a little bit, make sure that all these pieces are oiled properly, and I am also going to have to figure out how to put this carriage lifting mechanism back on, oh there's the label for bell on or off, that is for this, so that's kind of nice, and there is actually, you can see that that lever actually apparently might move this lachy thing, and where does this lachy thing go? It seems to go somewhere over here, somewhere around here, so that's an interesting mystery that we'll try to solve, there's also this item count lever, and basically all that does is it locks the one key over here into place, so that allows you to use this register for sort of like a separate register than this side, and then we've got this thing, and I'm not really sure what that's supposed to do, so that'll be interesting to find out, so I believe we probably have just one more video to go before this entire thing is complete, so hopefully everything will work properly with the exception of this broken piece, which we can pretty much fix later because we have seen how easy it is to put this back together again, so until next time, hopefully for the last time on the K, Rob saying see ya!