0:00:23.000,0:00:27.000 SPEAKER 1: My name is Smith. I work at Flipkart. 0:00:27.050,0:00:29.789 SPEAKER 2: Hi guys. I'm Tri Hari??.[br]I 0:00:29.789,0:00:31.420 am a partner at Nilenso. 0:00:31.420,0:00:34.940 S.1.: OK, we are going to talk about impact. 0:00:34.940,0:00:36.510 So what do we mean? 0:00:36.510,0:00:38.980 So let's start with a question. 0:00:38.980,0:00:43.789 As programmer, what are the problem we face?[br]So 0:00:43.789,0:00:47.140 looking at this, aside from that, you know,[br]maybe, 0:00:47.140,0:00:50.160 in the worst case we have to quickly fix 0:00:50.160,0:00:54.170 a bug on production, or maybe just really[br]cranky 0:00:54.170,0:00:56.770 client comes up with a requirement which is[br]very 0:00:56.770,0:00:59.570 hard to fulfill, or you know, our code quality 0:00:59.570,0:01:02.570 or our tests written so big, like Chad said 0:01:02.570,0:01:05.149 yesterday, that it takes a long time to finish. 0:01:05.149,0:01:08.700 But these are the kind of problems we face, 0:01:08.700,0:01:12.330 generally. But let's see what other problems[br]do people 0:01:12.330,0:01:14.450 in rural India face? 0:01:14.450,0:01:20.110 Yeah. So. Let's start with this: food. 0:01:20.110,0:01:22.910 So I'm sure all of us enjoyed the really 0:01:22.910,0:01:27.410 good lunch there, [00:01:25] pune gosh, chicken[br]packenard, fune 0:01:27.410,0:01:30.209 mokney [00:01:28]. We will also get a tea[br]break 0:01:30.209,0:01:33.399 soon enough. I'm hoping. But what about the[br]people 0:01:33.399,0:01:35.220 out there? They don't even get a square meal 0:01:35.220,0:01:36.250 once a day. 0:01:36.250,0:01:40.789 Water- well. People in India really have accepted[br]the 0:01:40.789,0:01:43.580 fact that they don't get water to bath in 0:01:43.580,0:01:46.679 the rural areas. They somehow manage it with[br]the 0:01:46.679,0:01:49.300 drinking water they get. It's really not clean,[br]but 0:01:49.300,0:01:51.280 they somehow manage. 0:01:51.280,0:01:55.319 Shelter. V.J. told me a fact today, that sixty 0:01:55.319,0:01:58.470 percent of population in India do not have[br]a 0:01:58.470,0:02:00.899 toilet. They don't have access to a toilet.[br]So 0:02:00.899,0:02:04.110 let's, not even care about anything else. 0:02:04.110,0:02:07.000 And education, this is something very personal[br]to me. 0:02:07.000,0:02:10.229 Where I come from, it's even lucky to people 0:02:10.229,0:02:12.610 to study up to ?? standard [00:02:12]. 0:02:12.610,0:02:16.250 So, so my question is, how many of you 0:02:16.250,0:02:19.140 have written a line of code which has impacted 0:02:19.140,0:02:21.260 life in some way? I'm not saying a big 0:02:21.260,0:02:22.830 way, but a meaningful way. 0:02:22.830,0:02:26.810 Can anyone show their hands? Yeah. 0:02:26.810,0:02:28.450 And how many of you really want to help 0:02:28.450,0:02:30.100 them out. 0:02:30.100,0:02:34.860 Only this many? Like this is really sad. OK. 0:02:34.860,0:02:36.920 So you really want to help them out, and 0:02:36.920,0:02:39.310 this is how you can do it. 0:02:39.310,0:02:42.670 S.2.: Right, so this is essentially what we[br]heard 0:02:42.670,0:02:45.800 about. A few of us at Nilenso, and previously 0:02:45.800,0:02:48.410 C42, have been fortunate enough to work on[br]the 0:02:48.410,0:02:50.180 Survey Project. 0:02:50.180,0:02:54.880 And I'm gonna leave it to this: We have 0:02:54.880,0:02:58.570 6,000 people who have been impacted by the[br]first 0:02:58.570,0:03:02.460 run of this project. This thing is opensource.[br]I'm 0:03:02.460,0:03:04.970 gonna leave this slide for you guys to look 0:03:04.970,0:03:11.970 at. And we've- five big cities, 6,000 people.[br]Kids, 0:03:12.420,0:03:15.520 pregnant women, with the nutrition survey.[br]Right, this was 0:03:15.520,0:03:16.590 the first run. 0:03:16.590,0:03:21.790 And there was another one, that went to people, 0:03:21.790,0:03:27.100 women, in the agricultural side, and there[br]are three 0:03:27.100,0:03:34.100 thousand families who have been helped. And[br]one, a 0:03:34.150,0:03:36.380 single fact that, that's gonna help you understand[br]where 0:03:36.380,0:03:37.819 we are with this - look at the last 0:03:37.819,0:03:40.319 three lines in this slide, basically. 0:03:40.319,0:03:43.400 These are the inferences that have been drawn[br]based 0:03:43.400,0:03:47.180 on the data here that is 6,000 requests from 0:03:47.180,0:03:51.959 here, and 3,000 families. That's roughly,[br]again, around 6,000 0:03:51.959,0:03:53.740 records here, right. 0:03:53.740,0:03:57.310 So that's so much data coming in, and inferences 0:03:57.310,0:04:00.230 drawn across surveys. 0:04:00.230,0:04:06.080 Technically, like, why am I, why are we presenting 0:04:06.080,0:04:07.980 this here, and what do you people have to 0:04:07.980,0:04:12.940 do with it? Apart from this, like, the technical, 0:04:12.940,0:04:17.970 like the number of apps and whatnot, there[br]is 0:04:17.970,0:04:21.250 so much data coming in, right. The last thing 0:04:21.250,0:04:24.560 that we have in our road map is a 0:04:24.560,0:04:28.020 separate Clojure app to take care of the big 0:04:28.020,0:04:29.910 data stuff. 0:04:29.910,0:04:33.210 And, like, personally I have spent hours of[br]my 0:04:33.210,0:04:35.780 time looking at the UX in this thing. 0:04:35.780,0:04:41.730 So these apps have to go down to the 0:04:41.730,0:04:46.680 last mile, down to people's homes, where there's[br]no 0:04:46.680,0:04:49.810 internet, right. And they have, like, one[br]hour of 0:04:49.810,0:04:52.820 internet in a week, and then there's so much 0:04:52.820,0:04:54.820 data integrated problems that you have to[br]deal with 0:04:54.820,0:04:58.100 as well. 0:04:58.100,0:05:01.560 And sadly over the last month or so, this 0:05:01.560,0:05:05.010 has come to a slow stop, and we have 0:05:05.010,0:05:08.520 not had the time to work on this. But, 0:05:08.520,0:05:11.340 I'm hoping that a lot of people here do 0:05:11.340,0:05:13.770 have some time to spare. Send us a poll 0:05:13.770,0:05:17.250 request, whatever it is. 0:05:17.250,0:05:20.460 These are the people we really care about.[br]We 0:05:20.460,0:05:23.970 write algorithms to bring down our performance[br]from point 0:05:23.970,0:05:28.000 zero one seconds to point zero zero one seconds, 0:05:28.000,0:05:28.930 and that's all we have, right. 0:05:28.930,0:05:33.550 S.1.: So I'll wrap it up really fast. So 0:05:33.550,0:05:35.860 let's not always write code to help these[br]people 0:05:35.860,0:05:39.730 out with our wonderful projects like WunderRails[br]RubyGems and 0:05:39.730,0:05:41.310 other languages. 0:05:41.310,0:05:44.250 Let's also these people out as well. You know, 0:05:44.250,0:05:47.090 maybe give them a boost, because I really[br]believe 0:05:47.090,0:05:48.970 we don't all have to be Bill Gates to 0:05:48.970,0:05:51.620 help these people out. With our own skills[br]we 0:05:51.620,0:05:53.990 can contribute to and write technical projects[br]that could 0:05:53.990,0:05:55.370 help them out. 0:05:55.370,0:05:58.430 And, yeah, this is where you can find the 0:05:58.430,0:06:00.820 projects and start and everything. 0:06:00.820,0:06:01.620 Thank you. 0:06:01.620,0:06:04.090 S.2.: You can catch anyone of us after the 0:06:04.090,0:06:10.240 talk if you want to help us out. Thanks. 0:06:10.240,0:06:12.930 INTRO: So next up we have Kestap?? [00:06:12][br]on 0:06:12.930,0:06:14.510 the stage. Time starts now. 0:06:14.510,0:06:17.630 SPEAKER: Hi everyone. Today I'll be talking[br]about Sinatra, 0:06:17.630,0:06:20.800 basic introduction. Probably everybody knows[br]this, but more and 0:06:20.800,0:06:22.370 more though I'll be talking about how to write 0:06:22.370,0:06:24.139 an extension in Sinatra. 0:06:24.139,0:06:27.300 So the basic structure of Sinatra is this.[br]There 0:06:27.300,0:06:29.510 is a request class that extends from Rack::Request,[br]response 0:06:29.510,0:06:36.510 that extends from Rack::Response, ExtendedRack[br]is basically for the 0:06:36.780,0:06:39.070 things that are not in rack, and so they 0:06:39.070,0:06:41.680 define extra methods there. 0:06:41.680,0:06:45.660 There is a commonlogger which extends from[br]Rack::CommonLogger, and 0:06:45.660,0:06:48.900 this is the main part, Base. 0:06:48.900,0:06:52.330 So there are actually three ways to, there[br]are 0:06:52.330,0:06:54.930 actually three ways to extending Sinatra.[br]The first one 0:06:54.930,0:06:59.020 is extensions, the second one is - no. 0:06:59.020,0:07:01.800 Not quite. 0:07:01.800,0:07:03.610 The second one is helpers and the third one 0:07:03.610,0:07:06.490 is middleware. I won't be talking about middleware[br]probably, 0:07:06.490,0:07:10.180 there is a lot of material on that. but 0:07:10.180,0:07:14.050 the extensions and helpers, I've found it[br]difficult to 0:07:14.050,0:07:16.979 use them, so. I've kind of made a small 0:07:16.979,0:07:18.259 presentation here. 0:07:18.259,0:07:21.199 So the first difference between helpers and[br]extensions is 0:07:21.199,0:07:24.430 that, in helpers, you use a helper or you 0:07:24.430,0:07:28.600 write a helper if the functionality is required[br]in 0:07:28.600,0:07:32.330 the get method or post method or any other 0:07:32.330,0:07:35.169 blocks that we use. 0:07:35.169,0:07:38.759 So inside a route block the extensions are[br]for 0:07:38.759,0:07:41.040 extending the functionality of Sinatra itself. 0:07:41.040,0:07:44.850 So for example, inside a get block we find 0:07:44.850,0:07:48.050 our two, return JSON response every time,[br]so I 0:07:48.050,0:07:51.380 can make a function like this, JSON(a) and[br]convert 0:07:51.380,0:07:55.130 basically converts our hash into a JSON string. 0:07:55.130,0:07:59.680 So the implementation is this. You write it[br]in 0:07:59.680,0:08:02.800 a module called Helpers. You define the method,[br]you 0:08:02.800,0:08:06.539 pass it in, and it basically returns the string. 0:08:06.539,0:08:10.240 And you include your helpers in before, in[br]your 0:08:10.240,0:08:11.210 app file. 0:08:11.210,0:08:13.240 So to write this as a gem you have 0:08:13.240,0:08:16.729 to put that under a namespace of Sinatra,[br]then 0:08:16.729,0:08:19.889 use the module, the same code as above. 0:08:19.889,0:08:21.979 And these two are the magic things that actually 0:08:21.979,0:08:24.240 happen. So base dot helpers is almost similar[br]to 0:08:24.240,0:08:27.229 adding helpers json inside your app file. 0:08:27.229,0:08:30.350 So, and base dot set is basically, it sets 0:08:30.350,0:08:35.549 the json_content_type, sets the request_content_type[br]to JSON by default 0:08:35.549,0:08:37.889 for every request. 0:08:37.889,0:08:43.979 So the other thing, the major portion is extensions. 0:08:43.979,0:08:48.490 So in extensions, Sinatra provides extensions[br]to, let's say 0:08:48.490,0:08:51.470 you want to define a new route, so you 0:08:51.470,0:08:53.639 can do that by extensions. I'll demonstrate[br]a small 0:08:53.639,0:08:59.129 thing, a small route actually. So I created[br]this 0:08:59.129,0:09:01.360 extension today. 0:09:01.360,0:09:03.429 So I have a module Sinatra, I have this 0:09:03.429,0:09:06.970 super module, and this is an extra route.[br]So 0:09:06.970,0:09:11.759 this, the route method is provided by Sinatra[br]base, 0:09:11.759,0:09:14.540 and I'm extending that, so that every, every[br]request 0:09:14.540,0:09:17.939 that you make to this end point, to, with 0:09:17.939,0:09:21.569 a method request of this one, instead of get 0:09:21.569,0:09:26.069 r post, it will return something pretty good. 0:09:26.069,0:09:31.629 So start it up. 0:09:31.629,0:09:38.629 And yeah. So that's what it does. 0:09:44.249,0:09:51.129 So, you don't have to clap for that, it's 0:09:51.129,0:09:51.839 lame. 0:09:51.839,0:09:55.240 So the basic difference between these two[br]is that 0:09:55.240,0:09:57.879 this is, this is an extension of Sinatra.[br]This 0:09:57.879,0:10:00.100 route is not defined but we are defining that 0:10:00.100,0:10:00.420 route. 0:10:00.420,0:10:02.800 We are using the things that are provided[br]by 0:10:02.800,0:10:06.470 Sinatra and we are basically extending. So[br]the register 0:10:06.470,0:10:10.550 method is a method provided by Sinatra where[br]all, 0:10:10.550,0:10:13.360 whatever module you define have to be registered[br]with 0:10:13.360,0:10:18.850 Sinatra, so that every app that you use, and, 0:10:18.850,0:10:23.309 like this. So every app that you use, you 0:10:23.309,0:10:26.480 just call register Sinatra, that one, and[br]I'll, I've 0:10:26.480,0:10:30.949 defined my route instead of get slash, I have 0:10:30.949,0:10:34.199 used doge and it returns this. 0:10:34.199,0:10:38.689 So the basic difference is that it's, like[br]you, 0:10:38.689,0:10:41.629 if you want to extend so there are these 0:10:41.629,0:10:47.860 two things, and I think that's it. 0:10:47.860,0:10:54.860 VINASH: Yeah, so. This Billard, I am Vinash.[br]We 0:10:55.019,0:10:58.699 are from Mumbai, RV?? [00:10:57] So I just[br]want 0:10:58.699,0:11:00.559 to tell all of you guys, and introduce us 0:11:00.559,0:11:01.720 too, we're from Mumbai RV?? [00:11:01]. 0:11:01.720,0:11:04.720 We have total counted seven meet ups in all. 0:11:04.720,0:11:06.720 So we are on our way to have a 0:11:06.720,0:11:10.369 big meet up soon. Maybe in June or later. 0:11:10.369,0:11:13.399 But till now we have a frequent audience of 0:11:13.399,0:11:16.179 ten to twenty people, always there. We have[br]one 0:11:16.179,0:11:18.970 or two talks, we have a single hack session 0:11:18.970,0:11:21.329 once. That was for Brails?? [00:11:19] 0:11:21.329,0:11:24.949 We are not going to push anything, but we 0:11:24.949,0:11:28.569 are able to discuss a few things and we 0:11:28.569,0:11:32.189 wrote entire cookies, et cetera et al. Everyone[br]knows. 0:11:32.189,0:11:35.110 So there is a mindset about Bombai that Bombai 0:11:35.110,0:11:36.569 is partially, Bombai has very few jobs and[br]all 0:11:36.569,0:11:40.239 that stuff. But I can say that nowadays with 0:11:40.239,0:11:44.939 so many startups starting up, the salaries[br]are very 0:11:44.939,0:11:47.800 good I guess, currently. 0:11:47.800,0:11:52.079 So I guess I will tell you that. You 0:11:52.079,0:11:54.579 should ship to Bombai if you are born in 0:11:54.579,0:11:56.259 part of Bombai, you should definitely come[br]back to 0:11:56.259,0:12:00.040 Bombai rather than going to Bangalore and[br]Pume, because, 0:12:00.040,0:12:00.449 yeah. 0:12:00.449,0:12:07.449 I know! The intellectual level at Bombai is[br]a 0:12:07.559,0:12:10.720 little low as compared to Bangalore or Pume,[br]but 0:12:10.720,0:12:13.670 we need to change that, and we want guys 0:12:13.670,0:12:16.119 like you to come back to Bombai who were 0:12:16.119,0:12:18.660 born in a part of Bombai and increase the 0:12:18.660,0:12:20.799 ?? [00:12:18] of Bombai to a level which can 0:12:20.799,0:12:23.529 compete with Bangalore and Pume itself. 0:12:23.529,0:12:26.129 So I want Billard to say a few words 0:12:26.129,0:12:29.009 about the same. 0:12:29.009,0:12:31.720 BILLARD: Actually I just interacted with some[br]of the 0:12:31.720,0:12:35.259 peers here, and I found out that they didn't 0:12:35.259,0:12:38.029 even know that there's are some developers[br]in Bombai 0:12:38.029,0:12:40.850 like who know Rails or something. So we just 0:12:40.850,0:12:44.569 came here to give a lightning talk that, oh, 0:12:44.569,0:12:47.549 dude we are, we exist there, there are some 0:12:47.549,0:12:49.879 people who are trying to make a dent, not 0:12:49.879,0:12:53.279 in the, not in the universe, but at least 0:12:53.279,0:12:54.079 in Bombai. 0:12:54.079,0:12:57.769 To, so we are that's what we are putting 0:12:57.769,0:13:01.439 all our efforts, like, and that's what, as[br]my- 0:13:01.439,0:13:05.100 as Vanash said that we are about to complete 0:13:05.100,0:13:09.699 first annual city for Mombai. I RV?? [00:13:11].[br]That's 0:13:09.699,0:13:12.329 what we are now making the name out of 0:13:12.329,0:13:12.980 it. 0:13:12.980,0:13:16.819 So we are created at least a small event, 0:13:16.819,0:13:22.170 which, so, which we all are planning, looking[br]forward 0:13:22.170,0:13:26.999 to. So that's all we have. And Bombai RV 0:13:26.999,0:13:30.629 is alive and it will be. 0:13:30.629,0:13:35.549 SATYA KALLURI: Hey guys, this is Satya, I'm[br]from 0:13:35.549,0:13:37.759 Hadribad?? [00:13:36], and you know, I basically[br]want to 0:13:37.759,0:13:40.230 talk about technology meetups. I've been part[br]of some 0:13:40.230,0:13:43.369 technology meetups for quite some time. And[br]you know 0:13:43.369,0:13:45.139 to be very straight, I was a little upset 0:13:45.139,0:13:46.579 with the way they go. 0:13:46.579,0:13:48.769 So, and fortunately, you know, I've been in[br]touch 0:13:48.769,0:13:50.769 with some of the technologies these days,[br]and they've 0:13:50.769,0:13:53.019 revived the hope in me, so I just wanted 0:13:53.019,0:13:55.259 to share some of my learnings, and how can 0:13:55.259,0:13:58.569 we make better use of these technology meetups. 0:13:58.569,0:14:02.329 Oh, by the way, I'm Satya Kalluri and our 0:14:02.329,0:14:04.970 group is @HydRuby, so you can follow us there. 0:14:04.970,0:14:06.439 So the first thing is I believe there are 0:14:06.439,0:14:08.799 two kinds of meetups in the universe. There[br]are 0:14:08.799,0:14:10.429 two really kind of different meetups. 0:14:10.429,0:14:12.999 A) is technology meetups, which we need to[br]consider 0:14:12.999,0:14:15.519 them as absolutely local. It's like you and[br]me 0:14:15.519,0:14:17.299 catch up together in the next house or the 0:14:17.299,0:14:19.259 next coffee house. It doesn't have to be as 0:14:19.259,0:14:21.329 big as this in total area?? [00:14:21]. So[br]it's 0:14:21.329,0:14:23.319 a technology meetup where you know what, it's[br]a 0:14:23.319,0:14:26.549 local thing. And you know what, the, and it's 0:14:26.549,0:14:28.910 focused. It doesn't have to be as wide agenda 0:14:28.910,0:14:29.549 as this. 0:14:29.549,0:14:31.540 It could be as simple as a bug-a-thon. It 0:14:31.540,0:14:33.639 could be as simple as learning a new gem, 0:14:33.639,0:14:36.299 or it could be anything basically. A small[br]local, 0:14:36.299,0:14:36.999 focused. 0:14:36.999,0:14:39.179 And there are other ones which are technology[br]conferences. 0:14:39.179,0:14:41.079 These are bigger ones, where in what, all,[br]it's 0:14:41.079,0:14:42.790 like one of the organizers said, you know[br]like, 0:14:42.790,0:14:45.720 made of communities and sub communities. Atoms[br]and molecules, 0:14:45.720,0:14:46.249 right. 0:14:46.249,0:14:49.239 So these small technology meetups, they come[br]up together 0:14:49.239,0:14:52.920 and create these bigger conferences, regional[br]ones, which have 0:14:52.920,0:14:54.309 a wider agenda. 0:14:54.309,0:14:56.600 So my problem is about the technology meetups.[br]The 0:14:56.600,0:14:58.869 conferences are going good. GCRC here is an[br]example, 0:14:58.869,0:15:01.389 they're doing an awesome job. But how can[br]we 0:15:01.389,0:15:03.519 improve the technology meetups. You know whenever[br]I catch 0:15:03.519,0:15:06.079 up with folks at the lunch place or something, 0:15:06.079,0:15:08.100 the majority of them say, oh, you know, my 0:15:08.100,0:15:10.069 meetup gets only two attendees, three attendees. 0:15:10.069,0:15:11.629 You know that over a period of time I've 0:15:11.629,0:15:13.989 just found that certain items, if, which if[br]we 0:15:13.989,0:15:16.179 address them properly I think the local technology[br]meetups 0:15:16.179,0:15:18.160 are gonna be kickass. 0:15:18.160,0:15:19.629 So. 0:15:19.629,0:15:23.470 So. Basically I wanted to let you know what 0:15:23.470,0:15:25.619 a technology meetup is, first of all, and[br]why 0:15:25.619,0:15:26.660 are they for? 0:15:26.660,0:15:29.859 Technology meetups are absolutely for techies[br]to collaborate, learn, 0:15:29.859,0:15:32.519 contribute, share knowledge. So these are[br]local ones. So 0:15:32.519,0:15:34.309 do understand, these are the only for those[br]techies. 0:15:34.309,0:15:36.679 They're not for the job seekers and not the 0:15:36.679,0:15:38.749 employers. Whenever there's a technology meetup[br]going, and if 0:15:38.749,0:15:40.499 you need a Rails developer, please do not[br]go 0:15:40.499,0:15:41.069 there. 0:15:41.069,0:15:42.739 And if you're looking for a job, don't go 0:15:42.739,0:15:45.100 there. Just, let's not pollute these small[br]local meetups. 0:15:45.100,0:15:48.160 They have for technology peers to basically[br]go there, 0:15:48.160,0:15:51.429 share knowledge and solve each others problems[br]and become 0:15:51.429,0:15:52.579 better in technology. 0:15:52.579,0:15:54.829 You know the last two are acceptable for conferences 0:15:54.829,0:15:57.369 like these, where, you know, these are big[br]things 0:15:57.369,0:16:00.259 where there are networking opportunities and[br]tech meetups and 0:16:00.259,0:16:03.410 everything. But for local meetups let's stick[br]to technology. 0:16:03.410,0:16:05.910 That way everybody who comes, you know what,[br]knows 0:16:05.910,0:16:08.329 what's going to happen. It's technology. This[br]is Rails, 0:16:08.329,0:16:10.970 which I love. I come here to write, to 0:16:10.970,0:16:12.449 learn Rails. 0:16:12.449,0:16:14.859 And while participating, you know what, these,[br]the following 0:16:14.859,0:16:17.119 six things are the most important things which[br]I 0:16:17.119,0:16:18.879 could recommend everybody to follow. 0:16:18.879,0:16:21.149 The first thing is identity. Most of those[br]whom 0:16:21.149,0:16:22.970 I see don't have an identity on Twitter, don't 0:16:22.970,0:16:25.239 have an identity on StackerWorkflow, even[br]meetup I see 0:16:25.239,0:16:27.309 some of them say plus five. Now what the 0:16:27.309,0:16:28.519 heck does plus five mean? 0:16:28.519,0:16:30.549 Not what, who are the other five guys? So 0:16:30.549,0:16:32.160 it would be nice if they identities, because[br]that 0:16:32.160,0:16:34.889 way I might want to communicate with that[br]fifth 0:16:34.889,0:16:38.029 guy. I don't need to contact this first guy. 0:16:38.029,0:16:39.939 So and you are gonna create your identity,[br]somebody 0:16:39.939,0:16:41.809 needs to contact you directly, you know what,[br]it 0:16:41.809,0:16:44.230 creates an open channel, and as one of them, 0:16:44.230,0:16:45.449 one of the speakers said, you know, you are 0:16:45.449,0:16:47.439 going to create and identity and then a brand. 0:16:47.439,0:16:49.279 So this is the first step. So create an 0:16:49.279,0:16:52.299 identity for yourself on Twitter, StackerWorkflow[br]and everything. 0:16:52.299,0:16:54.569 It adds authenticity to the group, you know.[br]Two 0:16:54.569,0:16:56.569 guys, two persons catch up in a meetup doesn't 0:16:56.569,0:16:58.910 make sense. But two plus five is seven, so 0:16:58.910,0:17:01.410 when seven people really catch up in a meetup, 0:17:01.410,0:17:02.919 I think it adds a lot of authenticity to 0:17:02.919,0:17:03.749 the group. 0:17:03.749,0:17:05.559 When you guys have your own facebook account,[br]why 0:17:05.559,0:17:07.750 not have your own StackOverflow account. I[br]don't get 0:17:07.750,0:17:08.429 it. 0:17:08.429,0:17:11.609 The, so the next thing is RSVPs. I see 0:17:11.609,0:17:15.829 many RSVPs, like even our @HydRuby has thirty-five[br]RSVPs, 0:17:15.829,0:17:17.940 but only four of them turned up, so. Take 0:17:17.940,0:17:20.959 your RSVPs seriously because there are people,[br]like, you 0:17:20.959,0:17:22.440 know, they're not awake, and you know all[br]these 0:17:22.440,0:17:26.130 people who take these meetups very seriously,[br]and there 0:17:26.130,0:17:27.770 may not be some, some people who buy beers 0:17:27.770,0:17:28.880 for everybody who come up and- 0:17:28.880,0:17:31.250 When 31 beers are leftover, you know, nobody's[br]gonna 0:17:31.250,0:17:33.830 buy them, so. Please take your RSVP seriously.[br]That 0:17:33.830,0:17:36.950 adds authenticity to the group, OK. 0:17:36.950,0:17:38.450 And the next thing is attendees, you know,[br]don't 0:17:38.450,0:17:40.830 wait for ten or twenty people to really come 0:17:40.830,0:17:43.280 to a meetup. You just need one other guy 0:17:43.280,0:17:45.480 to listen to you and you can create a 0:17:45.480,0:17:48.010 meetup, and you can, guys, can really discuss[br]about 0:17:48.010,0:17:48.830 technology. 0:17:48.830,0:17:50.830 The next thing is StackOverflow, you know,[br]just share 0:17:50.830,0:17:53.310 and contribute. You don't have to really,[br]I mean, 0:17:53.310,0:17:55.270 for you to really become a good meetup guy, 0:17:55.270,0:17:57.600 I think at least spend every day, fifteen[br]minutes 0:17:57.600,0:18:01.200 on StackOverflow. Don't just find answers[br]but answer the 0:18:01.200,0:18:02.980 questions. This I've learned from Swanand.[br]This guy has 0:18:02.980,0:18:05.060 some 6,000 bloody points on StackOverflow.[br]I have some 0:18:05.060,0:18:06.000 twelve hundred, that's it. 0:18:06.000,0:18:07.900 So I've learned from it. So become a better 0:18:07.900,0:18:10.000 contributer. You become really confident,[br]and you'll become a 0:18:10.000,0:18:13.430 different person. You can also contribute[br]at GitHub. If 0:18:13.430,0:18:15.980 you don't know which GitHub module to really[br]contribute, 0:18:15.980,0:18:19.930 go for Codetriage. It gives you good popular[br]libraries 0:18:19.930,0:18:20.790 to really help. 0:18:20.790,0:18:23.130 And, do you have an idea? Just stop working 0:18:23.130,0:18:25.430 on it. First learn better technology and then,[br]you 0:18:25.430,0:18:28.370 know, you can definitely work on the product.[br]And 0:18:28.370,0:18:30.620 the last thing is, like, spread the word.[br]This 0:18:30.620,0:18:33.330 guy's already on me, so. Spread the word.[br]Go 0:18:33.330,0:18:36.070 for Facebook. You can use Facebook too, and[br]you 0:18:36.070,0:18:37.170 can also use Twitter. 0:18:37.170,0:18:39.770 So spread the word and make these technology[br]meetups 0:18:39.770,0:18:40.370 a good thing. 0:18:40.370,0:18:42.210 Cheers guys, thank you. 0:18:42.210,0:18:46.670 SPEAKER: Before I start, big thumbs up for[br]the 0:18:46.670,0:18:49.520 guys who started off. It's great to see, you 0:18:49.520,0:18:53.800 know, technology people, developers who care[br]about social issues. 0:18:53.800,0:18:56.840 And here I am to talk about Milaap, which 0:18:56.840,0:19:00.120 is also a social enterprise. And I just want 0:19:00.120,0:19:01.720 to talk about what Milaap is all about and 0:19:01.720,0:19:05.360 how you can help. 0:19:05.360,0:19:10.660 So Milaap is a Crowdfunding platform for communities[br]in 0:19:10.660,0:19:15.650 need which is powered by Ruby on Rails. So 0:19:15.650,0:19:18.430 we are a hardcore Ruby on Rails shop, and 0:19:18.430,0:19:21.770 we bridge the gap between people who are need 0:19:21.770,0:19:24.810 of help and people who want to help, right. 0:19:24.810,0:19:27.550 So let's quickly look at what that means.[br]So 0:19:27.550,0:19:30.670 I'm sure all of us want to do good. 0:19:30.670,0:19:33.280 We want to help others. But when it comes 0:19:33.280,0:19:37.760 to helping others with financial aid a lot[br]of 0:19:37.760,0:19:41.060 us are hesitant, because we are not sure,[br]you 0:19:41.060,0:19:43.300 know, our hard-earned money, when we give[br]it to 0:19:43.300,0:19:45.360 someone, you know, is it going to be used 0:19:45.360,0:19:47.080 in the right way? Is it the right person 0:19:47.080,0:19:49.300 I'm going to give this money to. 0:19:49.300,0:19:53.020 So Milaap tries to bridge this gap, right.[br]So 0:19:53.020,0:19:56.910 Milaap has a set of profiles uploaded on our 0:19:56.910,0:20:00.480 website, which are across various kind of[br]causes, and 0:20:00.480,0:20:03.010 you can, you can filter through various criteria[br]and 0:20:03.010,0:20:06.130 choose them. And it helps you make an informed 0:20:06.130,0:20:08.670 decision about whom you want to help, right. 0:20:08.670,0:20:11.300 So this is how it brings, it bridges the 0:20:11.300,0:20:13.870 gap between people who want to help and people 0:20:13.870,0:20:16.210 who are in need of help. 0:20:16.210,0:20:18.800 How it works: It's very simple. Just four[br]steps. 0:20:18.800,0:20:21.120 As I said, the first step is, you look 0:20:21.120,0:20:24.570 at the various causes and various filter criterias[br]and 0:20:24.570,0:20:26.370 choose the person you need to help. You want 0:20:26.370,0:20:27.530 to help. 0:20:27.530,0:20:31.060 And make a loan on Milaap website. This is 0:20:31.060,0:20:34.410 just an online payment that you do. The real 0:20:34.410,0:20:37.180 test starts after website. So the whole business[br]is 0:20:37.180,0:20:41.180 about testing transferrency. Can you trust[br]Milaap that the 0:20:41.180,0:20:42.850 money is going in the right hands? 0:20:42.850,0:20:47.290 Another big thing, when it comes to helping[br]is, 0:20:47.290,0:20:51.060 donations - there is this hesitancy that,[br]you know, 0:20:51.060,0:20:53.870 my hard-earned money is going away, whereas[br]what you 0:20:53.870,0:20:56.360 do on Milaap is not a donation but a 0:20:56.360,0:20:59.700 loan. That means you help one person, let's[br]say 0:20:59.700,0:21:01.870 a person needs ten thousand rupees to build[br]a 0:21:01.870,0:21:04.820 toilet. You contribute just 500 rupees out[br]of it, 0:21:04.820,0:21:06.370 but that 500 is not a donation. 0:21:06.370,0:21:09.020 Within a year, month on month, you get back 0:21:09.020,0:21:11.010 your money, and all your 500 rupees back to 0:21:11.010,0:21:14.610 your account within one year's time. And then[br]you 0:21:14.610,0:21:17.820 can utilize the same thing to make an impact 0:21:17.820,0:21:20.970 on someone else's life. This is what we call 0:21:20.970,0:21:22.520 making an impact, again and again with the[br]same 0:21:22.520,0:21:25.800 money. And of course if you start believing[br]in 0:21:25.800,0:21:29.320 the idea, you start putting more, more of[br]money 0:21:29.320,0:21:30.700 in helping others, right. 0:21:30.700,0:21:32.900 So there's the four simple steps. Choose a[br]customer, 0:21:32.900,0:21:36.570 make a loan, get repaid and relend. 0:21:36.570,0:21:39.660 How can you help, right? Of course the obvious 0:21:39.660,0:21:44.090 thing is you know check out the website, if 0:21:44.090,0:21:47.500 you like the idea, like us on Facebook. Tweet 0:21:47.500,0:21:49.800 about us, write about us on your blog. We 0:21:49.800,0:21:51.280 also have a widget which you can put on 0:21:51.280,0:21:53.960 your blog saying that you support Milaap. 0:21:53.960,0:21:57.920 But if you want to do even more, right, 0:21:57.920,0:22:00.700 obviously you can actually be an active participant[br]on 0:22:00.700,0:22:02.820 our website. Go and make a loan to someone 0:22:02.820,0:22:07.590 there today. You could also do something interesting,[br]I 0:22:07.590,0:22:09.570 think one of the best gift ideas that you 0:22:09.570,0:22:11.570 could have is to give a Milaap gift card 0:22:11.570,0:22:12.630 to someone. 0:22:12.630,0:22:14.350 That is you are gifting someone the ability[br]to 0:22:14.350,0:22:20.760 help someone, and repeatedly keep doing it,[br]right. 0:22:20.760,0:22:23.370 Finally you could also start a campaign. If[br]you 0:22:23.370,0:22:25.500 want to go really big, you could adopt a 0:22:25.500,0:22:28.220 particular borrower on the website or adopt[br]a particular 0:22:28.220,0:22:31.610 cause, and decide to raise some funds to impact 0:22:31.610,0:22:34.480 that critical cause. So you can decide to[br]raise 0:22:34.480,0:22:36.600 some money for education. Let's say you're[br]running a 0:22:36.600,0:22:38.080 marathon, you can put out, we can put up 0:22:38.080,0:22:41.830 a page for you and help you raise some 0:22:41.830,0:22:45.050 of money through you, through that event. 0:22:45.050,0:22:49.690 But, right, I'm sure many of you would think, 0:22:49.690,0:22:53.430 this guy's coming here talking about some[br]company, Milaap 0:22:53.430,0:22:55.720 in three, four minutes, why should I go ahead 0:22:55.720,0:22:57.860 and do anything about it, right? So proof[br]of 0:22:57.860,0:22:59.810 the pudding is in it's eating, right. 0:22:59.810,0:23:02.570 So what we want you is to first get 0:23:02.570,0:23:06.090 real, first-hand experience of what Milaap[br]is and how 0:23:06.090,0:23:09.240 it helps people, how much you can trust it, 0:23:09.240,0:23:12.220 how transparant it is. So we are right now 0:23:12.220,0:23:17.720 giving away free credits, free Milaap credits[br]worth 500 0:23:17.720,0:23:20.280 rupees. Anyone who wants to try out what Milaap 0:23:20.280,0:23:23.440 is without spending a buck from your pocket[br]can 0:23:23.440,0:23:29.430 use this gift card, GCRC14, which some of,[br]same 0:23:29.430,0:23:32.550 as our twitter hash tag as well. And you'll 0:23:32.550,0:23:34.390 be able to make a loan on Milaap just 0:23:34.390,0:23:36.670 by using those 500 rupees. 0:23:36.670,0:23:39.180 You just click on lend button and when it 0:23:39.180,0:23:41.030 comes to actually making a payment, just write[br]in 0:23:41.030,0:23:43.680 the coupon and you'll be able to, you are 0:23:43.680,0:23:45.220 good to go, right. 0:23:45.220,0:23:46.760 Thanks a lot. 0:23:46.760,0:23:48.810 V.O.: Thanks Sarish?? [00:23:48]. 0:23:48.810,0:23:51.530 SORU: Houston, can you copy me? 0:23:51.530,0:23:56.550 OK. So I don't have slides. So I'm Soru. 0:23:56.550,0:24:00.400 I'm nineteen. I'm still in college. So over[br]the 0:24:00.400,0:24:02.310 last summer I did a Google Summer of Code 0:24:02.310,0:24:04.670 with a ?? project [00:24:03]. And I built[br]this 0:24:04.670,0:24:06.790 GitHub for designers, so I thought I would[br]teach 0:24:06.790,0:24:09.470 that here so that you could know about it, 0:24:09.470,0:24:12.050 and I could, I saw that there are some 0:24:12.050,0:24:15.810 design-oriented start-ups so they could probably[br]give me feedback. 0:24:15.810,0:24:19.450 So the idea is that, like, when designers[br]collaborate, 0:24:19.450,0:24:23.070 especially opensource designers, they go to[br]mailing lists and 0:24:23.070,0:24:27.260 they share links, and so, let's say, Coby[br]decides 0:24:27.260,0:24:30.780 to make, make this banner. So he starts with, 0:24:30.780,0:24:33.640 he starts with the logo, and he puts it 0:24:33.640,0:24:35.530 on MGo?? [00:24:34] and shares a link on the 0:24:35.530,0:24:38.170 mailing list, and people go plus one, cool,[br]or 0:24:38.170,0:24:39.430 this is awesome. 0:24:39.430,0:24:41.110 And everybody gets that link. It's a pain[br]in 0:24:41.110,0:24:45.020 the ass. So like, this is kind of very, 0:24:45.020,0:24:48.400 it's like spam, it's also annoying, and there's[br]no 0:24:48.400,0:24:51.340 nice way to understand designer feedback. 0:24:51.340,0:24:55.490 So how it helps is, so you can, GlitterGallery 0:24:55.490,0:24:57.510 is not live right now. But I'll get it 0:24:57.510,0:24:59.450 up soon. So right now what you can do, 0:24:59.450,0:25:01.690 there is, you can go create a new design 0:25:01.690,0:25:04.170 project just like GitHub and you can create[br]SVG 0:25:04.170,0:25:07.770 files, or you can create, you can upload your 0:25:07.770,0:25:10.310 own SVGs or PNG or JPEG or whatever. 0:25:10.310,0:25:13.020 So after that, so let's say he created the 0:25:13.020,0:25:15.800 same thing inverted in color, and he can post 0:25:15.800,0:25:17.410 it there and he can share links with his 0:25:17.410,0:25:20.860 friends and anybody else on the app can log 0:25:20.860,0:25:23.800 in and he can comment over there, so. So 0:25:23.800,0:25:25.550 cool, plus one and all that. 0:25:25.550,0:25:27.900 So some comments make sense. Because these[br]comments are 0:25:27.900,0:25:30.050 nice, they make you feel good. But there are 0:25:30.050,0:25:32.590 certain comments which could, which could[br]say that, OK, 0:25:32.590,0:25:34.170 if you're going to project this, this won't[br]be 0:25:34.170,0:25:36.790 visible properly. So he can mark said comments[br]as 0:25:36.790,0:25:39.170 issues. They go to an issue tracker, and somebody 0:25:39.170,0:25:42.440 else can forward the project, so it becomes[br]theirs. 0:25:42.440,0:25:44.410 They can make changes to it and send back 0:25:44.410,0:25:46.730 poll requests to the original designer. 0:25:46.730,0:25:49.810 So he can, you know, pull back and. So 0:25:49.810,0:25:53.110 design projects can flourish that way. And[br]also we 0:25:53.110,0:25:56.680 have a feature called GlitterPosts. So something[br]like, I 0:25:56.680,0:25:59.270 don't know, maybe like medium, where you can[br]go 0:25:59.270,0:26:02.160 and explain what, what design process you[br]went through. 0:26:02.160,0:26:05.110 So every time you make a new change, anytime 0:26:05.110,0:26:07.100 you update, there is a commit happening in[br]the 0:26:07.100,0:26:07.550 background. 0:26:07.550,0:26:09.710 So we use the great library provided by GitHub. 0:26:09.710,0:26:12.600 They use the same thing. So every instance[br]has 0:26:12.600,0:26:15.460 a commit idea and all that. So you can 0:26:15.460,0:26:17.560 reference comments, so you can go there and[br]say 0:26:17.560,0:26:20.040 I started with this file, this is the idea 0:26:20.040,0:26:23.540 behind it, and now, next I did this, this 0:26:23.540,0:26:24.450 is how it went. 0:26:24.450,0:26:26.530 So it also serves as a nice way to 0:26:26.530,0:26:29.730 learn, also maybe a nice way to judge designers' 0:26:29.730,0:26:33.240 thought process. So, so I would just like[br]to 0:26:33.240,0:26:35.590 ask if any of you work with designers or 0:26:35.590,0:26:38.480 are designers yourselves, what could be some[br]better ways 0:26:38.480,0:26:41.400 to collaborate, and how else could I extend[br]this 0:26:41.400,0:26:41.550 project. 0:26:41.550,0:26:44.130 By the way, this is opensource. And next summer 0:26:44.130,0:26:45.740 for Google Summer of Code we might be taking 0:26:45.740,0:26:48.120 around two people. So if there are any students 0:26:48.120,0:26:51.020 here who would like to contribute, you can[br]ping 0:26:51.020,0:26:54.700 me later. Thanks. 0:26:54.700,0:27:00.030 SPEAKER: Thanks, Qwinik, for the opportunity[br]to be here, 0:27:00.030,0:27:02.870 first of all, because they sent us here just 0:27:02.870,0:27:06.200 to, to sponsor and represent Qwiniks. 0:27:06.200,0:27:09.600 It happens that I land in this company, and 0:27:09.600,0:27:13.650 I start to work with them as a programmer, 0:27:13.650,0:27:16.610 and I have a lot of difficulties to, to 0:27:16.610,0:27:21.750 adopt my German mindset to the Indian mindset.[br]And 0:27:21.750,0:27:26.309 I'm still having difficulties. I'm still not[br]understanding things, 0:27:26.309,0:27:28.990 and I'm trying, deeply. 0:27:28.990,0:27:33.730 So, but I want to advise, or talk about, 0:27:33.730,0:27:38.170 what, what was the things that I've faced[br]here, 0:27:38.170,0:27:41.100 and first thing that I want to advise, and, 0:27:41.100,0:27:45.520 is that this is opensource work. Opensource[br]work means 0:27:45.520,0:27:48.180 that there is no one willing to teach you. 0:27:48.180,0:27:51.390 You have to teach by yourself. And the code 0:27:51.390,0:27:54.330 is there. Please open libraries and write[br]libraries. Not 0:27:54.330,0:27:57.030 write what is the code inside, and not what 0:27:57.030,0:28:00.430 is the documentation says, because documentation[br]can be outdated. 0:28:00.430,0:28:03.440 So with this I will advise that you need 0:28:03.440,0:28:05.970 to handle your own will and what is the 0:28:05.970,0:28:09.890 consequences. So you need to be able to know 0:28:09.890,0:28:12.520 the difference between what you want and what[br]the 0:28:12.520,0:28:14.809 project wants. This is for people that works[br]either 0:28:14.809,0:28:18.059 for projects, companies or by freelancers. 0:28:18.059,0:28:20.809 And you need to think about the consequences.[br]You 0:28:20.809,0:28:23.350 need to think about what is the, what is 0:28:23.350,0:28:25.610 the impact of this code, what is the maintenance 0:28:25.610,0:28:28.530 of this code, and what is the purpose of 0:28:28.530,0:28:31.010 this code. So think about that before writing[br]the 0:28:31.010,0:28:32.490 first line of code. 0:28:32.490,0:28:35.350 The second thing is setting up your priorities.[br]So 0:28:35.350,0:28:41.780 I found that it's somehow some people wants[br]to 0:28:41.780,0:28:45.420 rush to the finish, just to find a solution, 0:28:45.420,0:28:48.420 and most of the time without understanding[br]what the 0:28:48.420,0:28:49.830 problem is. 0:28:49.830,0:28:53.220 I spent two, three days thinking what the[br]real 0:28:53.220,0:28:55.390 problem is. What is the thing that you have 0:28:55.390,0:28:58.570 to solve, and then solve it. It's become,[br]it 0:28:58.570,0:29:03.980 will become easier in time. Mostly for maintainers. 0:29:03.980,0:29:06.680 They other one will be, be humble. Not be 0:29:06.680,0:29:09.590 humble in the streets saying, I'm not so,[br]or 0:29:09.590,0:29:12.740 not so, be humble with your code. So don't 0:29:12.740,0:29:15.410 try to solve big problems. Solve the small[br]problems. 0:29:15.410,0:29:17.710 So don't focus on the solution and the feature 0:29:17.710,0:29:20.510 that you want to generate. Focus in the method 0:29:20.510,0:29:23.780 that you're generate in. Making it consistent,[br]make it 0:29:23.780,0:29:25.110 very small. 0:29:25.110,0:29:27.309 I am try to go because there is a 0:29:27.309,0:29:31.210 lot of the - I will jump the career 0:29:31.210,0:29:34.200 of the programming to the culture one. I'm[br]sorry, 0:29:34.200,0:29:36.940 I will say. Clients are not gods. So you 0:29:36.940,0:29:40.610 are, you can be against them. It's allowed.[br]You're 0:29:40.610,0:29:42.809 allowed to be against them. 0:29:42.809,0:29:47.630 Meaning I, don't want to take this seriously,[br]but 0:29:47.630,0:29:50.800 meaning, meaning with this, you are allowed[br]to say 0:29:50.800,0:29:55.710 no, you are allowed to say scopes. Saying[br]we 0:29:55.710,0:29:59.250 are not allowed to do this. We need more 0:29:59.250,0:30:03.320 time or we need this resources that we don't 0:30:03.320,0:30:07.160 have. So please take in mind this because[br]this 0:30:07.160,0:30:10.450 is a huge impact for the company owners, for 0:30:10.450,0:30:12.590 the people in project managers. 0:30:12.590,0:30:16.710 Project managers are waiting, expecting something[br]from you, and 0:30:16.710,0:30:20.200 if you will not deliver on time, or what 0:30:20.200,0:30:24.110 they're expecting, you're breaking big rules.[br]It's not a 0:30:24.110,0:30:26.700 small thing. You're breaking big, big rules. 0:30:26.700,0:30:30.990 With this, I want to add, you need to 0:30:30.990,0:30:34.680 be predictable. Whatever you do make it predictable[br]for 0:30:34.680,0:30:36.960 the project manager, for the company owner,[br]for the 0:30:36.960,0:30:39.740 client. Meaning if you're doing something[br]that you know 0:30:39.740,0:30:42.220 that will be wrong, just tell him, it will 0:30:42.220,0:30:45.600 be wrong. But make it predictable. So don't[br]make 0:30:45.600,0:30:49.730 people wait for you, to see what is, what 0:30:49.730,0:30:51.960 it will happen. One minute more. 0:30:51.960,0:30:55.490 OK, I just jump down to, so I will 0:30:55.490,0:30:59.080 say after coming here, I'm just seeing the[br]huge 0:30:59.080,0:31:02.500 effort you are doing to work in opensource.[br]I 0:31:02.500,0:31:06.130 have seen sadly for me that some books are 0:31:06.130,0:31:10.710 more expensive than what juniors earn in one[br]month. 0:31:10.710,0:31:15.400 So that's brokes my heart, some way, because[br]I 0:31:15.400,0:31:18.520 am able to buy in Europe we're able to 0:31:18.520,0:31:22.870 buy books as something, without side effects.[br]And here 0:31:22.870,0:31:26.720 people that ?? [00:31:25], for them it's impossible. 0:31:26.720,0:31:29.750 I mean the book is two, is twice what 0:31:29.750,0:31:32.660 they earn a month. So with that, it is 0:31:32.660,0:31:35.330 impossible, I know that it's impossible to[br]learn. So 0:31:35.330,0:31:38.490 I really admire the courage that you have[br]to 0:31:38.490,0:31:40.940 come here. I know the price that you're paying 0:31:40.940,0:31:43.080 for coming here. I know the effort that you're 0:31:43.080,0:31:46.220 doing and I will like to say that, I 0:31:46.220,0:31:48.290 really admire that. 0:31:48.290,0:31:50.750 And yeah. My time is over. This guy has 0:31:50.750,0:31:54.330 an android with him, so I better run. 0:31:54.330,0:31:58.260 SPEAKER: OK, so I'll, I'll just go over this 0:31:58.260,0:32:01.610 and then see if I can- 0:32:01.610,0:32:05.720 So, what I'm going to do is I, the 0:32:05.720,0:32:07.440 time I have, I'll try to sow some doubts 0:32:07.440,0:32:09.300 in your mind, and then make you go back 0:32:09.300,0:32:11.540 and think about some of the things that you've 0:32:11.540,0:32:12.960 believed about. 0:32:12.960,0:32:16.450 So like I'll talk about my experience working[br]with 0:32:16.450,0:32:20.130 ActiveRecord and why I think it's a very bad 0:32:20.130,0:32:22.620 thing for building business applications. 0:32:22.620,0:32:25.400 So ActiveRecord is good when you're building[br]web applications, 0:32:25.400,0:32:28.800 shallow web applications that have a database[br]and some 0:32:28.800,0:32:33.270 rich UI on top of it. But when you 0:32:33.270,0:32:35.929 are trying to build business applications[br]that have a 0:32:35.929,0:32:38.980 lot of heavy logic, it's not a good, a 0:32:38.980,0:32:40.240 good thing to do. 0:32:40.240,0:32:42.390 I'll briefly talk about why it's not such[br]a 0:32:42.390,0:32:46.510 good thing. One of the most problematic things[br]about 0:32:46.510,0:32:49.770 ActiveRecord is it's so much coupled with[br]databases. So 0:32:49.770,0:32:51.950 when I am trying to solve a problem that 0:32:51.950,0:32:55.740 is very business logic heavy, I tend to put 0:32:55.740,0:32:58.220 things that are difficult to, positions that[br]are difficult 0:32:58.220,0:32:59.660 to reverse later. 0:32:59.660,0:33:02.860 The database schema is something that is very[br]difficult 0:33:02.860,0:33:05.230 to reverse. ActiveRecord makes you do that[br]upfront. Any 0:33:05.230,0:33:08.900 model that is tied to ActiveRecord, you can't[br]write 0:33:08.900,0:33:10.809 this without connecting to database and all[br]that. We 0:33:10.809,0:33:12.600 need to define schema up front. 0:33:12.600,0:33:17.640 Which I think is troublesome. So it kind of 0:33:17.640,0:33:21.770 makes it difficult to decouple the core business[br]logic 0:33:21.770,0:33:24.030 from the framework. Most of the stuff you're[br]writing 0:33:24.030,0:33:26.480 is tightly coupled with the framework. Something[br]new comes 0:33:26.480,0:33:28.730 up, you need to rewrite the entire thing.[br]There's 0:33:28.730,0:33:31.770 no, nothing that can you, you can take to 0:33:31.770,0:33:35.210 that new, new framework. 0:33:35.210,0:33:40.190 There other things, like, so whenever you[br]encounter situations 0:33:40.190,0:33:43.000 which were not thought of when the framework[br]was 0:33:43.000,0:33:46.070 designed, there are no points that allow you[br]to 0:33:46.070,0:33:49.260 extend. There's no easy way to customize the[br]ID 0:33:49.260,0:33:53.590 generator, logic. There's no easy way to incorporate[br]composite 0:33:53.590,0:33:55.790 keys. So the project I was working on,w e 0:33:55.790,0:34:00.760 needed to use mySQL partitions. So I can't[br]use 0:34:00.760,0:34:02.420 mySQL ID generation. I have to use auto composite 0:34:02.420,0:34:03.210 keys. 0:34:03.210,0:34:04.700 And there was no easy way of doing it. 0:34:04.700,0:34:07.860 There's a plugin that provides composite key[br]support, if 0:34:07.860,0:34:10.099 you go look at the implementation of that,[br]you'd 0:34:10.099,0:34:13.168 be scared to use it. So it's like, gorilla 0:34:13.168,0:34:16.139 patching - monkey patching to the extreme.[br]So it 0:34:16.139,0:34:21.309 kind of like highlights some of the problems.[br]How 0:34:21.309,0:34:24.609 the code to framework has been written. 0:34:24.609,0:34:27.379 And there are other features that I like and 0:34:27.379,0:34:30.399 other form mapping?? frameworks [00:34:29].[br]Like you load a 0:34:30.399,0:34:32.440 bunch of objects, do something on it, at the 0:34:32.440,0:34:36.099 end they all get persisted to the database.[br]It's 0:34:36.099,0:34:39.929 automatic, dirty checking transaction right[br]behind. There's something called 0:34:39.929,0:34:42.710 a persistence data utility. I create an order,[br]order 0:34:42.710,0:34:44.339 line items, all this stuff. 0:34:44.339,0:34:46.998 I create save and it saves everything. So[br]limited 0:34:46.998,0:34:48.609 support for things like that. 0:34:48.609,0:34:51.690 These features are very important when you're[br]trying to 0:34:51.690,0:34:54.349 follow these practices, domain-driven design,[br]so you need to 0:34:54.349,0:34:57.099 work in terms of aggragates, so you need to 0:34:57.099,0:35:00.289 decouple your persistence logic from your[br]busienss logic. All 0:35:00.289,0:35:03.480 that is very, very hard to do if you're 0:35:03.480,0:35:04.140 using ActiveRecord. 0:35:04.140,0:35:07.499 So there are some alternatives. 0:35:07.499,0:35:09.549 So datamapper is a framework, but I think[br]it's 0:35:09.549,0:35:13.749 become stagnant. There's a new version of[br]it called 0:35:13.749,0:35:15.309 Ruby?? [00:35:13]. I don't see a release for[br]that 0:35:15.309,0:35:17.380 as yet. So those are some alternatives that[br]you 0:35:17.380,0:35:19.480 can look at. 0:35:19.480,0:35:25.239 Or, yeah. Look at something in other languages.[br]So 0:35:25.239,0:35:27.319 these are based on my observations of working[br]with 0:35:27.319,0:35:29.900 ActiveRecord for the last five months, and[br]I'm comparing 0:35:29.900,0:35:34.390 it with eight years I've spent working with[br]Hibernate, 0:35:34.390,0:35:39.619 and this looks like a toy compared to what 0:35:39.619,0:35:41.690 that can do. 0:35:41.690,0:35:43.059 Thank you. 0:35:43.059,0:35:45.359 NIRANJAN PARANJAPE: So, a few really good[br]talks. Heavy 0:35:45.359,0:35:45.509 talks. I'm gonna keep this light. 0:35:45.509,0:35:48.700 So any - talk abuot continous learning. 0:35:48.700,0:35:50.499 But before going there I want to talk about 0:35:50.499,0:35:51.749 what happens if you don't learn continuously. 0:35:51.749,0:35:53.680 So we have been doing interviews for quite[br]some 0:35:53.680,0:35:56.470 time. And these are a few gems I have 0:35:56.470,0:35:57.720 heard while doing interviews. 0:35:57.720,0:36:00.710 So I asked a question: Which programming language[br]do 0:36:00.710,0:36:01.989 you like? 0:36:01.989,0:36:04.499 Imagine the answer - come on. 0:36:04.499,0:36:05.569 AUDIENCE: Ruby! 0:36:05.569,0:36:08.999 N.P.: No. I program in Rails. 0:36:08.999,0:36:14.539 Go read RubyonRails dot org. You'll find something[br]different. 0:36:14.539,0:36:17.220 Someone asked me, why shouldn't I use GOTO? 0:36:17.220,0:36:19.499 After all language supports it. 0:36:19.499,0:36:22.170 Do you know anything about cyclomatic complexity? 0:36:22.170,0:36:24.470 Do you know what other feature language supports[br]which 0:36:24.470,0:36:26.970 are really bad programming constructs and[br]you should generally 0:36:26.970,0:36:27.259 avoid? 0:36:27.259,0:36:30.269 Go read about that. 0:36:30.269,0:36:32.700 So I started the interview. I spoke about[br]like, 0:36:32.700,0:36:34.489 OK we have been hearing a lot about, you 0:36:34.489,0:36:36.529 should ask skinny controllers and fat models,[br]and there 0:36:36.529,0:36:37.869 was a huge buzz about it. 0:36:37.869,0:36:40.099 Then we went and said that, no we actually 0:36:40.099,0:36:42.029 need thin models. 0:36:42.029,0:36:43.420 So where to I write my business logic. 0:36:43.420,0:36:45.529 And I wrote a response. Helpers. 0:36:45.529,0:36:50.589 I asked someone, how do you scale your application? 0:36:50.589,0:36:53.980 I got a response: I don't have to, I 0:36:53.980,0:36:55.559 deploy in Cloud. 0:36:55.559,0:36:58.970 I asked someone, can you talked about GC? 0:36:58.970,0:37:02.019 Oh, GC, garbage compiler. Let's talk about[br]it. 0:37:02.019,0:37:06.489 I asked someone, why is encapsulation important? 0:37:06.489,0:37:09.930 I heard, because the book says data security[br]is 0:37:09.930,0:37:10.390 important. 0:37:10.390,0:37:14.119 And, last noted, but not the least - I 0:37:14.119,0:37:15.989 have heard this, actually. 0:37:15.989,0:37:18.789 I don't believe in learning in my personal[br]time, 0:37:18.789,0:37:21.579 because I believe in work-life balance. Now,[br]my answer 0:37:21.579,0:37:24.369 to that person is, this is the doctor's roadside. 0:37:24.369,0:37:26.779 Are you going to go to him, or are 0:37:26.779,0:37:28.230 you going to go to him? 0:37:28.230,0:37:30.650 You want your doctor to continuously learn[br]and understand 0:37:30.650,0:37:33.950 his medical practices, and essentially keep[br]up with the 0:37:33.950,0:37:37.829 latest technology. You are a software programmer.[br]You are 0:37:37.829,0:37:39.769 You cannot afford to fall behind the scene.[br]You 0:37:39.769,0:37:40.900 have to keep learning. 0:37:40.900,0:37:43.049 How do you keep learning? Lots of books are 0:37:43.049,0:37:45.930 out there. How many of you have read Pragmatic 0:37:45.930,0:37:47.749 Programmer's Journeyman to Masterman? 0:37:47.749,0:37:50.650 How many of you have read it twice? 0:37:50.650,0:37:54.849 This is a book you should read every year. 0:37:54.849,0:38:00.109 It's a brilliant book. Coding Honor. Clear[br]coding. Wonderful 0:38:00.109,0:38:05.210 books. Read different blogs. Learn different[br]language or paradigm, 0:38:05.210,0:38:07.259 because what you learn there, you can essentially[br]translate 0:38:07.259,0:38:10.950 it into your understanding of programming[br]itself, and maybe 0:38:10.950,0:38:14.049 bring some parts in your actual code. 0:38:14.049,0:38:16.589 But just reading these things are not important.[br]Understand 0:38:16.589,0:38:18.910 the concept behind is important. Where do[br]you understand 0:38:18.910,0:38:20.069 the concept? 0:38:20.069,0:38:21.660 Maybe you can go to, read c2 dot com. 0:38:21.660,0:38:23.759 How many people know that? What is c2 dot 0:38:23.759,0:38:24.210 com? 0:38:24.210,0:38:26.609 It's a first Wiki. And then maybe you can 0:38:26.609,0:38:29.089 go to c2 dot com. And maybe you can 0:38:29.089,0:38:30.259 go to c2 dot com again, because that's a 0:38:30.259,0:38:33.779 brilliant, brilliant site. 0:38:33.779,0:38:36.039 And most importantly, contribute to opensource.[br]We hear a 0:38:36.039,0:38:39.119 lot about hey, you should contribute to opensource[br]because, 0:38:39.119,0:38:42.210 you know, give back to the community, it's[br]fun. 0:38:42.210,0:38:44.640 But there is one major aspect of contributing[br]to 0:38:44.640,0:38:47.200 opensource that's just learning, self-learning.[br]And that is something 0:38:47.200,0:38:48.690 which I have done a lot. 0:38:48.690,0:38:51.579 How do you start? You start by reading code. 0:38:51.579,0:38:53.259 Read what other people are writing. 0:38:53.259,0:38:57.119 That's the first step in understanding how[br]to write 0:38:57.119,0:38:58.680 better code. 0:38:58.680,0:39:01.739 Essentially it allows you to pair with good[br]people, 0:39:01.739,0:39:04.390 across the globe, and get their feedback about[br]your 0:39:04.390,0:39:07.150 code. Talk to them about their design, their[br]understanding 0:39:07.150,0:39:10.739 of programming. So it's a wonderful tool. 0:39:10.739,0:39:12.549 Find a mentor if possible, and just, don't[br]just 0:39:12.549,0:39:15.150 stop there. You have to actually go and become 0:39:15.150,0:39:17.859 a mentor and teach someone what you have learned. 0:39:17.859,0:39:24.859 So yeah. That's it.