Welcome to the National Archives and Records Administration's 2022 Genealogy Series. We are pleased to present this educational series of lectures on how to conduct family research using the 1950 Census. My name is Andrea Matney, and as the program's coordinator, please allow me to do a quick introduction and provide instructions on how to participate. These lectures will demonstrate how to use records from the 1950 Census and other federal resources for genealogical research. Our presenters include experts from the National Archives and Records Administration and the U.S. Census Bureau. Sessions are intended for beginners to experienced family historians. All are welcome. We invite you to join the conversation. Please participate with the presenters and other family historians during each session's premiere. You can ask questions via chat by first logging in to YouTube. Keep your eye on the chat during the broadcast because the speaker will answer your questions there in the chat. Type your questions in at any time, but please keep your questions on today's topic. In addition, find live captioning, handouts, and the events evaluation form under the video box by clicking on Show More. Note on our schedule that all sessions are broadcast on Wednesdays at 1 p.m. Eastern. And yes, all of the recorded videos will remain available for viewing later and at any time. Today's program is overview of what's on the 1950 Census. Our genealogy census subject matter expert Claire Kluskens provides an overview of what's available and not available in the 1950 Census. I'm now turning the presentation over to Claire Kluskens. Good day, everyone. This will be an overview of the 1950 Census. It is based primarily on examination of some of the administrative records and publications of the Bureau of the Census. It will also focus on the process of taking the census and the forms used during that process. This presentation is being recorded more than one month before the public release of the census on April 1, 2022. So it could contain some information that is later found to be inaccurate. However, at this time, this presentation represents my best understanding of how the census was conducted. Let's start with the basic question of why the United States takes a census of its population. The U.S. Constitution in Article 1, Section 2, requires a census to be taken every 10 years to allocate representation in the U.S. House of Representatives on the basis of population. It also provides statistical data that is useful for policymaking by our leaders. Thus, every 10 years since 1790, the U.S. has conducted a census. The 1950 Census release is happening on April 1, 2022, which is 72 years after the official Census Day, the day the census began in 1950. In 1952, the Archivist of the United States and the Director of the Bureau of the Census reached an agreement that the 1880 and later censuses could be released after 72 years. That agreement was later approved by Congress. A lot of planning goes into the taking of a census. One of those planning steps is to establish enumeration districts. The Census Bureau collected maps from federal, state, and local governments. Then, using those maps, the Census Bureau established about 230,000 enumeration districts. In cities, these were areas that could be covered by one enumerator in two weeks or about 30 days in rural areas. City enumeration districts, such as those shown on the map at right from Baltimore, Maryland, might only be a few city blocks, while those in rural areas such as Charles County, Maryland, shown at the left, are much larger. In addition, lighthouses, military bases, prisons, hospitals, and other institutions were designated as their own enumeration districts. Enumerators had to be trained and hired. They were ordinary citizens hired for a temporary job. They needed to have basic literacy skills, able to read, write legibly, do basic math, and interact successfully with other people. Because school teachers had these skills, the Census Bureau made special effort to recruit teachers to be enumerators. A large temporary workforce requires training, so the Bureau of the Census began the training process in December 1949 with the designated chief instructors learning everything there was to know about the forthcoming census. Those chief instructors then trained other instructors who then fanned out across the country to train about 8,300 crew leaders. The 1950 census was the first census to use crew leaders. Their job was to supervise about a dozen enumerators. The crew leaders then trained the enumerators who worked under them during the last five days of March 1950, just before the census began. The enumeration was accomplished by about 140,000 enumerators, personally visiting some 46 million dwellings across the United States. They cost about a million dollars a day and about two and a quarter million dwellings were visited each day. Most enumeration was completed by May 30, 1950, but there were some delays, such as from winter storms in North and South Dakota and floods in the Mississippi Valley and other waterways. Some census offices didn't hire enough qualified enumerators. Some enumerators only worked six hours a day instead of the expected eight hours a day. Because this is a human activity, there were some enumerators who did poor work that had to be redone. The Census Bureau also attempted to train the U.S. public as to what the census was and what to expect from census enumerators. They used humor in their advertisements, two of which are shown here. The 1950 census release consists of three record sets. The largest of these consists of about 6.4 million digital images from microfilm. The second record set of schedules from Indian reservations consists of about 33,000 digital images. And finally, there are about 2000 images for population census forms for Canton, Johnston, Midway, and Wake Islands in the Pacific Ocean. We'll talk about each one of these in more detail as we go along. The National Archives received most of the census on microfilm from the Bureau of the Census. There will be digital access only to the census records. There will be no access to physical microfilm. The census on microfilm consists of the continental United States, Alaska, Hawaii, American Samoa, Guam, Panama Canal Zone, Puerto Rico, and the U.S. Virgin Islands. The paper census records were microfilmed in 1952 by the Bureau of the Census, and then the Census Bureau destroyed the original paper records in 1961 to 1963. I show an example of a microfilm roll at the side because I realize that many people have never seen microfilm. The Form P1 1950 census of population and housing was the form used in most of the United States. It contained space for 30 persons per page and six persons answered additional sample questions. Those people are designated by the bump-outs that you see on the left and right margins of the form. The person on the last sample line answered even more sample questions. There were five versions of the form to ensure that different lines were sampled on different pages. The 1950 census is generally similar to the 1940 census. The bulk of the variations with 1940 are in the sample questions. This is the reverse side of the Form P1. This is the side of the form that had questions about the housing in which people lived. Questions about the building materials, the age of the structure, whether it had running hot and cold water, whether it had an indoor toilet or an outdoor privy. This side of the form was not microfilmed and therefore will not be part of the census release. Statistics from the information collected on this side of the form were compiled and published by the Census Bureau and can be found on the Census Bureau website. Now let's take a detailed look at the Form P1. We'll start with the heading items. In the middle of the form at the top is the title of the form. Form P1 and its title 1950 census of population and housing as well as the statement of confidential treatment of the census records. At the upper left side of the Form P1 are heading items that identify the location of where the census was taken. The state, county, incorporated place or township, enumeration district number and if it was an institution or a facility such as a hotel or a large rooming house. The name of that facility, the type of the facility and the line numbers on the page that pertain to that facility. In the upper right corner of the form, you find the date the sheet was started by the enumerator, the enumerator's signature and the signature of the crew leader and the date the crew leader checked the form. You also see the sheet number or page number of the form in the upper right. Items one through six on the form identify the location of the household. Item one is the street, avenue or road. This will be written in sideways on the form and will pertain to several households. Item two is the house number and apartment number if applicable. Item three is the serial number of the dwelling unit. This is a number assigned by the enumerator in sequence as the enumerator is counting the dwelling units. It has no importance or relevance outside of the census forms. Item four is this house on a farm. That's a yes or no question. Item five, if it wasn't on a farm is the house on more than three acres. Houses on more than three acres would also be required to fill out an agricultural questionnaire. Item six was the for the agricultural questionnaire number. Agricultural questionnaires were not retained, do not exist and will not be part of the census release. The statistics compiled from the agricultural questionnaires were compiled and published by the Census Bureau and can be found on the Census Bureau website. Item seven was for the names of the people in the household, starting with the head of the household, followed by the wife, unmarried sons and daughters by age, married sons and daughters and their families, other relatives, and finally other persons such as lodgers, rumors, hired hands and other people and their families. If no one was at home, the enumerator was to write no one at home, see sheet blank, line blank, and that information as to the sheet number and line number would be filled in later when the enumerator returned and talked to the household. The items eight through 12 tell us about the person, their relationship to the head of the household, their race, sex, age at last birthday. If the person was under one year of age, the month of birth was to be indicated. And finally the marital status, married, widowed, divorced, separated or never married, identified by the abbreviations shown on your screen, M-A-R-W-D-D-S-E-P or N-E-V. Item 13 asks for the state or country of birth of the person. If the person was foreign born, then was he or she naturalized? The answers were yes, no, or AP, which was for born abroad of American parents. Items 15 through 19 get into questions about job status. Was the person working? And this gets kind of complicated. Item 15 asks, what was this person doing most of last week, working, keeping house or something else? The answers were W-K for working, H for housework, O-T for other, or U for unable to work. Other would be things like attending school, temporarily disabled from sickness or on vacation. Item 16, if H or O-T in item 15, did this person do any work at all last week, not counting work around the house? And so that was again a yes or no question. In item 17, if the answer was no in item 16, was that person looking for work? Item 18, if no in item 17, he wasn't looking for work, did this person have a job or business? Item 19, if work in item 15 or yes in item 16, how many hours did he or she work last week? And these questions are getting into if the person isn't working, what is their employment status? Do they have some job they just weren't working at during the previous week? Were they not looking for work at all? Just getting into sort of the details of their employment status. Item 20, A, B, and C asks the occupation, industry, and class of worker. Class of worker were things like, did they work for a private employer, Code P, Government, Code G, their own business, Code O, or without pay on a family farm or business, and P. In the middle of the page, after line 30, is a large blank area where the enumerator could write notes that would explain any strange things or odd things that were in the upper part of the form. It also has a spot there where if the household was not complete on that sheet, the enumerator would then indicate that the household continues on the next sheet. You also see in this picture an example of the bump out that indicates a sample line. And so, again, the person on the sample line will be answering even more questions further on this sheet. Now we're going to spend some time talking about the questions for persons on sample lines. Again, there were six people on each form that answered sample questions. Item 21 asks whether he was or she was living in the same house a year ago. If no, was he or she living on a farm a year ago? Or was she or he living in the same county a year ago? So this is asking about migration within the past year. Items 24a and 24b ask more questions about migration. If the person had not been living in the same county a year ago, then the question was what county and state was he or she living in a year ago? And that's state or foreign country. The persons on sample lines were also asked in item 25 what country were his or her father and mother born in. The answer was to be given as US or the name of the territory, possession, or foreign country. Items 26 through 28 asked about education. In 26, what was the highest grade of school that the person attended? The codes which are given at the bottom of each sheet of the census are zero, such as very small children. A, for kindergarten, S1 through S12, for grades 1 through 12, and C1 through C5 for college. 27, did he or she finish that grade? Yes or no. And finally, 28, has he or she attended school at any time since February 1? The answers there were yes, no, or age 30 or over. Those who were 30 or over were not expected to have been in school. Items 29 and 30 get back into occupational questions, and this again gets complicated. If the person was looking for work that was yes in item 17, how many weeks had they been looking for work? And in item 30, how many weeks did this person do any work at all last year, not counting work around the house? And that's asking for a number of weeks in 1949. Items 31A, B, and C ask about income. In 31A, last year, 1949, how much money did he or she earn working as an employee for wages or salary? 31B, last year, how much money did he or she earn working in his own business, professional practice, or farm? 31C, last year, how much money did he receive from interest, dividends, veterans' allowances, pensions, rents, or other income? Then questions 32A, 32B, and 32C ask the same questions about the person's relatives in the household. So items 31A, B, and C ask about income of the person while items 32A, B, and C seek to get a better understanding of the total household income. Now in case these questions seem kind of intrusive, the Census Bureau had a means of obtaining the answers to these questions if the person was not comfortable telling the information to the enumerator face to face. If the person did not want to answer the questions to the enumerator, the enumerator gave them this form that they could fill out and then fold and mail for free back to the Census Bureau. At the bottom of the form, it has a space for the state, the enumeration district number, the sheet number, and the line number so that a clerk in Washington DC could take these answers and then annotate them on the form P1 when it arrived in Washington DC later after the enumeration was done out in the field. Going back to the form P1, the final sample questions for the six people on the sample lines were if the person was male, that person was asked if he ever served in the U.S. Armed Forces during World War II, World War I, or at any other time including at the present. Now the persons on the last sample line on the page were asked some additional sample questions. Question 34 goes back to questions about occupational status. If the person worked last year at least one week, then the enumerator was to ask what kind of work did this person do in his or her last job? What kind of business or industry did he or she work in? And again, what kind of class of worker, private government for themselves that's the O or without pay and P for home farms or businesses? This gets into issues of economic mobility. Are people changing jobs and what kinds of jobs are they changing from and to? Then the final questions for the person on the last sample line, if they had ever been married, widowed, divorced, or separated, has this person been married more than once? Yes or no? How many years since the person was married, widowed, divorced, or separated? So if the person was currently married, how many years have they been married right now? Or if they were divorced, how many years have they been divorced thus far? And finally in question 38, if the person was female and had ever been married, how many children had she born, not including stillbirths? Now let's talk about how the census was actually conducted. Every census enumerator had an identification card such as the one shown in the middle of the screen. They carried with them a large envelope or folder that was their portfolio that contained all of the forms and other supplies that they needed to conduct the census. On the outside of that folder was the portfolio control label that you see there that indicates the state, county, enumeration district, and other information. And if the portfolio was lost, there's a space on there that indicates to the postmaster that the portfolio was to be returned to the Bureau of the Census without charge. Hopefully no enumerator lost their portfolio. The enumerators were instructed to conduct their enumeration in a logical fashion. And so, for example, in a city you would start at a corner, an intersection of two streets, and proceed down one side of the street to the next intersection, turn right, go along, turn right again into a dead end court or what have you, then return back out to the street that you had come on, turn right again at the next intersection, go down that street again only on the one side, turn right at the next street, and so forth until you got back to your starting point. And then you would do another block after that. So one street that is within an enumeration district might be represented on several sheets of paper in the actual census records because the enumerator was following this pattern. We spoke earlier that if no one was at home when the enumerator called that item seven name was to be annotated no one at home. What the enumerator did was to leave a card, such as the card shown in the upper left that indicated that the enumerator had come to call and asked the occupant of the dwelling to indicate a date and time when the enumerator could return to speak to that household. And that card would then be mailed for free back to the Census Bureau. The enumerator would also keep a record separate from the large census sheets that indicated the address of the places where no one was at home. And this would serve as a control where they could check off each dwelling that they then returned to they called back at to obtain information. So it was a help to do their work efficiently. One of the key points to keep in mind is that sheets 71 and up are for people enumerated out of order. So if you have an enumeration district where the census pages are numbered from one to 16, and then suddenly jump to sheet 71. It doesn't mean that sheets 17 to 70 are missing. It just means that the enumerator only needed 16 sheets one to 16 for their regular enumeration and then 71 and up are for those people that were enumerated out of order. And that includes people that were not at home that the enumerator called back on. Missed persons will talk about in a minute and people who filled out form P2 individual census report at a different time and we'll also talk about those. At the very end of the census process in May 1950, the Census Bureau published in newspapers advertisements asking people who thought they had been missed to send in information to see if they had been counted. These people could fill out a little form like the one at the left, or go to their post office and get an individual census report as indicated in the article at the right. If someone filled out a little form such as the one at the left, then a census enumerator would then go and visit them at the address that they indicated. In many cases, people who thought they had been missed by census takers had actually been reported in the census by another family member. Now the form P2 that I've just mentioned, the individual census report look like this. It was a normal size sheet of paper that could be folded to be a brochure. And on the front cover of the brochure, the panel at the far right side, the individual would see the letter from the acting director of the Bureau of the Census explaining what the census was and why they should fill out this form. And then they would open up the brochure and answer the questions on the inside and then on the last panel. All these questions were the same questions as were asked on the form P1. And when this form was returned to the Bureau of the Census, as I indicated, the information was transcribed on two pages 71 and above and included in the census in that way. How will you know why your person is on page 71 and above? It may very well indicate things like CB for callback or ICR for individual census report or some other notation that indicates why the person was on page 71 and up of the regular census schedule. One of the situations in which the form P2 was used was on transient night number one, T night number one on April 11 1950, which was an intense drive to cover hotels, YMCA's and campgrounds where people would be found who were traveling. There were about 700,000 people who were enumerated in this way at these locations. Enumerators were stationed at these places from 5pm to 11pm Tuesday night and then again on Wednesday morning. And each person was provided the individual census report for self enumeration and then the enumerator would follow up with them to make sure that they returned the form to the enumerator before checking out of the location. And as I've indicated, the Census Bureau transcribed the information from the individual census report onto the form P1 for the enumeration district where the person lived. Crews on U.S. flag vessels were also enumerated by self enumeration with a different form, the form P4, the crews of vessels report. And again it was folded so it was like a brochure and they were provided this form by their vessel officers and then the crew members returned the form to vessel officers who send it to the Bureau of the Census. And the Census Bureau again transcribed the information onto the form P1 for the location where the vessel was located. So in most cases we would expect that you will not actually see a form P4, but when you see that your person was on a vessel, you will know that this is how the information was collected from them. One of the really interesting things about the 1950 census is that it was the first census in which the Census Bureau tested on a wide scale self enumeration on household forms. And they did this in Ingham and Livingston counties in Michigan and Franklin County, Ohio. Household forms were also tested and selected enumeration districts in Genesee County, Michigan, and in Cachokton, Defiance, Delaware, Fulton, Henry, Knox, Licking, Lucas, Ottawa, Paulding, Putnam, Richland, Van Wert, and Williams counties in Ohio. But the enumerators completed the forms for households in those areas. The self enumeration forms in Franklin County, Ohio and Ingham and Livingston counties, Michigan look like this. And researchers will find when they look at the census records that there will be for the enumeration district a long run of the forms on the left that are in numerical order as assigned by the Census Bureau, followed by a long run of forms on the right, also in numerical order as assigned by the Census Bureau. All the questions on these forms are the same as on the regular census form, they're just in a different format, and the answers were provided by a member of the household themselves. Other forms that were used in the experimental Michigan and Ohio areas were the form P10 and P11, and again the questions on these forms are the same as on the regular form P1, they're just in a different format. And finally, this is another experimental form that was used in those experimental areas, the form P12A, which is a household form. Now let's talk about enumeration of special populations, infants, college students, transients, Native Americans on reservations and overseas military and civilians. The Census Bureau long knew that it had a problem with the undercount of babies. For some reason people didn't think babies counted, babies do count, everybody counts. In 1950, the Census Bureau repeated a process that they had also used in 1940. Babies born between January and March 1950 were recorded on the normal form P1, just like everybody else. And they were also counted on the form P3 infant card. The P3 asked questions that we as genealogists would love to see the answers to, the actual place of birth, name of hospital, type of attendant, and maiden name of mother. Unfortunately, the P3 cards do not exist. They were considered temporary records and were destroyed by the Bureau of the Census. The results of their study found among many other things that 95.1% of the babies were enumerated, that urban and white babies were more likely to be counted. Babies with mothers with less than seven years of school were more likely to be missed, but there was no real difference between reporting of boys and girls. And this is what the form P3 infant card looked like. But again, none of these forms survive and are not part of the Census release. In 1950, there were about 2.3 million college students. The Census Bureau decided to enumerate them at their college address, their usual place of residence during the school year. That was the first time that the Census Bureau really created that rule and stuck with it, and it's still the rule today. In prior censuses such as 1940, college students were usually enumerated at their parents' address. T-night number two, or transient night number two was April 13, 1950. And this was an intense drive to cover missions and flop houses and other places where people without a fixed address, homeless people, would be found. A flop house was defined as a cheap motel where the room rate was under 50 cents. Enumerators were stationed at these places on Thursday evening and again on Friday morning. The enumerator interviewed guests and any resident staff and employees and recorded the information directly onto a form P1. There was no self enumeration at these places. My colleague Cody White will be doing a separate presentation on the form P8 Indian Reservation Schedule, and I encourage you to view that presentation. I'll give you a little bit of a preview of that form today and its contents. The form P8 Indian Reservation Schedule was used on reservations containing Native Americans, but not every reservation was included. There are no such forms for reservations in Alaska, Oklahoma, and some other locations. This was a family schedule for 10 persons. If a second form was needed, a second page could be added for that family. It links back to the form P1 schedule by indicating the enumeration district sheet number and line number of the form P1. So Native Americans living on most reservations will have two census forms. They'll have the form P1 and they'll have this form P8. The form P8 asks their name, their other name if they have one, such as an Indian name, their tribe, clan, degree of Indian blood, can they read, write, and speak English, and another language, and did they participate in any Native Indian ceremonies in 1949. There was enumeration in U.S. territories and possessions. There was a standard form similar to the U.S. form P1, but in each of the territories and possessions there was a different standard form that asked most of the same questions, but a few were tweaked for local conditions. So you will see different but very familiar forms in those locations, and I've shown on the screen the form P82 for Alaska. For overseas U.S. military and civilians, there are a sense of schedules for four Pacific Islands, Canton, Johnston, Midway, and Wake Islands, and these consist primarily of U.S. Navy personnel and their families and some civilian contractors and a few British citizens on Canton Island. There are no other census records of Americans overseas. We do know that the Census Bureau obtained the cooperation of the U.S. departments of state and defense, as well as the U.S. maritime administration to achieve enumeration of people under their jurisdiction. Enumeration took place, but it was done for informational purposes only, and the census forms do not exist except for the four islands already noted. And this is unfortunate because there were a large number of Americans overseas as indicated on the slide. The National Archives has a 1950 census website that contains a lot of information about the 1950 census, including the questions asked on the census, finding aids, instructions for the enumerators and the public, copies of blank census forms, information and training videos, links to published statistical data, and other information, and I invite you to explore this information online to learn more about the census. On the History Hub website, you can ask questions about the 1950 census, as well as any other record in the National Archives. There is also a 1950 census blog, and you can follow that blog series and learn more about the census that way. So to wrap up this presentation, we talked about the forms used in the 1950 census, some of the procedures used during the enumeration. We focused on the Form P1, the standard U.S. form used in most of the United States, and we took a look at other forms used during the census. I hope that this information has been helpful to you, and I hope that you will visit our 1950 census website to learn more about the census. Thank you for your attention today. Thank you for joining us for today's presentation. We are wrapping up the lecture portion of the broadcast, but we'll continue to take your questions about today's topic in the chat section. Please take a minute to complete our short evaluation form so we can plan future programs based on your feedback. Find the link to it under show more. If we did not get to your question today, please send us an email. Note that the presentation's video recording and handout will remain available on this YouTube page and our website. If you enjoyed this video, check out our Know Your Records program. We have many more educational videos on how to do research with us. Thank you to the Genealogy Series team who contributed to the success of this program. We are grateful for your work. Again, please stay if you have questions, although we are concluding the video portion of the broadcast. We will continue to take your questions in chat for another 10 minutes.


Today I'll show you guys the difference between the three plants available at trading view. I'll also show you guys which market data package do you need to get into the data if you're looking to become a day trader or just follow the market very closely before we do that just a reminder that all the tools I use today trade are linked in the description. So without further ado, let's jump right in. So the first thing we're going to do is go into product and then we're going to go into pricing. So you have the pro, the pro plus and the premium the pro over here you can get five indicator per chart to chart in one window and all the alerts over here and it seems like there's a lot more into the pro plus, but it's actually pretty much identical. So when you look at this, you can see that you get two chart in one window over here and this one you actually get four and this one you actually get eight. So I'll show you guys the difference when I open up a chart. When you open up trading view normally you have only one window like this. When you get the pro plan, you're going to be able to have two and when you get the pro plus, you're going to be able to get actually four and when you get the premium, you're going to get eight over here that you're able to get in one window. So the next things between all of these plan is the number of layout that you can save. So when you create one like this, you can actually make a copy over here. You can make a copy like this and you can have like a separate layout over here. So that counts for one day out that counts for two layout. When you get the basic plan, if we go back over here, you get five saved layout with the pro plus, you get 10 and with this one, you get unlimited. So the next thing that makes a difference between all of these plan is going to be the historical bars available. Basic, you get 5k, this one, you get 10k, 10k and also 20k over here. So that only means that when you look at this over here, you can go on like a one minute chart and go, you're going to get 20,000 bars. So that means every candle counts as a bar. So you're going to get 20,000 on this one over here, which is the premium. When you get the other one, you're going to get less. You're going to get 10,000 instead of 20,000, which is completely fine. So the next difference is going to be the alert. You can see over here, this one, you get 20, this one, you get 100 and this one, you get 400. Also, the alert duration is a big difference. So two month on this one, two month, two month and this one is unlimited. So you can have something for like a year. And this is good when you're adding some kind of alert to an indicator. So I'll show you guys how you do this. So we go to a daily chart and then we just click on it. We say, add alert and we're going to select crossing and value is going to be example, the 10 EMA and we're going to leave this open ended. So what's going to happen is it's going to alert us when the stock gets back to this level over here. So the next thing we're going to do is look at the available markets. So when you're getting trading view, you're not going to get real time data. Your data is going to be 15 minutes late. So if you're looking to get real time, you're going to need to pick some market data. And if you're looking to trade stock intraday, these are the three that you're going to need NASDAQ, NYSE and also ARCA, you can also add OTC. If you're looking to trade the OTC market, I'm not. So I'm only looking at these three market data package and you can see now it's nine bucks for all of them. So I hope this video is helpful. If it is like and subscribe. Also, let me know what you want to see next in the comment section.


Yeah, so let's welcome Vinicius Pacheco, and he'll talk to us about API and APIs on microservices with Go. It's my golfer.  What I will talk, this talks about APIs and microservices, it's not a talk only about Go lang, it's about engineer. First of all, I am Vinicius Pacheco. If you want to talk with me by Twitter, it's the best option. And I'm a software engineer at glob.com. I'm a teacher at Caelum, a good school in Brazil. I'm a Brazilian guy. And I'm a Django Girls Organizer and theologist because we need faith to compile code. And someone know what is glob.com? Yeah, it's great. So glob.com is a great group, global, a great group in Brazil. In Brazil, we have television, cable television, newspaper, I think 50 channels, cable channels from glob.com, and we have a portal, glob.com. Glob.com is the arm of a group global and internet. And what is our agenda? It's a real case. It's not a fake app. It's a real case what happened with me at glob.com. So where I can use, where can I use Golang? It's a real case, you will see. And an advice. My English is really, really, really bad. If you don't understand, you up your hand and the, I don't understand, can you repeat please? I will repeat. And you don't understand again, I don't understand again, can you repeat please? I will repeat in Spanish because it's great for me. And oh, I can't understand, please. I will repeat in Portuguese. And if not so good, I will take help for my Brazilian friends. They speak English very well. So our agenda, at first the metrics, after that the problems, the road, and the solution. The metrics from glob.com, we have more than 50 million access per day. Unique access, it's not a repeat access, it's not all two people access glob.com twice. No. Unique access, 50 million. And a quiz, a simple quiz, like what's the best player in the world, player soccer in the world. And one quiz like this, 404,000 requests per second. And we have APIs like Gamify Soccer, Gamify Soccer plays, and other APIs generate 300,000 requests per second. If in the top moment, 900 requests, 900,000 requests per second. And now we're a VIP. All glob.com is by, is from world to big data, and the recommendation. News and shows, TV shows, and so forth, by the internet. And get user from, user log it, it's easier. Okay. And where am I, and these numbers. My team at glob.com is glob.yg. Glob.yg is the API to register the new users at glob.com, and the server orders 72 teams at glob.com, and the order five companies from Grupo Global. So if you do a new register, a new registration at glob.com, you use my API. And it's the topics of this. And our system is it, is a tower. We have at first a front end that is written with a scalar and play framework. And they send the request for two monolith APIs, big monolith APIs, with 14 years old monolith APIs written in Java. The monolith API on your right side, my left side, is written with a spring tree because he was refactoring year by year, but it's not so good. The other is pure Java with servlets and AJB in version 2.2, I think. And our database is Oracle. Yes. He's scary. I know. It's terrible. It's a freak. What are monolithic? Who thinks this? With a big block of code with all things and organized by the OOP and it's a lie. The truth is it. It's the truth. When you look a monolithic, a monolithic, it's terrible.  So this stack, this big stack, two monolithic monsters do only 200 registrations per second. And our two big monoliths that we need to maintain and solve difficult to change a little library and the risk of deploy is huge and merge are numerous and dangerous. It's not a good place to work. Let's move to new architecture. And I like a lot the sentence of Michael Fusco. When you think of microservice, you think, oh, it's a literal application. No. It's wrong. Microservice is not a literal application.  It's not a, you can't think these things, terrible. And microservices is not because the size of the application. The important is what he do. What the microservice do is important because this is micro, it's micro not because the size of the application. It's micro because you need to think, oh, run responsibility on this. And my team starts to do a job to create a new stack. And the main developers there are Java developers. And the other developers are Python developers. And other developers are, I don't know, metaphor developers, maybe. And we create the first, the first stack to test was called Kratos. Because the game, because the Kratos killed the gods. And the two big monoliths are gods. So we need to do this thing. So we started to write the code with undertow. You know what is undertow? Anyone know? Okay. Jboss has a server, a server container, it's white fly. The engine of the white fly is undertow. It's the more fast handler for Java. And faster than undertow is netty. But net you need to know the size of the request. All requests you need to know the size. And undertow you don't need to know the size of the request. So undertow is friendly for developers. Friendly for developers. Look at calls, friendly for developers. We started to write with undertow. And it was a Sunday. I don't have beta. And my wife slept with Jins, had slept with Jins. And I started to write the same application in Go. Because I like Go. Why not other languages? Because I like Go. I have a Go format. So I started to write. And we have a team. The name of the team is key A2. The key A2 is a team for tests of the stressor tests. And undertow pass for the test. And they put the other application. And I call it by golem. And why golem? Because data is precious. Data is my precious. So I start to write the code to golem. And put in secret to the key A2 team. Key A2 team made the tests. And was more performatly than the Java application. So my team looked at the numbers.  Oh, what do you do? And I think it's not Kratos. It's golem. And golem, there are a lot of motivation for his name. Because our golfer, when made a library, put the goal like a prefix of the name. You know batman? The bat mobile, the bat phone, the bat, you know what I'm saying? And the golfer put the goal. Golem, okay, golem. It's good. And what goal gives for us? Simply see. It's simply, it's more simple than Java. And the center library is really complete. I don't need a server. It's not necessary, JSON translator, it's not necessary, RPC to communication, it's not necessary, nothing. The all is inside the center library of go. It's compiled, so it's near of the machine as my language to high performance. The concurrence with goal is for babies. It's really easy to write a concurrence called with golem. And we have a lot of tools, many tools, fantastic tools. And there are native API for HTTP2. It's great for us. And a great decantation. So the simplicity, look at this, under tall hello world, great goal, let a class and a method main to run because it's a engine of the server, so you don't need to put inside the container it's provided. And you start at the builder of the under tall. After that put the listener, local host, and after that you set your new handler. And write your handler with a lot of boilerplate. And put what type you will return it in your handler, set the explain. And after that you write your hello world, build and start, easy, so cute, look I'm ironic. The same with goal, I put the package, the principal package, all code started from the main package, the main package is the principal, the main of the application, all code of the main package, and the main function. It's a reserved function of the goal line. And we start the handler and put the response and the request and I will print hello world. Put the handler, registration might hold, and after that listen and serve and 8.8 port. It's easy. Look, it's easy. It's not so difficult. What? Okay. This case will return a text plane because he's identified the text, hello world. But not a good practice. The good practice to do this faster is just set on the header, the return. But I will use, I've been used the fprintlm, so the fprintlm return a text plane. Okay. If I want to write a low level, I don't use FMT package. Okay. It's a friendly interface for developers. If you want to write goal code, you can't use FMT and the other packets roast for performance. So tests with goal. Oh, I need to import a package for tests, to do unit tests, no, it's not necessary. Go give this for us. And I put the log to know what happened. I import the net HP and look at this, fantastic HP test. Look, to mark your request. That's great. And the test package. I create a func to test the handler, oh, test handler. And import the test restriction, extract. After that, I create my new request, real request, okay, my real request. If an error happened, I will lock the error. And after that, I create my fake response. Create my fake response and the set for my handler. Take the code. It starts different of okay, return the error. With the okay, let's hello world. It's easy to test a handler. Nice. How can I do to give a JSON for my user? Is it? I have a function in Portuguese, sorry, and send a JSON in English. And I will return two things, a nice slice of bytes and an error. Because goal and goal don't have exceptions. It's this elegant. Yeah. What pike said this? And this guy is terrible. Oh, no. Oh, no, exceptions good. So we don't have exceptions. And why? Because you, it's easier to create your errors. An error is an error. That doesn't port what type of error it is. And the, sorry, we put, I have my package user, my entity. I create my entity. It doesn't matter. It's my user. And I create a new payload. And this payload, it's a map, a string and interface. Interface is, doesn't matter the object. It's like the father of the object. It's interface. But look, it's not only interface. It's interface with how the name of the sign. I don't know, in English, please. Braces. Braces. Good. So with braces. And I set name, the name of my user, email, email of my user. And put JSON Marshall with my payload. I reset on output. And an error, if happen, if an error happened, I will return my error. If doesn't happen, I will return my output. It's a JSON. Nice. And the two concurrence code. It's only a high overview, okay? My concurrence code. We can set my main function. And I started my first channel. Channeling goal is to communication. It's to share memory to communication between go routines. Go routines are like green threads, sorry, it's not a real thread, it's green threads. So I started to make a channel, other channel result and channel rod jobs. And after that, I started three new workers. Look. Look. Worker one, two, and three. And I set the value for my jobs and set the value and reset the values of my jobs and close all the jobs. So the code of the worker. The worker code is a range of the jobs. And I reset the value from the jobs. And look, then process, kind job. Let's see this. Started to run. Don't disappoint me, goal line. What happened, man? I don't know what happened. So I will show, wait a minute. I will show for you. Because the presentation ran the code and the green go routines, look, it's the code, the same code. Okay. It's the same code. And when run, it's not least. So it doesn't matter. Okay. Continuous. And the concurrence pattern. It is the real concurrence pattern. Okay. In the real concurrence pattern, we do that. We use the sync to synchronize it, the go over teams, okay. I imported my login, an API, two to login, and configs my environment, is my code, and the other code to connect from Redis. It's a real code, okay. My main function, I start my config, I put the log, and after that, I start my Redis poll. And run my goal routine. When I run my goal routine, I call this function, look, I start a way to group here. This code, this variable, will rate all the finish of the goal routines. And I add my goal routine and start an anonymous function to process. When the anonymous function and the diff here command will return, hey, rate group, you can stop it because the goal routine is over. And after that, I call the function process, look, function process here, and I call my process. This will be what? It's a real code to consume from Redis, queries from Redis. I start this to consume a lot of process and recreate the requests, okay. The guys send me a request for goal application, and they take all the requests and made a dump of the request and set all the requests on my Redis and QE on the call. And why did that? Because we need to maintain the older application, and we need to reproduce the real request or my fake request for the older application, the old application. And my goal, I will show the tests. At first, I have a code here, a Java code. It's a Fibonacci, look, it's a great code, a Fibonacci code is fantastic, and why? Because I use this all my life, that's a joke. But it's good only to know what happens, not to return a string. And why I don't know a test with return hello world? Because Java cached the strings. So if I put the same string all the time, I don't test the handler or the process of Java application. I test all the cache of the LLRU cache from Java application. So I put the Fibonacci and I will do the test. The Java application is running, and I have here on WRQ pointed for the test. I will have 62 connections per 10 seconds and two threads, okay? I start the test, and that's it. 36,000 requests per second. Okay, it's the number of the Java application. And the Java application is interesting because when you run other time, many times the Java same faster than the other time. And why? Because the JIT, JIT from Java is really performately and very smart. And it was a few better, like only a little feel better. So I will stop at this and started Ruby with Sinatra, okay, to give API. Started my Ruby application, and I don't use Unicorn or Witski or nothing kind of this. And why? Because if I use Unicorn or Witski or kind of things, I put Isorite on the gill or my handler. It's not a true test because I don't do that with Java and I don't do this with Goal. So I put in only rubric, it's okay. And I will do the test again. The same test and the same port, the same number, the same Fibonacci code. And only to know the Fibonacci code of Sinatra is this. It's this code of the Sinatra application. And Sinatra give for us 300 requests per second. And you can look, yeah, 300 there, requests per second. It's bad, no, 70% of the Internet you use don't do that. It's not, it's great for 70% of the Internet. If you have 50 million users in your API, it's a problem. Maybe the same problem happened with Twitter, but if you do a common application, it's good. And you put unicorns and whizzies and the kind of things will be more performately. And I will see the same with Python and Flask, Python and Flask Fibonacci. The code of Flask is it, okay, the Flask code. And when we look at the test, that I don't, I'm not started, I started that now, 10 seconds, 8,200 requests per second, it's better than Sinatra. And it's really good number, okay? So I will do the same with Tornado. And Tornado is really more performately than Flask. For 10 seconds, oh, the Tornado code, there, it is the Tornado code, okay? This is the number, one and a half, there, looks good, it's a great number. And with unicorn and whizzies, it will be better. And with Tornado applications, I made applications with 23,000 requests per second, okay? It's the max that I want with Tornado. And after Tornado, I will do the same with Go. And start the Go application, and there you do the same test. Oh, God, the connection by 10 seconds, and the code is it. Code of Golang, Fibonacci Golang is it. And was 38, found the request per seconds. But I don't use other thing to go faster than, at now, 39. But we have a problem with Macbooks, and why the problem? Mac has a limit, 4,000 requests per second. So we need to change it to the Pellist code, the Pellist configuration in your Mac to have more requests per second. Yes, it's true, yeah. And because this, we need to do the test with Linux. So Go was performately, and it's the limit, the limit of the Mac. And go ahead with Go. Because this, we have a new project, GLIVE. There's GLIVE. GLIVE is like GLOVE, I think, but in Brazil it's GLIVE. Because GLOBAL LIVE, like GLOBAL VIVO, yeah, it's not so good. It's the part now for microservice. But in the front, we have an engine X. And they send the engine X, the engine X do the redirection of the request for our application, and not to older application. When we have a get, they get a reception on the cache, and read from the cache. And if a post, an update, or delete, reprocess with GoLang, and write on the cache and the queue. The other microservice, Go microservice, or Python microservice, or any other microservice, read from the queue the information. And I have a lot of Go routines, read and write, and read and written on the cache all the time and put on the MongoDB. MongoDB is our new database. And why? I don't know. No, I know. When the people ask me, oh, watch the database you prefer, I spoke, look, I prefer Cassandra. And I don't have Cassandra, I have Mongo. There are all the options, yes, MySQL, okay, Mongo, was my decision. But Mongo is difficult to scale. And when you set a lot of values in Mongo, 300 gigabytes, they slow to give the information. And the get process, the get work is really slow when you have 300 gigabytes. So the solution was worked with this, with a lot of Go routines, consume and write and the consume information all the time. So when the engine X send a request for us, and we take the engine X, we get the engine X, and the request and the put on the cache. And after writing the cache, we return to 200, okay, or was created to 01, to 01. And the stay and engine in the cache is insufficient for us, because the cache is with persistence, time and persistence. So it is our stack, our tools, and G live application. And what we use it? For the handler, we use Pat. And why? Because Go is not friendly, it's not so good to know the verbs like get and the pulse and the put. We use this mixer only to translate these things. Like you do with Flask in a Python application, you say it's a get, it's a get, it's a pulse. We do that with Pat. Negroni is for our meterers. It's only for meterers. The dgo is our register driver, and MGO, our Mongo driver, and AM keep you our connection with ReptemQ, and Godap is to vendorizing the Go code. If you put the repository of the Go, it's the get. So when you do an apply and you will build your code, the Go lang takes all the information from the get, and it's dangerous, because he takes the information from the master. So it's dangerous. It's the best option, you vendorize in your dependencies. Testify, because tests in Go many times are ugly, because you test with if, if, if, if, if all the time. And the testify is you put the assert, assert is equal, assert is okay, and we use this. Go validators is for validation. We validate if a mail is true, or three mail, three names, and the true things are filled. And the go taint is to have a contains, you know, contains in your list, God doesn't have. It's tragic. So I write this library. It's not so good. It's the vendorizing code. It looks like Jen Luck, if you worked with Ruby once, and it's a vendorized code. Look, the revision is the get history of the commit. Okay? It's the testify code to give tests more beautiful. And look at that. When I made a test with testify, I have a, what do I want? I have a beautiful, not so beautiful code, but a friendly code to do many things. Look, I created errors, specific errors to return, and return a red cache. And it is the real code. So the mock of this is the cache test. I mock, look, the mock here, and create the mocks, and use the set up my mocks. And after start the set up code, I will do the Oxford code. If I don't use testify, I need to put, if it's not new, if it's terrible. Okay? And we always use the last stable version of the goal. And why you don't stop it in the version? Because it's not good. It's cool to roll in goal. You change it for the last stable version. You don't use all the versions. And what's the result after change it for goal. Is it? Now, we can registration, all the logic of the register user. We can do with 2,000 requests to 4,000, 24,000 requests per second. Use registrations per second, not request registrations per second. And we change it from two big monoliths to a pool of microservice. Nowadays are, I think, 60 microservices, 50 microservices, kind of things. And we use a lot of, many, many, many, many standard library. It's not so good in goal. Do you use frameworks? Because, look, goal has a big goal, it's a copy of Rails. Okay? Big goal is a copy of Rails. And it's not good. And why? Because you lost the performance of the language. And it's the same for other frameworks. And the many standard libraries, it's easy to deploy because the microservices has one unique center code. And merge is distributed and simpler than you need to merge with a big monolithic code. So, and what we do with the legacy? We have the legacy code run yet. And why? Because it's an application with 14 years old. If you don't want to change this application in six months, it's impossible. You need to maintain the coexistence. So, the request was accepted by the front-end. The front-end doesn't change. It's in Scala. So, Scala said to NGNX, or this service, this guy will be registered in July. Or this guy will be registered in the older application. NGNX did the decision. And he can go to the July pool of microservices, microservices pool. Or he can go to the monolithic application. But you need to maintain the database synchronized. And we did that with more goal applications. The G consumer and the sync. The sync take the information from Oracle and write information in Mongo. And the consumer take the information from Mongo and write information in Oracle. All the time. All the time, go routines, look, and look, and look again. Okay. And I want to start. I want to write APIs with goal. What do I need to do? I recommend a lot. You read effective goal. It's an open source book on the site of the GoLang official website. And there are two GoLang to lose the fear of the syntax. And goal by example is a good option too. And why? Because goal by example, you need, oh, I need to do a mutex. There are an example. I need to do a pool of workers. There are an example. And the goal by example is good. It's by example. And at now, questions? Thank you. My content, if you want to speak with me, you have an, oh, one question there. Hi. Hi. On the side of using Java, Java consumes a lot of memory. So your servers have to, it's more expensive. And what about Go? Yes. The goal application don't have a big consumer for memory. It consumes a process. And if you have a lot of go routines, you'll need more process than memory. Look, I don't, I don't speak about this, but look this. Our stack. At now, we changed it from the path to the fast H2P. Fast H2P is a new option and a new thing of the word. More faster thing of the word to handlers. And they create, this guy creates only two objects in the memory. It's, you can use a sync pool and buffer all your objects. It's an option too. So go, don't consume a lot of memory. You consume more processors, more cores than memory because the routines run your OS threads and it happens. More questions? There are any other questions? Okay. Thank you a lot. My contact and see you later.


Benua Northwest Senatorial Candidate of the Old Progressive Congress, Dr. Taito Zam, has promised to always abide by the wishes of the people of his constituency, elected as a senator in the forthcoming general elections. Dr. Zam addressed supporters during the flag-off of his senatorial campaign in Boko Local Government Area of Benua State. The senatorial candidate of the APC promised that if elected, he will liaise with other members and stakeholders across the nation to find a permanent solution to the security situation in the state. Benua Northwest Senatorial Candidate of the Old Progressive Congress, Dr. Taito Zam, has promised to always abide by the wishes of the people of his senatorial campaign in Boko Local Government Area of Benua State. Dr. Taito Zam has promised to always abide by the wishes of the people of his senatorial campaign in Boko Local Government Area of Benua State. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.