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