Hello, I'm Claudia. Welcome to Learning Unit 2. Learning Unit 2 will be on an overview of Occupational Safety and Health Act 1994 in Breakout Act 514. By the end of this Learning Unit 2, students will be able to understand the overview of the Occupational Safety and Health Act 1994. The Occupational Safety and Health Act 1994, or OSHA 1994, is an act to make further provisions for securing that safety, health and welfare of persons at work, for protecting others against risk to safety or health in connection with the activities of persons at work, to establish the National Council for Osh and for matters connected therewith. Nothing in this act shall apply to work on board ships or the armed forces. In the event of any conflict or inconsistency between the provisions of this act and that of any other written law pertaining to Occupational Safety and Health, the provisions of this act shall prevail and the conflicting or inconsistent provisions of such other written law shall to the extent of the conflict or inconsistency be construed as superseded. The objectives of OSHA 1994 are to secure the safety, health and welfare of persons at work against risk to safety or health arising out of the activities of persons at work, to protect persons at a place of work other than persons at work against risk to safety or health arising out of the activities of persons at work, to promote an occupational environment for persons at work which is adapted to their physiological and psychological needs, to provide the means whereby the associated occupational safety and health legislations may be progressively replaced by a system of regulations and approved industry course of practice operating in combination with the provisions of this act designed to maintain or improve the standards of safety and health. The Director-General of Occupational Safety and Health, Independent Inspecting Body and Certificate of Authorization, are the appointed officers under OSHA 1994. As for the membership of National Council for Occupational Safety and Health, the council shall consist of not less than 12 and not more than 15 members who shall be appointed by the minister of whom 3 persons shall be from organisations representing employers, 3 persons from organisations representing employees and 3 or more persons shall be from ministries or departments whose responsibilities is related to occupational safety and health and 3 or more persons of whom at least one shall be a women, shall be from organisations or professional bodies the activities of whose members are related to occupational safety and health and who in the opinion of the minister are able to contribute to the work of the council. Next is the general duties of employers and self-employed persons under OSHA 1994 which are to ensure so far as is practicable the safety, health and welfare at work of all his employees and then to prepare and as often as may be appropriate revise a written statement of his general policy with respect to the safety and health at work of his employees and the organisation and arrangements for the time being in force for carrying out that policy and to bring the statement and any revision of it to the notice of all his employees. And then there is general duties of employees. So the general duties of employees includes to take reasonable care for the safety and health of himself and of other persons who may be affected by his acts or omissions at work next to cooperate with his employer or any other person in the discharge of any duty or requirement imposed on the employer or that other person by this act or any regulation met there under and then to wear or use at all times any protective equipment or clothing provided by the employer for the purpose of preventing risk to his safety and health and to comply with any instruction or measure on occupational safety and health instituted by his employer or any other person by or under this act or any regulation met there under as for the safety and health officer in every organisation they are employed exclusively for the purpose of ensuring the deal of servants at the place of work of the provisions of this act and any regulation met there under and the promotion of a self-conduct of work at the place of work they should possess such qualifications or have received such training as the minister met by notification in the gazette from time to time prescribed there should be establishment of safety and health committee at the place of work every employer shall establish a safety and health committee at the place of work if there are 40 or more persons employed at the place of work or the director general directs the establishment of such a committee at the place of work decomposition of a safety health committee, the election or appointment of presence to the committee the powers of the members of the committee and any other matter relating to the establishment or procedure of the committee shall be as prescribed every employer shall consult the safety and health committee with a view to the making and maintenance of arrangement which will enable him and his employees to cooperate effectively in promoting and developing measures to ensure the safety and health at the place of work of the employees and in checking the effectiveness of such measures and then a person who contributes the provisions of this section shall be guilty of an offence and shall on conviction be liable to a fine not exceeding 5,000 ringgit or to imprisonment for term not exceeding 6 months or to both the functions of safety and health committee include keep under review the measures taken to ensure the safety and health of persons at the place of work to investigate any matter at the place of work attempt to resolve any matter being investigated and if it is unable to do so shall request the director general to undertake an inspection of the place of work for that purpose and shall have such other functions as may be prescribed in the case of denotification of accidents, dangerous occurrence, occupational poisoning and occupational diseases and inquiry it requires an employer to notify to the nearest department of occupational safety and health office of any accident, dangerous occurrence, occupational poisoning and occupational disease that has occurred in the place of work this act also stipulates every registered medical practitioner or medical officer attending to or called in to visit a patient whom he believes to be suffering from an occupational disease or poisoning to report the matter to the director general as to whether a case should be notified and recorded in an event of an accident, the decision making process consist of five steps step one, determine whether a case occurred that is whether there was death, dangerous occurrence, poisoning, disease or an injury, step two, establish that the case was work related that it resulted from an event or exposure in the work environment step three, decide whether the case is an accident or dangerous occurrence or an occupational poisoning or occupational disease in step four, if the case is an occupational poisoning or occupational disease, notify using form JKKP7 record and check the appropriate occupational poisoning or occupational disease category on the JKKP at form or step five, if the case is death, serious bodily injury or dangerous occurrence, notify the case immediately by the quickest means then send a written report using form JKKP6 within seven days and together with other case record in the form JKKP8 seven days means seven calendar days including any holidays that fall within that seven days and occupational safety and health officer may for the purpose of carrying out the objects of OSHA1994 or any regulation met there under at any reasonable time and upon the production of his certificate of authorization enter, inspect and examine any place of work other than a place used solely for residential purposes provided that he may enter the residential place with the consent of the owner or if he has reasonable cost to believe that a contravention of this act or any regulation met there under has or is likely to be committed and as for the liability for offenses for general penalty, find not exceeding 10,000 ringgit or to imprisonment for a term, not exceeding one year or to both and in the case of a continuing offense to find not exceeding 1,000 ringgit for every day at the start of the day during which the offense continues after conviction and then offenses committed by body corporate every person who at the time of the commission of the offense is a director, manager, secretary or other like officer of the body corporate shall be deemed to have contraven the provision and may be charged jointly in the same proceedings with the body corporate or separately and every such officer, employee of person or manager, secretary or other like officer of the body corporate shall be deemed to be guilty of the offense for offenses committed by Tred Union every officer, employee and person purporting to act on the instruction of any officer of the Tred Union shall be deemed to have contraven the provision and may be charged jointly in the same proceedings dan akan dikeluarkan untuk menjadi salah dari peraturan. Peraturan yang dikeluarkan oleh agen, seorang yang akan berbelah di bawah ini atau segala kebenaran menjelaskan di bawah ini ke dalam peneliti untuk apa-apa yang telah dilakukan atau dikeluarkan jika perkara yang telah dilakukan atau dikeluarkan oleh dia, secara persenal, akan dikeluarkan ke dalam peneliti yang telah dilakukan atau dikeluarkan oleh agennya. Dalam peneliti, saya mengatakan bahawa peneliti akan berjumpa selepas mendengar peneliti, berkongsi, berhubung, dan berjumpa oleh peneliti. Peneliti akan berkongsi dan menghubungkan keputusan untuk orang yang berbelah menjelaskan peneliti. Peneliti akan berkongsi dan berkongsi dan tidak akan berkongsi dalam kota-kota. Peneliti dapat membuat keputusan atau dengan hormat keamanan, berkongsi, berkongsi dan berkongsi dan bekerja untuk menjelaskan peneliti dari OSHA 1994.


Hello and welcome back here to the channel. I'm evil rabbit as you can see the C5 Drift that is on the tail of the dragon ripping through a replay. That's cuz today We're gonna talk about the future of the channel and what is to come and things that I'm going to be changing So I figured I'd give you guys a nice little Cinematic drift through the mountains on the tail of the dragon I'll leave the link for the car and to track down the description box below So make sure you follow me and also show media all which found in description box below. Let's get to it So at when I say the future of the channel I mean what's to come and things that I'm working on and things that I want to bring out to you guys as The channel progresses and things that I would like to start doing more and more Giving you guys a little bit more of an insight on some things that I do Almost going off the cliff is there some things I do other than when recording content So with that being said the daily uploads are going to get back to being Start making the content every single day so that there is a video every single day We're going to be doing of course a set of course a content for the horizon torque drift drift 21 and A bunch of other drifting games to bring out that daily trip content for you guys Because that's why you guys are here. You guys want to see it. We're here to do it So that's what we're going to be doing. We're continuing with the daily uploads now some of the things When I say future and what is going to be changing is Trying to not go off course like that is What something that I've been contemplating about doing for a while. I tried it. I tested it I test the waters a couple times on a few videos on the channel, but What I would like to start doing and what I'm going to start doing is bringing out Basically, you will have it live streams a couple times a week every day in the evening depending on how my schedule goes and what I got going on and Give you guys a chance or a rare look to look behind The video creation and what I do when I'm not creating content when I'm chilling in discord with addy and Christmas And the guys and just hanging out and either BS saying modeling cars Just running some practice laps or just testing out new tracks testing out new cars doing settings on cars working on a bunch of different You know tunes and aspects like that and Stream it live here on the channels So also be running some Q&A sessions where you guys can come in and ask questions But even when I'm running these live streams, you know asking questions or giving me input and ideas like that is definitely something that would be You know a great time for you guys to do because being able to tell me what you guys think is you know Would be great to see you know what types of videos you guys want to see It's it's a way for me to interact with you guys as a community In more of a real time rather than just through comments and stuff like that So with that being said what we'll be doing is because when I'm on and I'm not recording content I'm either on with you know Christmas or addy, and we're playing either call of duty Insurgency sandstorm. We got splitgate. We got Downloading when we play it so it's just there's gonna be random games and random talk on these live streams So it's a little chance for you guys to get back Into what I do when I'm not recording the content when I'm just chilling with my friends playing games You know there's a lot of comedy involved with that stuff too when we're chit chatting back and forth bantering back and forth But it also give you guys a chance to see the practice that goes in when Say we're practicing for a competition because you guys just see a small clip You know one video of practice, you know couple last when we're out there We're tuning cars for you know a couple days So you get a chance to see us live tuning the cars live practice all of our mess ups and everything like that and the Struggles and tribulations of going from no setup to a setup for a competition car And then also days like this where I was just sad I want to take the C5 drift bet out run the dragon have a lot of fun with it So these are things you guys are gonna get a chance to see with these lives. So it's definitely going to be a another Portion of the channel you will still like I said get the daily drift content because I don't wouldn't want to just start uploading other games such as like Insurgency and Call of Duty or Any games like that that I also play all the time on the channel on the channel as a video If you guys don't want to see it now This is a way for me to broaden the gaming aspect on this channel and you know show you guys Other things that we do because then have a lot of fun with Insurgency sandstorm with Christmas running that Definitely a lot of fun It's very tactical and slow and you know without you know the HUD like in Call of Duty You got to make sure you confirm your kills and things like that So it's definitely a fun game and I've been having a lot of fun playing it and it's games that I would like to bring out To you guys as a way of showing you like kind of behind the scenes of what's going on So you'll get the days where it's adding Christmas and myself and some of it We're just chilling at this court and we'll be talking back and forth about ideas And I'll have up on my main screen cars that I'm modeling or you know my pro car that I'm editing my new pro car that I'm working on Christmas's pro car that I'm working on when Addie's working data and we're trying to figure out a power band and turbos and Superchargers and all you'll get a chance to see all this which is not something that often people see so You guys usually see a few clips of the modeling or when the models complete from start when it's started and when it's finished So now you get a chance on these lies when I'm modeling you guys look at to see what I'm doing We get a chance to ask questions on why am I doing it this way? You know, why don't you do it this way or maybe give me suggestions? Like hey, you should do this instead and you know, it's also a good way for me Like I said to interact with you guys in real time I had a lot of fun doing lives way back when I used to do lives all the time But with my schedule and everything now, you know with everything that I'm doing It's hard for me to set up some live streams with a dedicated purpose Now I will be doing dedicated live streams with like tandem battles or you know things like that But this is a way for you guys to interact and talk to us and chill and hang out and be a part of the community While I'm doing things that I need to get done also because that is also a way for me to bring you guys out More content on top of the daily uploads because you're gonna get your drifting content your daily videos Your day, you know daily dedicated videos, but then you're also gonna get behind this You may get a daily upload and then then you know or in the morning you'll get you know The night before you're gonna get a live stream of something that we're working on the next morning It's gonna be a video about what we did in that live stream so it's kind of a way for you guys to go behind the cover of You know creating this content and see maybe the trials and tribulations of creating the content How many you know takes it may take you know things that in the aspect of what I do You know when modeling your car So this is something that I've been in my mind for a while something that I've been wanting to get into So I'm bringing this out to you guys to let you guys know what is the hold in the future It's gonna be bringing back game of drift could be bringing some new stuff in a set of course, uh, we bring in some potential cops and Robbers or cop chase style gameplay and things of that nature. I got a lot of things brewing with myself and my friends So I hope you guys enjoyed this little C5 vet through the woods and all the new things they'll be bringing out to the channel Like I said, this is something I've been planning for a while something I wanted to do So it's gonna be happening here on the channel You guys are gonna be seeing a lot more different style games here on the channel with the live streams But you will still get your standard drift content So make sure you follow me on social media also found scripture box below as always I think guys come back and watching. I'm evil rabbit I'll see you guys on the track


If you require additional authentication with your t-stall certificate, either for a potential employer, government office, or just for your own satisfaction, there are a few options to consider. Firstly, our online course certificates can be verified through the verification page on our website. Anyone such as a potential employer or an immigration office can enter your certificate number and your name should appear along with your course graduation date. As all our certificates are printed and sent out from Thailand, it is also possible to have a notarized copy of your certificate stamped and signed by a Thai notary public. You will receive this copy and the original certificate in the post. This service has a set fee of 45 US dollars. Another option we can offer is to have a copy of your t-stall certificate authenticated by the ITTT registrar and then signed by a notary public. With this option, you will also receive the notarized copy and the original certificate by registered post, wherever you are located in the world. The fee for the registrar verification and notary public authentication is set at 95 US dollars. In reality, the vast majority of our course graduates will have no need of these additional services, but we are always happy to arrange them for anyone that does. Thanks so much for watching. We are ITTT, the leading provider for TEFL and TSOL training courses. If you liked this video, please subscribe by clicking the button down here and click on any of the videos here on the left for more interesting teaching tips for getting certified to teach English abroad and online.


Dear students, today we are in the lecture number 33 of the Database Minimum System course. The course code is CS403. From the previous lecture, we are discussing the user interface and we studied the importance of user interface. And we discussed that user interface is the all that is in front of the end user form the database. And we studied that it is the user interface that creates that makes an impact on the end user about your system, about the system that you have developed. If your interface is working, if it is providing the right convenience to the user, if it is up to the expectation of the end user and if it is user friendly, in that case user will going to like your system, user will appreciate your system. Or if the user interface is not right, if it is not correct, if it is not easy to use for the end user, then even if you have done a very good work in your system that you have developed, the user will not appreciate that. Then we studied different points that make a good user interface. And then we saw that there are different tools that we can use to develop a user interface. And after that, we especially studied different controls in the form of Microsoft Access. How do we use different controls in a user interface? In today's lecture, we are going to design a very preliminary form of user interface. But its basic objective is that you get an idea of what exactly do we mean by a user interface. Apart from this, how do we manipulate its basic controls and how do we use them in a database system? You will get an idea of that. Look, in this course, we are not going to study in detail this particular aspect of the database because this is just an aspect. The other thing is that in this, there is too much detail involved in it. Or perhaps you need an entire course on this topic. And another thing is that there are separate courses on this thing, like VB or Microsoft Access. There are independent courses. So to properly understand them, to properly study them, you have to study that course independently. In this course, we cannot discuss it in such detail or comprehensively and not do it. In the last lecture, we discussed that the interface we normally use to input our user interface is called form. And today, our discussion is mainly on the designing of forms. The last lecture we discussed in detail was that it has to be user-friendly, data integrity. Dear students, throughout this course that we have studied so far, and especially when we were studying the relational data model, I have been emphasizing on the fact that as a database designer, as a database developer, this is your prime concern to maintain, to take care of the integrity of the data, the integrity of the database. That means that the data in the database should reflect a valid, a real, a correct situation of the real-world system or the business that the database is representing. And what is very important in that is the integrity of the data. That means you have to make sure that the data that is going in the database, that is correct from all the respects. And what you have to pay attention to in that is that before moving the data to the database, you perform all the checks that are required to be formed on any piece of data. For example, when you design a form, in that form, it is obvious that you have different tables that you have defined during your design. You will get data in those tables, you will get data input. Now, until the form has your field, they are not yet moved to the database. They are on the form or you can say they are in the RAMs still. So, you have to make sure before moving the data into the database, that all the conditions and all the checks are implemented on them. That means in this way, you can see that the data that is present in the database should be completely clean, clean, and even clean. That means all the checks should be applied on it. Why? Because the functionality that you have to give to your system, the operations processes performed after inputting the data, all of them they base on the data that you have put into the database. If you have not inputted the data hook properly in the database, if you have missed some checks, if you have ignored some checks deliberately or by mistake, then the processing ultimately and after processing, the user, the organization, they would definitely be getting some reports, some outputs from the database. So, if you have inputted the data, if that is not correct, if you have missed some checks or some data that is not possible in that environment or in that system, which is not correct, then the processing and the results that you are giving, they will be wrong. And those results, they are important, because your organization, they make decisions on those results. So, when your results are wrong and when your decisions are wrong, then they are going to harm ultimately the business. That is why it is very important that the data that you are putting into the database, then you have to put in every kind of checks. What is every kind of checks? Every kind of checks is something that is implemented by the very nature of the data. For example, if we say that something is numeric, then the text type or the date type should not go to the data. And there are some things that they come from the design, the database design, for example, when we say that there is a referential dignity constraint, if you have defined it, and that was defined when you were designing your system. It is the first stage of this stage. So, that is another kind of check that has been controlled. Plus, there are still certain things that you have not come into the database design, then you implement them on this stage. So, right from the stage that when you defined an attribute and you associated a data type with it, that was the first stage. There was a special kind of checks or constraints that started to be implemented. Fine, that was the first thing. After that, it is possible that while defining the data, you defined some, let us say, referential dignity constraints. That was another kind of check. And it is possible that during the definition of it, you defined some check on that. So, that was also a kind of, or you defined a range. So, that was also another kind of constraint. But still, for example, we say that you said that our manager, his qualification should be master, his experience should be that much, etc. So, this kind of check is now available. As you are starting to design forms, now you accept data from the user from here, you will move that data into the database. So, I am emphasizing on this point very much that in your database development process, especially in the implementation phase, there is a very important point that data that you are moving to your database, that must be correct, correct from the standards of the database in general and correct especially from the perspective of, from the standards of the organization for which you are developing the database. Checks can be applied within the tables definition or through input form like we said earlier that they can be performed in different stages, in different types of checks. Right now, what you are seeing right now is the screen. In this, now let's see that we have developed our database, we have defined tables, etc. We have defined that using the SQL Server. Now, when we are going to design forms, normally the two options that are used in this environment, either they are used by VB, or as I am adopting a project here, the forms of Microsoft Access, I have selected them because it is quite easy to use them and according to my knowledge, as far as your background is concerned, you have not studied VB. Although VB's visual basic is also used here, but as much as I show you here, the functionality will be used without VB. And the people who want to further excel on this, it is better to use some programming language for the complete functionality. Now, the first phase on this, when we have defined the database in the SQL Server, and we are using the forms of Microsoft Access, and the first thing is how the link will be between them. For that, as you can see right now, the screen is that you will run Microsoft Access. And here, as you can see, you will select a new option from the file. When you take the new option, after this, it will ask you first whether the new database that you are creating will ask you its name. Although you have named your system in your SQL Server, but the form that you are creating here, in this Microsoft Access, you have to name it here. It doesn't make any difference. So, let's say, as you can see here, the file that I have given is an exam system. After doing this, when you see the option of creating, I will press this. After this, you will see this screen. First of all, in this screen, the portion on the right side, which is a small window, in which you can see the new and tablates options. In these, you can see that the five different options under the new will be the third one, Project Choosing Existing Data. You will press it. And you will press it because you have to use the existing database in the SQL Server. That is why you have to use this option. When you select this option, the big window on the left side, you will see this. It is written as Data Link Properties. In this, the connection tab, you have to fill in the different requirements here. For example, the first one is Select or Enter a Server Name. You will see an arrow here, a pop-down, which is a simple view. If you press this, all the server names on your system or in the access of your system will come. Otherwise, you can type the server or the instance name here. In this case, for example, the Vue here is either the name of the machine on which it is running or the domain in which it is joined. And the demo is the name of the instance of the SQL Server. When you do this, on number two, you have to mention that you have to use the login password and the login of the Windows to access the data. Or you have to use a special password or a username. These are the options that you can use with the installation that is why we have selected the first one. In the third option, all the databases that you have with the SQL Server instance will be listed. And the database that you want to create will be selected. Since we wanted to do an exam, we selected the exam. When we selected it, from here, there will be an OK or Create option and we will press it. After that, you will see this screen. Now here, the database that you have connected on the previous screen, you have given the connection information. So, the database that you have connected, all the tables of that database that you have defined, you will see on the screen. Here you can see course, course offered, enrol program, results, etc. These are all the tables that we have defined in our exam system. And on the left side, the area that you are seeing, there are different objects that Microsoft Access offers you. So, the tables are taken from there that you have defined in the SQL Server. All the tables have come from there. What you are going to do here is that you are going to create the forms. And for that, it is obvious that the forms option here, the object of the forms, you will select it. As you can see on the next screen, where you can see that you will select the forms option. So, on the right side, you have two options. One is Create Form by using wizard. As it is obvious that in the design view, you will select different things, different controls and create a new series of designs. Form design. Or the second option is that you will use wizard. A software called wizard that provides Microsoft Access, you want to create the form. So, the first option is using the design view. You should not do that in the beginning because that is meant for the experts. So, when you practice and after that you take that option. Otherwise, the easier one that is creating form using the wizard, you select it. When you do this, then your form wizard will be activated and it will start from here. The first step is that you can select the tables or tables on which you want to design the form. The table for which you want to design the form. For example, if you want to create an input form. So, first of all, you will select that table. So, if you are trying to enter the data into multiple forms into multiple tables using the same form, then you will select multiple tables. Initially, in our example, we are selecting a single table and we will create a form on it. When you have selected the table, then you have to mention the next thing from that table are the attributes that you want to place on your form. Now, on that table it depends on your requirement. In some cases, you would like to place all the attributes that are in the table. In some cases, for example, some of your attributes are computed or derived. For them, you do not need to enter the attributes specifically. Rather, you compute their value form, let's say some other attributes. Or you do not want to enter the base value. And you do not want to let this particular user enter this value. In fact, you want to do this in any other way, in any other form. So, whatever, you have to tell what are exactly the attributes that you want to place on your form. What you are seeing below is that you can move all the attributes of that table on the form. Or if you select the selected ones, they will come. So, on the left side, all the attributes and on the right side, those attributes will come. As you can see here, all the attributes that we have selected, will come on all the forms. After that, you will see the next button. You will click on it.  You have access support. Layout means the form that you see in which form it will be. What will be the layout? There is a columnar table and when you select it, you will see the window on the left side. It will show you a style that you will see when you select this option. After that, select the next one. From here, you can select the style or background. There are different styles. You can select one of them. From there, we have selected the sandstone. Then, we will click on the next button. Finally, we have the form wizard and he is asking us his name. Initially, the wizard has placed the name of the table as the name of the form. You can change it. Anyway, we don't change the name of the form. We leave it like that. After that, we will press the finish button. If you want to change it, you can change it again through the back. We press the finish button. Initially, we will have the layout of the form. The form that you have seen on the screen is the design view. The design view is that you can see the design of the field and in this view you can change the design. We will see all the changes during the design view. We will do it in our form. Apart from this, you can see the same form in some other views. You will see those views on the next screen. This is the view called the form view. In the form view, you can see the form in the form view. You can see the space in the text area you can see the records and data. If you look at the last screen, you can see the label on the left side of the attribute. The space in the text area, you can see the name of the attribute but if you look at it in the data view, in the data view, you can see the name of the attribute in the labels. But in the text area, you can see the records. Under the screen, there is a pointer. If you use the pointer, you can move forward in the table. You can see the next record and press it. If you want to see the last record, you can move forward. This is your data view in which this is your form view. In this case, you can see the data from your table. In the design view, you can see the design of the form in which you can change. When you are in the form view, you cannot change the design of your form. Dear students, making forms or making reports is a sort of artistic job. And the students of computer science or scientists who have artistic sense or aesthetic sense, you can see the form in which you can make forms. In that, you can use your artistic sense or artistic touch. The idea behind it is that you can see the form attractive and the thing that you want to convey can be easily picked or easily found out. This means that the arrangement of the form has some previous lectures and some future lectures but ultimately what plays a major role is your thinking. So, use your thinking and you can see the form attractive. Now, we have made a basic form. So, what we are going to do in that is that as you can see the form, we have done in the form of a stack like all the attributes on the top and bottom. The first thing we have done is that we have changed the arrangement and we have spread it on the whole screen. Now, the whole screen seems to be balanced in the form and the rest of the screen is empty. It is spread on the whole screen and the form will be balanced. Now, when you defined the names of the attributes when you are designing your database at that time the perspective was that you are meaningful name but at the same time because when you are doing the programming you have to type the name again and again. Your objective is that it is meaningful but not so lengthy because there you used different abbreviations for the attributes as you can see STID, STF name ST address, ST form like this abbreviations are marked here and the form you can see the abbreviations but the thing is the form is going to be used ultimately by the end users and for them these abbreviations are confusing and the other thing is you don't have to type these things you have to do it just once so that is why the abbreviations that you have and the abbreviations and here in a normal English for a common man who has a practical name use them STID so now you know that ST you are abbreviating for student now don't do it write it completely write student write ID because ID is quite established these people know that ID has become a word or if you want you can write the identification ST name student name ST address address of student so you know that you have to use their labels they should be meaningful now what I have said meaningful names I have not implemented ultimately it will be implemented here one more thing is that you initially some attributes were included in your form if you want to delete it that is no problem at all and if you simply delete it that attribute will disappear so first of all if you want to add an attribute you can design a form in the form wizard when you were designing a form at that time you missed some attributes this is a possibility that after designing a form you have added an attribute and now you want to put that attribute in the form or it can be that you have deleted an attribute whatever if you want to add an attribute of the table into your form as you can see on the screen you go to view and first option is field list which is selected here when you select the field list so in this way the form portion where the active table is the attributes of that table will be seen in front of you first of all we added an attribute of student sex so we want to add that attribute on the form so select that particular attribute as you can see here and then simply the window here from here you drag it and drop it on your form so this like the rest of the attributes on your form this attribute will also appear now on your form similarly we have another option on our form we want to add an option group control the basic idea is you have multiple choices and you want to start one so in that case you use option group control see the combo box also gives you multiple choices and this option group also does this the difference is that the combo box the type of controls you use in that situation when you have that can change increase or decrease for example the program name attribute we change the type of the program name attribute as combo box because the value of the program name attribute will be taken will be picked from the program what is the logic the logic is when a user has to enter a data we are adding a new attribute we have added a different attribute when we want to enter the program name if we have left it if we would have left it as the text box in that case the user has to type the program name in that case the problem was that your user may have a wrong value type wrong value means that he type a program name that is not there in the program table and you know that we have defined a primary foreign key link between the student and the program table so that a user could not enter an invalid program name because if we declare the program name in the student as the foreign key it will have the same value which exists in the program name in the program table if you leave it as text box then it becomes the responsibility of the user to enter a valid program name if the user does not know what is the valid program name then it is just a matter of it and trial and the user does not even know what to do if we call it a commo box then it will be useful that when the user will enter the program name then when he will click on the program name attribute then there will be a drop down list in which all the programs we have at this time in the program table the program name will show from there and the user will select the work from there this was the situation the commo box you used that when you have the possibility of the program names it varies that whatever program name is in the program table whether it is 2 or 10 or 15 or 20 whatever happens but you are not sure and the number of options is not fixed when we have an option group we have fixed options for example like we talk about sex so sex has options and even if you consider other options then it is not fixed but it is not that it will vary so in such a situation when you have fixed options and you want to select one then this option group which you use for controllers which are statically or fixed and defined and you know that it will remain it will not change when commo box is in such a situation that when you have options it can vary so whatever option it will vary it will adjust the commo box and you can select it so this is what I told you as we talk about sex so you gave it the option of male-female if you want to enter any one of them if you leave it open then it is possible that if a user enters he does male he does female he does m he does f he does male he does dana in that there is no control you do not know precisely where you feel that you should bound you should bound it but it is not like you give it a small world where you feel that you should bound the user do it otherwise you give liberty to it now if you see that we have sex attribute for that we have option group control which we have defined and for that we selected this button from here which is on your left side which is a box from option box from control box you have selected that button which is showing option group so first of all it will ask you what are the different options you have said that I have to give a male and a female you have expressed then you will ask do you want one option to be default choice what is default value if you know then any of them will not highlight but if you default then the value which will declare default will be highlighted after that if you select any value then what is the return value that is male and female then you have made value 1 or 2 fine, next one after that the question you ask is you have made this option group when you operation then the value will generate which we have just fixed as 1 or 2 in which attribute should this value move we have defined the student sex attribute we have nominated it that its value should go in this attribute ok so in this way we have defined the option group control and in the end we will see how it is implemented or how we will see apart from this you have seen that the text written on your form you want to enhance its size if you want to enhance a particular attribute size then select it if you want to enhance the size of all then you select all in the edit option as you can see on the screen all your attributes will be selected after that you have the font size option whatever size you want we have it on the highlighted screen it is 14 if you select it then all your attributes will be enlarged but it is possible that as you can see here as you can see as if if the shirt color is tight as if it is stuck then you will have to do this that you have to go to everyone and enlarge it then you can drag it and you can enlarge it so this is what we have done with our form so far that you can see that whatever we have talked about for example in this we have done student ID we have attached the student name with sex now after all these activities which we have discussed after all these changes the shape of our form is this as you can see we have set all the attributes of the student name they have given a proper name we have converted the program into a commubox we have converted the sex into an option group and when we look at this form in the form view we have this data which is empty but you can see that you have an option group because the data we have already input the record we have is of a female so we have in the option group we have the button in which the selected button is female so this is a very simple form and we have seen the different treatments here now the next thing we are going to do with this form is we are going to add different command buttons into our form and the purpose of command buttons is that you want to perform the different activities in your form you do it through the command button and you can add the button we are going to add the simple buttons now the first thing the tool bar on the side you have selected the icon of the command button and when you have dropped it on your form the command button wizard has been opened now the categories of the command button record operations, form operations report operations, applications and miscellaneous first of these we select record navigation now in record navigation we have 5-6 different operations first we select go to next record when we press next it asks the button you see on your form do you want to place here an icon or do you want to place some text within that button if you want a figure or if you want a text let's say we want a picture or a figure and when we see you can see the sample on the left side after this on the last screen we ask what is the name of the command button first we select when we finish now look at the button you see on the left this is the next record and similarly the form you see here we have added some other buttons for example the other button with which we have an arrowhead or star this is the find next similarly on the left side the button you see on this we have clearly labeled for example find record, delete record, close form now this close form button you must have understood that we selected from the form commands category different type of categoristic command buttons from the form operations we selected from there and created a button on the top you can see we have added a label which shows what is the purpose of this form and purpose is add student record we have boldly written it so that the first prominent thing on the form is what we are doing after that if you see this form you will see this form again you see we have a record here we can see the record of Tahira Ija student and on this you can see all the data and in the case of sex because it is female again the female button is selected so this way you can see a simple form and you have seen how you make a form you select different options and adjust it and by this form you can see the data and by this form you can add data when you reach the end of the record or you can add a button add new record you can add a record this was a very simple form in which you have used just one table as I told you in your real life applications you have more applications that involve multiple tables in this form there was a table now the form I am going to show I have explained the first basic form in detail but very fastly and swiftly I am showing you how we have created the form this form it involves multiple tables and basically we have used 4 tables in this form now there are different ways to place multiple tables when you have a tool whatever you use VB or microsoft access any other tool there will be different techniques how you involve multiple forms on a form but what I have created is an example form I will explain how I have created this form and how it involves multiple tables the scenario of this form is that we want to enroll our students the situation is we have a program table which says MCS, BCS, BBA we have different programs after that in every program different students enroll similarly in every program different courses are offered different courses are included now when we have a program table we record all of them similarly related students come and after that different courses come we want to see one thing is in this program which students enroll one thing secondly we want to enroll this student in this program so down below the table you will see the programs and courses and from there you will select them and place them in the enroll you will enroll them and the second activity you will perform is you will place their marks as we have designed the enroll table and placed the midterm marks we will do the activity let us see now here we have at the top we have three attributes of the program table along with that we have created a form and we have created the student after creating the student in this in this program we have included it as a sub form this is the option to include along with that we have repeated the same operation with another form and the form of the courses that is we have created the student created the courses then we have started with the program after doing the program we have created the program we have included the student and the courses and then we have included the sub form then we have done along with that we have included another sub form enroll and in enroll we have added two buttons save and exit so this is our form basically we have the sub form and the table is on the same form now we have done that our program was on the top we have linked it with the student and with the courses in fact we should say that we have related the students and the courses that means whenever we will navigate the program table move one record to another then all the associated students and courses will automatically change but after that as we have to see in enroll there is a little bit of programming involved we have done that when we want to enroll a particular student in a particular course then it will be you will select that student and you will select that course after that you will enter the data and save it that student will enroll in that course now see if you see here unbound controls for enroll table you have added it now at this time you have this form we have data view form view now you are seeing that at the top program table MCS and the program credits are 64 when you see when we select this move it in the program table accordingly your student table and courses table will change here you see that when we selected a particular record from the student and selected a particular record from the courses then the related data in enroll which we have already feed it will automatically come here now first we have to enroll this student in another course so there can be many other ways but the way it happened that we will select the student from here and after that we will select any other course then it will automatically move in the enrollment and we will place the rest so this way your form will work again I told you that form is a complete course so if you want to read it in detail then you will have to give it a different time but in today's course I have shown you a simple form a complex form Dear students we will wind up this lecture in today's lecture you have seen that from lecture number 33 our discussion was going on on user interface we have continued that today we have studied about forms and we have seen how we link the form in Microsoft Access and how we start designing it and how we link the table after that we control it then you have seen that we created a form that was a simple form in the sense that it involved just a single table and in the end I have created a form that included multiple tables rather it included 4 tables so in this way using different tables you create your forms you state your forms you input them or you display them in the same way I hope I have got some idea and for further understanding you will have to work on this further now I am leaving Allah Hafiz


Hello. So in this talk, we'll be talking about using Wasm for edge workloads. We'll also talk about ACRI for discovering edge devices. And we'll show how you can do this all in the context of Kubernetes. So yeah, let's get right into it. And hello. I'm Rishit. I'm a student at the University of Toronto. And I also research computer vision and machine learning at U of T. And I also do AI research at CIO. Hi, everyone. I'm Shubhai. And I'm a developer relations engineer at Millie Search, which is a Raspace search engine. And I'm also a Wasm Edge ambassador. So Wasm Edge is a WebAssembly runtime. And I've been working primarily in the WebAssembly space for the past two years. So of course, starting off with what exactly is WebAssembly. Now, some of you who have been attending all these sessions at the embedded IoT summit might have probably watched one of the previous sessions at 9.50 that is around edge devices and WebAssembly. So not waste a lot of time talking about WebAssembly, but just a primer for those folks who might be new to the space. So WebAssembly is a binding instruction format. And it's primarily meant for being used, for being able to compile, let's say, source code from multiple languages into this one single binary format that can then be run across multiple platforms. And it's been designed, as I mentioned, as a compilation target for it supports different types of languages, so whether you're looking at highly functional or object-oriented programming languages, and even today, scripting languages. So today, we have support for more than 20-plus languages that can be compiled into the Wasm binary with their appropriate tool chains. And some of the biggest benefits that you get with WebAssembly, that's what we'll be covering in the next few slides. So of course, this is WebAssembly. And now we'll look at some of the features that we get. So the first one is it's pretty efficient, because it performs or it gives you newer native performance. So of course, in comparison to native bytecode, it's not at that similar level if you were using something like a Rust native binary or a C++ native binary. But it does come pretty quick. And we'll see some of the benefits that we get from it being very fast and efficient inside of our Edge workloads. The other one is that it is open source and it is also debuggable. So in today's morning session, there is a reference into how you can debug WebAssembly modules with the help of some VS code extensions. So definitely check that out as well in that particular talk, where they have covered how to debug WebAssembly modules. And of course, it does work for non-Web platforms. It started out as a browser technology. But today, it finds even more usage for cloud, for cloud native, and for Edge workloads, as we'll be showcasing in today's demonstration. And it is an open platform being developed by multiple companies, most of the world's companies today, including Cisco, Adobe, Microsoft, all of them are contributing to the bytecode alliance, which is basically the entire alliance that defines all the different WebAssembly standards, especially for the Edge and for the cloud native use cases. And it is also very safe. So it comes in a sandboxed technology, so it adds safety as well. So we also see how those benefits for safety can be useful, can be used for the Edge applications when we are working with multiple Edge devices at a scale. So just in summary, what we have discussed so far is that WebAssembly, it's a bind instruction format primarily designed as a compilation target, which can be used to compile down your source code functions from multiple languages, and it performs near native performance as well. And also, it's very portable. So that means that it supports most of the different type of architecture, so whether you're talking about Edge x64 or x86, or even risk five based architectures. So you don't have to worry about your Edge devices having different type of system architectures, unless and until you have the WebAssembly interpreter that can be run in those system architectures, then your WebAssembly module that gets generated after you have compiled your code, you can run it across all these different type of system architectures. So that means it has native support for being able to run on most of the different type of Edge devices that we have. And now of course, coming into the fact of how do you actually make the WebAssembly modules interact with the system resources. So we'll go back in time and see how your native applications that you write typically operate, so you have the kernel that is responsible as that authority layer between the application and your system resources. So with the help of syscalls, you're able to get access to the different types of file resources, and that's what the kernel does. And similarly, when you talk about WebAssembly, we have something called as the WebAssembly system interface that does provide you those specific API calls and syscalls that you can make for your WebAssembly module to access your system resources. So whether it's the file or the network or the input-output operations, those are manageable with the help of WebAssembly system interface. So it's what was essentially powering up your capability to access your network resources. So as we'll see in today's demonstration that how these IoT Edge applications can leverage the WebAssembly modules, whatever is happening behind scenes is with the help of Aussie. So this particular diagram that you see is what should give a better understanding. So we have the host OS. In between, we have the WebAssembly system interface, and at the top, we have all of the WebAssembly modules. So the system interface makes syscalls to be able to get access to all those different type of resources that I mentioned. And of course, now coming to the most important aspect of why all of us are over here. And that's Edge is complicated, right? So whether it is with respect to looking at different type of constraints when it comes to Edge, right? So of course, the biggest constraints are with respect to space and with respect to performance of these Edge devices. So if you were to run your standard Linux containers or systems, those can be pretty heavy. And even to actually get them started, the cold start time for Linux containers is pretty huge. Then if you look at security as well, we need to ensure that we take into consideration security for all of the different Edge devices that you are running inside of your cluster. And network connectivity is also something that we typically face a lot of issues when we are setting up the TCP, IP connections, and the empty list connections to manage your communication between all of these different Edge nodes that we are running. And then of course, the biggest one is the heterogeneous ecosystem of different type of Edge devices. So let's say that you're having different node devices that have different functions. So some of them might be doing something like video surveillance. For that, you'll need some type of architecture for video cameras. You might have some other sensors that will have completely different architecture. So those are some of the complications that come when you are working in a multi-node setup and you have different node devices having different functions with completely different architecture. And managing all of those can be very difficult. And that's where some of the superpowers that we get with WebAssembly come into the foray. So because of the fact that WebAssembly has support for multiple platforms, it's very easy to just use it across different types of system architectures. But at the same time, in comparison to containers, you get some inherent benefits in comparison to these containers. So the first one is that WebAssembly is a lot more smaller in terms of the size as well. So the WebAssembly modules do not essentially package a lot of the things that typically your containers package. So the size of your WebAssembly modules is a lot smaller. It essentially is just the application code that you're running. And because of that, the startup time for your WebAssembly modules is also significantly faster in comparison to the Linux containers. So just think of the use case where you have smaller sizes of the WebAssembly modules and the startup time is faster. So that means that the load times when you're running these specially constrained environments within these edge applications or edge devices, it's a lot faster for being able to spin them up and then run them. And then, of course, it's more portable, has support for multiple system architectures. And as we also mentioned, it's smaller as well. And generally speaking, it will be also more secure. So because of the sandbox model of how WebAssembly runs, the WebAssembly modules itself cannot really do anything. So there's a more rule-based approach where you have to directly set up what all resources your WebAssembly modules can use. You have that capability to set up what all it can access. So you have to set it up manually. So that is why it is generally more secure in comparison to your containers. So that is where now Reshith will talk more about the project Akri and how it's useful for detecting different type of edge devices. Yeah. So we talked a lot about WebAssembly being portable, WebAssembly being small and fast. And this is mainly because the WebAssembly module, so with the WebAssembly module, it's not an executable. You also then need a WebAssembly runtime, something like, wasm time, wasm edge, many of these. So you also need that. And which is why it allows you to be portable. And the WebAssembly module itself is smaller. But you also have this WebAssembly runtime, which does some stuff for you. So it does feel a bit like LLVM IR at this moment. And for anyone new, it's not that. But we'll talk a bit more about that. And right now, I also wanted to talk about how Akri comes into play and how wasm can give you superpowers, especially when using Akri. So a lot of the edge devices, so you often face a lot of problems when you have edge devices. And those might be connected to some Kubernetes cluster. And so what Akri allows you to do is you have all these edge devices. And those are treated as the sources in a standard Kubernetes cluster. So it allows you to detect these edge devices. And it's going to work loads with them pretty easily. And if you just see a very quick overview of what Akri does. So we have the standard Kubernetes control plane and nodes. And Akri particularly has these components, the Akri agent and Akri controller.  So when the custom broker is deployed, it has this discovery handler, which understands that a new edge device has been discovered. And now this custom broker allows you to treat it just as a standard resource. So when you have the Akri agent, what you can do is just schedule pods onto this edge device and still get to use all the benefits of Kubernetes and management and all that. So that's what Akri allows you to do pretty easily. This is also pretty similar to what you would do, let's say, if you have a separate node pool and you want to schedule different kinds of pods on it, what you would do is fundamentally pretty similar. So it allows you to detect these edge devices and also schedule jobs to them very easily. And of course, the inherent question then comes is why use Wasm with Akri, right? So primarily, if we talk about what benefits we receive from Wasm, those can directly be applied to Akri as well, because as Rishit mentioned, that Akri is primarily used for being able to detect these different type of IoT devices, edge devices, and then just add them as custom resources that you will have similar to how we have volumes in communities. Those can be added as resources to your communities' node pools. So primarily, we are leveraging all the different benefits that we get with the help of WebAssembly and just applying them to Akri. So whether we talk about the security enhancements that you get with WebAssembly, that's one of the reasons why we want to use in order to have a better security for your devices that you are discovering inside of your entire communities node pool. And then, of course, second one is the performance benefits that you get with the help of WebAssembly over containers. And primarily, the third one is as we spoke about the discovery feature of Akri. We are detecting different types of edge devices. So we are using the portability of Wasm to be able to then support all of those different type of edge devices that are being discovered by Akri. So we'll see in today's demonstration how we can leverage both of them together in order to create highly scalable edge applications. So let's talk a bit about what can we do with Wasm and Akri and how does this all pan out. So we understand what Akri does right now, which is pretty simple to understand how it detects and then schedules pods on them. And right now, we have something looking like this. We have the control plane on some node. And we have the user node where we want most of the stuff to happen. And then we have our edge node, which is, for now, let's just say it's a camera. And we want to use this. The edge cluster is a K3S cluster, a standard Kubernetes cluster, could be anything. And you still want to use all the benefits and management of Kubernetes. So you already have this. And when you deploy Akri, you have the Akri controller deployed as well, which talks to the API server. And so this will also help schedule pods with the API server. But once you tell Akri what protocol it wants to discover devices on, we have the Akri agent and the Akri discovery handler. And that discovers this camera. Once that's done, you have the Wasm broker come into play. And the Wasm broker allows you to now use this camera as a resource within the user node. So wasm broker will facilitate doing this. And the Wasm work load can then be run on the edge device directly. So you still get to use the edge device, which is on the same network, and manage it through the user node. So the Wasm work load. And there is also the shim. So the shim would pretty much be container dshim, or if it's just an edge device on the network, you can also just use some Wasm runtime. So what any of these shims allow you to do is have these Wasm workloads or web assemblies run inside containers. So what you want to do is run these and have the feel of running a container. But of course, these will consume a lot less space and be a lot faster than containers. We'll talk about why they are a lot faster. So that's essentially what you want to do with the shim, have the web assemblies be converted to OCI's. And with that, I want to talk a bit more about making Wasm work for the edge. So we talked about how we can probably redo some of the ACRI stuff to make it work, to make it work with Wasm and get all the benefits of Wasm for the edge. But I want to talk a bit more about Wasm for the edge. So let's try to understand what is happening here. We have all of these languages which are converted to dot Wasm. And so this is a process. This first gets converted to LLVM IR which is then converted to dot Wasm. And the dot Wasm is just this instruction format. And you can run this on any machine. You can run the same dot Wasm on any machine. And that is because when you run it on any of these machines, you also need to have the web assembly module itself. But you also need to have some runtime. And so the runtime is just deciding how to run the web assembly module. And if you also compare the size of the web assembly module and the runtime itself, both of them combined are also lower than standard containers. And so this is why it becomes really portable. You can now run the same dot Wasm on everything. So something very popular with a lot of edge deployments is just JIT or ahead of time compiling it. And you can do the same with web assembly modules as well. But you happen to sacrifice portability to do so. Because these AOT-compiled modules will be run from hosts that are compatible with the target environment of the AOT-compiled module. And so you sacrifice the portability aspect. But when working with non-trivial programs, you will see that AOT compiling will achieve higher performance than an interpreter or even a JIT-enabled run. But what you would also do is, once you AOT-compile this down, the size of your web assembly module itself will be increased. Because many elements of the Wasm runtime, at least the elements of the Wasm runtime which are needed to run that web assembly module, will also be compiled into the binary. And that improves performance by quite a lot of margin. But you happen to sacrifice portability. And your web assembly module itself becomes larger when you try to AOT-compile it. So now, if you think about AOT-compiling, and you still have some of the drawbacks of Wasm, of it not being native performance and near native performance. So which is why I want to talk a bit about making Wasm work for the edge and how you get over these limitations. So before that, let's take an experimental look at this. So we'll take an experimental look where I want to run a compute intensive workload with Wasm and do it better. And that should help us better understand how you make it work for the edge. So what we'll do is, we have neural radiance fields or nerfs which are pretty popular. And what we want to do is generate novel views. So we have one of this image of a car which we took from some edge device. And what we want to do is tell it that how would the car look like if the camera was placed here instead? And the machine learning model then decides what to do and produces this target image. So this is what we want to do. This is immensely costly. You can also take a look at the original NERF paper. So this is immensely costly. And this also happens in multiple stages where you would actually train the model. And then in runtime, you just tune some parts of the model and then produce these novel views. So this often gets pretty compute intensive. And it's nowhere near real time at all. So there is already mobile NERFs, which makes it possible for NERFs to run on edge. And it's still quite compute intensive. And on a lot of edge devices, at least the standard ones where we consider 4GB RAM and just simple CPU, you wouldn't still be able to get more than 10 to 15 FPS, which can be considered partly real time. So mobile NERFs already does this, which is pretty awesome. And they do this with vanilla JavaScript as well. So they run NERFs with some algorithmic modifications that allows you to run it partly on the edge. So the question now we want to ask is, can we use Wasm to make this faster? And along that, we'll also talk about how you make Wasm really work for the edge. So first off, we're doing the same ART compilation. So doing the same ART compilation at least for NERFs gets us to 14% larger artifacts. But we get to 32% faster. And this is also including the rendering the neural field. So it's rendering the 3D model of the combined with all the novel views we have. So if you take a look at this car, we also need to render the 3D model of it so with all the novel views from all angles. So ART compiling actually improves the rendering the neural field part by 32%. And I mainly include percentages here because just to get a relative understanding of how optimizations to Wasm help this. And this is pretty interesting because for other kinds of machine learning models, especially if you take a standard mobile net, you get to 20% smaller artifacts. And a Wasm mobile net module comes down to just 3.3 MBs, which is really, really cool. And it's also 40% faster. So you beat standard Node.js Wasm runtime. And you also beat TensorFlow Lite, standard TensorFlow Lite running. And Wasm with ART compilation gets it down really fast. So if you see the benchmark I did over here, it happens to classify a single image on the mobile net model in 500 milliseconds, which is quite faster than TensorFlow, what TensorFlow Lite does. So that's pretty interesting. And just ART compiling also gets this module down to just 3.3 MBs, which you can directly run. So that's pretty nice, what we can do with ART. But at least for NERS, this seemed to help quite a lot with inference line. Another thing you could do with WebAssembly modules is doing some initialization or warm-up. So this allows you to understand what instructions in the WebAssembly format or what parts of the interpreter are actually needed. And this is actually easily doable yourself. But there are also exist projects like Visdor, which can help you quite a lot in initializing or warming up WebAssembly binaries. And in our case, that's also pretty useful because the pre-trained weights that we have from the earlier stages of the NERF are so we have quite a few pre-trained weights from the earlier stages of the NERF. And especially in case of machine learning models, you'll often see that just warming up the WebAssembly binaries gets you to at least 50% increase in inference times. So if you just take a standard mobile-net model where you don't have to do any neural rendering and all that, you just have weights and a DAG, and you compute it, you get to directly 132% faster just by initializing the WebAssembly binary, which is pretty interesting to see. And this also gets down the size by quite a lot because you now observe that most of the nodes or a lot of the instructions, at least for standard machine learning models and how they are converted to Wasm, how TensorFlow models are being converted to Wasm, or how even PyTorch models are being converted to Wasm. A lot of these nodes and instructions still remain. So you get to a lot faster just by initializing the WebAssembly binary. And there's also link time optimizations which you might be aware with if you worked with LLVM. And LLVM does LTO really, really well. And Wasm doesn't happen to do it so well. And this is mainly because the WebAssembly module you have is still instructions. And it's not that compile time, the compiler is actively trying to prove what parts of the program are unreachable or what inlining will help the program best. So the compiler is not trying to actively prove inlining and what parts of the code and what can be improved in code locality, which is why link time optimizations when you try to do link time optimizations on Wasm, you actually see quite some improvement. And so this improvement mainly comes from code locality and inlining functions. And for the nodes, this gets us even smaller and even faster. The link time optimizations do have a marginal improvement, but it gets us even faster. And there's also quite a few other optimizations you can do, especially using the binarian IR, which is an IR that is specially made for WebAssembly. So and the binarian IR does a lot more. The compiler actually tries to prove unreachable parts of the code, prove unreachable parts of the Wasm runtime, and eliminates those as well. So the binarian IR is pretty helpful. And the ideal workflow with WebAssembly modules is you convert a WebAssembly module to binarian IR, and then you convert it back to a WebAssembly module, which is a lot faster and slower. There is more certainly intrusive stuff, which is pretty much self-explanatory. There are things like do not throw exceptions and stuff in Rust, which makes WebAssembly modules a lot faster, but we'll not talk about this. This is very different from codebase to codebase. And there's also LLVM's optimization process. So what's happening is if you try to do a size profiling of the WebAssembly module itself, LLVM IR is what's generated before it being a WebAssembly module. So if you try to do size profiling of the WebAssembly module, you'll notice that usually what holds true is, so the WebAssembly module is smaller than LLVM IR, but usually what holds true is the parts which have the most usage in the LLVM IR will also take up more space and increase execution in the WebAssembly module. So and of course, there's a lot of information loss when going from LLVM IR to a WebAssembly module. So what I suggest doing is always instead of trying to profile the WebAssembly module, which is quite hard to do, and there's not a lot of information to debug from it, I always suggest size profiling the LLVM IR generated. And this allows you to get a better understanding of what parts of the WebAssembly module you can better optimize. And if you also make these optimizations to optimize the LLVM IR, it of course means that the corresponding WebAssembly module will also be smaller, or smaller and faster. So that's another thing I always suggest. There are also a few other optimizations, but these are the ones which made the most sense for NERF. And with these optimizations, what we are able to do is get NERF running at native speed. So we'll also see this. And with this, what we get is we get NERF running at 40 FPS in real time on an edge device. And that corresponds to native execution. So had it been written in C and optimized, this would pretty much be the performance you could expect. And that's pretty well doable with WebAssembly, which is really interesting to see. So this is what we want to do. So this is what we want to be able to do, have the edge cluster, have the ACRI agents, and the Wasm workload now is running this NERF model. So that is our Wasm workload right now. And so there's also this edge camera, which first needs to be discovered, and then pods need to be scheduled to it. So what we do instead just for demonstrating this NERF is also quite finicky to run. So what we do to demonstrate this is have a simulated camera, which just gives you four to eight images. So I also show how this works. But right now the setup I have is you have the simulated camera, which gives you four images of an object. So four different images of an object. And the NERF model identifies these are the camera poses from which the image was taken, and then generates novel views from those images. So novel views would be what if the camera pose was not one of these four positions we put in? What would the camera image look like? So that's what the Wasm workload will do for us. It's just running NERF under the hand. And so this is what we want to be able to do. And I'll quickly run through the demo. And we'll do this a bit faster, which is why I've also recorded this. But what I'm trying to do right now is just create a Wasm-Wazee node. So this one's equipped with RunWazee. And allows you to run WebAssembly workloads. So I'm just creating three containers to do exactly that. And those three containers are now created. And then I just see that I have three more nodes. Oh, sorry, I meant nodes. So you could just see that you had three more nodes which are all equipped for running Wasm workloads. And once you do this, let's come to, so now that we have it all set up, what we'll do right now is just try to install Acree. And that should have the Discovery handler up and running. And also have the Acree agent, Acree controller. So we'll be equipped to take on and discover any edge devices. In our case, the edge devices, just a standard simulator. But once we do this, I'll also get to showing the pods. So once we do this, we should be able to see agent and controller pods. So that's because I've already deployed the Helm shot. And once you try to see the pods, actually, let's just show the controller pods first. And so we see that the controller has been deployed. So if you recall the diagram, this was the Acree controller. And that has been deployed. And we'll also have the Acree agent be deployed. So with this, we can now define how we want the Discovery handler to identify new edge devices. So we can take a look to that. And of course, there's Wasm to OCI, which I just started. So this is more related to the Wasm workloads. So we'll not talk more about this, at least in this talk. But Wasm to OCI is a really cool tool that allows you to convert Wasm modules to OCI. And what we have is the Discovery handler here. And so this is adapted from just the Acree standard, which is you tell it the protocol on which you want to discover new devices. And I also had a Kubernetes deployment, which is that whenever you have an edge device discovered and it has the capability to take on more pods, you just deploy the Wasm workload to it. So we just saw the Discovery handler right now. And Wasm pods will be deployed once the Discovery handler understands that. So what this looks like is actually running the NERF itself. So this is now running the NERF. And we actually get to 40 FPS with this. Well, this is running mobile NERF. And if deployed just using vanilla JavaScript, at least on this machine, we only get to 15 FPS. And Wasm actually allows us to get to 40 FPS and get us to more than pretty much faster than what vanilla JavaScript would have been able to do. And this is also another example. So this example is actually taken from eight images. I give it eight poses. And then the NERF reconstructs it. So if he constructs the image from those eight poses, the chair one actually was just on four different camera poses. And this one is on eight, which is why it also took a lot more time to render some parts of it. And yeah, so as you saw that, we primarily showcased through this demonstration of how you can leverage the Wasm workloads with the help of Acree. But there are some best practices that you can leverage. So Azure comes with this edge essentials that allows you to very easily bring community support for being able to manage multiple IoT-enabled devices on, let's say, with the help of Acree specifically on, let's say, a Windows workload, a Windows machine. So you can very easily set up all of your edge devices. And those can be automatically discovered. So that actually comes with some predefined configurations for deployment and for the resource. That is required for discovering and then setting up these different devices on your community's workstation. So all of those can be very easily done with the help of Azure Edge Essentials. So another very important thing to keep in mind when you're dealing with WebAssembly and with Acree is the device strategy. Because the most important aspect is that when you're dealing with different types of devices, how you discover them and how they will be defined as different node pools within your community's cluster needs to be very clearly defined in order to run well with your Wasm workloads. So those are some of the best practices when it comes to, when you're working with Acree. And of course, if you have any questions, we'll be more than happy to take those up during the Q&A. But with that, we'll conclude our talk. Thank you so much. And we'll be open to questions now. Also, you can, so we kind of rushed through the demo of actually running the node and using Acree to discover it or to be able to strike a balance between covering content and still showing the demo. But you can most certainly try it out for yourself. I'll also make all the optimization passes which I was talking about briefly open source. So yeah, you can most certainly try those things out for yourself using Acree. Yes, so at the end when I was showing you native execution, so a lot of the nerf is not, it's not possible or at least not feasible to implement in C directly. So yeah, yeah, so yeah, sorry. So when I was trying to, when I was saying I compare it, so it was being compared with one large script. So all the computations being done in one large script. Yes, yes, so at least for this demo, all of it was CPU. Yeah, so the question was, it should be more useful for AGI, but not so much for other real-time stuff. And well, yes, wasm will always be slower than directly going to the byte code. And that's for sure, but there's also this balance routine, portability and security and all the other benefits of wasm, so yes, it's more certainly slower and then you'll have to strike the trade-off. Thank you, we're over time now. Thank you. That's all.