so thank you all for joining us. This is a Ontario chapter event for TechSoupConnect and I am Sandra Amar and I'm your local TechSoupConnect host here for the Ontario area. I'm not sure where we have everyone from if you're all from the Ontario area, some of you are from somewhere else. We do have a global network for Tech for Good Meetups all across the world. If you like feel free to tell us a bit about yourself in the chat and maybe where you're from say hello. We are a non-profit that help other non-profits to get implemented and use tech effectively so hopefully that's why you're here today and a little bit about our community values. We welcome everyone and we always put our community first so we're all here to support each other and to grow stronger non-profits and we use technology as one of our tools to be able to do that and I love to have people participate and I know it's a little bit difficult when we're online but I love to hear from you if you have any feedback on these events if there's anything specific you'd like me to try to find or if you have something you would like to present on or participate with please let me know and obviously we love to treat each other with kindness and respect and we have Boren Zaza here or born from you're the communication director at Orchestras Canada welcome nice to meet you and I see we have Catherine here as well and I'm sure a few other people trickle in as we continue so at TechSoup Connect we need your help we're always looking for people to produce events or take care of marketing we don't really take too many notes in this kind of webinar environment but anyone who's interested in helping plan an event like I mentioned please reach out to me I'd be happy to hear about that let me just get my hair there we go okay so a little bit more about TechSoup for any of you who may be new to TechSoup we help connect TechSoup helps connect you with donated and discounted products and there's a whole bunch of items that they can help you source and get at a discounted rate including software hardware projectors hot spots and also refurbished hardware lots of great things for you there and these are just a few of the examples of the some of the vendors and service providers that TechSoup works with that you can get discounted items from and a great comparison so if you are with TechSoup and a non-profit this is a comparison if you were a non-profit with 10 staff members as to the savings you can actually see by using TechSoup for in this case this kind of suite that they've put together as an example and as you can see that's a significant cost savings for a yearly subscription fee if you need additional tech help there is a form on TechSoup.org where you can ask questions and look for answers for anything related to non-profit tech that can help you build a better organization so feel free to check that out at forums.techsoup.org and as you probably I'm not sure if you came across this event through Meetup or through our new event platform but all of our events are listed on events.techsoup.org and this event here is being hosted by myself for the Ontario chapter but there are several other chapters out there as well that are also doing other virtual events that you may want to go and check out and moving along so this event today is brought to you by me at all of the systems and I'll talk a bit more about what I do a little bit later and our agenda for today so you're all here today to see my presentation on capturing information in the cloud so we're going to be looking at Google Forms and how you can create better forms and capture data so that you can use it. Hi Eli and at the end of our presentation we're going to have a one-minute community update so if you're still on our call at the end you will have some time to let us know what new and interesting things you're up to because we all know you're doing some amazing things out there so I'd love to hear about it and I'm sure others would love to hear about it if you are willing to share. So moving along we're before we get to today's event our next upcoming event is currently scheduled for October although I have a feeling we'll probably plug in a few more events between now and then but this is what we have on the calendar right now I'm presenting this one as well to help you learn how to create a virtual onboarding program using free tools it's something that I've been working with lately so I thought it would be great to share with you guys as well and I think we've already seen the slides so I'm going to switch over to our presentation. Can you guys still see my slides? My slides you should see it's loaded you should see Google Forms slide now capturing data in the cloud hopefully that's good hi Eli all right so we're going to talk about Google Forms and capturing data in the cloud so let me I'll turn off my camera so you can see the slides better I think and I will try to keep it oh did I lose my slides we've got some fabulous pool background yeah that's my winter vacation spot all right hopefully you see it now we're on our objective okay second there we go okay all these boxes I need to rearrange one second yes you're my cheerleader Eli I love that all right so today we're going to be learning some tips and tricks on how to use Google Forms effectively to collect responses and data and information in the cloud and many of the tips that you're going to learn here today could be applied to other forms and collection tools as well but we will be doing a specific look at Google Forms and how to actually use it so this is our agenda for today to cover so we'll look and learn a bit about Google Forms and some tips on how to create good forms and we will then jump into Google Forms and start creating some forms and learning about how to collect responses and as well as some of the advanced features that are available with Google Forms and then we'll wrap it up with some resources and any questions you may have and we will try to squeeze in some community updates there as well at the end for you guys to share what you guys have been working on so let's get started with Google Forms a little bit about Google Forms it's a survey administration software that is included in the Google software suite so in Google with Google Workspace or what was previously known as G Suite and it's also available as part of the free Google offering so if you have a free at Gmail account you can also create your own Google Forms through there as well it basically allows you to collect information from users through surveys and that collected information is automatically entered into a spreadsheet on Google Sheets so that you can then use that information in other ways for whatever you need some of the benefits are really that it is a great way to get answers fast either from you know your donors your volunteers whoever you need to get information from it's a great quick way to get that information online and it's also mobile friendly and very responsive so you're able to use it with any applications you can also customize it with your own obviously your own questions you can create and there's a whole bunch of different question types that we'll look at as well and you can also add images and YouTube videos or you can get fancy with branching your questions and using skip logic to kind of skip over questions if you need to with different streams and finally you can also share your responses and get them in a very neat and automated way through the form so that you can get real-time responses into information like charts for example or you can view it all in sheets as well so as I mentioned you can use google forms through your free at gmail google account or you can use it through a google workspace account so the difference with google workspace is it's usually a subscription service however google for non-profits gets you access to google workspace for free so if that's what you're using then you do have a few added benefits when you're using google forms through your free google for non-profits workspace account there aren't that many differences but I did want to point them out just so you're aware one of the great benefits of having google workspace is that you can use you can create templates for your own organization so if it's a form that you know may need to be tweaked every month perhaps and updated you may want to create a template for your organization so that it can be reused all the time you can also duplicate duplicate existing forms if you need to in order to modify them slightly but having the templates in one space is easier when you're working with multiple people because then you can all access the same template and not accidentally override that original version another benefit or difference between using google workspace and a free gmail account is that you can restrict the form to only be filled out by people within your organization so if you're creating forms that are only internal so you know perhaps you're doing something like a maybe an expense report type of thing that you're including that you're using google forms for you can ensure that the form is only accessed by somebody who is in your google workspace account the other difference is if you're using chromebooks as part of your organization which is really only applicable to schools which may not be the case for most nonprofits but you can turn on a locked mode for chromebooks so that the respondents can't open other tabs so this would be most likely used if you're using it for tests or quizzes but that's those were the only differences really that are there between google for nonprofits yes Eli you're right so if you do restrict it to your own organization then you won't be able to share it with anyone publicly that is right so you have to you do have to be careful and and it would be a very specific use case I think in that case okay so with surveys and forms you really need to be clear as to what information you're collecting in order to make it truly effective so some forms may need to have a lot of questions but make sure you really need each of those questions so you want to ask with every question that you're adding to your form or survey you want to make sure that it really has value and that you know what you're going to do with the response so sometimes you know you might ask think to ask a whole lot of questions but do you really need that information adding too many questions will you know discourage the person who's filling it out as well as you know probably not have not give you the correct answers that they want to give because they're just going to get tired of filling out a whole bunch of forms so be very careful when you're creating your form so that you only ask what you really need and the other thing is you really want to ask only one question at a time so you can for example let's say you need to collect somebody's name do you really need to ask it ask for first name and last name separately or do you just need to know somebody's name so that you know how to refer to them as it it just helps reduce the number of times that somebody needs to enter in information so you may just want customer name as opposed to first and last name and another kind of example as to how to ask one question at a time and it's really sorry my dog's excited if you really want to ask one question at a time so for example in with drop-down responses or yes or no questions if you ask something like an open-ended question like did you find the presentation useful and entertaining that's really actually two questions it's it sounds like it might be one but you know for example me as a respondent I may have found that presentation very entertaining but I didn't find it useful at all but I won't be able to answer yes or no to that question because there's different answers to it so you want to be careful with how you phrase your question so that you are truly asking only one question so that you can just get that one response and with all of your questions you really want to be as direct as possible so that the person who's answering your question knows exactly what you're asking for so an example here is you know if you were to ask our is our organization better than other charities that's a really open and vague question that's going to get you a whole bunch of different responses a better way to kind of narrow that down is to really think about what kind of response you're really looking for and you might want to ask and said what do you think makes us better than our than competing charities maybe just to really be specific and direct as to what you're asking it helps give you helps ensure that the respondents giving you good responses okay so we'll move on to the next tip here you really want to keep your forms easy to read and one thing to keep in mind is that you don't want to use too many acronyms or any technical or industry jargon that might only be known to a specific set of people so I know a lot of this happens in the it world and I'm sure every industry has some acronyms that people take for granted but if you have new respondents and people who are new to your organization or new to the industry they may not know what they stand for so you want to make sure you spell out any acronyms so that people actually know what it is you're asking for in case they don't know what it is or maybe they've forgotten or and you don't want them to confuse it with a different acronym as well right another tip is to make sure you create a flow with your questions so if you start with easy questions it gives the respondent a more incentive I guess to keep going until they get to the harder questions but if you put those hard questions that really make them think at the beginning they're less likely to fill out information you want to try not to use questions that are too difficult in the first place you want to make it easy for them to understand but having a nice flow to your form you know so starting with your basic questions you know what are your names what what's your name your email you know any demographic data that you may want to collect keep those easy questions first and then flow into more thought-provoking questions as you go go on another tip in order to keep it easy to to read is to use sections so that you don't have you know a hundred questions on the first page of your form because it can be intimidating to somebody who's filling it out to see all those questions and then think oh I don't know if I really have time to do all this so using sections kind of breaks it down and allows them to kind of break their thoughts into smaller chunks the same way you would with the form right and the other benefit with sections is that you can also redirect respondents to different sections based on previous questions so for example if you're asking your volunteers you know what area would you like what municipality would you like to volunteer in and you have a list of cities and say you have Toronto and Brampton and Ottawa whatever cities you may have and you need to collect additional information only if they respond to with Toronto as an option you can then direct anybody who responds to with the answer Toronto to that question to a specific set of sub questions without needing everybody else to also go through those questions when it's not relevant to them at all so having that form designed in a useful way and using sections in that way will create a nice flow so that your respondents will find it easy to fill out another tip I have when creating forms is to think about the answers when you phrase the questions and we touched a bit on this earlier you want to keep the end in mind when you're creating your forms so read the question and the possible answers that you've provided especially if you're using multiple choice or think about open-ended answers so read it multiple times and try to think if there's different ways to interpret the question or to see if you're leading the responded to answer the question in a certain way so an example of that maybe you know if there's a question of you know do you agree with half the population that winter is the worst season that kind of question leads you leads the respondent to want to agree with the majority or you know that winter is the worst even though you're saying that the other half don't think it's the worst it might lead them to agree so a better way to phrase that question would be to possibly word it as a multiple choice and say which season do you think is the worst and then list each season so that they would have to make the selection so it removes some bias to the way you phrase the questions and you can also have different response types so you want to consider how you're going to use the information when you receive it to decide what kind of response types you want so when i'm talking about response types i'm talking about the different types of fields that there may be so you may use open text fields or you may use drop down fields or multiple choice or you may be able to select multiple responses so if you're you know if you ask something like what is your favorite color and you leave the responses open text you know one person might spell orange one way somebody might spell it with a capital somebody might do lowercase somebody might misspell it somebody might say their favorite colors tangerine not orange which means you're going to get a whole bunch of different responses that if you need to do any sort of data on like any charts or calculations or reporting on those responses you won't be able to do that without massaging and cleaning up all the data that came in so a better way would be to either use a drop down or have check boxes where they can select their answers so that the data responses are always similar and validation can also help with the responses you get to make sure that you're getting the right kind of answers so for example if you were looking to submit a form for have a volunteer submit a form and they needed to have a certification within a certain number of years past for example and you want the year to be four digits long and that the certification should be relevant within the past 10 years for example you can put the validation on the response that only allows the user to enter a number that is greater than you know 2011 for example so that'll eliminate any responses where somebody may only enter the last two digits of the year because they're forced to enter the four and then it helps you validate that text and or that number and you can use that for reporting as well and there's a whole bunch of different types of validation as well you can even validate the that the text response is an email address for example and a whole bunch of different validations but validation is really useful to make sure you get the information you want okay so another very very important part and having worked in it for a long time and a very long time privacy is very very important so in general you want to make sure you're only collecting private information if you really really really need it and and if you do you really need to make sure you're following all of the rules and regulations around the office of the privacy commissioner of canada as well and i have a link there at the bottom that you can review to make sure that you're being compliant with anything you need to be compliant with but basically you know for the most part you you know some people may want to collect a date of birth because they want to maybe send some send their volunteers a birthday card or their donors a birthday card or reminder when their birthday comes around you don't necessarily have to ask for their specific date of birth in that case you can just ask them for their month of birth that way you can you know send them a birthday card that month and not have to get their entire birth date okay all right another tip once you've designed your form and you've looked it over and you've you know gone through all the tips that i recommended you really want to test with a pilot group if you can so test with a few people if you have some you know volunteers or even just other co-workers or staff members anybody or anybody from that kind of group you can have them test the form and see what kind of responses you get out of them so that'll help you to validate if you're capturing the right information or if you missed anything it also helps with getting a second set of eyes to do spell check and capture any errors that you might have found so that wraps up some of the tips and tricks I have for generally creating forms and hopefully you found that useful if you do have any questions feel free to pop them in the chat as we go I'll try to keep an eye out otherwise I'm happy to answer your questions at the end so for now we're going to go through creating forms in Google Forms I am not 100% sure if we'll have time to do a live demo but everything I have on the slides here are screenshots from Google Forms so we should you should be able to you know get enough information here that you need in order to have a good understanding of Google Forms and I will try to sneak some live demo in at the end if I can all right so to start you need to create a new form so if you are creating a new form from Google Drive you can click on Drive in your Google Drive folder and you can then go down to more if you need to to find Google Forms and select Google Forms you can also select or create new forms by going to your Google Launchpad and selecting Google Forms from there as well so you have two different options when you're creating a new form you can use a template if you have one so if you can see there you see Toronto Area Chapter 1 it says parent you can click on that side to get any of your organization's templates that you've saved or there's a whole bunch of templates that Google has made available under the general tab so these are a few of the different ones that they have if you need an idea of where to start with or how to lay something out this is a great place to start once you create a new form you'll have a basic form with just the one question and it'll say untitled form and this is kind of where you start and one of the places where I like to start is to pick a theme so you can choose an image for your header and it'll appear at the top header part of your form and if you click on choose image you'll see I believe there's a few defaults available but you can also upload your own if I'm not mistaken which is handy for customizing it making it more relevant to your organization you can change your theme color your background color and your font although the font selections they have are not great I stick with the basic because it seems to be the most professional feeling one the other fonts available or a little bit kiddish in my opinion but they work you can also change your colors from the top panel over here that's where you can go to open your theme and now we'll talk a little bit about the layout here so in the the right section over here this is where you can go to add different elements to your form so you can add text headings you can add pictures you can add a youtube video and the bottom one there with the two rectangular bars is your sections so this is what you would use to break up your form so that you only show a few questions at a time on each page and you would scroll through each section if you needed to break up your form a bit so what we were talking about before if you know if you wanted to split it out so that somebody who responded to Toronto goes to a different section this is where you would make that break between all the questions and I that's the one I will try to show you if we have time at the end when you are adding questions to your form you have a whole bunch of different types of fields that you can add to your form so your short answer field is for a short line of text and your paragraph will allow you to add more text like a paragraph multiple choice is useful when you want the user to select only one of many options and see all the options at the same time checkboxes are useful when you want your respondent to be able to select multiple responses at the same time drop down field is very similar to the multiple choice in the way that you're going to get a response but it just displays differently so you can only select one as well but you only see one at a time unless you open the drop down field file upload is also another option that you can add to your form so this might be handy if maybe you're using the form to collect maybe you're recruiting staff and you're using it as a recruitment intake form or a uh onboarding form where you want the user to upload maybe a policy statement they've signed or maybe you want somebody to upload their resume or cover letter you can use that here as well or maybe you need them to upload a profile picture depending obviously what you're using your form for but they can upload files scales and grids are a way to capture kind of a range of data so i think we've all kind of seen the linear one where you know you know on the far left side is something you don't agree with and the far right side is something you highly agree with and you can pick your answer based on a scale of information uh so that's useful for ranking information and the multiple choice grid is similar to the linear scale but you can add multiple items at once uh in one grid as opposed to having to repeat the linear scale each time and the checkbox grid is similar um but obviously you can make multiple choices per line instead of just one where you which is uh what you would have with the multiple choice and the other two types are the date field and the time field uh somebody's asking here about the file upload does the user need to have a google account i've had that problem before i had to use a third party and i believe you're correct i believe you do need to have a google account in order to upload a file um i'm pretty sure you're correct on that uh so yes you made and i know the same is true with other um some other apps as well i'm pretty sure microsoft forums uh have the same issue uh or it could be an organizational setting i can look into that and double check for you but i am pretty sure that with google you do need to have a um a google account in order to upload okay uh so those are the different questions that you can add to your form uh oh yes sorry i was just looking at my notes again um you can only allow uh it will only allow users with the google account to fill out the form so that is correct i did have that in my my speaker notes that i wasn't looking at um you also will not be able to okay so sorry if you use the file upload option uh only users with a google account can fill out the form you also will not be able to embed the form so if you were planning to embed the form on a um on your website for example as opposed to using it through a link you won't be able to embed it and if you do use the file upload option and sharing via link it will save the files to a folder on your google drive uh so hopefully that helps form facade okay cool all right so let's move along here uh oh so sorry that is the uh plus button that you would click on to get to add these additional fields so this is an example of working with the questions so this is an example of a multiple choice question so you can rearrange the uh questions by dragging and dropping them by clicking on this little uh six dot grid and you can drag them up and down the page in order to reorder them you can also duplicate a question that you've used before by clicking on the little copy button at the bottom and that's useful if you you know want to keep the same validations maybe or a lot of the same responses but need to rephrase that the question um that's can be really handy uh clicking on the trash icon obviously will move the question to uh trash so it'll remove it from your form if you have already um if you're editing an existing form and you delete the question it won't delete the responses from your back end spreadsheet if they've already been captured so just be aware of that that you won't lose that past history uh you'll have to go into the spreadsheet manually remove it you can also toggle the required um option on or off so the fields can either be required which means it's mandatory to be filled in in order for the person to complete the form and submit it um or you can turn it off uh so one thing to be aware of here is that if you are making a field required and but the person responding maybe has a different answer the question doesn't apply to them then you need to really make sure that you're able to capture that response or all responses otherwise you're going to end up with the user giving you dummy data um so you know maybe this question on the screen isn't the best example of it but perhaps maybe they're not a customer at all in this case maybe they're a volunteer um and this question doesn't apply to them if you force this question to be required they have no answer to select so they're going to pick one of these two and it's going to be wrong and it could skew with your data the addition so if you open the additional options in the little corner there there's additional options that'll pop up uh you'll be able it will look different for every field so it'll depend on what kind of field it is but that's where you can add additional validation um and there's a few different options depending on the field we'll be able to go into every specific one but uh that's where you would look so once we have um selected or created our form based on all those tips and tricks and rearranged our form the way we like it we can start to collect responses so the whole point in having a form is to be able to get that information in a clear and concise manner so that you can use it to accomplish whatever task you're trying to accomplish so in order to share the form you need to request that somebody fills them out so there's a few different ways you can share your form so you would typically start by clicking on the send button that's at the top right of the screen and that'll give you a few different options for sending and sharing the form with others uh so you have the option here to collect email addresses so if you are going to collect email addresses that will require a google login to complete the form so if you do need to capture someone's email address and you want to keep it open to non-google users assuming you don't need them to upload anything uh you can uh include it include the email address as a field on the form as a short text uh field and there's validation on the short text field to ensure that they're entering a email address so that would be the workaround for not collecting email addresses and forcing them to login via google so the first option here is to send via email so you can use this option here you can enter in the user's email address that you want to send it to and you know you can add a subject and the message and you can actually include the form right in the email and you can hit send and it will go to them so that's if you're sending one by one or you can uh paste multiple uh email addresses in there if you move over to the next tab you can send via a link and you can click on shorten url to make it a shorter easier link to copy and paste and then you can take this link and copy it and you can share it wherever you need to share it so you can share it in an email to whoever needs to respond to it you can share it online and anyone who clicks that link will come to your form and be able to fill it out the final way to share or send your form is to or not the final way but another way to send the form is to embed it so again this won't work if you're using the up if you're using file uploads you won't be able to embed the form but if you are not using that you can copy this code and paste it into the html section of your website to have it embedded right in your form um it can be hit and miss depending on how how your site is set up uh another recommendation is to use the link and tie it to a picture uh or a button on your form so that it opens in another page i just find it's a better user experience usually uh to go directly to the form rather than to work on it embedded uh but every situation is different so as long as it's not an incredibly long form you should be okay to embed it if you do have something that's more than i'd say you know 10 or 15 questions you might want to consider not embedding it and having them redirect to a link instead the other option you have for sending is to share directly to facebook or twitter so if you click these buttons you'll be able to uh share your form um directly to facebook and twitter a little box will pop up and allow you to uh post uh directly to facebook and twitter next is your responses so these um at the very top of the page you'll see questions and responses so if you click on the responses tab this is where you'll see uh all of your responses that come in and let me just keep moving here oh sorry i think i meant to uh do this in a live demo so we'll see if we can get there but um in the top right of that screen there you'll see a little spreadsheet icon the little green spreadsheet icon if you click on that that will open the google sheet that's directly related to this form and you'll see all of your responses in a spreadsheet form so there'll be a column for each question and all the responses will show up in the form under there as well and if you decide you need to turn off the form so you don't want to accept any more responses you can use that toggle button to turn it on or off under accepting responses and on the responses page there are three different sections and i'm not sure if i'll be able to get to them uh but there is a summary page that will kind of show you some graphs and grids for each of the uh uh questions that you've that have been asked and you can also look at it from a question to question basis or you can look at all the individual responses so you'll be able to scroll through all the individual forms that some somebody has uh sent in all right so i'm going to go through some of the more advanced features of google forms so you can add collaborators from the menu found at the top right corner of the page so it's similar to sharing uh you can do it from the send button as well there's an option there uh so you can add editors so that they can come and collaborate on the form with you or again under the three little dots if you scroll about halfway down you'll see add collaborators you can get there as well and again from the send button you can go to your settings okay sorry these are so these are your settings and this is where you can go to set settings that are specific to this form that you're working on so they won't apply to all forms that you've ever created it's just specifically for this form so the first tab is the general tab whoops uh and this is where you you can also select here whether or not you're going to collect email addresses the same rule applies you can only collect um uh email addresses if you're only if you're logged into a gmail account um if you are doing that you can also make sure to limit to one response that also requires that you have your the respondent is logged in with a gmail account and you can also choose if they want to edit after they submit the form so that they can go and change their information if if needed uh or you can leave a blank i think for the most case most people uh tend to leave this blank you don't want people to edit their information after they submit it but you may want them to see a summary of the charts and text responses that have come in so if it's something a bit more collaborative you may want them to be able to see the responses that have come in presentation this gives you a few different options and this is where you can uh show a link to submit another response uh and this is where you can show the confirmation message so this is this will just play on the screen after they've submitted the form so if you wanted to uh give them more information for what they uh for anything related to the form or who they can contact if they have questions or where to follow up or direct them to your website you can put all that information here in the confirmation message and also with the uh you can show the progress bar uh which is up there the first check box so that will display how much how many more pages or questions they have to complete in order to submit the form and that's optional or you can shuffle the question order which uh is useful if you're doing something like surveys and you don't want people to be biased based on uh the way they're filling out their responses um so keep in mind when you use that though if you've structured your form to kind of have the easier questions at the beginning like I recommended uh then you may not want to shuffle them but it is useful if you're doing something like a quiz which we'll get to here um so if you want to turn your form into a quiz and this is probably used more in the education uh section or maybe you're using it as a quiz to evaluate you know if your volunteers understood a training session for example uh you could create it as a quiz so you can then assign um if you mark this as a quiz and you go back to your form the questions will have additional fields to them so on the back end when you're designing your form they'll have additional uh settings where you can kind of where you can define what the grades are for each question what the value values are so that it will be able to score it for you uh quizzes are a little bit more detailed so I'm not going to go into it too much as we have eight minutes left this would be the answer key or an example for the answer key so if uh you go if you have set it up as a quiz and you go to responses you'll see uh you'll see it a little differently so you'll be able to see what everyone's average uh score was and the medium and the range as well whoops sorry um so I was going to try to do a demo but I don't think I have enough time so I'm going to wrap this up and see if I have any questions and if there's something you want me to show I can uh definitely open it up and show you uh one thing I wanted to mention is uh the power of using something like google forms is really what you can do with it after the fact it's great that you it's a great and easy way to collect data and information at the outset for whatever you need but being able to take that information and use it somewhere else is really what makes it powerful so Zapier is a automation tool that can really expand uh your use of google forms so depending what information you're collecting or where you need it to go uh these are just some of the examples uh that Zapier's put together that are kind of uh default zaps uh that you can use to automate um so for example if somebody submits a uh google form you can create a Trello card if you use Trello or a Santa if you use a Santa uh you can put responses into a Slack channel if you use Slack you can update your mail chimp subscribers you can send an email so by default google forms doesn't send an automated email response it just displays that message on the screen that I showed you but if you wanted an email to go to that respondent automatically you can set up uh Zapier and have it send an email through your gmail account um for any form submissions and you can take information that they submitted in the form and include it in the email as well so if you wanted to send their responses back to them to validate what they've done um or you can even use it as a two or three steps app if you wanted to take their submission you know do some calculations on it or or do something to it and then send it back um there's options for that as well you can even create google calendar events so if they're you know maybe submitting a request for a meeting date or an interview date or something um or a due date maybe uh you can use that as well um and again I mentioned a Santa so those are some great uh tips um last thing is resources so if you do need any help with google forms uh the one funny thing with google forms is the help button is in the very very bottom right corner um whereas I think most of the other google apps it's a little more prominent up at the top uh but if you need google help within google forms it's down there at the bottom I also offer one-on-one training and consulting if you do need to uh get a bit deeper or you need any help setting up forms or doing any automations you can reach out to me as well I'm happy to help if I can and I mentioned earlier our next event is our virtual onboarding program using free tools uh and I think that's all I have and I've I've left four minutes for you guys to ask any questions if you have any or if you wanted to see anything specific I can pull up google forms and show you um you can either come off mute or drop me a message in the chat and I can uh try to help you hello Sandra um this is Boran from Orchestras Canada thank you so much for an amazing presentation really really useful my question is that I noticed that in our organization um we tend to use google forms for more like day-to-day surveys like we just had a conference and we just want to do a quick survey with with the people who attended right but for some reason like for more elaborate surveys we tend to use um survey monkey and I don't know why that is but I'm just asking you like is there an advantage of using survey monkey is it does it have more options like I'm I'm wondering I think it does have I think it does have a lot more options in analytics built in there um I haven't used survey monkey in a while because for most for the most part I can do most of what I need through um google forms uh I know the I think the power of google of survey monkey was um all the analytics like it is definitely more powerful and there's different ways to use it um I don't know specifically without knowing what their use cases are I'm not sure why they'd use that more than google forms okay yeah yeah I understand I mean just yeah with the um fact that the analytics are if they're more elaborate then that would make sense to use on a bigger survey yeah especially with bigger surveys I think um and I I think there might have been other options it it might have been able to get around that issue with uh file uploads uh and not needing to be a google a gmail user in order to do some of the respondents because sometimes it's limited that way so I think survey monkey is a little more flexible with that okay thank you no problem um Sarah is asking if I've used google forms for integration with sales force database I haven't specifically but um I'm pretty sure that Zapier is able to do that because I know they integrate with sales force I'd be surprised if they couldn't integrate the two together um so it it should be possible I haven't done it specifically though I'm not sure if that helps there's also if you're not um if that doesn't work there I'm sure you could also use air table and I'm not sure if you guys um we're at our last event with uh Matt Bourne who did a session on air table I'm sure there's a way you can use google forms and sales force within air table to kind of connect them and to connect that data uh that would possibly be another option as well any other questions yeah it's called air table if you look back on our events um on our uh on our chapter page on uh events dot techsoup dot org uh and look for the air table event that just happened uh I want to say two weeks ago uh you'll get more information about air table as well it was a great session for anybody um that that missed it excellent well we're at one o'clock so if you do have any other questions or feedback or anything you want to chat about you can reach me at Sandra at allaboutsystems.ca uh and or through the event page I think you can get me there as well so thank you everybody have a great rest of your day thank you thanks you too


You've got here a variety of hand tools, which I hope you're familiar with. Here's your small wire cutters. You've got some spare blades flying this pouch. You can see where it went out. It's also got a neat little finger guard there, so you don't get overzealous in the purchase. You see you've got the zero on the handle, and then you can read the tens up along here. Right now it's set for 30 inch pounds. If you want to go 35, you turn that neural portion about halfway around.  Then when you're using, you've got to try and feel that. We'll start using the tools a little bit here, and you'll actually be able to feel that. 30 inch pounds is not a lot of torque. I'll go to 200 right here. It was up to 200, and the largest torque I believe we'd be asking you to do is somewhere in the range of 80 to 100 inch pounds. They needed this for the GPC, too, right? 100 inch pounds. That's how you clean your camera filters. Is this one large for 60 cycles or 400? I've run it in here before. Is it? Yeah. And it's quite like hard work? Yeah, so I'll know how loud it is. Sure, go ahead. And in flight the fear is that you're going to pull it out and dislodge some debris, and it's going to drip back into it, so you want to keep it in there to clean it. Now, what you're going to find is that there's not going to be too much debris on that screen, and the reason is that all the inlets of the air loops have filters on them, so those are the ones that are going to have all the debris, and so that's why we do the flight deck filter cleaning of all the LREs. It'll be in your cap. I think it's an easy call-out. It's normally done on day two and then every third day they're after, so you guys are flying five days to use inside one black box. If some sort of failure occurs inside the box and localize an electrical problem, you can wipe out both ACCUs and lose all your audio. So what we do is we take this procedure, and we're actually going to hotwire the NSPs directly to an ATU, so that way you can use your ATU to talk to the NSP and downlink voice and get some rudimentary combat that way. Rather than read all the... Would you be no ICOM as well? Yeah, all of your audio... All of your audio goes through the ACCU. And so the procedure is going to give you a comcave belly with a ground. And instead of doing the full bypass, we would just do a half bypass, and that would hotwire the pilot's ATU so that if you're coming home and you lose the second ACCU, you can switch on your ATU and use that for your single string of the ground. I'll just talk you through it rather than trying to read through each and every individual step, because you can do a lot of switch shows, powering down, equipment, etc. The ACCU is located behind that NF-28 Echo Locker. Yeah, we'll start this. Two bottom fasteners. Yes, and the reason it looks different is because the latch is... I can see it's pocket-only. Yeah, that's only about four turns or something. What's the other thing? There's just a Velcro down, so you can pull that out from your hand. Now it'll give you access to the Abbey. And back there you can see the only box that we've actually mocked up in this trainer is the ACCU. Into the J4 connectors on that box. You're going to remove those connectors and then install them on the ACCU bypass module. That's it? Mm-hmm. Okay. Let's say this is easy. Channel locks next. So it's just connect and then connect. Yeah, you should be able to demade by hand, but we do have the pliers handy in case you're running the connectors that are hard to handle. They shouldn't be... Oh, really? They shouldn't be... There's a J3... Oh, I got a J3. Then we'll go ahead and close the whole back up. See the whole thing back up and just leave it like that. So just tape it to the bumper? Mm-hmm. And you can see that it's drawn in the checklist. The photo shows that it's taped down in the order line. And all of this would be full. Yeah, there's... You mean the other box next to it and the other box next to that? Just take it down to something. There's plenty of places to do that. The key... The key in configuration is identical, but depends on it. Yeah, on the orbiter, you're generally not going to see... I'm seeing box there.


Over 80% of Nigerians live below the poverty line and street hawking has become one of their short routes to survival. But in Lagos, street traders aren't having it easy. They are complaining that the government is taking away their source of livelihood by chasing them off the streets. The government, on the other hand, is convinced it is doing them a favour. Jacinta Obuco takes a dive into the plight of Lagos street hawkers. Street trading is woven into the culture of daily life in Lagos. Cost and traffic jams and conjection provide a ready market for sellers to hawk their goods to commuters. Across Nigeria, the increase in scourge of poverty and worsening economic conditions has led to a further increase in street hawking in major cities such as Lagos. Even along the street has always been a continuous issue in the state for years. So sexist government have always either banded or attempted to minimise it unsuccessfully and the traders complain that they don't have the rest of mind while trying to make a living. The tax force used to come and push us from here. Every time they were always chasing us, they should not say for even me, I'm always complaining about this thing that since they don't want us to sell again, how do they want us to feed? When there is a lot of frustration in the streets, what do they expect the people to do? There are some parts of the overseas that they pay, even people that are not working. Can they do that for us? They don't create one place for us now. Can they do that? No, no any place. Here we see them, we see them carry on. If they carry on, they'll return now. If you want me to carry on, if you want me to jam you, then you don't have to sign there. As today we don't get on summer. If you prefer on summer, you don't get summer. That's how we look up and down. They look here, they look across. At times they can fall for no way. At times they can fall for no way. They say our market doesn't allow us the same market. They stop us, they push us up and down. These kind of people, they collect money for our hand every day. But they don't allow us race for waiting. They allow us, we'll say our market, we'll see where to go chop. For them to tell us that we should be keeping the environment clean, and not to then stop on us to save food, because that is where we are eating. Looking for solutions to feed ourselves. We don't have any other thing to do than to serve this food. In trying to balance the allegations, we decide to hear from Shola Jajeloye, the chairman of the Lagos State Tax Force on Environmental and Special Offences Unit. They are just given the responsibility of reading Lagos of environmental news. The decision of the law is that street hawkers market to men, display their goods on the road, or right of way, you arrest them, you pack their goods, everything to the court. Those people on the road, on the street selling anchovies, selling carrots, selling walnuts, selling chips. In the name of hustling, they have this kind of gullible mind that can make them be layout into crime. Deji Akinbelu is a social psychologist and the founder of Lagos. He believes urban planning of Lagos State should include spaces for small-scale traders. A clear issue here is the issue of design and urban planning. There's a strong collaboration between transportation and commerce and trading. So, by default in a city like Lagos, where you have a bus station that you have a large number of people ending their journey, by default you have a situation whereby you have trading go on around those axes and you have lots of places like that.  But when you now build bus terminals and you don't make provisions for affordable stores or what I can call traditional markets or provisions for petty trading, you are definitely bound to have a situation of street trading. I mean, this is Maryland access. This is the bus station that is about to be built. If you build this bus station now, tomorrow, definitely what you're going to have as a situation, if you don't have stores within that bus station, you're going to have people trade along the corridors of the road. So, there is a strong issue of design. For George Louie Disagrees, he thinks Lagos is too large for the government to meet everybody's needs. Lagos is too big and if you see, even commercial bus drivers want space by government. In our various houses, we want space. We want government to still do something and that is why I have said everybody should look deep and see we must equally help ourselves. It occurs, my advice to them is, in as much as we are all able-bodied, they should be encouraged to channel their lifestyle into another profitable means. Profitable means in the sense that a venture that will start, that will stand the test of time, that can make them to raise their family, that can make them to be more useful to the society, because selling by the roadside does not mean any future for this state, does not mean any future for this country. Rather, those people will be easily manipulated into going into crimes. Akinbe Lou suggests a possible bait for the government to consider an urban planning and development. The reality of the people is such that you have to build small market stores, organize these traders into affordable market structures or developments. It doesn't have to be brick and mortar. We keep impoverishing our people and making them poorer by the day, by going on the streets and saying you're trying to take off street traders of the road. So we have to really rethink our city development, our vexation and interest in ultra-modern. We need to review it. We have to meet up with the realities of the people and begin to build according to the needs of the society. Jeje Lawyer's theme is not only taxed with ensuring Lagos is free of unwanted street trading, it is also responsible for pulling down unwanted structures, like the sclaring of shan'tas along the coastal road of Leki. This isn't the first time this is happening and it doesn't look like it would be the last. The anti-street hawking policy of the Lagos state government may be unfruitful if it's enforced without addressing the root cause of hawking. Just enter Ubuco for plus TV Africa.


Good morning folks. The road's coming to live from the shores of well a partly sunny Delray Beach, Florida. This year, 11 a.m. update. We got a bit of a mixed bag. The only mix coming from the Russell 2000 up nearly nine tenths percent at 16 points. The upside does up 13. That's some peace off 13. Nasdaq 100 down 50. That's about four tenths percent to the downside. Gold is off $7 trade out 1970. It's off four tenths, two and three tenths for silver trading down at 2317. But we are getting a buy signal today. Lights we crude trading out at 71 99. That's up 44 pennies. Natural gas soft two cents trading out of 237. Thirdary treasuries down eight ticks. 126 17 is the print there. Let's take a look at that nine panel market update chart. We begin with the S mini upper left hand corner. What do we have here? Well, we're still consolidating with inside its daily profile. 4206 25 is resistance out there. There is no topping pattern just yet. Although it does look like you could get a key reversal bar today. So the high. Yeah. So you but the low yesterday was 41 86 low today. 40. Yeah. So you actually have a key reversal bar. And if you get one tick to the downside as far as it's closed, today's open was at 4207 50. So 4207 25 would actually get you a cell signal out there. Now the spot politics continue to inch higher, but still below his 50 day exponents will be never. It's that key level to watch the 1834. The case of the end queue. It still has his TD nine count top only close above 13 913 would change that the U. S. Dollar has a TD nine count top only close above 103 49 would suggest a further rally. Gold is still just consolidating with inside its consolidation range and its new bullish structure daily profile where it did find support. And that's down at the level of about 1980 1963 70 resistance at 2038. As I mentioned, silver is trading lower, but it did form. It will complete a TD nine count bottom day. Now right now, the lowest 2323. If that's where it stays, any close below that would suggest lower price. Life's recruit continues to find persistent resistance at the center of its daily profile. That number 70 73 56. We get a close above 73 56. We're looking at 77 70. Natural gas did close two days above its older profile. A new profile has formed. Price has pulled back. It has found support at the center of that bare structure profile, which can be a buy signal. We've already got a TD nine count bottom inside of natural gas and a 30 year treasury. Looks like it wants to get down to make that consolidation vision move somewhere around the 124 30 ish type range out there. Steve Rhodes with TM for then folks. Stay tuned for the Traders Ed Show. But if you have to start your Tuesday, please have a terrific one. And thanks so much for joining us.


I'm Rose Molokwani from Oka Sea in a small town called Bretts in South Africa. I became so interested in joining the CBA visual meetings. It was so educative to me to share what we are doing as SDI when it comes to the issues of climate change more especially because we have been doing this work so many years but participating in these platforms encouraged me to do more because there's a lot of needs that we have to address where our poor people are still lacking to get better life for themselves. The CBA was a very good platform for me. I could share with a lot of people that I did not know with a lot of people who got interested in our inputs as SDI and I'm so encouraged that more and more of our leaders from different countries are also participating on the CBA. I wish that our participation can bring positive results to our organization and more support on what we are doing on the ground more especially on women empowerment because women are the engines of life. If they can be more empowered like myself I still need to be more empowered to know how to empower other women I will be the happiest. I think the CBA should continue to have this platform because most of our leaders started to know how to talk because if they are not being given an opportunity they always say oh the leaders other leaders can do it but for now when we choose who are the participants they become so happy because they become empowered.


We're trying to feed over 9 billion people with less resources, less water or at the very best the same amount of water and we have to produce more food. Erie is investing a lot of energy, a lot of resources into our capacity to deliver varieties, rice varieties and agronomy that can help farmers overcome flooding and overcome drought. The Experiment Station, the Ziegler Experiment Station we're investing in new submergence facilities. In recent years we've invested in a large drought screening facility to ensure that we can put the right technology and farmers field for them to produce more food with less water and less reliable water supplies.


So please let me welcome our last speaker for today, yes. So welcome. It's my pleasure to present you with the last talk of this year's microphone on that room here. What's then? My name is Matthias Langer, and I work for the German company called Kanconzern. And I want or I'm trying today to make a case maybe why other engineers and software or great engineers should talk more to each other. And when I came up with the idea for this talk, we didn't knew or didn't expect the meltdown and spectra occurrences happening in early January. So this talk is not going to be about this year. But instead, I want to share three stories with you. We experienced during our development on our microphone system, the FRE microphone. And I think I want to give a glimpse on the different issues we may experience in the interaction between hardware and operating systems, and especially properties that are implemented in hardware that are hitting hard microphone systems. OK, so the first story is about really broken hardware design. And an example here is the Mx6, which is armed SOC developed by FreeSkill. It's a pretty old one right now. So it's a 9-designed. And you can have it in dual and quad-core configurations. And one of the nice features of this SOC is that it features a built-in cam controller. So it's basically useful in automotive context. And so one day, a customer came and asked us, yeah, please write us a driver for this cam control. So you have a typical operation, go to the internet and download the reference menu of roughly 6,000 pages. Then you look in the table of contents, go to this cam controllers API course initialization and application section, and you start reading. And then, of course, at some point in time, you are stumbling over the register definitions because that is the interface as a driver developer. You need to speak to actually configure the controller and to get data to and from the canvas. So then the first register is the so-called module conflict register. Sounds good, doesn't it? So you go through all these bits here, define and try to make your mind up what is actually useful and what you probably need to set or read and to configure it yourself properly as a driver. Then you see here this bit 23, which is called sub-read. So you're wondering, oh, what is that? So look into the table where all these bits are, luckily, described for you. And it says, OK, this bit configures some of the flex can drive registers to be either supervisor or user mode. Reset value of this bit is one. And there's a little bit of more text saying that access to certain registers may be respected according to the setting of this bit, but you never find anything where the registers or maybe with the bit that access to the register is defined. So you say, OK, then maybe we start reading again, but we cannot make anything up in our mind, really. So yeah, let's try a hack and hack something into the kernel, which is running in supervisor mode on this platform and see how we find it. So we disabled the bit in the kernel, made sure that our driver read back the supervisor bit as zero, so now we should be safe, right? So we should have access to all of the bits when pieces are on the controller, and we can develop our driver. So we're trying to read the next register, and it completely hangs the system. And you're trying it again, so maybe you've done something wrong, so add debug code, try a lot of things, mostly errors, and then at some point in time, you discover, OK, so what you're getting here is an asynchronous external data abort, which is an indicator that you are unable to read from this device. So then we had an unfortunate situation with our system configuration, which converted these external data abort to a page fault, which was sent to our driver component. So the region manager then thought, OK, there is something there, so everything is fine. Resumed operation, and the page fault hit, or the external data abort immediately hit again, was converted to a page fault, so we were basically in an endless loop, and the system was hanging. OK, so once we had found out that, we tried, OK, let's see whether we have access to all the registers in the kernel, and no, we were also screwed there. So back into the manual, you start reading, and you start reading from chapter one, and trying to understand maybe what it is telling you, and then you read something about security architecture, and then you finally stumble upon an acronym, which is called CSU, and for the Germans beyond us, it's not the famous Bavarian party, but it stands for Central Security Unit. And you're wondering, OK, what is the Central Security Unit? Sounds heavy. OK, so we go to the corresponding chapter, and it says, instances of hackers and pirates breaking into portable devices and stealing private information and copyright content are becoming increasingly common. So end of citation from this chapter. And then, unfortunately, it's only one page for this CSU documentation in the reference manual. So what do we do? Yeah, there's seemingly no publicly available document for this Central Security Unit. So what you do is you go to the FreeSkillNXP website, create an account, log in, and try to see whether you can download the document there. And unfortunately, you see, OK, it's a restricted document. Of course, it's about security, so you have to make it restricted and not publicly available document. So then you kindly ask or send an email there, and never hear anything back. So you start searching the internet, and at some point in time, we finally found it in the dark net. So actually, we got it from somewhere, and then we started reading. And then we learned, OK, there is an access matrix, or access right, for each of the devices on this SRC. And then we also learned that this access matrix, or the permission there, can only be changed in secure supervisor mode. So for all of you who are not really familiar with the ARM architecture, there is the technology called ARM Trustome, which, again, divides the processor into a secure and a non-secure mode of world. And the secure supervisor mode is the most privileged mode, if you want to say so, in the system. And only this mode is allowed to change bits in the access matrix or the devices. So it basically looks like a table. So for each of the privilege levels you have, there is a mode, or a code distribution stored from where you have rights to read or write to a certain device. And we learned that you are not allowed from non-secure user mode, which our driver was actually running in. You had no access, and so that's why we were getting an asynchronous data approach. Even from the non-secure supervisor mode, where our kernel was running, we only had read access. So yeah, what do you do? OK, so we have to set the bits in the bootloader because our kernel already runs in non-secure supervisor mode, so we cannot change anything in the CSU in this access matrix. And of course, this time we were lucky because the uboot loader was running on the secure site in supervisor mode and then was loading our kernel into the non-secure supervisor mode. Because once you're in the last privileged level on an on-CPU, you cannot go to a more privileged level. You cannot go back up there. So yay. And finally, we were able to write our driver, and we were able to read and write from non-secure user mode, even with this famous bit, which holds all the hassle in first place set. So this was clearly also a hardware market. So what is the takeaway from this experience? Yeah, so we experienced a really annoying and even useless security feature because the bit setting was not relevant anymore as far as once we had read and write access to configure for the non-secure user mode. Yeah, it was kind of security by obscurity because the relevant document which we needed to actually implement the driver in our system design was somehow obscured. And making security documents publicly available is, in my opinion, a considerable practice. The hardware design makes the software implementation really complex. So if you remember, as a hack, we changed the access matrix in the bootloader. Of course, that's not the proper way to do when you're building a real product or a proper system. They would have to install a secure operating system on the secure side. And then they have to implement some API where you can call from the non-secure side to the secure side and do something for you so that it can be checked whether all the security permissions are OK, et cetera, et cetera. So it makes it very cumbersome. And I don't see any obvious benefits from this hardware design which gives you more security. OK, on to story number two, which is about the MIPS cache architecture. And this is an example where the decision of a hardware implementer makes software implementations at least a little bit more complex. So back in 2015, Alpharee and the Fiasco Microkernel were brought over to the MIPS architecture. And so we learned a lot about the MIPS architecture. And one of the special things we learned were, of course, the cache architecture. And this one is pretty defined by the MIPS architecture team. So you have at the one level separate data and structure caches. And one of their properties is that they are virtually indexed and physically tagged. So this is this VIP team architecture. Then they have a fixed line size for the L1 cache of 32 bytes. They support four weights, and between 64 and 512 lines, which makes cache sizes between 8 kilobytes and 64 kilobytes. Let me give you an example. So for the reason of simplicity, we have a weight size now of four kilobytes. And we are using a page size of also four kilobytes, which is the usual page size you use in almost every system. So here is our cache. So we have these 32 bytes of data. And of course, we need the tag, because if we have identified a cache line, we need to check whether it's actually belonging to our virtual address and whether we have the data in the cache. So then, of course, we have a virtual address of 32 bits. And to find the right byte in one of the cache lines, because it's 32 bytes, we need five bytes, five bits, to actually index in the cache line to get the right byte out of the cache line. And then we have four kilobytes of cache per weight. So with 32 bytes of data, this makes 4,096 divided by 32 is 128 lines in a way in the cache. So we need seven bits for that. So we take another seven bits from the virtual address to find the right cache line in the way. And because we have physically tagged cache, what we need to do is that we take the upper 20 bits of the virtual address, the page frame number, translate it via the TLB to get the physical page number. And then we need to compare it with the tag of the cache line we have identified. And when there is a match, we have found a cache line, which contains our data. And we can use the index into the cache line to get our data. So what happens if you increase the cache out of the size of the way in the cache by 2 by a factor of 2? So we have eight kilobytes. We still have a four kilobyte page size. Again, we have our cache, we have our virtual address. Of course, we still only need to bypass the index into the cache line. But because we have now double the amount of cache, we need the double amount of cache lines. And of course, we need one bit more. So we need eight bits. So instead of going to bits 11, we need the bits up to bits 12. And of course, we still need to find our tag. And there we have an overlap, because we still have 20 bits of page frame number to identify the physical page frame. And there is an overlap between the index byte, the cache line index bytes, and the bytes at the bits of the page frame number. So let me give you an example where this is a problem. So imagine we have the physical page 0 mapped to two different virtual addresses. The first virtual address, of course, of simplicity is the virtual address 0. We take our eight bits of cache line index. And because it's 0, we are at index 0 here. Then we take the upper 20 bits of our virtual address to find the tag. And because it's 0, the tag is 0 here as well. OK, now we have a second virtual address. And again, we have the physical page 0. So all 12 lower bits are 0. We have it here. But it is mapped as at a different virtual address. So again, we use the eight bits here for the index. And this is 128. So we find the index 128. And now we're using the virtual address to translate it. And as I told you, we are mapping the physical page to different virtual addresses. So again, we also have the tag 0. What does that mean? That means that we now have the same data twice in the cache. So there's an aliasing problem here. The problem becomes more pronounced if you're increasing the cache size even more. Oh, let me go back here. So yeah, what can we do as an operating system here or as an implementer of software? So the first one or the first solution is, luckily, that MIPS supports different page sizes beyond 4 kilobytes. So we can have 8 kilobyte or even 16 kilobyte page sizes. Another solution would be on each context switch or on each switching context to go through the cache and flush aliases there. Or you need to make sure in your operating system that when you're mapping pages to virtual addresses that you don't create these kind of aliases, which, in the end, comes down to having larger page sizes in your system. And that is what we actually done in the L4 Resystem that you're only allowed to use 16k pages on MIPS in this particular architecture. But then, before talking about the takeaways of this story, you have the problem that you have the systems implementer of ESOC, and they're assigning your MMIO devices on 4k boundaries still. So that means, in the end, that you have 16k pages or 16k page size that you are not able to separate or virtualize devices lying on the same 16k page if they are lying or assigned on to 4k boundaries. Yeah, in the MIPS hardware implementer manual or recommendations, there's actually a sentence about this. So they were aware of this issue. And they say, OK, as an implementer of the CPU, you can choose between having this aliasing problem and reaching higher clock speeds in your CPU, or you're switching on a bit, essentially, in the synthesis of your hardware with the result that you don't have these aliasing problems, but then you're only running at lower clock speeds. So you're sacrificing, possibly, performance for this. So basically, this is one example where one hardware design, not hardware design choice, but implementation choice has the effect on the software on the top level. So the last story is about graphics virtualization. This one is an example where the hardware turned out to be pretty OK. But in the end, the architecture and the poor software implementation were decoupled here. So we have a use case for drying our system with two virtual machines, one GPU, and two connected displays. And the requirement was that each of the virtual machines can use the GPU for hardware-accelerated graphics and also for GPU-accelerated computations. And this particular hardware featured an imagination power we are, graphics. This is one of the course-grained architecture of this GPU. And the interesting thing here to keep in mind is that this GPU features multiple shading units. So actually, these are the compute units in the GPU which render or calculate the job that is sent to the GPU.  And what you can do now as a driver is that you can send jobs to this GPU. And the scheduler will take care of assigning these jobs to the available shader units here. And then finally, they will create the result for you. So from a high-level architecture, the picture looked like this. Then you had to have sort of master unit or master virtual machine which does all the boilerplate to set up everything.  And they will get their own ring buffer and kick register on the GPU where they can store the data and their shader programs. And then by telling the kick register, they could kick the scheduler to actually pick up the work there. And so it's somehow same working mechanisms like we learned this morning from Sebastian's talk about the Intel GPU architecture. So then this is a picture or an architecture picture of the SOC that was used on this board. And here you can see the GPU as a block. And then also this hardware was designed as such that there were different independent display out connectors. And each of the display out units actually had their own frame buffer. So we could assign each VM one of the frame buffers and they could render their stuff into it. OK, let's do it. So what you do usually when you do a project like this is that you try to use established software you get from the renderer and make it run so that you at least understand the workflow or the problems that there are. And even getting native Linux to run on this board wasn't that easy because you were bound to a very specific version of Linux and you needed a couple of patches. And then also the graphics pipeline or the graphics stack was very tightly constrained in their versions and also required patches. But once this had been sorted out, the next step or the next natural step was to run one Linux instance in a virtual machine and pass through all of the devices so that at least you know that you can run it in a virtual machine in practice. So this also worked quite well. And then the idea was to run this one master and one slave VM and that is where actually the fun started. So this one is a curated list of the encountered problems. And one of the nice things here were that we have a daily stand-up meeting in our company and the colleague working on this one every day introduced or started his report with and I'm still working on the graphics virtualization of my Renaissance board. So the first problem or one of the big problems he had to overcome was the signing of the dedicated display unit to the VM. So if you remember the architecture picture of this board, you know that there are three independent units and it should be as easy as modifying the device tree for the Linux kernel by only having one display unit assigned to this device tree and then putting Linux and then you should be fine because that's even more device trees. Yeah. Actually, the Linux still expected to have access to all of the display units and just crashed when it was initializing the non-assigned display units there. OK, so that's something you can work around, but it was still poor software designers, poor software implementation here. And then there was another hardware issue here. So the clock controller, which controls clock speeds, sleep states, et cetera, cannot be securely partitioned in the way it was implemented on this board. So what this essentially means is that you have the different registers for the IP and of course on this SOC to control the power states are on the same four kilobyte page and so you cannot assign them securely to different virtual machines because you can either can have this 4K to both of them and then you have to rely on good-behaving clients or you have to find something else. And then there was another problem. So the first try was to actually, OK, let's see what happens because we have to get the demo started here. We give clock module to both of the VMs and see what's happening. And what we were seeing was that one of the Linuxes was shutting down devices from the other Linux because we thought, OK, I don't see these devices in my device tree, so let's shut them down because we need to save power. OK, so we had to think of something else here. And another issue, which was also a limitation and the hardware design of the whole board, was that the graphics stack yield a significant amount of memory below 4 gigabytes. I didn't mention that this board was actually a 64-bit architecture, so memory shouldn't be a problem. And of course, it had featured 4 gigabytes of memory but only 512 megabytes of memory were actually physically attached to the CPU below 4 gigabytes. So the rest of the memory was above the 4-gigabyte boundary, which made it a little bit difficult to allocate memory below 4-gigabyte for both of the VMs. So we had to do some tricks there as well. So what's the takeaway, actually, from this story here is, yeah, from the first look, it looked like there were many things done right in the hardware. So they have properly thought about how the GPU can be virtualized and was nice architecture, but then still the clock module was probably developed in another division of the company. So they haven't thought about the same problem as well. And of course, also the memory constraints here, so imagine now, in this case, you have 3 VMs and it's still even more difficult to get the memory below 4 gigabytes for the virtual machines. And then we had to admit that the software and the Linux drivers, they were very poorly implemented. So there were a lot of issues. And you need to catch, debug a lot of things, even in the user space applications, the whole graphics stack. There were a lot of bugs and problems that needed to be fixed when we ran this even natively on the hardware. So it was in a poor state at that point in time. And then probably other people working on GPUs can chip into this song is that there is very, very poor documentation with regard to GPUs and how they work and what needs to be done and everything. OK, so I'm now coming to the end of my talk. I hope I could make at least a small point that there are issues between operating systems and hardware that could have been avoided if maybe the hardware designers better understood the requirements for the use cases of operating systems engineer. And on the other way, also, that operating systems engineers or private developers have a better sense of the use cases that are actually implemented on top. So that doesn't happen that, for example, the Linux kernel running expects all the hardware to be available if there are technologies like device which are specially designed to make the Linux kernel more runtime configurable. OK, so to conclude my talk, I have a question for you. So how many programmers does it take to change a light bulb? Are there any guesses? Zero. You just call that ALT? Zero is correct because it's a hardware problem. Thank you. Questions or if you want to share another story with us here, then we still have some minutes left. So I have a similar story. And it's actually connected to a question because there is a risk buy. And probably there won't be another chance in 15, 15 years for us software engineers and operating system designers to influence important hardware So my question would be whether you as a company or any of the other micro-companies present here have to somehow directly influence the risk buy specification. And my story is connected to risk buy. I mean, from my point of view, the specification is fine. But the reference simulator, risk buy, has a very strange input output model for the basic character input output. It's designed to be usable for performance, but not from a micro-companies. It's horrible. It has to be done in a very, the device has to be, the input device, the keyboard is equal to zero. It needs to be controlled in a very strange way. It's not micro-companies. So that's my story. OK, so I need to comment on the question part of this. So the question was that there is risk five as an upcoming architecture, which there is an opportunity or a window of opportunity where we can maybe, as operating systems developers, influence the architecture decisions made for this ISA. And so yes, we had a look at risk five, or at least we submitted a topic for the Google Summer of Code this year. And if we are selected as the micro-companies there will be for this year's Google Summer of Code, and maybe we find a student, then there will be work done on risk five. But we didn't have any detailed look into the architecture right now. OK, we have this story with a cloud core IVX5 port, and there were four cores on it. So we enabled three of them when it worked, and we enabled the fourth one, and the whole system crashed because of two firms, like totally garbage funders. So after some people didn't even come out, these funders are big ambient.  And to run all the first three cores were particular to little ambient and smaller than the fourth one. And you were like, why is there some peanut working, you know? OK, so this one is actually a nice story again about IVX5 this time, and was that it was a quad core system. And the first three cores put it up very fine. And the fourth core was just doing garbage.  The first three cores were running in little ambient mode, but the fourth core was starting up in big ambient mode. So was that actually a problem issue which could be fixed in the firmware, or is it just configured wrong from the hardware side? You fix it in the Chrome, but I don't know the computer. You could configure the startup, or it most is just impossible, and it can be possible. My personal perspective is that actually I think that hardware and software engineers actually talk to each other, but they are sitting all the same company, like for example Qualcomm. So there are software engineers developing the Linux kernel for Qualcomm's network and process source. And they kind of course talk to the hardware engineers, so they have short kind of communication But we as outsiders of these companies, we don't have this opportunity. So I think what's really missing is that we have a more transparent way of how these companies can interact with the whole community. And especially you and we are sitting in the same boat. We are basically outsiders. And actually the whole Linux movement is actually making things more complicated for us. Because in the past there was a public pressure on these companies to publish information. But now those companies can tell, well, we've got a Linux kernel with all the drivers. So we are fine on the nice players. And we are getting stuck with this situation where we don't have this documentation, and we have to kind of reverse engineer the documentation out of the Linux kernel drivers, for example. And I think that's one point I want to make, that it's not just a missing communication. But I think we have a problem that the guys in the company can communicate, but not with us. So to summarize your comment, and I agree with you, is probably that only the hardware and the software engineers need to know more. But also the companies selling hardware and software, or at least the base software, should talk more to the community, or there should be better communication between the different entities here. Because not all companies can have a look on all of the use cases that are out there. And with that, I would say we conclude this year's micro-connoisseur. Thank you, everyone. And especially thank Jakub for organizing everything. So we had the head for this year. And so maybe we are looking for volunteers for organizing it for next year. And if some of you like, we will meet at 20, 30 on the run in class. And we will try to find a restaurant, and we can share even more stories from the hard days of software development. Thank you.