 I am going to talk about Node.js and more than that, I am going to talk about a framework which is Nproject. So Nproject will help out the build tool called Espresso and we are able to generate native applications out of the HTML5 and JavaScript. So let me talk about the mobile stack, so one of the ways in which you have a web portal where you have a bunch of good number of visitors coming, so nowadays as you know it is essential that you have mobile web because they will be accessing it from the smart phones. So that is first step, that you have a mobile website for your site, otherwise it will look really clinky and that is not a good user experience, they will never come back to your site. Another thing which is there, I think started in 2007 with Apple's iPhone, I am a great admirer of it, although now I think Android has overtaken it and it has much more capabilities than iPhone. So App Store, App Store enabled the discovery, so you want your applications, native applications on Apple, on the Android market, on Blackberry, on other things, so how do you go about it? So one of the ways which you can do, which we did actually initially, so we use Java to produce native application in Android, how many of you here done Java programming in native for Android? So basically any mobile app developer in terms of native app here, so what about web developers? I think that goes to the majority, everybody. So what if I told you, since you are already a web developer, you are also a mobile app developer, so that is what I am going to talk about today and hopefully I will be able to show, if I am able to get the same network as my laptop, then I will be able to show you how you can make native app. So what we started with, so build Java and Android app and it was really talking to the platform. So in our platform, so it could be emitting some kind of JSON or something and that would be used to show a search and then the views and there are nice effects like there is infinite scroll, then there is a shape feature, for example if you want to go to the next listing, you can just do a shape and you can go there. So we started looking at, but this model it requires, first of all it requires a submission to the app store and then it requires like the approval process and like it requires separate app in different, possibly in different programming languages to be built for each platform submission and then I don't know if you have heard, sometimes there are processes by which it takes, might take 3-4 weeks and your app might get rejected as well. So that is where the mobile web comes into picture. So once you have a mobile web, there is no barrier, you bypass the manufacturer, app store, operator and everybody but you need to popularize it, so that is another thing. So there are other things SDSM which come into picture but let us come, how with one code base you are able to, using Node.js you are able to produce a website, a mobile website and you are able to also convert it into the apps, native apps and you can also submit it to the app store. So there obviously, so with so much options available you need to make a choice, what you want to go with. So like if you are developing games etc, I think there is session at 4 or something on games, I mean you can develop quite good amount of capabilities but a lot of graphic capabilities would be missing, things like accelerometer, access to geolocation and other things, they have started coming into STML5 and W3C specifications but we are still not there yet. So the next best thing is the platform, so the platform can be written in whichever back end programming languages that you want, you can use servers like Apache or even Nginx and the second stack which I am going to talk about, so this can be used to serve the web and the second stack which I am going to talk about is mobile server. So for mobile server Node.js can be used and so Node.js alone itself might not be great idea when it comes to doing heavy lifting at the back end with databases because it is still in like 0.67 stage, I mean there are good advantages to it, I think in later sessions we are going to talk about how Node.js scales well then there are patterns and practices. So what is written behind is phone gap, so this is what phone bag gives me, so instead of writing objective C code for Apple, Java code for Android and Java code again for Blackberry for Palm and for Windows phone other languages, so instead of that you write a single code based JavaScript, STML5, CSS3 and compile them separately for this using phone gap. So I am going to show a live demo of phone gap also, meanwhile this is where you will get all the information, so phone gap recently was acquired by Adobe and it was already open source but they have moved it to Apache now and it is called callback, there are good pieces to learn about it. So now I think the power point which is on Google Docs is much better than this because I have just downloaded it from there and somehow it did not come out well. So as far as setup is concerned, so let me talk a little bit, let me come back. So where does M project come into picture? M project comes into picture at this stage to, you know, it is a wrapper on jQuery mobile, so web developers out here, like how many of you are familiar with the JavaScript library, say jQuery, okay that is the majority, okay great. So yeah, so now M project is a wrapper around jQuery mobile that can be used along with Espresso, I am going to just show it live demo, Espresso to generate code in JavaScript and then you can put things in. This is very similar to, I mean if last, I asked, not many people were familiar with Espresso, so Espresso is quite similar to code scaffolding in Ruby on Rails. So it can be used to generate model view controller, okay. So as far as setup is concerned, I don't think we have high speed internet here, otherwise we could have run this. You need to set up phone gap. When you set up phone gap, it comes with Android, like five different platforms which I just talked about. Then you can download the M project sample apps. There is a commercial company which is supporting it, so it is great, you know, I think support will be there for a long time. There is one thing, if you look at LinkedIn's mobile stack, it's a hybrid one. So for iPhone, I don't know what flavor they used, but they were not able to provide the infinite scroll for the listings. So that can be possible. I mean, we have not yet open source check, but one plugin which we have written for M project, it allows you to do infinite listing. So that is really cool. Let me see if I am able to access, like now I am connected to net, but if I am able to access the API of Justine, the company I work for, then I will be able to show that to you in the emulator. Otherwise, so you get the link basically. So you go on and install Espresso also. So Espresso, it's a fantastic tool. So yeah, let me explain why I say so. So Espresso, it's a code generator. It's a build tool. It's a deploy tool. It uses Node.js and it complements M project very well. So this stack, I recommend it. It can be used independently also. Many people have used Hudson to do a lot of manual things which are involved here. Hudson, by the way, is used in a Java word. So once we have cloned the Espresso, you need to do these steps. You need to get into Espresso and update all modules. Then you can alias Espresso to wherever Espresso.js is and bingo. So next in the command line when you type Espresso help, you'll get what Espresso can do. So this is one small thing. So in order to install Node.js, you can install it using yum. And once you do that, in the latest version of Node.js, although it is called Node.js, but Espresso refers to it as Node. So you might want to make a symbolic link. So what are the steps I'm giving here? Therefore Linux. You can Google steps for Windows and for Mac. By the way, another thing, Microsoft is putting a lot of weight behind Node.js. There is a sponsored talk later in the day, how it works well with Windows Azure. I think, unlike 1990s, et cetera, when, so again, they're sponsoring this and everything. So in late 1990s, they would take a standard like JavaScript, they'll produce their own JS script, and they'll not go with the standard. But this time, they're making really good effort into following the standard, which is great. I mean, so that's a huge advantage. So that is another reason Node.js is gaining popularity and because a lot of heavyweights have put their efforts towards it. So another thing, I'm going to show the Android build. So for that, you need to install the ADT plugin within your Eclipse. So I talked about it already. So Mproject is a wrapper for jQuery framework, jQuery mobile framework. It does use HTML5 and CSS3. I think CSS should be above. Then there is tool Espresso and with which you can generate all these three things, nice things. So let me just do a quick demo of Espresso, how it can be used to generate things. I think quite a bunch of ROR developers here. So it's similar to code scaffolding. Do I need to stop the slideshow? Stop. Yeah. Actually, there is it. There's a studio. When I'm pulling it there, it shows up briefly there, then it comes back to my window. I can clone the desktop right. So that's fine. Let me know things are difficult because I'm not able to see whatever is on the screen here. So that's fine. Let's proceed because I think we are running out of time. So I do have a couple of projects, but what we are going to do, we're going to see Espresso magic. So these are the things. So first thing which I'm going to do is code scaffolding. So you can use help. It gives you, so I'm going to use an example. If you want to start with a blank one, you don't want to give minus E and you want to give minus E. That is fine, but I mean, I'm giving the option that that's that that is there. So now, I mean, we can import this into actually, I mean, the way I do it, I generally import into the uptown studio and I start modifying it. Let me try once more. Okay. So I think if it is more than 50%, it comes here. So that is maximize it. So, so, so I mean, we can import it as a project and it's my mouse. So you can import it as a project and you can start modifying it. So basically, so, you know, Espresso, what it has done, it has generated like for the M project, it has generated the, because I'll just show you. So it puts M project in it. So the M project files, they are put here. Now, you know, the controller model and resources are there. You can modify them and then now you can build it. Yeah, sure. Okay, just five minutes. So let me just quickly go to the directory. Let me run it. So I'm going to run it as a web app on the node server. This is for testing. So it has started running. So here we go. So we have used, you know, like local storage here and, you know, right now we are viewing it as a web app. Same thing can be deployed as mobile web app. You need to put CSS, separate CSS for each phone and you can deploy it on the node server. I wanted like there is a bunch of things like, like how you can use JSON to connect with your like service and you can, you know, you can do cool things over here. So, but with interest of time, I think I'm going to skip all that, but happy hacking. I'd like to take any like last minute questions if you have. It is a little bit incomplete, but I'm happy to answer over the email and over the course of today. In that case, let me wrap up. Thanks a lot for being a patient listener.