 Give it up for Barbara Mame Hey guys, how are you? So we're going to have a round of flash talks now some of you guys may be used to it because we we have a lot of those at Bangalow GS So I'm pretty excited to do that at GS for this time So we'll have nine flash talks Five minutes each not one second more than that John down here is holding a big timer And he's he's putting the pressure on the speakers So I will need a little bit of your help too. So please don't ask questions during the talk Let let them do their thing and if you want to catch up with them afterwards. I'm sure they'll stick around for a while Okay, guys, so let's start with Maulik Hello Good evening awesome people. So first of all, I would like to start with the thank you to jazz food and Bangalow Just for this awesome event and letting few people of us like to have a flash talk So I'll start without wasting my time. So this is not me Cool, where is my Okay, so I'll start with the question that how many of you have ever created your resume with latech one two three four five six seven eight nine ten only ten so so actually that's why I Have started doing research on these things and started creating a tool that will take a help of latech For creating the resume. So it's a when you start like latech resume maker You will get a second link the city since like comm and there inside it will take some time to load as usual. So Basically, we have we have used So so it's here. So let's get started like how actually it's very easy to do that Do to it's very time-taking So basically we are using angular for front end and latech and jsp for rendering your resume and for giving data to like passing data in just in format to the library so Who oh my god Thank you Cool do I want to I would like to do without registering. Yes Whatever it is Yeah, let's import data from LinkedIn So basically it will take just two to three minutes to create your resume and you can directly send it to recruit us from our site only so If internet is fast Cool, so it's loading Cool, so it's Hammond's computer and he was logged in in LinkedIn. So I'm sorry, but it is here now. So all his data is here. You can directly do Preview, yeah Don't worry. We are not you are trying without registering. So don't worry about that So, let's to preview Yeah, it's latech resume is ready. It's very slow Cool, let's see. Let's see. Meanwhile, it's rendering. Let's see the yeah, it's there resume is ready All is data. So a few features that we are giving is you can change the template like if you like this this design Just click it save it and Refresh the tab It will change the design Question outside Sites here then You can rearrange the sections if you want or you can directly send write email ID of recruiters and Directly send it I don't have time to talk more about it We're looking for the other hand mic. It's right here Hello, okay. It's okay. Hi everyone. So Let's say I'm the browser and he's this server he's Satan my friend. I'm param. So In the past we build websites which work something like this. So the user asked me for the home page Okay, so give me the home page. Yep rendering the HTML. Take the nav User the navigation bar take the sidebar Take the content. Okay user the site is ready for you. Oh, you want the profile page server. Give me the profile page Yeah, rendering the HTML take the nav Okay, take the sidebar navigate a sidebar ready. Take the profile content. Okay user the profile page is ready So you see how on each refresh every time I'm asking the server for the HTML Now we're cool guys, right? We could code in JavaScript. So we make a cool AngularJS or backbone front-end app So let's see how that works. So I'm a cool app now. Yes, I work. Give me the give me my app Yeah, take the strips Okay, okay user wait. I'm loading the scripts. Okay, you want the homepage give me the homepage content Yeah, take the homepage content. Okay, I'm rendering it. Okay user this page is ready. Oh, you want the profile page Just give me the profile content. Yeah, take the profile content Okay, I just swap out the original content with the profile content now Yeah, that's good on each response It went out quite fast But the initial load was bad right on Gmail like you how you see it There's a big loading bar in the beginning. You just want to see your mail There's some new mail that has come you just want to see that so there's got to be something better, right? So how do you do that? So there's this is something this is a weekend project We are done and we have used this concept a third concept which you should be using so what happens is Let's go to the homepage Cool, the net is good. I search for cafe. What this app does is you can tell your friends where you're heading So so they can catch up with you. So whatever you search We'll get shared to Facebook. Okay So I'm searching cafe I hope that works So I select this now What happens is this view that got rendered down here was rendered by my web app So I can search for anything else and then that would get rendered. So let's watch was a mall Okay Now Okay, so again though just the API call was done and the web app rendered it. Okay now It can also Do back and forth so I can go I can go back and forth. So using html 5 post it right everyone knows that now This is a typical it might seem like a typical web app, right? But what happens is I can copy this url open it in a new tab And see it just like a flash it showed up because this time the html is rendered by the server So the whole point of this talk was that please take the effort In any web app you're building Mimic your app mimic your view rendering code both on the client and the server so that you can see it's Yeah, thank you Thanks guys Yeah es6 harmony the future is already here. Probably they ended two minutes early. Probably I can eat up there two minutes Okay, this is about me you can find me there and if you do v8 options And grep for some harmful stuff You can find all of these options is already enabled in vi so we can use harmony right now It's not the future. It's right here on the latest build and I have written a small one-liner to pump in all the flags And we are ready to go. Let me try uh block scoping Where vice equals one cool And let girlfriend It's b10 Not bad Cool if you say wife It will save one now. Let's see girlfriend counts and defined as expected because this is a block scoping where you could see those Let keyword and the braces as as of now about javascript plus all function scoped and we have block scoping now Um, let's try a generator or let's create a generator Generators normally give out iterators as we know uh star is added there and let you know why why that that is done and Where c equals zero then while true Or probably we'll make it more like uh yield This is why we need a star there yield is not a keyword yet That's why we need a star there. So a counter generator is ready. Now. Let's create a we need a var here because it's running on strict mode Let's let's create an iterator Uh, okay, if you see count there's nothing there, but if you do a next because an iterator will have a next there You keep on getting that and then would be true if the iterator generator will stop generating here It doesn't stop because it's an infinite loop there. So you keep on generating. Um, let's try modules now It has we'll do the same similar thing. We'll call it ticker Say var c equals zero again And this is module. So it'll export functions Uh Let let us let it export an incrementer. So that would return A plus plus c again Right, it seems fine Now we have ticker if you do a ticker, uh It's empty by but if you do a c you don't get it even though if it's defined there because it's a module there And you can use an increment there you keep on getting different values All right. Uh, now let's say let's try proxy I have two and a half minutes left man. Okay. I wanted to show you object observers also um Let's create a proxy Let's put a trap for a get Let's uh, it gets an object on the value. Um, let's return Value equals say answer Uh, we'll return 42. We know the answer. If not, it's 420. You know 420 also, right? So This is a life dot answer you get 420. I mean 42 because we're checking there if you say like anything else You get 420. So this can be like the method missing and ruby Okay, let's try object observers this way like Uh, good. Thank you the street mode object observer We'll observe the person object that will give you a callback of changes. Uh And just just log the changes and see how it goes man. Okay. Now if you do a person dot name equals Hey man, you could see that right like Whatever has been logged if it's type of new and object got a uh attribute of name Then if you if you go ahead and delete it You could see that it was deleted and what was deleted right? You can do the same thing for an um array probably an array has a different observer of its own say like F40 Seconds left. Not bad. Uh, so we do list dot pop You could see that right we could also do a similar thing on push So uh apart from this we have uh maps weak maps symbols uh, so Some of them are not implemented and thank you for your patience enjoy all right, so I want to let you know all That there is nothing in this world And we are all one connected to the universe All atoms are nothing but strings And This all these things are done out of ego actually That was supposed to be javascript enlightenment and I ventured into wrong wrong topic This is a 20 minute talk kind of crushed into a five minute talk So I'll go over it quickly and I wasted some time already so We a lot of us are uh, you know trapped into that framework and tools and Design patterns and this and that problems But a lot of us has to see javascript as a language itself It is a first-class programming language. You know, it's a functional programming language There's a lot that can be done through javascript There's a lot that has been done through javascript and a lot of things have been going on So I'll just pointed a few resources, uh, which are mostly books, uh through which you can Kind of like upgrade your skills of the programming language itself Not really worrying about anything else I'm double trivedi on twitter if you want to check me out And the philosophy is this We cannot solve the problems with the same level of thinking that created them So if we are always in the you know doing cloud apps and thinking in dom and you know Thinking in a jack's request. We are never going to go beyond that. So I think we need to break that and move on And we know javascript is probably everywhere Uh, I think there's one more project that I think you might have checked out as you know It's already kind of like, you know with javascript you can do firmware programming with javascript I'll show you some more examples in the end So you need to learn how to think in javascript That's the most important part. Uh, I'll I'll show you why thinking is very important Started experimenting with whim, which is obviously the number one code editor hands down Uh And the way you can use whim is to start thinking in whim once you start thinking in whim the code just flows and obviously emacs is number two Matt's van started using emacs. He eventually discovered lisp and you know that Eventually led him writing ruby Which you cannot do using sublime of course Okay, so how do you think in javascript? Uh, so how do you think in javascript for that you need to answer? What is javascript? And what is javascript? Leads to nirvana Javascript is nothing but lisp in c's clothing. This is very important. If you know this you you can you know use javascript to your Advantage and whatever else you can There's a nice person who said that javascript has more in common with functional languages like for scheme than with c or java and uh, no, I think I Think uh, that was uh crockford. I think yeah. Yeah. Yeah, so uh, that's very important. How do you think in lisp? Uh, you need to go through resources which will allow you to think in lisp It's very important to think in lisp and think functional. I think there's a good book called little schemer Which is a very small book, but it it it kind of uh Forces you to think functional think recursion think in the way you are not Usually thinking then there is a book called lol, uh, which is nothing but land of lisp which is the next level If you can You know have a copy of this book. It is awesome. If you are feeling adventurous you should go through sicp, which is of course the I don't know. What do you say bible of the computer programming gets also based on uh functional programming And uh, if you want to go for inner functions, uh, inner internal workings of the computer You can go through the book called code now. What's being done in javascript and what is the power of hardcore programming This is a game that won js 1k. It's written in 1k b Uh, this is a game that that also won js k 1k It is a full fledged chess game written in 1k b along with the ai so you can play with computer Last but not the least this is an open risk simulator written in javascript that is running linux on the browser client side So I think Thank you Hi, uh Sorry, this thing is in continuous scroll mode and all my animations have gone to hell But that's what I get for not using slides. Uh So my name's sahil. Uh, I'm an engineer from ai team and trust though Not the kind of engineer that you guys are I I did my engineering and metallurgy And after that I did a bunch of things that have nothing to do with this entire room Uh, after which I even worked at a startup in the middle Uh called easy tab where I built a mobile point of sale terminal. Uh, what you need to know about me all of this is irrelevant Uh, I grew up in a factory. Uh, my father, uh, owns and operates a paint factory So I grew up in paint factories and for me the whole thing was I'm most comfortable and happy in a factory. It's why I became an engineer I like making I mean I like being inside factories light looking at big machines And for me a lot of people keep talking about internet of things and uh, for most people that's there It's in personal and home But for me, uh, it was a very crowded space and I would rather spend my time making factories faster making factories connected And uh, so I just wanted to give you a brief overview of what what that's like and what what happens there in factories. So These are the guys currently connecting factories, uh, rockwell, honeywell, emerson, schnider What they basically do is they bring a bunch of sensors and instrumentation and then Draw cables literally break down walls and draw cables through the whole thing. It takes about two to three months in a Uh, you know facility of a couple of acres and then finally Bring it to one computer in the entire premises The poor production plant engineer will have one desktop on which that uh, all the wires will come and connect and then, uh It's called a hmi human machine interface. So to speak. I mean pretty much anything that we use Is an hmi today, especially computers But the whole point is they make uh, they make these things that they run only on a one kind of like a local system And the problem is it's wired and local Because it's local it's high cost because it's wired. Sorry not because it's local and you can't really change anything Once you've put this workbench program on the local server. There's it's done So, uh, at least me and my team think that this this is begging for description So what do they do with these systems once they put in place? All kinds of things but most commonly the smallest things that I use most often are the ones that need to be connected pumps motors valves Uh, that's an RFID chip to track location of things So you want actuators to actually turn valves when something happened when when the pressure builds for too long or Uh, you want motors to basically we switched on to fill up a tank or things like that or you know, even in the oil field you have remote Remote sensing equipment So, I mean a lot of stuff I mean there's a lot of need for this stuff to be connected specifically in the industrial application What's wrong with this picture? For me, this is the architecture of a local uh of a traditional skeda system Skeda system and for supervisory control and data acquisition Which basically means they pick up data from all these field parameters and show it to you on this local system for me That's what's wrong with this picture It's it's really if and and if you go there, that's not all that's wrong. These are all actual hmi's The that one was built by honeywell that one was built by a company called entech This don't even ask me but the is that I can't look at any one of these without going blind Uh, and I have no freaking clue what's going on I'm a I mean, I understand process engineering fairly well, but that doesn't make any sense to me. So, uh I mean my only question is why why why are you doing this? Uh, so for me What what my my vision and the team's vision really is to build an os for the real world And and the way we do that is building using wireless sensors things have to be wireless moment They come they should just tag on to these to the instrumentation that is available. I want to use the cloud and use a Data of layer on the cloud and then nicely show it up using You know lovely charting libraries like d3 or well, I can't use d3 because those buggers you ie So I'll probably have to go to like Raphael or something, but you know At least that will be better than what they do um So what we do essentially Is build these systems on the cloud wirelessly So all these kind of sensors motors actuators all the things that are there we build these rtus They're called remote terminal units that pair with them and wirelessly send the data straight to the cloud once it's on the cloud You know with anything goes right to open up Dashboards apis all of that stuff for pretty much reporting and even predictive analytics I've run out of time one last shameless plug. I'm looking for devs as usual. Why would I be here? All right, thanks you guys Hi guys I am ashish also known as pocha. I am the founder of A website called codelin. I'm not sure how many of you have heard of it So, uh, I had a problem. So codelin is about you have a rubion rails tutorial on the website And we also emulate the complete rails Back end on the browser What is that also means that we also provide a terminal in the browser? Uh, uh, we ended up we started with the open source terminal But ended up using our own custom terminal and this talk is about how we developed our own terminal Uh, which right now is in node.js So this the right audience for this talk is somebody like me who never knew node.js and wanted to start with and Probably there is something very quick. You can look at it and get started or Somebody who wants to look into something called sock.js, which is probably better maintained than socket.io at this point of time So the terminal looks something like this. Uh, uh, the screenshot is there Uh, this is a pseudo terminal. So it is not really an actual terminal. So not uh, when in an actual terminal Every key press gets reported. So you probably see some lag when you type Uh, but this is like a you write something and then you press enter and all the data goes back And something comes up and it shows up Uh, this is the typical life cycle that we gone through Uh, why and when we came up with this thing, we used gate one to start with Uh, it has a lot of quirks. So it is again an open source thing Uh, then we ended up creating a version in ruby because I knew a lot of ruby I didn't really know uh node.js at this point of time. Uh, it has significant delay I tried fe uh, it's again a ruby in again ruby and uh, it has its own set of quirks Then I ended up trying sock.js and the server side logic is basically written in node.js Uh, this is the typical architecture. So sock.js client is on the browser on the right. You see the server It uses a library called pty.js, uh, which eventually spawns One process for every user that connected that that's connected on the browser This is a small piece of code which would typically explain everything. Uh, I mean, uh, overall the code size is like 150 lines of code. I would say both server and client side Uh, the left side is a server side code and not go through it much. Probably you guys can look at it But this is typically what's happening that sock.js is Creating a socket and when the data comes in it is being fed to the terminal. So we pty.js Sponsor terminal for the user and this is this this would typically give you Then idea of how it's happening Uh, I have before coming to the talk. I have also stripped down. Uh, this is an open source project, by the way Before coming to the talk I have stripped on and I've put it out In that pocha. Sorry github.com pocha terminal demo. You can probably have a look at it if you want There is a live demo also at the above URL, but probably you guys can check it out and I don't want to spend your time Showing you what it is For the people who are looking to use it on production, there are some of the gotchas One thing it's a pseudo terminal and sometimes the cpu actually hits a hundred percent spike I mean we have a eight core server. So only one of the core gets on to a hundred percent cpu. So and I've heard I mean my debugging shows that it's the pty.js, which is the culprit and their Their documentation also shows that it's kind of unstable. So Don't use it. I mean it's on production at this point of time on codeland website But for you, probably it's not a good idea to do it yet So yeah, that's that's typically about this talk Hi, my name is Aravind. I work for this company called scroll back. It's a startup And if you've been to the has geek website recently, uh, and you hit the irc channel link at the top You have this uh chat window pop up, which is linked to their irc channel. So this is what we do That ends the self promotion part of this talk Okay, ashish just gave you the answer to this one, but I was I intended to you know ask this as a question Um, this talk is about what libraries, uh, you would you know, how you would go about choosing a library Uh, for your node.js project. I mean if especially if you intend to use it in production Uh, you know, you need to find a library that is still actively maintained and between these two, uh, you know socket IO is a lot more a lot more popular You know people have heard of it more, but it turns out that it's not so well maintained anymore And uh, sock j's would be the one. I mean we learned this the hard way We use socket IO first and then we switched to switch to sock j's recently So, uh, you know, this has happened to us a couple of times and so I have this kind of informal rule of thumb Of how I would go about choosing a library. I'll go to the github page for that And this is the uh dead project checklist I would check if it has any recent comments, obviously I would look at the issues and pull requests, but I wouldn't look at the open ones I would look at the frequency with which uh pull requests are closed and issues are closed And I would uh, you know, if I can't choose between two libraries based on these I would read up on the actual issues and you know, what people say a couple of things that Aren't aren't great indicators of which library is better maintained is what the maintainer says about whether it's maintained or not and with and uh, you know The data on on the npm the metadata on npm. Like, you know, what was the latest release date and all that? now We also faced another issue where we picked the library which was fairly well maintained And then we ended up using a feature within the library which was not so well maintained And that is um, you know the node mysql library, which is like, you know, very very popular And it turns out that their focus right now is on building the connection pooling And if you use, uh, you know single connect connections to talk to your mysql, um database it it crashes after a very long time like two days or so Um, yeah, so this is this is another issue that you face and uh, you know, you The way around is to just rebuild your application with the new and you know more maintained feature set and Quite often you find that, you know, there is no alternative There's just one library out there which you can use which serves your need and that's not so well maintained anymore And then you need to ask yourself two things one, um Can I maintain this? I mean if if I run into issues using this can I can I maintain this? So the answer to that was yes for us, uh, for this library node irc So we found issues on it and we figured out we could fix this and use it in production for ourselves and another one was um node identity, which we need to connect to free node and all that and It turns out that it was not what I'm trying to maintain it. It was much easier to just build one ourselves So this is like the overall flow chart that you need to kind of go through to pick a library to use in node j s Uh, that's my email address Hi guys, uh, I'm here to just to show you how to Hi guys, I'm here to show you how to get india map just in five lines of code in node j s No, it's there Where's the source code? Okay, uh, here's the code which is like just five line. Okay. Uh, I could see how we could do this. I'll just Here it is so Just I just expanded it how to uh for our understanding. Okay. Just I have if you have the uh course in office skated And here is what I'm doing. Just we are getting we have assigned a equal to 10 and b equals zero c equal to 10 c is equal to 10 just to uh I'll explain why we have done that and three just to get the explanation mark. Okay. And uh, here first we are getting the first character Of india here that is t. Okay, and we are doing just B plus plus. So I'm just saying that we are going to the next one And I'm always taking here a is greater than 64 because like t it's greater than 64. Okay So I'm just doing minus minus and c plus plus. So that's what like, uh, here the c is I'm using just to get the 80 lines. Okay. And uh, when I am If you see if c is equal to 90, that's we have to go to the next line. That's what it's being done We're here and just to see is equal to uh, I get it as 10. So it prints this okay It goes to the next line and here I'm just getting one and zero. Okay Okay, I'm just checking whether it's one and zero and based if it is Uh, one we just print explanation mark. Okay. And if it is zero, we just print a blank space. Okay Uh, how do I control c? I'm not used to mac I use ubuntu. Okay, so Okay, so here if you see, uh, just uh, these are the characters The s p p o all these are the characters of india Okay, then again I'm just changing the code here Okay, and It's not safe. So this is how it's being done. Okay, you could see once on zeros Uh, just found this code in c plus plus. I thought of converting into j's Okay, and Here you could see the source code. Uh, if you want the source code, it's already there. Okay. Thank you Quickly, I'll tell you what it is. Okay. Imagine you work for an e-commerce site which sells shoes and chuddies and t-shirts possibly named Mintra Uh, you could be uh, you could be working for a company called flipkart. It could be with clear trip Generally, they have a search experience. You search for something. You see a bunch of results on the left There'll be filters. You'll tap tap tap. You'll do a little spinny thing and show you the results I don't like that. I like animations and I want it to be seamless I want you to be able to generate it using your template take it dump it The module should animate figure out what the elements are and animated into place So the demo that I have I'm going to be generating 20 numbers between zero to 30. All right, then every two seconds I'm generating 20 more random numbers between zero and 30 And it threw it at my module and it's going to figure out Uh, which ones need to leave which ones stay in place which ones animate into place. Okay. That's it. That's the demo So it starts off. I have a bunch of numbers and every two seconds it's Generating html spitting at it. You can see it morphing into different colors. I have time stamps on everything None of these elements are absolutely positioned. So you should be able to use it with code that you already have. Let's try resizing this Come on Oh, yeah, I'll just come on just That's yeah, okay So I can just do that and it'll work on your phone and it'll work on your white screen browser You could take your general search experience that you have right now and That's it. That's all that's all I got It just works Okay Under a minute and a half. Yes Oh, you want to see koto? I'll show you koto. Yeah, right. Okay. I'll show you koto. Yeah, sure. No worries. How do I write? It's not it's Flash talk, uh, how do I save you source on this dude? Uh, uh Come on shift you too Okay, so uh, you You can look at this. So I'm generating a bunch of Random numbers, uh, and I spit like, you know, it just generates this this template over here This so this generates a dev, right? If you go down here to it, uh Wait, let's see. Let's see. I'm not even sure. I haven't seen this code in a bit. Uh, uh, yeah, okay So yeah, basically populate this. Okay. I'm generating a random array of nodes It's a up and child and every two seconds I just generate another 20 nodes and spit it at shuffle module You want to see the actual module? How big it is? Github URL github.com slash 3.1 slash shuffle 3.1 is by Yeah, but yeah, that's uh, that's the code. It's uh, it's it's built with morpheus. There's no jQuery anywhere I like morpheus for animations and I use just there's no like selector engine or anything There's even a string helper. So you can generate html at it right now. I'm using dom nodes But yeah, you can generate one html string throw it at it There's a little function that it uses to figure out which nodes are the same Uh, and which ones actually generate, uh, you can do a little sorting. That's how it does sorting over here So Yeah, dude That's that's uh, that's all I got man. Thank you Still under four minutes So, uh, this is amazing. We are actually four minutes early guys Whoo So since we have four minutes left I would like to ask uh, all the flash talkers to come on stage so that we can all upload them Give them a big round of applause because they did a great job and they played the game quite well Congrats guys And I suggest for next year's just who we do only flash talks