 All right. So before everyone comes in, I'm just going to give you a small introduction to what jQuery mobile is. So I might as well actually just show you the demo itself. I don't have the demo here. Well, I'm sorry. Actually, there's no internet connection, I think, is there? So what jQuery mobile essentially allows you to do is you can quickly build applications for mobile devices. Now, there are a lot of these frameworks promising these claims. And you might wonder, why not just start from scratch? Why not just go ahead and do it like how Facebook and LinkedIn and all these days do it, you know? We have the cool kids who have HTML5 mobile applications. The reason is that essentially this helps you get all this stuff done much faster. It keeps in mind the human interface guidelines of all these mobile device manufacturers. It takes all the quirks between different mobile devices into account. And it does a couple of other nearly neat things, like, for example, degradation, proper degradation, and stuff like that. So I guess I'll just get started. So my name is Anil Sanjeev. I'm currently working in a Bangalore startup, and I'm building a dashboard framework for web and mobile devices. So if you're, I mean, obviously, we're getting people in. I graduated from two IIT Kharagpur, and I've interned at Google and Microsoft Research. And this is essentially the application that we're going to be building. It's a simple phone book where all of the phone numbers and names have been stored inside. It's been stored inside some medium. So right now we're just going to be using a JavaScript object to store all the data. But later on you can store it somewhere else. You can open up one of the records and you can see a contact over here. You can see the phone numbers in a nice list manner. And you can even edit it. And you can update it and save it and this would reflect. So if you want, I can actually use the app and show it to you. So I have over here, I can add a new name over here. Let's just say Rahul. You can add an additional phone number and you save it. And it adds it over here. You can open it up and you can go back here and you can edit it. As you can see, I'm not sure about how the colors and the fonts look over here, but I can clearly tell you that it does look and feel really good on a mobile device. In fact, if you have a mobile device right now and if you're interested, you can open up static.skyronic.com slash js2 and you find a link to the slides and you can also find a link to the application that we're building. So I'm first going to warn you about what jQuery mobile is. You can build fantastic applications which are touch-friendly and you can do it with very little code. The amount of less code you need to write is actually surprisingly, it'll actually astound you. There are fantastic themes that come out of the box and the themes are built using CSS gradients. So I mean, so this means that you don't need images and you can also make some modifications which will reflect across the entire thing. And they're also building a theme roller like application for jQuery mobile. So you can actually just go and quickly use a form to reconfigure the entire thing. The applications degrade gracefully which means that even if you open it with a browser with less JavaScript support or if you open it with a lower JavaScript support, it was designed in such a way that as much as possible your user experience is as good as possible. And you can do it without any CSS or JS code. It's surprisingly easy, I'll actually show it to you. So I need to use very few images. There are a few caveats though. One of them, the first one is you need to write your app again from scratch. You cannot drop in jQuery mobile into your existing web-based application and magically get a touch-based framework. It just won't happen. You have to build everything from scratch and you need to do it keeping the jQuery mobile framework in mind. The second problem is that even though there are a lot of these list forms, buttons, and sliders, go back, check out jQuerymobile.com slash demo or something. And you can see that there are some fantastic forms which look and feel really well and there are different themes, different buttons with icons, they're all there. But leveraging these existing CSS classes, leveraging these functionalities is slightly difficult. Of course, there are some ridiculously ugly portions as well. I mean, as one of the things I'm gonna try to tell you is I'm gonna give you four warning about how bad it can actually be. One of the things I do, it will actually mangle the entire DOM. The things that you write, you will give it one form of HTML and it will pick it up and it will completely mangle it. The reason, there are actually very good reasons why it needs to do this in order to give the kind of functionality but what this means is a lot of code that you expect to work will not work. You take a div and then you try to find its parent. It might be one, another list item might be a parent in your regular code but when you actually execute it, something else might be the parent and you won't even know what happens. So usually debugging these kind of programs is slightly more complicated. Another problem is dynamically creating the UI is complex and dynamically modifying the UI is even more complex than that. So here's the first thing I'm gonna show you. It's a relatively simple, it's just a relatively simple piece without any CSS or JavaScript. I have a div over here, never mind what the data role is but so when you have a data role inside a DOM attribute, it is essentially a system that, it's essentially an attribute which tells the query mobile how to treat your thing and how to decorate it and you specify here's a data role which says page, here's a data role which says header, here's a data role which says content and here I have a link over here to hash page two and over here I have an ID called page two with the header content and something over here as well and when I load it up inside a browser, so over here it just says I am page one, this is page two, can everyone see this? So when I click on this, it gives me a nice neat little transition. So over here and if I press the back button, I actually can see that the transition happens again. The more interesting portion is that the moment I click on this, page two, can you see this fragment over here? It's set in a way such that if I copy this, paste it and open a new one and say page two, it opens page two by default. This means that the moment the page loads, it actually looks at the fragment over here or what is known as inside jQuery mobile, the hash and then it makes its decision upon that and it displays it. So there's another even neater thing that happens over here where I'm gonna show you two pages. There's one neat one.html over here and there is neat two.html. Neat one.html links to neat two.html, neat two.html links to neat one.html. Let me just open it up and I will open up this. So it just says I am page one, this is page two. I click on it, it works fine. It's exactly, you know it works exactly as you're expecting to work. Even if I right click and say, even if you press and tap and hold on it and you say open a new tab, it opens up everything works the same. But what very interesting happens is let me open up the inspector. Okay, I don't think certain portions you can see over here, hold on one second. Let me just, yeah, can everyone see the, all right. So what I'm gonna do is I'm gonna load page one. So over here, you see that this works fine. But when I click on the page one link, it actually does not load anything else at all. What actually happens is that it opens up the link in an XML HTTP request. It picks up the DOM, it looks at the first div data role equal to page, picks that up and then adds it and does the transition. And this works seamlessly. And if you actually look at it, the URL stays correct. It actually leverages what is known in the HTML5 world as push state, where you can actually change the URL without actually changing the page. So it's pretty neat stuff, but we'll be doing some stuff similar to it when, so the data role attribute is essentially telling jQuery mobile what functionality to add. So you show this during the time of page load and it goes and it instruments it with certain kind of functionality. It can be a button, it can be a footer. There are plenty of them and these are very well documented on the website. And similarly, there are a lot of these other data hash something else, like for example, you've got icons. So I can have a button and I can specify the icon of that. I can specify the position of the footer and these are all done using the data attributes as well. There are a couple of key concepts to remember. First thing is that the data thing has to be available on page load. I will tell you that this is the default behavior, but it can also be circumvented. You can do it and you can build it in a way such that it's done after the page load and it will modify the DOM so your old code will not expect it. So I'll show you. For example, here's a button. Here's a button with just a href equal to button, data role is button, icon is delete and this is what it looks like. But after jQuery mobile goes and what is known as decorates or instruments or adds functionality to this device, it comes in and it becomes so much larger. And the main reason is that it goes around, as I said, you have an A and you've got a lot of these spans over here. So even if you say A dot text, if you say, so for example, if I had A and I had an ID of some button, my button and I say dollar hash my button dot text equal to something else, you expect that the delete will get changed. But what actually happens is that all of these inner items over here will go and get modified. So this is what I mean by saying that you cannot expect your old code to blindly work. Another, for example, is a checkbox. A checkbox, which is so reasonably simple. You just have a field set, you specify a data role as a field set and input and a label and it becomes this big. I mean literally the code explodes and I can show it to you in the inspector but I mean that will be really small but you can make out that the amount of code that it inserts and these are all with good reason by leveraging CSS classes, they're making sure that after one download of jQuery mobile CSS, you're more able to load better every time. So here's a core page. You have a data role as a page, a header, a content and a footer. You can have any number of pages inside your application and you can probably sit between pages but only one page can be displayed at a time. So a page is pretty much the atomic level of display as far as jQuery mobile is concerned. So here's what we're gonna start doing. We're gonna build a simple phone book application. So in your index.html, there's nothing special. You need to specify this meta name of a viewport that is available and it's done in every example that's there inside jQuery mobile. You need to specify, you need to just give it a CSS, the jQuery mobile JavaScript and the jQuery minified JavaScript as well and any custom JavaScript you wanna execute. So we're gonna do something known as custom routes. So while regular routes of jQuery which is loading the page, it works fine. We're actually gonna be trying to do a lot of things very dynamically. Of course, it's perfectly possible to have a PHP script, pick up phone books from a database and render it in such a way that you don't even need to do anything. But what we're gonna be doing is actually gonna be looking for fragments and we're actually going to intercept when jQuery comes in and we're gonna tell it which page to load. So this way you'll actually have the app being dynamic and yet it'll be pretty bookmarkable. But we also need to override the default behavior but it'll be slightly complicated so we'll get started doing it. So here's the conditions that we have. When the URL is hash contact two, we show the contact page of entry number two. When URL is hash edit of two, entry number two can edit page. And then when URL is hash add contact, you show the new contact page otherwise the home page, simple enough. So the first thing we do is we bind to an event called before page change. Now the before page change event is fired before the page gets loaded. So whether it's the first time or any kind of page change that happens, this event is loaded. What we do is we check that the type of the data.2 page is a string. If it is a string that means it's a URL and we have to intercept it. If it's not a string, it's probably some kind of an internal state transition happening inside the application. If it's not a string, we just say return and the default behavior takes place. We pick up the hash part which is dollar.mobile and we pass the URL. We pick up the hash and we split it by hyphen. Now we assume an index of minus one and we take the index. So ultimately there's a relatively straightforward code. The code is available. But ultimately the important thing is if the first hash part is contact, we show the first contact, show the contact page and pass the index to it. If it's edit, we call a function called show edit page. If it is add contact, we call a function called show add page. This is all inside and then at the end, we say ev.preventDefault. This is very important because if we don't call this, then it would do all of our code and then it would go back and go to the previous behavior which is going to be opening up the homepage or whatever it is. So the custom routes, you've got an app object to be here. You show the contact page, edit page and add page. These are just three empty functions that we'll be adding some stuff. Now we also add a phone book over here. The phone book is nothing but a small key value store, a name and an array of phone numbers relatively straightforward. So I'll just move ahead. We are going to build the homepage right now. So to build the homepage, this is HTML that we're going to have. And I want you to focus on a few key items over here. So the first thing over here, we have the header with a button called add contact over here. The data rollers button and we have an icon over here. This is what it's going to do. We have a small header one called phone book which comes in and comes in over here. And over here, we have this item called data roll list view. So if you take a UL or that an unordered list and then you add some list items and you give it a data roll list view, so it gives you a nice touch friendly list if it's an icon of whether it's a bunch of icons. So what we do is we actually do something called, we actually hook onto a page, they are like dollar home page and we say page init. So we hook onto the page init event which is fired before the page is initialized. So what we actually are going to do is we're going to tell jQuery mobile, okay, when the page is being decorated, when it actually goes in, looks at the DOM, scans the DOM and says, okay, fine, here are all the data rolls. I'm going to go instrument them in this kind of format. Before this happens, you probably want to do all of these things. So that is what we're going to do. And we're going to call this function called refresh phone book inside the app object. The refresh phone book first it does is that it initializes the page if it not already initialized. There are a couple of cases that this might be possible, but by dollar home page dot page, it is, that's the way it works. If you work with jQuery UI, you'll find something like this very familiar. You'll find dollar hash something dot button. And that's very straight forward because it actually uses the jQuery UI widget system underneath all of the code. And I have this thing called contact list over here. In fact, this code I've sort of given you separately. Contact list, it goes and it empties all the items inside. And it runs through the phone book and it opens nothing but list items. It opens, it runs through all of the parts of the phone book and it opens the list item along with the name. And it calls this function. This is very important. So now if you don't call this, all it does is that it shows you a regular HTML list which is nothing but three links over there. And it looks really out of place. The only way you can tell jQuery mobile, jQuery mobile already thinks that, okay, fine. I went to this list view DOM, I decorated, I didn't find anything over there. I went out. But you need to actually tell it, okay, go back over there and refresh it. The way you force it is, again, this is one thing which I found, which wasn't very well documented, but you say list view and you pass this string refresh. And once you do that, it actually goes and refreshes the entire list view. So this is how the DOM looks before refresh runs. And if you want, you can see how the DOM looks after the refresh runs. So if you see over here, I don't know, but ultimately this is the UL that you have over here. And you've got li div div a. So ultimately it goes and it modifies and adds a lot of classes over here. And these are the things that make it look the way it should look. Now, next thing we're gonna do is we're gonna build a contact page. For the contact page, if you remember, now we're just gonna show you the small contact page over here. We're gonna have a small thing called hash home page. And we're gonna basically create a link, a button that goes back to the home page. Now, the funny thing is that if you add this button and the default transition is it slides. It slides as of going to the next page. Now, obviously this looks very unintuitive because if you press the back button, it actually should go in the opposite direction. So you say data transition is slide and the direction of the animation is gonna be reversed. So again, you're specifying all of this inside the DOM itself instead of having to go and using some kind of a jQuery dictionary to configure all of this stuff. And you also have an edit button which we will be adding some functionality to later on. And we have some content which is a phone, again, with an empty list view inside it. Now, first thing we're gonna do is we're going to initialize the contact page. This is because since we're calling this function right after trapping this, like, ultimately in the page loads, it calls and it says, okay, here is the URL fragment. And we took the URL fragment, we saw, okay, the contact page is the one that we need to call. So before we actually modify the contact page, we need to make sure that jQuery mobile has initialized the contact page. So we do that by saying dollarcontactpage.page. If you do this 10 times, it does not matter because the first time you do it, it does everything. And the next time you do it, it does not make any difference. So first thing you do, you pick up the item from the index of the phone book and you take the name label, set the text, you take the phone list, empty it and append nothing but list items over here. So this is essentially a list which is a static list and you run the phone list, dollarphonelist.listview and you say refresh again. And as for the edit button, you just set the href, the URL as hashedit-something, which will be handled by the edit page. So that's it. And if you see it, and if I go over here and if I look at the edit, I don't know if you see it over here, but it says hashedit-zero. So that is essentially what is gonna happen. So yeah, the problem with that is it allows you to, like ultimately nobody is stopping you from actually going to the dorm and making the modifications. But to actually do that, you need to be able to maintain the consistency in all the classes and stuff like that. So for that, that it does not, it's not that it doesn't allow you the freedom to do it. You have the freedom to do whatever you want. But because you're playing by its rules, because the way it makes its modifications is like this. So in order for it to support buttons, icons and buttons, field sets and all of these things, these are certain decisions that the developers of jQuery mobile have made such that these kind of things are possible. So for the colors, see, the main thing is I'll actually be going and explaining how we're gonna dynamically update the thing. So the main thing over here is when you're dynamically changing the thing, you can modify the CSS. Ultimately, it's just a webpage. So you can pretty much do anything you want. But the moment you're actually going and you're breaking your head over their code, then you find that it's difficult. So if you stick to this, like for example, if you have a regular website, you just have a regular website, you just want, you know, it's just not about me and all of these some five, six different links. And you just want to show a mobile version of the same site. Then this is fantastic. Just put a bunch of link items over here, set the data role at this, no CSS, no Java script, and suddenly you have a lovely touch friendly website. So that is where this really shines. But on the other hand, like a small site deviation, if you're actually familiar with Centra Touch. So Centra Touch is a framework developed by the EXTJS guys, the Centra guys. So they actually go on a completely different approach. What they say is that everything has to be done programmatically. You go and then you specify a list view item and then you do all of this similar to how you do it in GTK or something like that. And that works for some people. This works for some people. So this one is the one that we've chosen for our development right now. And so this is why I'm telling you. So, sorry? So JQ Touch is also another, see there are three main things, jQuery, mobile, JQ Touch, and this. So JQ Touch, as far as I know, was started by Centra Labs. I mean, I think it's still part of Centra Labs. So as far as I've heard, it's very heavy on images. It's surprisingly good on iPhones because it uses the WebKit transitions and things like that. But on Android, it doesn't work as effectively. And it's not very well maintained and not very actively maintained and not that much. The amount of code generated is primarily like this because if you look at the CSS, actually I'm trying to contribute patches to jQuery mobile. I've actually contributed four or five pull requests so far. And I've had to break my head over their classes. But the more I actually saw it, I saw that actually it makes sense. You see, there are actually pretty smart people who've been going around, who've been designing this. I mean, John Rezegh and a lot of these other people, I mean none of the names come to mind right now, but a lot of really smart people have actually thought about this and said, okay, probably this is the best way of going forward. So you're not limited by choice, but yes, this definitely has this drawback. As I said, that's the first thing I mentioned if you remember, it does modify your DOM. So your old code won't work. But as long as you keep that in mind, if you keep that in mind while you're building your applications, then you're gonna have a much easier time. So yeah, it's actually like if I can get an internet connection, I'll actually show a small demo of the real full stack of jQuery mobile. So probably you can get more interested. So this is actually a very important portion that I need to tell you about. So when you say, when to change the page from one page to another, you can change the page to anything. You can change the page to a particular URL. You can change the page to three, four other different things, you know, if it can be an external URL, internal URL, all of that stuff. But over here, if you change the page to hash contact page, what will happen is that the URL fragment on the top, the URL fragment will say hash contact page because it's trying to use intelligently, use that kind of fragment setting push state over here. So to override that, we actually say options.data URL equal to contact plus index. And by doing this, you effectively prevent this kind of thing from happening. So I'll just quickly run you through the edit page before. So the edit page is all again very straightforward. You have a button over here, which just says data URL back. We'll just push you to the previous page and it's a cancel button. There's an edit and there's a save button. And some part of the content which I've clipped out is over here. You've got a label which is known as name, sorry, which is an input which is known as name, and a phone over here. So the phone number, I wanted to pay a little attention to the list over here. I have one list ID over here, which is called add phone button container. And I'm gonna be listening to events on add phone button container and not on the button itself. And I'll actually be going into details about why I'm doing that. But ultimately what you need to know is that there's a list ID with this and there is a button called add phone number. So one more thing, one small side note is that if you wanna add a new contact, I'm gonna be reusing the edit page, but instead I'll be passing minus one as the index. So I for show add page, all I'm just gonna do is I'm gonna say show edit page and pass minus one as the thing. So first thing again, decorate the basic elements by saying hash edit page dot page and assume that the request is for adding a new item. That means I create a blank item and if index is not minus one, I just pick it up from the phone book. So this way it works seamlessly, like regardless of whether you're actually trying to edit it or create a new one. And it sets the name input text box. So all you're doing is say hash name entry and you're setting the value as this. This is all very straightforward. So now comes probably one of the most important regions over here. How do you dynamically update the UI? So the page is already shown, like if I show you over here, now if I go to the add and over here if I see, I can add any number of phone numbers. So this is what I found is one of the trickiest part of jQuery mobile when I was starting to learn it is how do you modify the UI? If I just go and if I just append the list item over there, it does not work. And if I have a relatively more complex thing like an input and things like that, that absolutely didn't work. So what I do over here is I have a function called create phone field, which I'll define later and it accepts a phone number, which is a value. Yeah. Sorry. So how do I know, like how do, so obviously when I'm clicking, when I'm dynamically adding something, so that doesn't happen, that's an event app that gets triggered only after the user is touched, right? So yeah, we'll get back to this. So there are other, see the thing is that there are other, there are more than ways of doing it. So what I'm showing you is just one of the ways. So what I do first is that I remove all of the, I go pick up phone, edit list and I run a small jQuery selector and I say li as long as it's not last removed because the thing is that the page state does not change. So for example, if I add three items over here, I click save and I edit another phone number. These div elements are still in place. So what I need to do is I need to clean up, to clean up, I need to remove it. So this is one more gotcha that you need to remember as far as working with this. So like if you load a new page, if you load a new link or something, you assume that the entire DOM has been refreshed to its original pristine state, but that's not the case over here. So again, we go to each of the phone numbers existing already and you say create phone field with this particular thing and you go to the add phone button container, you unbind it because it would have been bound previously. Again, it was, it's not in a pristine state. It's in the same state it was last time. So if you have a click handler, have another click handler and the next time you open the page, you're gonna end up having with two events being fired. Instead you save unbind and you click and you know, whatever bind it to, just create phone field. So as far as create phone field is concerned, you create an ID phone hyphen and with some temporary random variable over here and you again, you pick up a list item over here, a label and an input. It's relatively straightforward. So over here you say add phone button container dot before phone field and this is again straightforward, but most importantly over here, you need to again refresh the list view. You need to refresh the list view and you need to save phone field. Phone field is basically the, this is phone field over here. So when you create this, this is what is gonna be created by the previous pieces of code. It says label for phone three is phone number, input type is text, ID is phone three, value is this and you save phone field dot find input dot text input because jQuery mobile does not know that you've created a new DOM element. So what you need to do is you need to find the input DOM item over there, the jQuery selector and then you need to run text input on that which will actually go and apply all of the CSS classes such that it looks nice over there. If you don't do that, it will look like a regular WebKit text entry box on the water here. So if you actually see, so now there's one important thing which I'm going to show you is like again if, why did I actually hook on to add phone button container? But like before what I had done when I was starting out with jQuery mobile, what I did is I actually listened for an event on this A and I had this thing called add phone button and what I did was I thought I had to add an item before this ally over here. So what did I do? I said when this event is fired, dollar this which would refer to my current item dot parent dot before and that made perfect sense because my HTML that I outputted is like that but if you actually see the code, if you actually see it inside the inspector, this is my A. So dollar parent actually is a div. So what I need to say is dollar dot parent dot parent dot parent dot before, which becomes much more unintuitive. That is why I say it's in fact it's best if you can just refer to absolute IDs everywhere as much as possible instead of trying to do parent or trying to use relative DOM items over there. So back to the yeah. Oh clone a DOM element. So it should be possible, but I'm also like I thought of using clone initially but that would have been a very straightforward solution. Why I'm trying to do it this way is that so that people understand how to use, how to redecorate the item but it should be possible perfectly possible to clone. In fact sometimes it's actually an easier thing to do more than this. But then again the problem with clone is that I don't know if the bear of clone but does it even clone any event listeners that have been put inside the DOM because then it might not probably not be a, okay again it should be possible. So for the save button what we do is we unbind again because it would have been bound in the previous time you had opened the edit page and on the click use pass the index the self because of JavaScript self and this nonsense and you call this dot save item. You again use the options dot data URL, set edit and pass what other particular index over there and you change the page. So again it's extremely straightforward over here at least it seems straightforward for me if you have some problem probably I should come back and explain it to you. And saving the phone book is again very straightforward. You take the index you say e.data.index you pick up the item. So in the item again there's all regular jQuery selectors you say name entry the attribute and for phone I just need an array of all of the values inside this. So what I do is I say phone edit list dot find input and I run a map over this and I just return the attribute value for each of the items that selected that master selector. It seems a little complicated but it's the simplest way of finding all of the values of the phone book inside the particular thing and returning it. So and again you save it you push it to the phone book if index is minus one which means it's a new addition to the thing or you save it to the phone book by using self dot phone book. You again call the refresh phone book by using refresh phone book what it'll do if you remember is that it actually goes it raises all of the old it raises all of the old list items inside the original DOM and then it modifies the page and you change the page back to homepage and then you're done. So anyway if you have any questions about this you can email me my email is chironic at gmail.com and that's pretty much it. I mean I probably got done soon enough. So no questions? So the event was brought to your time at the second start and what did you like about the event? Any aspect? No, what did you like? I liked it. The website? Sorry? No, the meeting was brought to you. Okay, the meeting is for the talks. And what was the program set? What was the program set? What was the monitor talk? What was the monitor talk? The speakers were on. Like, should you do your meeting very late, right? But I love the meeting. Okay, come here like that sir. Save the opportunity. The tables and all of these things. Yeah, but when you're working back in terms of space it's not so fast. I think it's like, I don't know what you mean by that. Ah, that is not important. They don't start meeting at this time. Yeah sir, I think it should be. I think it should be. I think it should be. Here's the numbers. So I think there should be audio tables. Some of the speakers are texting you. Same for the projector. Some fixes. Outside. The lighting. There was too much light. No? Is this in the back? There is some one part of the room that I rather go to. Some light and you want to see this light? Should you do a little talk, would you do something like partner and you take people's feedback on my development? So that's the question sir, should you do talk of the same person or something? Okay, I want the next question. What it is about the technical aspects of the talks, whether it is to advance or whether it is too much of a beginner's talk, what do you think? But where is it fine enough for technical talk to keep us happy and not make it talk to keep you happy? So, do you know that both here, these talks are expected to advance? Yeah, I think I've got three years. So, I mean, in the case of the people walking around, do you want to go there? I don't know if it's enough. Okay, I agree with that. So, I want to ask the listeners to come here, you know. This is something like one year we can't be here. One year we can't be here. We actually went to the Luzberg party, so that was all about the technical aspects of the talks. Ah, I think we can right now like do it like all year. But, I think today is today morning. So, I think for people it's normal. I think that's the only one that's lying there. We cannot show what solutions are coming. So, the solutions are going to take a time. And also, one of the things I saw, some of the speakers didn't seem to know the exact profile of the audience around them. That can be communicated with clients or speakers. They have a sense of the level of people they're talking to. And based on that, they can customize that. Yeah. All less. That's an expression. What is that? I'm sorry. Okay, I just want to make a question now. What do you need to find out? Please come. What is the profile of the audience and the speakers? The problem is I have something to say about the soup thing. So, you kind of still have to make these assumptions. You need to start these. I guess the assumptions that I need to start from the very basics. Otherwise, the context has lost. And will there be enough profile data about the audience that let me plan something? So, where do I have a solution? I must admit. I stated the problem in my question. So, is it possible to find a solution for the speakers around them? Yes. I think a solution. So, that is a problem that's like that which addresses the basic problem. This is the introduction. You can put it up. No, you can put it up by yourself. No, you can put it up by yourself. That's a bad idea. This one is a good idea. But we have seen that Australia is our place. We have noticed which top they are greater than. And we have seen that because of the condition that they came over here. I have a suggestion about the video process. There are a lot of questions that we ask a little, which is fine. I guess, but then that's what I'm going to make the video look like. The questions are unheard. Obviously, speakers are anticipating the video process. So, they are completing the questions. So, I think one of the most interesting things needs to change. There is this answer. Give me the mic to the audience. I'll record the questions. This is the rule. I'm going to give you an idea. Actually, I'm not correct. But they won't be able to record it. They won't be able to record it. So, I'm going to ask you a question, please. I don't need your help. I think I was saying. That's about it. I'm going to ask you a question. The video though is quite absurd about that. See, I'm going to give you a question. Please. We have J.Q. on us. Actually, I'm going to ask you a question. It's like my suggestion. I was not at it. There are quite a few speakers in the room. What are the speakers in the room? It's just out of the blue one. The other thing I want to look quite tired. What topics would you like to see covered next time? Okay. Next. Yes, please. I was thinking about, you know, any contest. Any contest. Is there any other contest? The only thing that I saw here is that more than a very good introduction to the dynamics of that, that we can now take away from it another entry for my book, which I'm going to put in half an hour, three hours, and then we'll take it back to the side. See. That's the best idea. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. See. The only thing I want to say is in addition, let's say you have two more spaces. Thank you, but it's open to do that. That would be, yeah. But what happened today, yeah. But what happened today was like after three or four things to attend, they would rather end up talking amongst themselves. Then keep on attending more and more. Yeah, that's good. And I think one of the things, you know, just connecting a panel, like somebody takes a little bit of power, but you know, I think this is an exploration of things. If that's the reason, you know, we're going to be able to get back to the panel in the conference. And then don't see the barcats. So it's going to be, okay, we're going to start off with the magnet that we had a week ago. Okay, so we had a magnet a week ago. So that was meant to be this kind of thing. It's going to be straightforward. All you do is sit here and talk to the magnet. Okay. So either we love it or we don't love it. It's that thing now. So how do you do it? You have to attend the magnet because it's attached to the next year. That's what we need. So maybe the next one is an offer. That's what I'm talking about. So that's what happened last week. I couldn't attend because it was not close enough to the event itself. For people who are coming from outside of Chitano. That's right. If you can put up tents here and how does that work? If you want this biggest night, the next day you're supposed to sleep here. That's what you're talking about. Next one. So thank you to us. We can also participate remotely. We can elaborate on INS. A lot of us are doing that. We're all INS. We're discussing things now. I'll share a couple of things. We're not so much like 52 hours. Is that possible? We have PC movement to look up on. We have mobile. We have mobile. Mobile. We have mobile. We have mobile. We have mobile. We have mobile. We have mobile. We have mobile. We have mobile. We're going to repeat that question. We'll answer a couple of things. What's the topics we'd like to see? In terms of maybe JavaScript and maybe other sessions? I think we should have a... ...mode. ...mode. ...mode. ...mode. Jareon languages. Jareon languages. ...mode. So data mining is the code? Data mining and machine learning. Data mining is the code? We prepared. We prepared. We prepared. Somebody else is doing their part. I am. I'm going to have a look. Okay. Okay. Okay. I'm going to have a look. I'm going to have a look. Okay. Okay. We have two events coming up. One is the J.S.M.O. that is happening in Pune in December. We are repeating J.S.M.O. to Pune and H&M. It is a Pune-S.M.O. that is the verdict. We are hoping that by the third it will be more or less used up for an accident. We are repeating J.S.M.O. Some of them, you see, made a pretty cool J.S.M.O. It is going to be the same for the subject of the speakers. Sponsors, some of them are repeating, some of them are not. Pune is most likely in December 10. We still tried to find this review. And for those of you who came all the way from Pune about it, it is going to be closer and we are going to do some more J.S.M.O. And the same for Chennai as well. And there is a drawing that is happening in the member. So drawing 1 is a 2-day event. This is a launched collaboration. We are working with drawing 1 in Europe. It is the world's largest series of drawing events. So we are going to hopefully get a whole bunch of guys coming into Europe giving us a lot more recommendations on that. I also just want to mention this J.S.M.O. Javascript user group that is going to be set up. So the thing is, finally Javascript is picking up everywhere. So we are going to go to KDV, my window way. It has become important. We don't have enough people who understand it. I mean there are a few of us. What we are trying to set up is a local user group. Like we are going to try to use the group. There was Javascript user group. We are trying to run the first. We will be involving a couple of us. Just discussing what is the latest stuff. If you don't understand the basics, come join us. We will explain those stuff to you. There was a talk where somebody mentioned promises and I think a lot of people didn't understand what those things were. So stuff like that becomes quite basic in a couple of years. That will be part of the whole Javascript. There is a thing called ES5. There is a thing called ES6. ES6. There is a whole lot to discuss. So we are setting up a user group to discuss all of that. We are interested in sending out a mail. We send out a mail. Please respond back on that. We will probably put up a cap on how many people we can afford to have a mail. So that might be the case. Because I think we can take over 30 people in the space at the end of the talk. And we can have an axe party. And we will probably have a talk. All of us will be connected with one someone. So please respond if you are interested. If you want to topic, I would like to suggest something different with hardware. Integrated hardware. If you are doing a stuff, any of the fun things to do with some other stuff, you can just sit on it and do something with it. Any of the other events that we will be talking about, because they are happening at the end of the talk, it is not a good talk as much as it is supposed to be. You have to talk. But I do not think that the standard of the implementation of the hardware will be always so abstract and out of the phase. Most of us don't even know how to connect with a serial model. It is true. That is a great idea. Passing the generation what is a serial model. Yeah. Yeah. Yeah. That is an example of that. This is port open. So I think that is a great idea. A lot of people are not very familiar with it. Yeah. That is a good idea. Yeah. So, the proper is to do some good training. So, I am planning to do a public thing. Or a big kids training. Maybe in October or early November. I decided to do it based on. So, it is going to be a bit of a basis for the most of the stuff. More on the advanced side. So, if you, any of you are interested, or you see it regularly at work, just tell me if you are interested in it. I am also going to do it. So, I think that event is going to happen soon.