 It's great to be here today and get this opportunity to share our experiences as we are trying to grapple with a specific issue which we've encountered as we are developing our application. But before I kind of dive into the subject, maybe I'll take a quick minute to sort of tell you about what we do at Neurobrics Solutions at a very, very high level. We're in a space that the audience here is very intimately acquainted with and guessing pretty much everyone here has more than 16 plus years of association with our education system. So, you know, all of us have been through the regular education system and we are very familiar with how it works, you know. It works a little bit differently, different parts of the country where you've been, but I guess that's a shared experience that all of us sort of have. Now, what we're basically trying to do is trying to work to develop solutions to a scenario that all of us would have faced at some point in the other. Can I have a show of hands for all the people who sometime in their association with education have heard this advice given to them, study harder. How many of you have had somebody or the other tell you, please study harder. You know, it could be your parents, it could be your friends, it could be your teachers, it could be anybody. How many? Come on, guys. Pretty much everybody, okay? Everybody's been told study harder at some point in the other, you know. And how many of you liked it when you were told that you need to study harder? Anybody here who kind of felt good about being told that you need to study harder? Guys, nobody. Okay. So that brings me to the sort of genesis of what we are trying to solve for, actually. You know, that's a high level articulation of what problem we are trying to solve for. In a nutshell, what we are trying to do is trying to develop solutions which enable people to achieve better learning outcomes than they would by simply just by only studying harder, only by relying on studying more, what kind of learning outcomes you would be able to achieve. We are trying to help you achieve more than that without just relying on this one lever where, you know, okay, you're spending three hours with your books, spend four, five, six, whatever. There are other levers that you can possibly use to achieve better learning outcomes. So that's in a nutshell about, you know, we won't talk more about that. We will sort of dive into the objectives of today's discussion, okay? Now, when we started this journey in terms of, you know, trying to solve this sort of problem, started developing, you know, our solution. We had certain thoughts in mind. And there was a lot of IP related to learning and pedagogy that we were actually using. And interestingly enough, the more we thought about what is a good way to sort of disseminate or use this IP, the mobile platform had a number of characteristics which were very appealing to the scenario that we were sort of planning to use this IP and okay. So after kind of getting pros and cons, looking at different options, the solution that we decided to go with is sort of an Android-enabled tablet sort of an environment that we are developing our solution for. Once we kind of got a fix on that, and we were trying to flesh out our business model and flesh out, you know, how our app would work, what people would look for, one thing which kept coming up again and again and again and again and a number of the, you know, discussions that we used to have internally was what kind of user experience does our, you know, customer actually expect. And what can we deliver in different sorts of scenarios. And very soon we found that this decision on what needs to be online versus what needs to be offline was pretty much a very important part of, you know, what we were trying to actually do, and it kept coming up again and again and again. So the idea behind today's talk really is to kind of share some of the thinking that we've done sort of internally to sort out some of these issues for ourselves to kind of chart out our path as we are going forward. This is descriptive, this is suggestive, it represents, you know, what we thought internally, what sort of seems to be working for us, but I'm sure a number of you might have different and more different perspectives on this. We sort of go forward. Anyone thinks that this is a non-issue. This is like era of 3G activities, like all over the place, anybody thinks this is a non-issue. This audience? Okay, good. I have a question for you. Does the connectivity work the way it's advertised in the ads, you know, all over the place, mountain tops, doesn't it? Okay. Good that you confirmed our hypothesis, because our hypothesis is that unless you look like this, okay, in which case your connectivity will pretty much work seamlessly in basements and elevators, tree tops, whenever you find yourself, most of us, ordinary human beings, have to deal with this. Time and time again, whatever we are doing, it's very irritating and, you know, interrupts our workflows, interrupts our conversations, and this is pretty much a fact of life. And this is something that sort of prompted us to think very hard about what we were doing. In fact, our high, Mr. Bachchan Jr. had to deal with these issues. He would look less like this picture on the left, more like this. Access is only just for the ads, you know. We face this issue all the time. In fact, I wasn't here yesterday with my colleague. He tells me one of the sessions got interrupted yesterday because there wasn't connectivity and they were trying to demo something. So, you know, even in the best of environments, these sorts of issues can crop up. Let's talk about cost, application and what you're developing and, you know, the kind of data that is involved and what needs to sit online, what needs to sit offline. It can have a pretty significant impact on the economics of use of whatever you're going to develop, you know. So, if you're in the education space and there's a whole lot of data involved and there's a lot of content that you want to share, it can have a significant impact on economics in terms of, you know, where that data is residing when it's accessible, et cetera. And thirdly, let's talk about the user expectations and what sort of user experience we sort of seek to give. Complicated sort of, you know, application. And when I say particularly complicated, I don't necessarily mean that in a technical sense, although that, what he will tell you is also true. But more from the sense of the kind of functionalities that we were seeking to provide people to use our solution. And what we found was that there were a number of different functionalities that were embedded in the kind of application that we're using. So, you just don't use it in one context. There are a number of different contexts that you might be using our application in and a number of different outcomes that you might be seeking to achieve when you're using our application. And when you're studying this entire portfolio of, you know, kind of benefits that we are trying to give to our customers, what we found was that what might work in one scenario for a user might not work in another, you know, scenario when he's trying to use our app. So, one benefit might actually work very well. But when he's trying to accomplish something else using our different functionality embedded within the same application, it might not work very well unless we think through issues related to online and offline connectivity. That was our realization. Let me actually demonstrate that with a simple sort of an example. Okay. The point I'm trying to make is that your expectations as a user as to what is fulfilling your needs are very much determined by the context of use. And where are you using the application? How are you using the application? This will actually pretty much decide how you feel about how the application is performing. A work type of scenario. Okay. Say it's a month end and you know, I don't know, those of you who work in large companies and who have a large sales team will see that the sales guys are always busily skying around at the end of the month trying to collect orders and, you know, trying to make sure they're meeting their monthly targets and, you know, stuff like that. You might have seen some of those guys. So say there's this guy who's kind of sitting on the 29th on 30th of a month who's kind of been killing himself over the last week trying to meet his, you know, monthly target for sales, etc. And he's come back home and he's still kind of working and he's working on his tablet and he's trying to figure out, you know, how much he needs to do more before he can kind of meet his target. And he gets a call from his boss asking him the status of a particular order. So you know what happened to that man's order? And he doesn't have it on his fingertips and he says, okay, I've got my tablet here. Let me just quickly look up what is the situation on the order and he tries to look it up. And this is what happens. But his boss is waiting on the other end of the line. Okay. Do you think he'd be happy with this sort of experience given this usage context? Anybody? Two conversationalists, you kind of boss in something else while, you know, just downloads, but chances are probably doesn't work for him. Okay. Let's take another scenario. Same guy, some bonus given, etc. Feeling good. Now he's relaxing. You know, he's kind of feeling great about what he's done. Walk in the park. So he goes to a park and he's kind of addicted to his tab. So he has his tab with him. And he decides to kind of engage in his favorite leisure time activity which unsurprisingly is looking at pictures of Katrina Kaif. Okay. He kind of uses his tablet to kind of draw down his favorite image. And this is how it sort of appears. To me to load the picture of Katrina Kaif was identical to the time that it took to load the Excel sort of spreadsheet. But the point I'm really trying to make is how satisfied would the user be? I mean, let's put aside one aspect which is that if the page had loaded faster in either scenario, it would always be better. So you know, faster is always better. But say for a given level of performance if this is the best that you can achieve, where do you think that the dissatisfaction of the user might have been more? And I won't even ask you to guess because frankly, different people might be more upset depending on which page loaded more, you know, some really hardcore Katrina Kaif might say that, you know, I find the second scenario much more kind of disturbing than the first. I can manage my boss, but you know, I need my pictures now. So I won't get into that. The point I'm just trying to make is depending on the scenario of use, your performance expectations change. That's the limited point I'm sort of trying to make through this example. Okay. With that let's just consider a sample situation which is talked about very often these days in the education sector. Just for clarification, this is not what we do. We've kind of developed this example just for the purpose of this discussion because it sort of demonstrates the point that we have, the same points that we seek to make. This is not the kind of application that we are working on, but it makes the point pretty well. Okay. Now, all of you would have heard of the fact that you know, 2000 odd rupee tablet and you know, the government is kind of giving these away supposed to be the next big thing and pretty much every student will have one of these and it will revolutionize the way people are learning. Okay. So say you have one tablet, not necessarily the government tablet, you have any sort of tablet and using the tablet, you are enrolled in a distance learning program. Okay. Whereby you can actually access content and kind of so what are the different functionalities that you would use and kind of make some generic sort of functionalities here. You can use that distance education app for studying content, different materials looking at you know, textbooks, multimedia content, whatever you know. So you use it for studying. Ask questions and get answers, you know. So when you're studying it's not necessary that you know, everything sort of makes sense to you, you need to figure out some questions. Why is this working? Why is this not working? And you have to clarify any doubts or any questions that arise in your mind. So you use it for that. You use it to take tests. Okay. Once you think that okay, I kind of master this content and depending on you know, the kind of place the program sets. For you to gauge how well you are progressing on that journal, you take tests. So you take tests and you know, you have your performance evaluated. And not only do you have your performance evaluated in a well functioning learning loop, you would have your performance evaluated and you would get feedback as to how well you've done or how well you've not done in terms of you know, what is it that you study. Okay. So someone might tell you that okay, you did it. You can kind of, you're ready to move on to the next topic. Someone might tell you know, hey, guess what seems like you spent all your time looking at pictures of Katrina. Yes, you need to go back and kind of read the real stuff on the data. So go back and revise the content that you're working on. You may be asked to do something a little more specific that okay, you seem to have understood something but guess what, you need to practice more problems, you know, solving some of the problems. You could get that sort of feedback or you could even direct the person to some new sort of content. Okay. So you could do a variety of things using this distance education sort of app. Okay. So if this is the app and I just kind of, like I said, I made this up for the purpose of the discussion. If this is the context for which we are designing the app, what are some of the key choices? I mean, of course like I said, the backdrop for this entire discussion is first. Okay, which of these do you really think that you would need to provide offline and online? You need to kind of think that through if they were taught that's a good idea for you. Once you kind of got that picture in your mind then you need to think of, okay, so what does that mean in terms of what needs to sit in the device, both in terms of data, in terms of business logic, etc. What do you need to work for and how do you handle this? And then finally you need to think about, you know, how do you actually implement this? Which is where a lot of the complexities actually start to come in and people talk to you a little more about some of those issues. But just let me set up the context for aspects that we found particularly useful when we were kind of making our decision about what should be offline and what should be online. When we were looking at the customer experience part of the equation, couple of things which kept coming up in terms of a really important to us is unsurprisingly responsibility. We just kind of, you know, talked a lot about that. How quickly does the user get what he's looking for and you know how quickly can he access what he's actually looking for. So that's really important. And the second parameter which kept coming up was interactivity, you know. So not necessarily need to be able to do it all on your own. You need to kind of interact with some sort of different people or you need some form of interaction to actually work. So these two are often from two competing sort of needs that we had when we were thinking about this entire online of client sort of issue. So what we did was that we just actually brought them on two different axes and come up with standard simple sort of makers. And all this represents the bottom left quadrant is low responsiveness, low interactivity and top right high responsiveness, high interactivity. And here's how we thought about some of these things. First low quadrant. Frankly not a lot comes up here firstly. I mean so it's like very few things will ever even pop up here because you know responsiveness is typically pretty important even if interactivity is not. So even if something does, when you're thinking about, you know, your application don't bother kind of using this matrix to sort of prioritize what you should be doing. Other considerations and there are many other technical considerations that we'll be talking about will be probably more relevant for this decision you know. If something is, you can work with low responsiveness and there isn't a hell of a lot of need for interactivity, not important. We spoke of study the content and you know take tests. Now when you're concentrating and you want, you know, to read something or kind of look at something, you don't want to have to kind of have to wait for it. You know it's like you know every time you had to turn a page or kind of wanted to watch a video or something you would have to wait. You know even those few seconds start appearing too long and they start interrupting with your workflow. So you might think of having this offline. I mean there are a bunch of other considerations but you might actually start thinking of you know having these offline. Which was you know performance evaluation and feedback just because the interactivity element of it you have to somehow because at the end of the day you know there needs to be somewhere at the other end we need to communicate with to actually start getting some meaningful feedback. You might also think that hey guess what, it can even simulate some interactivity on the device. So just to give you an example, say I'm testing him through multiple choice questions just by virtue of having the answers coded and you know present on the device. You can at least tell him whether he's got stuff right or wrong. You may not be able to give him you know more meaningful feedback like that but you can simulate some limited interactivity on the device itself. And lastly comes the really challenging bit of where you're really looking for high responsiveness and high sort of question that we kind of do it's the process of you know asking questions. So you need to let something, a question comes to you. You need to have an answer if you have someone you know who you put on task literally you know send that question across or speak to you would have that question answered immediately. But so that suggests the need for you know both high responsiveness and sort of high interactivity. And here we you know limited way you can try and simulate some of that interactivity. Any help function in any you know sort of software tries to simulate that interactivity of you know trying to have people have their question answered. Or you could actually think of something which is a bit of a hybrid solution where okay you can't have the best of both words but at least you can you know ask your question there and then you know guess what you have to wait a little bit and you know you can then have it answered at some point in time. So you can look at it in a variety of different ways and this is how we sort of thought of the gamut of functionalities that we were actually working for. Okay having thought of this really what comes next is the bunch of questions that we were talking about here. Which is what is the data you put on the device, how do we handle the data and frankly some of the issues involved in implementing online application. So you know I'll just hand it over to Pradeep who is going to kind of take you through some of our thinking and at least what our journey has been in terms of thinking through some of these things. I'm sure I will need my can the back here may? Yeah. Can I award this? Yes. Very good. I just want to take a technical profile of the team here or the people here. The reason particularly why I want to take a profile is because the going forward is not about regulating the forward in terms of data section logic. It is about what choices you make which determine what content has to be there. So just to take a quick full I just want to know in the developer how many are licensed for one and a half years. So how many developers with less than one years of experience and how many are there who are likely two to five years. Because I guess both in the application world they would have been involved in some kind of addition or architecture. So I do see around 20% of people raising hand for this idea. So what I expected is that those people who have been involved in certification as you go forward if they find to resonate their question with their own situation please feel free to add and if you think there is any question that you have then you can probably raise that right now instead of waiting for the session. But any part of time you feel that something resonate with you please raise the hand and talk. Now if you look at the previous slide but the first question was about the choosing of feature and just to bring that point here now while developing application we are never for that one approach with all the things. We always know that there is a bottom for the quality and even within one complete solution you might have different features which have got different requirement. Now the only thing is within a complete solution which features are going to choose. Now those addition to choose which features they are affected by many technical choices in terms of you know from the data to the device connected to many things. But at the end of the feature product in the feature for which to go online they have to make the technical choices and business choices to make it offline and all. Now the very first question that comes or as a very first question that came to me as part of developing the solution most of the time is what is the kind of data that I want to run on the user's device and their app? Can I give them all the data? Should I give them part of the data? What should be the quality of the data? Now the very first question that came to my mind almost all the time is the data is changing very frequently. For example if I have got an application running now and I know that I feel you know too many it is going to change or if it is kind of an application which is like a stop you know like to share what it is like to do the trading then it changes data changes very frequently certainly for those kind of applications you do not have to store the whole data on your device and try to play with it. So if the data changes very frequently then obviously we think that it is certainly not a candidate to be stored on your device. Similarly on the same line for how long do you want data to be stored on your device? The reason why I put it as separately is though I feel the data is not going to be changing as such but it might need on the device itself is for very small variation for just a minute or half or half an hour maybe or pushing like that and it is not going to be used very often also then what is the point in keeping that in mind? Why do I want to base the device pressing on that type? So if I want to be on the device I want it to be for the duration probably the user is supposed to be using it when they are offline. If they are online the reason I am saying is like for 15 minutes to half an hour I do not even see a user to change his location and then say ok now I am offline data should be there now I am offline data should be there. So if the user is offline he is going to be offline for sufficient duration and that data has to be there for the time when he is offline. And the next one that we are talking about is the size of data, the kind of data that we are interacting with, the kind of data that I need for my usage what is the size of data. So taking the case of an educational example that we took here if the data that I am having is kind of a media kind of video then what would I like? I would like to have it up online in which case I will have that experience or if it is online can I just play it and go about it. Particularly if I am reading some kind of a chapter I would like it to be any kind of media or PDF or whatever file I would like to be there on the device so that you know whenever I am offline even though it is a big content or even if it is an online and online but because of the sheer size of the data to give a better reform I would like it to be on the device. And Raj is about the business sensitivity of the data. Now this point is critical because at some point of time we realize that user needs the data but the enterprise or the people who are serving the application they feel the data in its raw form or the form that we give to the user that can somehow lead their business IP as part of it. Now I would like to take an example here or if I have to take the example in the case of the example application that we suggested. Now a different training institute can have their own ways of identifying what should be good for people in what way. Now if I have to put this chat on to the device I have to also put the logic part of it what is going to happen. Now if the smart guy is like a smart and looks like you and me you can compile the application and try to figure out what is going on. And if it is not that way probably I just get hold of somebody and say what is going to happen. It is very possible that you can give out the data. It is also possible that I can reconstruct what is going on. So if it is really a business incident data then probably we will not like to have on the user's way. So anyway because no answer is there. Now once you decide that data is yours more than the logic part for me the real consultation it affects the choice of technology on the device side more than on the server side. Now why I put on the device side it is like maybe the size of data at some part of time can affect you to move from SCMR to the native. And the reason I am saying from SCMR to native is because if the data is used you would like to have your IO operation to be done across the layer to do some kind of calculation. And that affects the very first storage and also the storage on the device. And the reason I am specifying the storage part is like but whether you need a simple database as I need a bio storage I need to do some kind of operation on the construct itself and also the recurrence of the device. Now what is the size of the card or external card and why we want extra things to be plugged on the device. So all those things start coming to the picture when you look at the data you start looking into the technology and how you want to put both of them together. Wait then most of the time I have no question. I hope I will not have questions on the question. I assume you are having different things from different given into the mobile of the device. That has a business sense to it. But it is big. Obviously you can't get from and download that and sort of keep that just you know it will need to keep that somewhere in the device. But once you put it on the device you can just close your app, connect that to your computer and get more. So there is a question there. How do you address that? How do you wipe out those data from the device? That is not a procedure. Why is the business sensitive it is large? There are other factors involved there. It is not just factor of responsiveness or you want the data to be there. Because it is sensitive you don't want to be stored on the device. So you still, but ideas I will prefer in such cases to be served online. It is really that sensitive. But if it is a big girl it is not a girl. That is an innovative strategy. Something like how do you are designing a process that by the time the user is coming to that application we will have the data there. You want to talk about the handshake. That I will tell you. Actually this is also a problem sometimes it comes like you know you can probably have if you have got an alternative way could be probably you can have the device but somehow you have prevent the user to use that at all unless you are online with the server by some mechanism. Include security introduction in a business sensitive meaning for example if you have the full test and the answers in the device protecting it. You know one of the continental requirements of the offline solution if your data is there. You really like to store security information. Now the question comes for what data, what you choose is a different question. But as a solution it requires that the answer is there. Even if you select not to put it on SD card or something and also make it volatile give it an age after you know or you could have data which would tell this device normally gets online this much time of the day maybe I would like it to be online only available only for one day or half day or you know age it. And Android has this storing the data in addresses allocated in address allocation of different pieces of data of different applications in different places so it's not easy to hack around. A combination could be made which will be really useful in the context. Very good. I'm new to Android so I'm going to store it on every level. Basically if you're going to an enterprise but you're not happy that they don't supply it doesn't matter which platform but you have to ask them. Two of the reason about this thing is because we're able to device offline or we have called it a limited connectivity the question comes then you have to do this kind of data transfer between the device and the server how long do you want that process to take place. The reason I'm putting this is like how wrong part of it is like because if you look at it in general and particularly when they're in offline there can be cases where users are going to synchronize in a batch kind of thing if I take my case of the school and all the future is going to be used I think then probably they're going to synchronize at the end of the period at the end of the day or if it is an enterprise user who is working on a company it's a typical time of synchronization early in the morning before the run just after the run at the end of the day Now during this fourth time period suddenly you'll see that there are a lot of people and your server has to do a lot of work and because the server is doing the first your device will potentially be able to do this kind of data transfer how do you address this kind of issue how do you address this kind of issue even before that part it comes like because at the end because there's data being transferred from the device to the server we need to know what kind of data is going to the device itself what kind of data we are distributing to the device or what kind of the data device is fetching from the server you have to take a typical example in the online world to do simple query based fetching of the data but if it is a case of offline on the server I can say it is a query based fetching of the data but to minimize that is my first problem that for now I bought my device to be connected to the server to synchronize this problem plays an important role because if I already know what will be needed for my device I can do some kind of a pre-calculation already instead of doing some kind of a runtime calculation and taking out the data now if I have to take that case of our example if there if I have to say that I have a kind of bag myself guys Bindu, Bhai all of them are in the question and there are some really smart guys up in the bag they get a different level of question all together so for me I want easy kind of solution question one A plus B equal to B then go to think and the question that I want to get is different for the question the other guy who is the smart guy for the level of question that that guy needs is all together different distribution needs of the user are different now instead of waiting for this thing to happen when they are connecting and they are synchronizing if someone in the server is an Italian should know that this is the user's answer how do we identify those kinds of data please don't look for it second part now because when the user is synchronizing in the offline part there is a huge challenge about how do we handle this company because most of us are developers here you would have worked with some kind of content marketing repository and anyone who has worked for more than a year you would have definitely faced a situation where in a code but get the magic there is some content if you have to look at that scenario it is similar scenario when you are porting back to the offline version I have the data but by the time I am checking if somebody has just changed it now I have to correct it what are the methods to collect those things they vary from the scenario to the scenario business to business but for the handling in the case of an offline version because most complicated but in the online world in a technical manner in the online world you can say apply a lock and wait till the other guy in the offline world you can't even apply that lock but in the offline also you could apply a lock you are not connected you are user run you are user 2 and the seller you got the data yesterday you got the data today morning we submitted the data you are now submitting the changes today night now the thing is should I activate this data should I activate it no that's a typical CMP that is the conflict of the data for your business problem in terms of telecommunication we need to take care of the technical problems to do the things exactly once in an order the reason why it becomes critical is if I take the case of attempting the test probably in the first attempt I have answered the wrong question wrongly but the second attempt I have the question right but while I synchronize by mistake if I use my second attempt first and first attempt later the seller will be saying that this one the question is wrong attempt answer 0 sorry mark 0 so synchronization operation becomes quite critical from the user as well as from the server again for example from the server because your backend application can change the data you can change the data but at the time of synchronization if you are getting the update one later and insert first you are getting update first and insert later probably your application is going to bomb saying the data does not exist at the time of synchronization I see a quite dang many issues last and something interesting that comes to me about the synchronization it is interesting to expect in the case of an offline case the reason I am putting it is interesting in the form of people and as an article choice we have to make choices about the resources not just in terms of software companies but in terms of the hardware companies also now some of we can address this part I can address to a certain extent the kind of hardware that I will need the reason I am putting it is if I take the original one of the early mentioned cases my user thinks that early in the morning when they come to office just before the launch, after the launch then at that point of time just to address the thousands of users I will need the server capacity of the 32nd and 40th degree but if I say now if I can tag as them so that one guy thinks that one guy thinks that data clock another guy thinks that 9 o clock then probably same for the 48th degree machine I can come down to 16th degree machine it makes an important choice and some of us we can flag this with the user behavior seamlessly it becomes an interesting challenge not an interesting challenge interesting aspect of the full solution for the possible distribution data it is like two possibilities that came to mind for example school policy or they have a schedule normally all the students expect also to go to a school they would already know this week or this day this will be taught that will be a small database from the school it can be reloaded in a scheduled way avoid all that anyone tablets could be plugged in internet it need not be all over the place as you come to school you plug in today and tomorrows you know 10, 10 you add on that right the scenarios you have taken is like very predictive as you told everything is scary it means that taking the context of the application away from phone and putting it into the server what I mean to say is that instead of phone making a run time decision what if server itself is cached for example it is a month it is a context there so if it is the data are cached and this connection issue I give a request which takes 30 seconds what if server is cached and it takes 30 seconds second thing is the content what if hardware tomorrows smart phone as a compression engine which is so good the video download can be compressed and uncompressed so the time we save there is the transmission time for example if it is taking 10 minutes if it is taking 1 minute to download then we are not compromising on power right yes there is we have taken the audience at the end and I think the framework should also be enhanced for data aging also yes also we will talk about like device to device like one device downloads and tracking right P2P so not every device needs to download in a classroom like one has downloaded and it can distribute all because we have measured this problem we can just show this problem to the people all together imagine if you look at your type of device in a computing resource and somehow if you can type out all the so called devices to your solution what kind of products would you like to show something that I can take back to the you expect then there was this experiment called TETI when the TETI information was like as an application one can post on to their desktop and all these data goes to the NASA and other organization and the calculation was happening on to the desktop but the increase of P2P in the application is one of the biggest factor and the protocols are keep on stopping so there is a grain on the back maybe one device the server takes all the feedback like everybody answering in the class one tablet takes it and uploads every tablet takes it we have to put the movie download that we have to do sorry instead of that even you can have a mobile device everyone is playing the movie all of this that you are talking about the web architecture is essentially graceful degradation learning when I look at all the words that you have here they all sound like framework words is this a problem that Google is trying to solve but why is it that application developers are thinking about it why is it that the framework developers offline is more that Android 2.0 see the thing is you can talk about the framework but my whole experience of last year is even the framework is very popular 100% utilization when it goes into the real application only 5-10% of that framework is there and even that how does there is some kind of customization you can build all those things as part of your full solution but by designing the solution itself we need to take care that as part of you have to do it as it comes from the framework I understand that you have to decide which features go offline the enablement of making something offline is online is that also something that you are building as application developers or are you just using libraries that Google provides because they said a phone is very likely going to be the place where there is no data connection therefore you might want to have local storage but you don't have same canyons see in application you need to consider the reason I am saying is like when you are putting a lot of logic out onto the device it becomes part of your application so as it says you can have you are operating with that on to the device so that you can do something it will also be operating on business logic so maybe you can take it offline now the question actually for Google the framework is gears they had gears but now they stopped gears so I guess you can't really rely on Google maybe it's just too much work for them but even gears are not the way to do it is there something like gears for Android it's equally what it is I will see what is next like otherwise I will get up okay I guess this part more or less people can easily recognize because it is offline and somebody is using it we need to see the data transfer from the right user from the right device in part 2 based on the category of the data we need to include it the last case is about the device as an application management bearing in case the device is stolen or we know the device is somehow getting misused we need to have the capability to pipe out the data as an application while detecting the scenario the last scenario till now in my experience people call up and then they say if anyone is able to find out a better way please tell me one of the things like aging of data ideally it doesn't log in or it doesn't actually log in on the device it could be sent to an actual server and then delete it simply because it's an offline application the update of the component becomes really critical and imagine this scenario if you are going for 100, 500, 1000 and that kind of feeling half of the time you can get to see the reason that I am on leave half of the group is on leave all the people now go to different regions they are not able to update so we need to take care of all these applications and this creates a scenario of the backend type because then you can have people working on two different versions of the same application and you have to pipe out the data from it can you tell me how it does this it's a logic on the backend you need to know what device is using what version of the data but the application the APK itself the update of the APK itself yeah, suppose you are in an environment where you cannot you are going to have a mechanism to install the APK to internet or anything and you want to sync it up if you are safe if not even connected you can work whenever you want whatever you want so we have to upgrade so they have to come on to either online or they have to come in touch with the people IT guys are over there if they are not in touch obviously they can't do it we have to somehow give them the APK we have entered it I have entered it in my app but the thing is you have to upgrade it for upgrade part it has to be online or it needs to be somehow get in touch with IT guys just to answer your question you need to design your backend so that it can handle across versions of your app right? that's how you would do it what if percentage of your user base hasn't upgraded to the current version we will have to have your backend to support those old functions or that old functionality and you would need to monitor how your users have moved across what percentage is still not upgraded and then maybe you could use C2D or something like that to post an update so that's how we have done it in a similar way I have been doing it here at this point I see that all the products are in solution right? Blackberry solved all these problems so why is a Blackberry app for e-mail offline and online the context there is very forced it comes up to fire and your e-mails are all pushed well timingly and you go through the e-mails and get deleted on time I see all the problems we are trying to replicate the same mechanism what Blackberry has already solved and only thing I have seen in case of Android and all this there is not such a what Blackberry people have maintained in terms of context Blackberry is very important if you have a single ownership of the data in the case of the e-mail you can see what if your telecom company is the aggregator that's the thing it's easy if you have a single ownership of the data but the moment you have a multiple ownership of the data it will probably be going to be the difficult even part of Blackberry but in the case of education and verticals all the apps are aggregated I mean it's very real it's very real I already mentioned a couple of these in the offline you know arranging the optimization part we can reduce the peak load on the server and that can help us to do the right thing and on the revive side we can reverse through many business logic and work on the data we expect because the processor is anyway good for the function that we are doing but they need to have a good eye-opener thank you everyone thank you if anyone has any questions suggestions thoughts you know anything that could even be helpful to us please feel free to connect online, offline whatever suits you best thank you