Good morning welcome back to this course on chemical engineering principles of CVD process. In the last lecture we introduced some basic principles of chemical vapor deposition and to reiterate the key point from the last lecture in chemical vapor deposition the identity and composition of the condensate that forms is different from the identities and composition of the species in the vapor phase that lead to the formation of that condensate. So for the formation of a single condensate species like silicon a variety of gas phase reactants could participate in the deposition process they can react among themselves and the transport process from the bulk of the vapor phase to the substrate will take place through the diffusion of many, many chemical species that contain the depositing element. Now the advantage the primary advantage of CVD over physical vapor deposition where the identity of the condensate exactly matches the identity of the vapor species is that it is much more energy efficient because you are essentially taking advantage of the natural tendency of gases in a high temperature system to dissociate and form a variety of species and also as species dissociate and they become lighter the diffusion rate increases because the diffusion rate of a particle as well as a species is inversely dependent on its size. So the smaller the molecules the faster they will diffuse. So the fact that in chemical vapor deposition you have extensive dissociation of the gas phase molecules into smaller precursors also results in an enhanced rate of transport of these precursors to the substrate. In addition to the advantages that we talked about last time that CVD essentially results in the in very uniform coverage over a surface it is able to follow contours much better than other types of deposition processes and the purity of the system can be maintained quite effectively. As chemical engineers we are always concerned with the design of the system. How do you design a CVD reactor? What are the key components in it? What are the factors you have to take into account when you design a CVD reactor? So let us take a look at that little bit. So a CVD reactor is in essence no different from any chemical reactor which means that you have reactants flowing into the reactor. You provide some source of energy to make the reactants come together react and form a product and then you have a mechanism by which the product can be removed and any byproducts can be exhausted from the system. And just like with any chemical reactor you have to provide appropriate controls to make sure that the reactor performs in a very consistent and repeatable and reproducible manner. So if you look at a CVD reactor in its most basic configuration you have gases essentially entering on one side of the reactor and flowing through the reactor and exiting at the other side of the reactor. There is a substrate holder or what is known as a susceptor which is fixed typically to the bottom of the reactor. It is on top of this susceptor that deposition must take place. So the deposit will actually form on top of this receptor or susceptor that is introduced essentially to make the condensate form. Now the reason that condensation will happen here and not here or here is what? You have a feel for why condensation will form will happen only at the interface between the surface and the gases. What is the difference between the rest of the reactor and the interface? Well actually there are two configurations there is something called the hot wall reactor and a cold wall reactor and by the way in CVD systems the higher the temperature the greater the chance of deposition. So actually the condensate will be maintained if anything at a temperature that is hotter than the surroundings in order for deposition to happen but that is not the primary reason. Even if you have a uniform temperature distribution in the reactor deposition is more likely to happen on the substrate rather than in the gas phase why is that, no all reactants are introduced here. So the reactants are introduced on the left side of the reactor and the products and byproducts are being taken out and the condensate is forming here. So that is not the reason. So impact only is an important phenomenon when you have large particle sizes. Fine particles and vapor molecules do not impact they just diffuse and they either stick or bounce off. So okay the primary difference is that this is a heterogeneous process versus a homogeneous process. When you look at how a CVD film is formed you do not immediately form a continuous film you initially nucleate droplets of the condensate. So it is essentially a nucleation process and the energy barrier for heterogeneous nucleation is much smaller than the energy barrier for homogeneous nucleation. So thermodynamically there is a natural tendency for chemical vapor deposition to happen on any surface that you introduce regardless of what temperature you keep it at, what surface energy it has and all that. So that helps. So because in a CVD reactor you do not want homogeneous nucleation to happen. You do not want little silicon particles forming you know here, here, here and then trying to deposit on the substrate. That would not be good because what will result is a very flaky powdery deposit rather than a continuous and belladiered film. So the entire point of a CVD reactor is to design it such that the formation of the condensed phase only occurs at the substrate on which deposition is supposed to happen and you completely suppress its formation anywhere else in the reactor. Now in essence that is actually very different from what is known as a chemical vapor synthesis reactor. In a CVD reactor you want the condensation to only happen here. In what is known as a CVS reactor or a chemical vapor synthesis reactor you actually use the reactor to make nanoparticles and the way you do that is by promoting homogeneous nucleation and getting these very, very fine particles to form in the gas phase and then providing a mechanism for them to agglomerate and form larger particles which can grow to the nanometer size and then you suppress it. You essentially freeze it at that point but anyway that is good when you are trying to make nanoparticles but when you are trying to make a CVD film you want the exact opposite to happen. You want to design it so that thermodynamically and kinetically it is very difficult for any particles to form in the gas phase and virtually all of the condensation only occurs at the substrate that you have introduced into the reactor. So if you look at this very basic configuration you can see that what you are relying upon is that once you have this reactor you bring the reactants in, you bring it up to whatever temperature and pressure that you want to run it at, reactions happen and the condensation happens here and essentially all the byproducts are then exhausted out. The substrate is removed and the film is then inspected and used for further processing right. Now what are some of the drawbacks in this design? Let us say that you are using as we said last time silane and pyrolysis process to make silicon okay. So the silane is introduced in this direction and the temperature is designed such that it starts to form various precursors of silicon and you start condensing silicon on the substrate. Do you think you will get a uniform substrate? I mean uniform film on the substrate or will the thickness change as a function of downstream distance? Well yeah basically what will happen is that the concentration of silane here will be quite large when it first encounters a substrate but some of it will then deposit. So the precursor concentration itself will start decreasing right as the gases are flown across the substrate and therefore what you will see is that you will get a very thick deposit the leading edge but as you go towards the trading edge of the substrate you will start seeing a reduction in the thickness of the deposit which is not good. So how do you address that situation? If you are a chemical engineer and you are trying to design this process and you wanted to get a uniform film how would you do it? Increasing the velocity may reduce the severity of the problem but you will still get a non-uniform substrate. Inclining. Yeah, inclining the substrate is one way to do it and that is one of the tricks that is used in the industry to try and get a more uniform deposition. Any other ideas? Rotating the substrate can help yeah but you still have this basic problem that there is a depletion of the reactant concentration as it flows across the reactor. Ideally what you would like to see is that the reactant concentration is maintained uniform across the reactor you know wherever the substrate is. So the way to do that is to introduce a carrier gas. So instead of just flowing silane through the reactor you will essentially take a silane with for example H2 mixture and in fact the silane concentration will be kept around 10 to 20% and the H2 concentration will be kept at 80%. So the hydrogen gas in this case is used as a diluent. It lowers the concentration. Now when you do that what happens? The concentration the silicon or silane concentration can now be maintained virtually constant as the gas flows across the substrate. So use of a diluting agent helps in maintaining uniformity of the film thickness. Any other ways that you can think of? Suppose you do not have to flow the reactants left to right you know in other words parallel to the substrate. Suppose you could flow it vertical would that help? So for example if instead of this type of flow configuration supposing you were to do introduce the gas this way and essentially achieve a stagnation point flow would that be preferable? The formation of deposits on the sides that is not a big issue you know that is not a critical functional area of your substrate. And again I think that can be minimized but as far as the front you know the deposition surface will you get a more uniform substrate with vertical stagnation flow? You do in fact because essentially when you do it this way the entire layer here I mean obviously you have to design it so that the stagnation flow happens with the entirety of the deposition surface being in the stagnation zone. But if you can make that happen then you are liable to get a more uniform substrate. But are there any drawbacks to that setup what is what could be a problem with this type of flow? Or let me ask you this way when would you use this flow versus this flow? The one of the characteristics of the vertical flow is that the residence time of the vapor in the vicinity of the substrate basically becomes infinity because there is no way for it to no place for it to go. So what does that mean? Over time you are going to grow a very very thick deposit right whereas with the horizontal parallel flow you can achieve a much thinner film. So essentially the vertical stagnation flow is typically used when you need CVD films that are the order of many nanometers or even microns thick whereas if you are trying to make a very very thin and uniform CVD film then you prefer to use the parallel flow. So if you look at the components of a CVD reactor what are the critical components? So you need a good gas delivery system all the reactant gases have to be delivered to the reactor in such a way that they do not react on the way. So either you have to have multiple inlets for the reactive gases or you have to ensure that the temperature and pressure conditions during the flow into the reactor or such that chemical reactions cannot happen that result in the formation of a condensate. The second part of it would be the chamber itself and again the design of the chamber would depend very much on what mode you are going to use. You will discuss later that you can have high temperature reactors, lower temperature reactors, atmospheric pressure reactors, low pressure reactors. So depending on the operating conditions that you choose you will have to appropriately design the reactor. The third part of it is the substrate on which you are going to condense the CVD system and related to that is the loading mechanism, loading slash unloading mechanism and the substrate has to be provided a separate source of energy. The reactor itself may have its own energy source so that you can maintain the entire reactor at a certain temperature and so on. But in CVD systems typically the substrate will be maintained at a temperature that is different from the reactor itself. So you need an energy source, some kind of a typically a heater if you are going to provide thermal energy and by the way there are different ways in which you can provide the thermal energy to the system. You can have radiative energy sources, you can have RF sources you know so you can do tube furnace type of arrangements or you can use an induction heater or so and so on. So providing thermal energy is one way. The other way of course is you can also provide energy to the substrate using other means such as light, laser and so on. So you have to be able to provide some source of energy to the substrate. Similarly if the substrate can take high temperatures thermal energy is the most efficient way to achieve this energization. However there are certain substrates for example if you are trying to deposit something on aluminum you really cannot take it to a very high temperature because aluminum will oxidize and form aluminum oxide. So you have to maintain the temperature not too far above room temperature but you still need to provide energy to the substrate. Then you have to look at non-thermal means of providing energy to substrate. In any case as you design the reactor you have to keep in mind that you have to provide an energy source to the substrate which is separate from the energy source that you are providing for the entire reactor. So what are some of the other components you need? You need a vacuum system because many reactors, CVD reactors run at reduced pressures. So you have to be able to depressurize the reactor during the CVD process and then repressurize it when you are ready to open the reactor and take out the substrate. And you also need an exhaust system which takes the byproducts out of the reactor and by the way this exhaust must be done as quickly as possible because the byproducts are a potential impurity in the CVD film. So you want to minimize the time of contact between the vapor phase byproducts and the film that you are growing on the substrate. And so the exhaust system has to be extremely efficient as soon as the byproduct vapors are generated they must be taken out of the reactor. You also need an exhaust treatment system. One of the characteristics of CVD reactors is that the byproducts tend to be frequently difficult to handle. You know the byproduct could be chlorides, they could be bromides, they could be halides, they could be hydrogen itself or silane, unreacted silane. Many of these species are toxic. So there are a lot of environmental and health concerns with byproducts from CVD reactors. And therefore you have to be able to provide appropriate treatment systems to ensure that when the exhaust gases are let out into the atmosphere they do not have a harmful consequence for people and things in the vicinity. So that has to be built into the system. And finally as with any chemical reactor you need a good control system because it is especially in a CVD reactor temperature is a very, very key variable. You probably require the tightest controls on the temperature distribution in the reactor and the second most critical variable is the velocity, the velocity distribution inside the reactor because that is what really delivers the reactants to the substrate and it also takes the exhaust and gets it out of the system. So having tight controls on the transport phenomena inside the reactor is also very important. Of course pressure is important as well. Reactant concentrations that is another critical variable and again you have to have separate controls on the substrate temperature versus the reactor temperature. So you need to provide separate control systems. Many of these reactors also come with in situ inspection systems. That is as you make the CVD film you want to assess its quality. You do not want to take it offline to a lab, wait for the analysis to be done and then come back and then if you find out that it is not good and you might have made another 1000 wafers by then which you have to throw away. So preferably if you can have instrumentation that can look at the wafer and the film as it is growing and do a quick spot check whether the film is of acceptable quality then your process disruption and cost due to scrap product and so on can be minimized. And so it is important to have this in situ inspection system but if you have that obviously that needs then to be coupled to the control system because as you see things in the film that you do not like you have to tweak the control parameters so that you bring the properties of the CVD film back to where they should be. So ideally you want to provide almost an endpoint control. As you make a film you inspect it, if it looks okay, go. If something looks like it is not where it should be then you immediately provide a feedback to the system so that the appropriate parameters get adjusted and you bring the process back into line. And again more advanced manufacturers of micro electronic products where the CVD film characteristics or a very key parameter to control will provide statistical process control.  So that type of statistical process control and statistical quality control are very critical because these are very expensive operations. The substrates are expensive, the reactants are expensive and the CVD film that you are making is a very valuable thing. You know we are talking about millions of dollars worth of production on a daily basis. So the control system and the in situ inspection system are very, very key components to the reactor to make sure that we do not waste product that virtually every product we make is certified to be usable, okay. Alright so these are some of the key parts of the CVD system. So what are the key steps in the CVD process? How would you actually run a CVD process? Well the first thing that you will do is you have a reactor so you will first take the substrate on which you are trying to put a film down, mount it on to the load and load mechanism and you will load it into the reactor, you will close the reactor. By the way most CVD systems are run as batch reactors primarily because the environment of the reactor has to be very tightly controlled. Now there are atmospheric pressure CVD reactors that can potentially be run as flow through reactors but that is very rarely done. We will talk about a few cases where that is done but you know the two requirements to run it as a flow through process or a continuous process is that the temperatures must not be too far from atmospheric temperature and the pressure must also not be too far from atmospheric pressure. But under atmospheric conditions it is not easy to grow thin film in a controlled manner on a substrate. So it is very rare that we have CVD reactors that are entirely open to the environment that typically operated as closed systems with very tight controls on the operating parameters. So as soon as the substrate is mounted into the reactor using your load and load mechanism the reactor is sealed and it is then brought to operating conditions. So if the temperature needs to be maintained at a certain value, the temperature is increased and you wait until you reach a steady state on the temperature distribution. If the pressure has to be modified again you pull the appropriate vacuum and again usually CVD reactors do not run at pressures that are higher than atmospheric pressure but they are frequently run at pressures that are lower than atmospheric pressure. Can you imagine why? I mean why just intuitively why would you not want to run a CVD reactor at elevated pressures? The primary reason is that you will see later that especially at high temperatures the CVD the deposition process itself is transport controlled and the predominant transport mechanism that is happening in a CVD reactor would be diffusion. It is the diffusion across the boundary layer that leads to the formation of the film and what effect does pressure have on diffusion? It is essentially diffusion goes as one over pressure right. So if you go to a high pressure essentially you will slow down the diffusion process almost entirely and therefore typically CVD reactors are run at atmospheric pressure or lower. So you have mounted the substrate, you have brought the temperature and the pressure and all the other conditions to the operating conditions then you introduce the reactants into the system and run it for a sufficient amount of time for achieving a certain thickness of the film. The obviously when you are trying to make any film on a surface the number one metric that you measure is the thickness right. So when I was talking about the in situ inspection systems they what they typically measure is the thickness distribution. We essentially make the assumption that as long as the thickness on the surface of the film on the surface remains constant the reactor is working the way it should. Obviously offline analysis would still be needed to monitor things like impurity levels and characteristics you know the metallurgical characteristics of the film and so on but that is not possible to do in situ or online. So a simple online measurement must be as quantitative as possible and just give you a number that you can use as an indicator of whether your process is running properly or not and so the film thickness is typically taken as that variable. So as you run the reactor essentially that is what you will do. Once you have brought the reactor to operating conditions you run it for a sufficient amount of time use your inspection system to see whether it has reached the thickness that it is supposed to reach check for the uniformity of the film and then turn off the reaction.  So that is typically done using your exhausting system which may simply be again a vacuum pulling of all the species there or it may be a high velocity convective pushing of the product gases out. So to some extent that depends on the design of the reactor itself and after the reactants the unreacted materials have been purged from the system then you remove the wafer from the system and then subject it to further processing or for further analysis and so on. So that is roughly how you would operate a CVD reactor but if you look at the deposition process itself you know what we talked about just now was the various steps in just operating a CVD reactor but when you look at the formation of a film on the surface what are the critical steps involved in that you know how does it happen if you look at the CVD process and you break it down into sequential steps what are the different steps that are involved. Now from a transport viewpoint once the gases are introduced into the reactor the first step is essentially the convective transport of reactants plus carrier gas into the reactor. So again this needs to stabilize you need to have the convective flow established in such a way that far from the substrate we are not talking about flow near the substrate but in the bulk of the reactor we want to establish a stable flow. By the way in a CVD reactor one thing you must try to avoid at all cost is turbulence all CVD reactors are designed in order to have laminar conditions of flow inside the reactor why is that why would turbulence not be desirable. Turbulence has some good properties right for one thing it enhances transport rates whether you are talking about mass transfer or heat transfer or momentum transfer they are all enhanced when turbulence happens. So why would not you want it I mean it will speed up the process right yeah I mean turbulence by definition is very hard to control if you can achieve controlled turbulence then perhaps it is a good thing but I mean it is just not possible. So while turbulence may offer certain advantages in terms of localized increases in transport rates it is not something you want to have in your system and have to deal with it is kind of the reverse of stagnation flows right why do not you want stagnation flow again stagnation essentially implies that there is more time for deposition to happen the reactants stay in contact with the substrate for a longer period of time so it is all goodness but then how do you cannot control it once stagnation happens you cannot break it essentially. So you cannot have a sharp cut off and say that here is where I want to stop you know as soon as my thickness reaches this number I want to stop here so you really do not want the two extremes you do not want the prevailing Reynolds numbers to be so low that you are essentially in creep flow conditions or stagnation conditions you do not want it to be so high that you are in turbulent conditions. So you want to operate somewhere in the middle where your Reynolds numbers are reasonably high to ensure that you know the convective transport is happening at a sufficiently high rate but at the same time the Reynolds number should not be so high that you kind of slip over into the turbulent regime the other problem with turbulence of course is the eddies you know once you have these turbulent eddies forming the transport of material is no more by diffusion it is essentially whole chunks of fluid are getting thrown around and so again if you look at a CVD film that has been formed under turbulent conditions it will look very similar to a CVD film that has been formed under homogeneous nucleation conditions. You will essentially have a very very uneven powdery deposit where certain locations will have essentially boulders of material and certain locations will have virtually no deposit. So two things you want to avoid in CVD reactor turbulence and homogeneous nucleation okay. So the second step is obviously the chemical reactions to happen and these must happen in the bulk phase when I talk about the bulk what I am talking about is the locations in the gas stream that are very far from the substrate where the deposition is taking place we can also call it mainstream we can call it free stream or we can call it bulk fluid but whatever term I use I am basically referring to a location in the gas stream that is sufficiently far away from the substrate. So chemical reactions will continue to happen as long as you have appropriate temperature and pressure conditions but in addition we want that chemical reactions must also happen near the substrate and these reactions will be qualitatively different from the reactions in the bulk primarily because of the temperature gradient because the substrate temperature is different from the bulk temperature you will form a set of molecules or compounds which are different from the set of compounds that are formed in the bulk fluid. The concentrations will be different for example if SiOH is one of the compounds that is forming the concentration of that particular compound would be very different in the mainstream condition compared to the near the vicinity of the substrate it is this concentration gradient that will then drive the transport process okay. So because you have chemical reactions happening in the bulk and chemical reactions happening at near the substrate but under very different temperature and pressure conditions concentration gradients develop which drives diffusion. So the diffusion will happen from bulk fluid to the interface with the substrate but we are still talking about outside the boundary layer. However as you know when flow happens past a plate you develop a boundary layer right so if the flow is happening in this direction you will essentially form a boundary layer that looks like that and convective flow will essentially stop when it encounters the boundary layer the velocities will rapidly decrease. So you still have to transport the reactant molecules from just outside the boundary layer to the surface itself and that has to happen by diffusion across the boundary layer and that as I said earlier is frequently the rate limiting step in a CVD reactor by the way the diffusion from bulk to the outside the boundary layer is what we call convective diffusion. So the convection process itself is aiding the diffusion process. So it is essentially enhanced diffusion process but the diffusion inside the boundary layer is happening in the absence of any convective phenomena. So it is a purely molecular diffusion process which is also aided by something called thermal diffusion. The existence of a temperature gradient actually induces mass diffusion. We will talk about this later in the course but the combination of thermal diffusion and thick diffusion actually provides the driving force for transporting the reactant molecules from just outside the boundary layer to the substrate itself. So that is the next step. So the sixth step would be actual heterogeneous chemical reactions taking place at the substrate which leads to the formation of the film right. So this is a step where you actually start seeing the appearance of a CVD film on the substrate. So that is the sixth step in the process. Now as the film forms it has to bond to the surface. So the adhesion of the film to the substrate is also a very critical step. So in some cases it happens simply by molecular adsorption or molecular attachment. In some cases physical adsorption happens, in some cases chemisorption happens and obviously the bonding force increases as you go from simple van der Waals forces of adhesion to adsorption to chemisorption and depending on how tightly you want the film to adhere to the substrate you will design the conditions again such that the sticking of the film to the substrate happens by one of these mechanisms. In any case film adhesion to the substrate is also a critical step which again needs to be kept separate from the deposition of the film. When you talk about the heterogeneous reactions of the substrate which lead to film formation what you have to keep in mind is that this is a dynamic process. Just because for example silicon substrate, silicon solid is forming on the substrate does not mean that the silicon is going to stick to the substrate. You still have to provide a mechanism by which the silicon atoms that are forming will get attached to the surface. So that is a separate step and in fact you can play with the adhesion force by doing things like baking and aligning and so forth. So the initial deposit that forms is actually quite loose on the surface but as you increase the temperature, as you increase the pressure you can start essentially making it stick much harder. Sintering is another process that is used to bake the film onto the substrate so that it virtually becomes an irreversible process. Once you have sintered a CVD film on a substrate there is really no chemical means to take it off.  So what is the other step then? Starting with the CVD film that has adsorbed on the substrate, you may have some of the by-product gases which have also adsorbed on the substrate but these are impurities. So you have to desorb the adsorbed impurities. So desorption of impurities is also an important step, desorption of adsorbed impurities. So this ensures the purity of the CVD film that you have deposited. Now once the adsorbed species that you do not want have been desorbed, first they have to be removed out of the boundary layer. So you have to kind of reverse the diffusion process, you have to provide an appropriate concentration gradient so that the desorbed species as soon as they leave the substrate will quickly diffuse to the outer edge of the boundary layer. So the exiting of these desorbed impurities from the boundary layer to the outside is another important step otherwise again they will stick around and keep getting re-absorbed onto the substrate. So as soon as possible you get them out of the boundary layer and then the last step of course is exhaust. So all the unreacted gases, all the gaseous byproducts and all the desorbed impurities from the surface all then have to be exhausted from the reactor so that again they do not stick around and recontaminate your film, okay. So if you look at these various steps that are involved in the CVD process, you get a feel for why you know chemical engineering is such an important discipline to apply to the design and operation of a CVD reactor. Each of these steps involves again either equilibrium thermodynamics or chemical reactions and kinetics or transport phenomena of various kind, various control mechanisms. So in order to achieve a CVD film on a surface which sounds you know simple enough in principle you have to pay attention to many of these mechanisms. Each one has a bearing on the next so it is not that you can kind of design the reactor in sequence even though we have broken out the steps in some sequential fashion I am sure you understand that these are going on simultaneously. So these are highly coupled mechanisms, anything you do at a substrate level can affect even the bulk of the reactor and vice versa. And so whether you are trying to do modeling of CVD reactor or the actual operation control and optimization of a CVD reactor, you not only have to pay attention to the individual steps that are involved in the formation of the film but you also have to take a close look at how each step in your mechanism is coupled to the next step and try to obtain a system wide solution that works for you. One of the things that I mentioned that somewhat helps us both in terms of modeling as well as operation is the fact that the conditions are typically such that flow is uniform and laminar. And as you know the system becomes much more predictable under those conditions. So you have the potential to be able to develop a predictive model for a CVD reactor and actually achieve the same results when you actually operate the reactor. You cannot say that about many reactors in real life you know if you go to the chemical industry and you look at the various chemical reacting equipment that are being used, modeling is not first principles based. It is more empirical data driven. So people collect a lot of data on what is coming in, what is going out and establish correlations because really that is the best you can do. But in a CVD reactor because the conditions are so well controlled you actually have at least the potential to develop virtually a first principles model and use that for the design of the reactor and the control and optimization of the reactor. So in subsequent classes we will look at how to develop a good model for a CVD reactor incorporating all these various steps. How do you model the thermodynamic behavior of your reactor? When can you assume that equilibrium prevails and when do you have to allow for kinetic limitations to kick in? How do you model diffusion processes when there are multiple species that are diffusing? How do you handle the case where they are all dilute species versus the case where some of them are not? How do you take into account the various types of reactor designs? We still have not talked about the hot wall, cold wall reactor or the atmospheric pressure, low pressure reactor. There are very, very significant differences in the design and operation of the CVD reactors depending on which particular configuration you go with. So it is an interesting and challenging problem to deal with CVD reactors but keep in mind that compared to traditional chemical reactors, CVD reactors are run under much more tightly controlled conditions. So you have the ability to apply some of your knowledge about various mechanisms that are prevailing and actually have a practical influence on how the process is run. So we will take up some of these aspects in the next few lectures. Any questions on what we have talked about today? See you then.


Hello everyone. My name is Juanito Fadas and I'm working at Cookware's Ramen Specialist. And I have a Spanish name, but actually I'm from Taiwan, but I live in Tokyo. So recently I became a sorry man. So if you can find me in this picture, I can give you a special present after the presentation. So I work at Cookware Global Team, and we have another team, it's Japan team's biggest monolith of the world. And I work for Global Team. And this slide is made in Japan. So it's trustworthy, you can rely on the content. And the other day I was preparing the slides, and I put these slides to, you know, think about local jokes. Then the girl behind me just asked me, what is your joke? Then I told her, I don't know, I need to think about my jokes. So I still don't figure out my jokes. So I put the slide here. So today I'm here to talk about data migration. And so what is data migration? So in Rails we do schema migration, and the other one is data migration. But the normal migration we talk about is schema migration, which you change the database schemas over time. While the data migration is you translate data from system A to system B. And there are two types of data migration too. One is existing data migration. So for example Stripe, they need to migrate all their data in the system to a new model. So this is existing data migration, you can check out this talk. And today I'm going to talk about you migrate external data to your existing system. For example, you buy a company or you need to reload the site for a client. So this is my talk today. So first, why we need to do data migration? For example, you convince your client to switch from the great PHP 6 website to Rails or you have a new partner joining your company. For example, your company share the same value and they join your company, so you need to migrate their data to your website. So you need to do some data migration. And there is a simple goal is to get all data to our system, but it's very hard to achieve, as Matt said this morning. So the simple goal is to get all the data. We only need to do these four things and it's very simple. So the first thing to do is to get the actual data you need to migrate. And there are two ways to get the data. First way is if your provider can provide you an API, so you can access all the data. Or you can just get the data dump from the database. Cookpad, we already did many migrations. So if they have developer resource to build an API, we already have a generic migration code to make all the things happen automatically. So today I'm talking about the migration for data dump, which is impossible to automate. So let's see how to do it. So we can start with a simple task. And it's as easy as you just run a Rails command and hopefully everything will be migrated to your system. And the method you can just put whatever you need to migrate and start to write a code to make it happen. But first we need to import the data to your system so your model can connect to the database you want to migrate. And it's as simple as one command that you just import to my SQL. But in Cookpad we currently support 62 countries with 30 million users. So our production side has a lot of users, 24-7, across every time zone. So we cannot just import a SQL dump because the database will be saturated. It's too fast. So I need to add some delay to the SQL dump. So I'm thinking just add some sleep statement before the insert. It is true. But the SQL dump file is very huge. I tried all the editors below. And all the editor doesn't work. I have to use this one called Hexfriend. It can actually edit a few gigabyte files. But it's still not perfect because I made a mistake. So instead I write a simple Ruby program which uses this amazing feature called lazy that every time you only need to preload 2,000 lines into memory. So it's fast and very easy to use. And one of the friends say, if you want to get better at Ruby programming, you just read about IE and read it again. So this is how I add a delay to the SQL dump. And so you can just connect to the database through an environment variable. And you set the environment variable accordingly for development and staging and production. Then you can start to modeling your database. So the data you get from the provider is all kinds of formats. And you just need to map them to your existing system in the case of Cookbase, user and recipes and other things. And with all these five methods from Rails, basically you can model anything. Just these five methods is amazing. And so let's see an example to map the data to our current system. So suppose recipe has many steps. And sometimes the data is as easy as you just specify the foreign key and create this one line of code and it automatically works. But sometimes it's as hard as the association is stored as planned HTML in the recipes table. So you need to write some Nogogili parser to pass all the HTML into the association again. So it is also not so hard. You just need to write a parser that makes all the data aligned with your current associations. So modeling the database. And we can also set up the test suite for the migration. For example, you just need to tell your test database to run against a different database. And you just require all the files not being auto loaded. And in the test, you just require this special helper and you skip the test on the CI because you may not want to import your confidential, valuable data to the CI service. But you may ask why do we need tests because the migration code only use once because we can write better codes through boring tests or we can use TDD to get things done. So now you get the test. So you can do the modeling and write tests and repeat this process. So you can model all the data from the provider into your system. So the PHP side will now work like Rails application. Then you can start to do the real migration. And for the migration, you need to create a record or update a record. You use all the methods that will raise exception like save band or update band or create band because we want to fail fast to find all the errors that could be happened before the real migration happens. So for example, we can look at how to migrate recipes. So I have this structure that I made a lot of migrators and each migrator in charge of migrator entities. So for example, to migrate a recipe, you just need to write a migrator for a recipe and in the recipe model, you just tell what attributes should be migrated. And in this migrators class, you just find the recipe from the provider data and create a recipe in your current system and just update all the attributes then it will migrate to your system. It's very simple. And you just keep implement these migrators and they all respond to the same interface.  And you just keep add more migrators then your migration is done. But I want to talk about how you ensure data integrity. So the first thing you can do is to wrap all your migration code in transaction. You also make your code a little bit faster because in transaction there will be less commits to your database. And also you need to make your code ID more potent. It's very hard to pronounce. And someone put it in a tweet that you do the same thing but produce the same result because we want to run the migration many times but produce the same result. It's like fx equal to fx. So basically you need to have something called Upsert is when the record is this, you update, when the record is not this, you insert. And in my SQL or Postgres SQL you have these two SQL that can do Upsert or you can use this gem. But I keep it simple. Just use simple Rails API to implement it because we first want to make it right and make it fast later. So this is Upsert implementing simple Rails. And data accuracy, how can we ensure data accuracy? First I just do some manual track for a few data I migrate but this doesn't scale so I think about how to automate all the tracks so I can have more time to enjoy, I don't need to work. So for example you, let's see how to check user with most recipes in some simple Ruby code. First you just loop all the users, has a lot of recipes and you pass them to a user check object and in this user check object you just check about the recipes and the draft recipe then the recipe tracker it looks like this so I just check if the recipe from the provider I'm going to migrate the count is in line with the recipes migrated to Cookpad or not. So and for the draft part you just change the method to use draft you see these two class didn't change much because I was keeping simple. So and the tracker just give you a log method to recall the information so you can implement the track like this in some simple Ruby class and you just keep adding more trackers because for example you need to check about migrate follows or comments or other entities so you use many small objects to compose what do you want to do and I believe everyone's code base should have everywhere should have a lot of objects but it will become messy very soon so I recommend you to check about dry RB or wrong RB for better object design or trap laser. So now we can make our code a background job because now we make sure it already works and for how many CPU cores then you can have how many workers and you design your job to queue in a different queue so you can distinguish from the regular jobs and the job is just you just call another class that will migrate the record and you migrate the record in this class so and in the background job you need to log every unexpected error so you just in the base job add a logger and rescue every error every possible error then you can fix it but I'm not sure if this is good you can check out the next talk to handle the errors better and you need to run your background jobs against all your data to be migrated then you can find out all the errors and you can fix them before the real migration and you will also need some tools during the migration for example retry mechanism and in MySQL if you have a foreign key or a constraint when you do an insert or update you will have logs and because you have many workers working to migrate data and they may try to access the same record so the log will result in MySQL day log and in Rails you can just rescue from this exception and automatically let it retry after like two minutes and so after retry it will work or it will just retry again but sometimes you need to make sure what you want to retry so the first time you don't need to want to rescue everything you just see what the error is and to understand if this need to be automatically retry or not and Rails provides these two APIs retry on and discard on you can do anything you can imagine you can retry later or just discard an exception or retry is potentially longer it's only two APIs and you have everything but sometimes you cannot automatically retry and you need to look at the error in the fail queue and in rescue you can implement a simple retry object that can retry an error from a designator queue and this retry rescue object just find out all the failures and re-enqueue and remove them so you can retry the errors in the queue you want to retry so in migration you also need to see some status reporting because you want to know how much data you still need to migrate and you can implement a simple Ruby class called progress and you just loop through all the models and call the progress method only model and each progress method only model is just check how many data you need to migrate and divide it by total data you need to migrate then you can know the progress and you can just wrap another Ruby Swift to make it report every minute so you can know the migration progress every minute and you also need to monitor the CPU usage and in our company we use Gula Fana I'm not sure if you heard about but this is a good service to monitor your CPU usage or performance and request so the next I want to talk about performance how to make your migration code run faster but first performance is a rabbit hole because I spend so much time and every change you make to the migration code you need to run through every records again because you need to make sure it works first then you can guarantee it is faster so some performance tip I found is you can preload the associations or you can minimize the scope of transaction and you can also tune the transaction isolation levels to make it faster and you can also avoid unnecessary callbacks for example you create a user or a recipe and you can just skip the moderation because it is finally migration you know it doesn't need to be moderate or you can use no touching so the code will not touch the association so you will be faster because you can touch them all after the migration and another tip is to process multiple records in one single job and it is also very easy you just use each slice and you process 100 users in one job and you will be faster and so if you process 100 records and some of the records may be already created and you can cache them in memory or later on I try to cache them in Redis so it is even faster and to make it faster you can also migrate the important things first for example only migrate the first 100 users 10,000 users with most recipes so migrate the important things first make your migration code run faster but later on I run into a problem is IO bound so Ruby is actually super fast that my database has reached the limit of IOE can perform so either I need to scale up the database or I find out just decrease the workers actually make the IO bound better because if you have too many workers working on the same database your IO will soon to fill up so instead you decrease the worker actually you can do more than more workers or you can do something like back insert or back absurd to insert or absurd many records in one go so every chance you make it fast you need to run the whole migration again and when you run the migration you need to look out your CPU usage to keep it at max 75% so your site won't run down and after migration you can update all the things you need to update like counter cache or statistics or you need to touch some associations and you can also do redirect because you want to redirect old data from the old site to your new site and first we do something like we generate redirect tables and we hand to the provider and they design a redirect programs and their server start to redirect but this comes with a cost because the migration provider doesn't always have developers so recently we are working on my redirection service is open source to do these simple things that doesn't require developers from the provider okay so I'm going to share some stories about data migration site done for the email you better remove the duplicate emails before the migration or remove the invalid emails before the migration because it's far more expensive to handle them after you migrate data to your site and you need to make sure your down case only emails because it will cause you a lot of troubles and another story is how to get the site dump so one of the provider their site is 100 gigabytes EC2 and EC2 has a bandwidth limit so if you do SCP or other things it will take days if nothing fail within the days or you can buy a more expensive EC2 machine so the solution was just use DHL to deliver encrypted disk to Tokyo it's actually faster than SCP and another story is migrate millions of records so when I need to migrate millions of records I look into all these solutions so the first one is active record with transaction or bug insert or absurd or faster one active record input or even the fastest load data in file my SQL command you can load data in file that is so fast but it still takes like weeks or one month to migrate all these millions of data so instead I think we just need to run this migration in very low priority job and when the user sign in we actually migrate the data in a high priority queue so in this way I don't need to migrate all the millions of records to our system we just slowly migrate and if they do sign in we migrate their bookmarks or some other important data so it's as simple as just check if user need to migrate then you run this migration in bookmarks so you don't need to migrate millions of data beforehand you just need to migrate slowly and when user really needs it you migrate in high priority queue another story is migrate 100k photos so first let's see how our image work so every time when we upload an image we will generate a unique image ID then use this ID on CDN to access our photo but this process takes like 5 seconds because all the images from the external site you need to open the HTTP connection and upload to your server then generate a unique hash so this will slow down your migration in very great scale so instead I design a way that it always produce the same hash but yet it's still unique so in the migration I only need to set this previously designed hash during the migration so I don't need to upload the image during the migration I can upload the images beforehand then I make benchmark how long to finish only image upload so it's like 10 days and I just migrate all the data 10 days before in low priority because in the reality 99% of the photos will not change at all so you can just do the things beforehand so it won't slow down your migration and another story is to migrate the user password to a secure authentication because their authentication may be like use MD5 or something simple so first you need to figure out what is the algorithm they use to encrypt the password and when the migrate user sign in and they enter the password and you will fail in your system because their password is encrypted in MD5 or something not send as your current system password encryption so when you fail you fall back to the legacy authentication and in the code it looks like this and when you fail you just use the legacy authentication to check if they enter the correct password or not and when they enter the correct password you just set his password through your existing secure password scheme so you can make their password secure again by doing this simple change and for the future of data migration I think if I ever need to do again I will look into migrating the data in a ghost table so I just write into another table then when it is ready I swap the table or I will look into make my migration code more generic so I only need to model all the database then I can just run the migration and everything will work I can have more holidays so some takeaways Rails provides shop tools thanks to the Rails code team and you use small objects to make your code more reliable and maintainable and my friends say abstraction is the god of programming and you always remember schedule is more important than fast and accuracy is more important than schedule and data migration stands out but if you keep it simple it can make it easy do the simplest thing as my previous boss Winston said great and thank you and enjoy your tea break after my talk thank you Do you have any questions about the migration for Juanito? Yes Hi Have you ever run into a situation where you import the data that is not valid under the new system? Ah yes So when you run the migration code you will find a lot of records cannot migrate to your system because you have only validations or their fear is too long these kind of things so you can either increase either soft your validation or just update them without running these validations like update color and then you just keep invalidating the database Yes and deal with it later somehow and do you have any strategy to deal with it afterwards? So basically before the migration I will run through all the data make sure everything works so I didn't have much to do after the migration Okay thanks Hi Okay we got two So I think I noticed a part there where you were migrating data and then conditionally migrating some more data based upon the user like the bookmarks the users like wanted that Was that all beforehand or was that based upon input like live from the user so a user finally logs in and only then you lazily migrate a different part and if so do you see yourself moving more towards that style of migration of like lazily migrating things along? So in our system we have some important data like recipes so we only migrate important things first and things not so important like bookmarks and there are many of them so we migrate this kind of large data in lazy faction Yeah that's how I try to did it Thank you We have one question here Hey so how do you manage your foreign keys if you've got users and recipes and you're uploading them in parallel as you were kind of showing what if you're trying to put a recipe and that doesn't yet have a user that's been created So when I migrate a user no migrate a recipe I will actually migrate the user associated first then migrate the recipes If that's going through parallel thread how does the recipe migrator know about the user if it's come from different data or does it? So even if the job is in different workers every worker will need to check first if the recipe has a user migrated to our system or not so we always migrate the user first so it's kind of more slow but integrity is secure Thank you Do I understand correctly that when you migrate from the old site to the new site there is no downtime they enable your site immediately and your data is still not there you will be loading it right or there is some scheduled maintenance that the owner of the old site says that way in the three days we come back or how does it look like from the user's perspective Thank you I didn't cover this So when the migration happened we make sure the provider website changed to read only and so everyone cannot sign in they can just read and we start the migration on Cookpad like few hours then when we're ready we shut down the old site and redirect all the things to our new site It depends on the size the short one is like 4 hours it can also be 8 hours depends on how much data Do we have more questions? Alright, right at the back Sorry, just want to ask I didn't know database 2 that allow us to migrate the data Excuse me, could you say again? I didn't know database 2 do we need to actually create I think Ruby is a generic language we can do anything we want but are there no database way to dump the data and import to another database? So your question is how does Ruby talk to other database? No, like are there any for example MSSQL or Oracle they also provide data terms and data transformation maybe for example to import to another database so do you consider using those tools for example? Ah, you mean use the database tool to do the migration? Yeah, I have been considering doing that but I'm not very good at database tools so I use Ruby and it still works so Yeah, thank you I think just add on to that sometimes you need to do some transformations or variations that you do in your Ruby code and or maybe the schema you're migrating from is not the same thing so you need to do some transformation bits that the database tooling doesn't quite support it depends, yeah I think we can take one more question before I open the break one up there, okay I just want to ask about the lazy migration so when the user logs in then only you queue them out in the high priority queue to migrate the data so what happens if the user never logs in so you don't care about the data anymore? Ah, so I actually has a low priority queue running for everything that will take like few weeks but if they sign during these few weeks their things will be migrated in high priority So you remove that low priority queue Not, it's duplicated It's duplicated, okay Yeah, but your migration code is Yeah, you can run it multiple times and it's still the same, so no problem Okay, cool, thank you very much Juanito Thank you


Hi, I'm Dr. Gene Pruice. This lecture looks at the importance of the fur trade in the American West and we're going to look at the time period from about 1800 to 1840. One of the goals of the lectures is to look at the early exploration of the West to summarize efforts to explore the Louisiana Purchase and to understand the significance of the American fur trade. Now we have to understand that Whenever we talk in American history about the exploration of the West, most people immediately think of Lewis and Clark, but there was exploration long before Lewis and Clark. We know the French and the Spanish by the 1500s were exploring the American West. Going up and down the Mississippi, the French were going into Arizona, New Mexico, Colorado and over into Kansas, the Spanish, and Florida. So there was a lot of exploration going on and it put Europeans in contact with the fur trade. This was important because the fur trade was declining in Europe. Beaver pelts were being hunted to extinction in Europe. And so the American fur trade, the beavers, the deer skin, and other pelts that were used was very important because fur was important to high culture in Europe and the fur was needed and wanted. And so this opened up many opportunities. The British were exploring as well about the time of the American Revolution. They left what's now Mackinac City, Michigan at that point was called Fort Machellian Mackinac and they began exploring up into the northern states, Minnesota through Iowa. They were still looking for that elusive and impossible northwest passage that would provide a route across the continent for ships. Russians were also exploring the Alaskan coast down into what's today Oregon and northern California, and they too were interested in trade, especially in the fur trade with Native Americans. Later on you had people exploring into Texas, Philip Nolan, General James Wilkinson. They and some of their compatriots had been exploring, had negotiated with New Spain in order to do some horse trading in the area, probably some horse thievery as well. So there was a lot of exploration already going on. When Jefferson commissioned the expeditions, he was really looking to explore the Louisiana Purchase of 1803. And so he sent, most famously, Lewis and Clark to explore the upper Missouri River all the way. They went up through the Snake River into Idaho and Oregon, what's today Oregon and Washington, and they explored and then returned. And they were also trying to look for ways of incorporating Native Americans into America economy and America society, as well as exploring the boundaries of the Louisiana Purchase, where what all had the United States bought. Zebulon Pike was another explorer commissioned by Jefferson to look for scientific discoveries, to look at the natural fauna, the natural plants in the area. He was exploring a little bit lower into Colorado to establish trade with the Mexican province of Santa Fe. That didn't work out so well. He was arrested, but later released. And then finally, there were a couple of expeditions, the Hunter Dunbar and Freeman Custis Expedition, to explore the Red River. That's the northern boundary of Texas today, but to explore that river to see if it would lead to a Northwest Passage. Now, because Lewis and Clark did not end up bringing back a lot of the plants and animals, other expeditions were sent out, the Nuttall and Bradbury Expedition. These were European environmentalists, naturalists who went out to explore the plant and animal life in the Louisiana Purchase territory. And there were also people taking advantage of the fur trade. Manuel Lisa, a Spanish citizen who lived in the Louisiana territory under the French, founded the Missouri Fur Company. And one of the first American companies in the Louisiana territory, he and colleagues like Henry Breckenridge did a lot of exploring and trading with Native Americans. The War of 1812 kind of put a halt on the fur trade, but it did spur Western exploration. Because after the War of 1812, as the United States was seeking to expand further into the West, the British competition was gone after the War of 1812, the Americans began building forts up and down the territory. This is the Ohio River, Mississippi Valley area, Fort Smith in the Arkansas, Fort St. Anthony, and they renamed Fort Snelling in 1825. So there were efforts at putting up posts, but these posts were really about the only American presence in much of this territory. You had Americans like John Jacob Astor. Well, he really wasn't American, but he had become an American citizen, and he was interested in founding a company to challenge the domination of the British Hudson Bay Company, which had pretty much sealed up fur trade in what's today Canada and the American Northern provinces. And Astor set up a fort on the Pacific side, and he wanted to exploit trade with Russia. And finally, we want to look at Stephen H. Long's 1820 expedition. Long, an American general, was sent out and he looked at kind of the area, what we would call the Midwest, Nebraska and Oklahoma. And he labeled it on his map, the Great American Desert. And he said the land was, quote, unfit for cultivation and, of course, uninhabitable by a people depending on agriculture, end quote. And so what this did was it kind of set in the minds of Americans after 1820 that the American West was a dry, arid place. There weren't many trees. It was all plains. And people believed that trees went with rainfall, that if you had trees, you would have rainfall. It was kind of a illogical proposition, but it had made sense to them at the time, not understanding how the weather worked and how the environment worked. So whenever Long said, well, there's just plains out here, there's really just grass, he didn't see that there was a way of establishing permanent settlements in the American West. What they wanted to do with the American West was kind of change it. They saw this as an area that they could put Native Americans, as Native Americans were being driven from the Eastern States, like the Trail of Tears, et cetera. They were looking for a place west to move these Native American tribes. And so they saw the area beyond the Mississippi River as an ideal place for a large Indian reservation. In the panic of 1819, this was largely due to over-speculation in land. People were wanting to buy the land of the Louisiana Territory, the Louisiana Purchase, and so people were investing heavily in buying up land. But the payments weren't there, the payoff wasn't there, and a lot of people went into debt, banks failed, the Bank of the United States was affected. Thousands of people were affected by this economic, the first economic depression in United States history. But this led to the desire to expand trade, and so you have the development of the Santa Fe Trail. This was a long sought effort by Americans to connect trade between St. Louis and the outpost in far northern Mexico, Santa Fe, because Santa Fe was an isolated community, and there was a lot of trade going on there already, and Americans wanted in on this. And you can see, I have over here on the right, how trade grew. Now, Mexico had just declared its independence from Spain, and so this Santa Fe Trail, the opening of it was very portentious for America's economic growth. And you can see how the trade increased rapidly as a result of opening up this trade route between Santa Fe and St. Louis. One of the other issues in the fur trade is this idea of the mountain men, the rendezvous system. The rendezvous system was really simply, this is a French term for meeting, this was simply a way of calling what they had trade fairs. Native Americans and others had established these trade fairs, and they had been going on among Native Americans for a long time. But Americans really were only active in the rendezvous system, about 12 major fairs in just a half dozen years. So it didn't really last a long time, but it was this idea settled in the hearts and minds of many Americans. There were the development of mountain men, like you've got this image on the left here of Jim Bridger, one of the most famous of the so-called mountain men. These were traders, they traded with Native Americans and others in the West. They were also pathfinders, people like Kit Carson and others helped later on establish trails further out West as Americans desired to move out West, because these people had experience in the West. The Native Americans also had a complicated relationship with their own people, the Metis people. This was a term meaning mixed blood. So when a lot of these mountain men or these traders had moved out, Spanish, French and Americans and British, as they were moving out West and they were interacting with Native American people, they often took Native American brides. And their children were called Metis, and they kind of formed a middle ground. They were had a one foot in both European and American culture and one foot in Native American culture. They spoke both languages. They oftentimes served as intermediaries for negotiations and treaties and whatnot. But how were they treated by both Americans and Native people who never really saw them in many cases as being part of their own people? So the rise of this group is something that needs further exploration. By 1840, the fur trade began to decline and largely this was due to changes in styles in Europe. First of all, there were fewer beavers. We had already hunted the beaver to near extinction in Europe, but also in the United States, in the American North and the West, this was happening as well. Animals were hunted to near extinction and they were also suffering from diseases by Americans, cows, pigs, horses. And the Spanish had brought these over, sure, but as these animals propagated, the diseases they carried with them spread and affected Native American animals. And we also have to look at environmental changes that were going on in the West. There was many years where there were long periods of drought, the amount of rainfall declined significantly in the West, and this also affected animal populations. By about 1840, the market for beaver pelts was giving way and buffalo hides were becoming more and more important. But we hunted the buffalo to near extinction by 1875 and so that fur trade died as well. Also by about the 1840s, 1841, you have people moving further and further west and the development of the Oregon Trail. So if we look at how the fur trade affected the American West, we've got to look at several different things. It was not just one or two issues, but the demands of the fur trade, the demands of trade itself, led to conflicts and competition, not just among European powers, not just among Russia, the British, the Spanish, and the French, and the Americans, but also to conflicts and competition amongst Native Americans. So you had some Native American tribes that were on the ascent that were arising as disease had come in and devastated some of these Native American tribes. The resulting issue was that Native Americans were being exploited for the fur trade. They were being given guns. They were being given weapons. And so this is going to change the power dynamics of Native American tribes because of the access to weapons, because of the access to guns, because of the access to European powers and alliances. So all this is going to change things and going to affect them. Also, you have the rise of Matisse people that these mixed breed, as it was sometimes called, or mixed children of Native Americans and Europeans and American traders and settlers are going to act as intermediaries, as go-betweens. And how are they going to be treated by either society? They're going to be kind of seen as people in the middle. Also, the trade is going to lead to further exploration, as the success of the trade shows that, hey, there's economic import out here. How are we going to expand that? And so you have further and further exploration, and this is all going to be a drain on natural resources. So it's not one issue. It's not one thing, but it's a very dynamic set of circumstances that are going to affect the history of the American West as a result of the fur trade. So in this lecture, we've looked at early exploration of the West and we found the French, the Spanish, the British, the Russian, all of these different countries sent traders and they explored much of the rivers and the Pacific Coastal regions of the American West. Before the 1800s, Jefferson himself, after the Louisiana Purchase, commissioned explorations to determine the boundaries of that territory to evaluate the fur trade and the possibility of integrating Native Americans into the United States, both economically and socially. And we have also learned the significance of the American fur trade. The fur trade led to increased exploration and contact and composition among Native and European nations, and it also challenged the natural resources of the American West. Thank you very much, and we hope to see you again soon.


Narcissists often only care about their own happiness and they may not always be able to experience love the same way that non-narcissists do. Rather than liking you as a person, they may only like what you can do for them. In today's video, we're going to talk about signs that a narcissist likes you or at least likes what you have to offer because we want you to be self-aware and protect yourself using psychological knowledge. Love bombing. If a narcissist is interested in you, you might notice that they shower you with admiration and attention shortly after you meet them. They might be quick to say, I love you, but you want a pedestal and make grand romantic gestures. They treat you so well that you might be thinking, is this too good to be true? However, their behavior usually shifts after a while and they stop treating you as well as they did in the beginning. They might even start exhibiting toxic behaviors. Is the narcissist in your life playful, flirtatious, and non-committal? According to a study published in the Journal of Personality and Social Psychology, narcissists tend to exhibit a ludic love style, which is characterized by a fun, no strings attached attitude. But be careful, while this type of love might sound enjoyable, it's also associated with game-playing and deception. They're preoccupied with your image. Does the narcissist seem concerned with what their friends think about you together? Narcissists want to appear picture perfect to others. They'll try to make it seem like you are in the ideal relationship. They may be more preoccupied with appearing perfect together in public, rather than having a happy and healthy relationship with you. And what to do next? So what should you do if a narcissist likes you? Here's what mental health professionals suggest. Pay attention to your own needs. It can be easy to get caught up in a narcissist's mind games, to the point where you start to care more about what they think of you than your own well-being. Try asking yourself, since I'm at this person, have they brought more happiness or hardship into my life? Is this relationship serving me? Or would I be better off without them? Learn about narcissism. What is a narcissist? The word tends to get thrown around a lot in pop culture. Narcissism does not simply mean that someone is selfish or full of themselves. NPD, Narcissistic Personality Disorder, is a mental condition where people believe they are superior, manipulate others to get their way, and have an exaggerated sense of entitlement. People with NPD may also lack the ability to recognize others' feelings and require a high amount of admiration. It's important to educate yourself on this clinical disorder. Set boundaries.  For example, you don't need to engage with every argument they try to start. You may need to take breaks from this person and remind them of your boundaries. Narcissists can be very good manipulators. Know your limits and recognize when the narcissist crosses a line. And if you decide they've violated your boundaries, don't feel guilty about ending the relationship. Your mental health always comes first. We also have a video on 10 things a narcissist would say as well from a year ago. Here.


What is going on guys, welcome back to the channel and I appreciate you being here, I really do. Today I am back with another Fortnite video and within this video I am going to show you guys the location of the Anarchy Acres Treasure map and the location it takes you to to get those easy battle stars for your battle pass. But before we get into it guys, I am giving away 2800 V-Works to be in with a chance of winning these juicy little things, simply subscribe to the channel if you are new around here. Click that bell button to turn notifications on, drop a like on this video and leave a comment down below. Winners are picked and contacted via YouTube direct message, so keep an eye on those inboxes guys. So good luck to everybody who tries to enter. Ok, so this week 5 challenge I followed the treasure map found in Anarchy Acres. Well on the screen now we can see the exact location in Anarchy Acres where this treasure map is. But to be honest if you are watching this video there is no real reason for you to actually come to Anarchy Acres. You may as well make your way straight to the end of this treasure map and where it takes you to get those easy battle stars. The map takes you to this spot right here just west of the junction near this rock. You guys can see this pin pointed unscreen now. Here you simply have to walk near this rock and the star will pop up at the ground or you then have to do is collect it, simple really. And this guys is the location of the Anarchy Acres Treasure map for those easy battle stars. Guys, I hope you enjoyed this quick little video if it helped you out leaving a like really does help me out. Thanks as always for stopping by and as per usual guys, hopefully I will see you on that next one.


Hi everyone, Joe for jazby'scasewrakes.com. Happy Sunday, coming at you with 2021 Upper Deck Skybox Metal Universe Champions. One box random letter break number three zero. Early bird spot giveaway. If you're one of the first 10 to purchase a spot and you got a chance at four extra spots, so that'll be our first dice roll. So let's randomize that list four and a four, eight times top four after a hard four. One, hard eight, two, three, four, five, six, seven, and eight. After eight, Jason, Harry, David, and Travis, the four of you, after eight, some extra spots. Little buy one, get one, scenario here. So those rooftops next name will indicate that. Now the break itself, there are the letters. There are the names. Let's roll it and randomize it. Two and a five, seven times for names and letters. One, two, three, four, five, six, and seventh and final time. After seven, we got David on top, down to Nancy. Two and a five, seven times for the letters. One, two, three, four, five, six, and seventh and final time. After seven, we got B, down to R. All right, David with B, Jason with DNA, Will with K, Ryan, EG, David, PM, Harry with W and S, David with C, Travis, Z, and all other letters not on this list. Will with J, J with T, Harry with L, Will with N, Travis, H, V, and Nancy with R. Now we're gonna pause the video just where we're gonna advertise this first, and we're gonna pause the video just for a little bit, and we're gonna see if there's any trades. Remember, first letter of their first name. We'll be right back. All right, welcome back everybody. No deals are done, so this list right here remains the same. Thanks, Harry, it's been a little rough. All right, we got one, two, three, four, five, six on the dice roll. Four, one, two, three, four. So this is the middle box right here. Next one box break, already in the store. So if you wanna run that back, let's definitely do so. Let's see what we got. Mostly PMG hunting, but all cards will ship. There may be some other inserts that have a bit of value there, but really it's just PMG hunting, especially that guy. And then those jumbalias. I don't know if Jason did any of these over the weekend, but I don't know if that jumbalia was pulled or not. They're very short printed. They may not be guaranteed. Some might be a per case thing. It might just be a super short printed.  Just like last week. An autograph. We've got Jean Montero, Jean Jean Montero. Maybe Jean, it's a safety. Used to be, yeah, don't be a blame the refs guy. Don't do that. The trade lance looks a little different. That's a 25, nice. So the Jean Montero goes to J, that'll be for Will. And this trade lance 25, nice low number here, goes to T. That'll be for J. And MJ goes to David with the letter M. I mean, what most people don't care to realize is that by the end of the season, although someone should do this, I feel like you should, someone should keep track of every single penalty against every single NFL team and how much of an impact that makes on the win and loss of that game and see what the numbers come out to. My guess is, it generally evens out by the end of the season. There's reaching for the stars, die cut Moses Moody, David with the letter M and a LeBron Jane for the letter L for Harry. Was that, so was that the PMG? It usually says PMG on here, but maybe the autograph and that numbered card takes the place of that. A lot of times there can be some box with no PMGs, some boxes with two or more. Just double check really quick. Sometimes those symbols can be a little small, but usually they kind of pop. So you should be able to kind of tell and you have a little diamond symbol right up there somewhere, but maybe not, but still a pretty solid box. Another one box break in the books. Another one box break in the store, jaskyscasebreaks.com. I'll see you for that next time. Bye-bye.