1 00:00:23,000 --> 00:00:27,000 SPEAKER 1: My name is Smith. I work at Flipkart. 2 00:00:27,050 --> 00:00:29,789 SPEAKER 2: Hi guys. I'm Tri Hari??. I 3 00:00:29,789 --> 00:00:31,420 am a partner at Nilenso. 4 00:00:31,420 --> 00:00:34,940 S.1.: OK, we are going to talk about impact. 5 00:00:34,940 --> 00:00:36,510 So what do we mean? 6 00:00:36,510 --> 00:00:38,980 So let's start with a question. 7 00:00:38,980 --> 00:00:43,789 As programmer, what are the problem we face? So 8 00:00:43,789 --> 00:00:47,140 looking at this, aside from that, you know, maybe, 9 00:00:47,140 --> 00:00:50,160 in the worst case we have to quickly fix 10 00:00:50,160 --> 00:00:54,170 a bug on production, or maybe just really cranky 11 00:00:54,170 --> 00:00:56,770 client comes up with a requirement which is very 12 00:00:56,770 --> 00:00:59,570 hard to fulfill, or you know, our code quality 13 00:00:59,570 --> 00:01:02,570 or our tests written so big, like Chad said 14 00:01:02,570 --> 00:01:05,149 yesterday, that it takes a long time to finish. 15 00:01:05,149 --> 00:01:08,700 But these are the kind of problems we face, 16 00:01:08,700 --> 00:01:12,330 generally. But let's see what other problems do people 17 00:01:12,330 --> 00:01:14,450 in rural India face? 18 00:01:14,450 --> 00:01:20,110 Yeah. So. Let's start with this: food. 19 00:01:20,110 --> 00:01:22,910 So I'm sure all of us enjoyed the really 20 00:01:22,910 --> 00:01:27,410 good lunch there, [00:01:25] pune gosh, chicken packenard, fune 21 00:01:27,410 --> 00:01:30,209 mokney [00:01:28]. We will also get a tea break 22 00:01:30,209 --> 00:01:33,399 soon enough. I'm hoping. But what about the people 23 00:01:33,399 --> 00:01:35,220 out there? They don't even get a square meal 24 00:01:35,220 --> 00:01:36,250 once a day. 25 00:01:36,250 --> 00:01:40,789 Water- well. People in India really have accepted the 26 00:01:40,789 --> 00:01:43,580 fact that they don't get water to bath in 27 00:01:43,580 --> 00:01:46,679 the rural areas. They somehow manage it with the 28 00:01:46,679 --> 00:01:49,300 drinking water they get. It's really not clean, but 29 00:01:49,300 --> 00:01:51,280 they somehow manage. 30 00:01:51,280 --> 00:01:55,319 Shelter. V.J. told me a fact today, that sixty 31 00:01:55,319 --> 00:01:58,470 percent of population in India do not have a 32 00:01:58,470 --> 00:02:00,899 toilet. They don't have access to a toilet. So 33 00:02:00,899 --> 00:02:04,110 let's, not even care about anything else. 34 00:02:04,110 --> 00:02:07,000 And education, this is something very personal to me. 35 00:02:07,000 --> 00:02:10,229 Where I come from, it's even lucky to people 36 00:02:10,229 --> 00:02:12,610 to study up to ?? standard [00:02:12]. 37 00:02:12,610 --> 00:02:16,250 So, so my question is, how many of you 38 00:02:16,250 --> 00:02:19,140 have written a line of code which has impacted 39 00:02:19,140 --> 00:02:21,260 life in some way? I'm not saying a big 40 00:02:21,260 --> 00:02:22,830 way, but a meaningful way. 41 00:02:22,830 --> 00:02:26,810 Can anyone show their hands? Yeah. 42 00:02:26,810 --> 00:02:28,450 And how many of you really want to help 43 00:02:28,450 --> 00:02:30,100 them out. 44 00:02:30,100 --> 00:02:34,860 Only this many? Like this is really sad. OK. 45 00:02:34,860 --> 00:02:36,920 So you really want to help them out, and 46 00:02:36,920 --> 00:02:39,310 this is how you can do it. 47 00:02:39,310 --> 00:02:42,670 S.2.: Right, so this is essentially what we heard 48 00:02:42,670 --> 00:02:45,800 about. A few of us at Nilenso, and previously 49 00:02:45,800 --> 00:02:48,410 C42, have been fortunate enough to work on the 50 00:02:48,410 --> 00:02:50,180 Survey Project. 51 00:02:50,180 --> 00:02:54,880 And I'm gonna leave it to this: We have 52 00:02:54,880 --> 00:02:58,570 6,000 people who have been impacted by the first 53 00:02:58,570 --> 00:03:02,460 run of this project. This thing is opensource. I'm 54 00:03:02,460 --> 00:03:04,970 gonna leave this slide for you guys to look 55 00:03:04,970 --> 00:03:11,970 at. And we've- five big cities, 6,000 people. Kids, 56 00:03:12,420 --> 00:03:15,520 pregnant women, with the nutrition survey. Right, this was 57 00:03:15,520 --> 00:03:16,590 the first run. 58 00:03:16,590 --> 00:03:21,790 And there was another one, that went to people, 59 00:03:21,790 --> 00:03:27,100 women, in the agricultural side, and there are three 60 00:03:27,100 --> 00:03:34,100 thousand families who have been helped. And one, a 61 00:03:34,150 --> 00:03:36,380 single fact that, that's gonna help you understand where 62 00:03:36,380 --> 00:03:37,819 we are with this - look at the last 63 00:03:37,819 --> 00:03:40,319 three lines in this slide, basically. 64 00:03:40,319 --> 00:03:43,400 These are the inferences that have been drawn based 65 00:03:43,400 --> 00:03:47,180 on the data here that is 6,000 requests from 66 00:03:47,180 --> 00:03:51,959 here, and 3,000 families. That's roughly, again, around 6,000 67 00:03:51,959 --> 00:03:53,740 records here, right. 68 00:03:53,740 --> 00:03:57,310 So that's so much data coming in, and inferences 69 00:03:57,310 --> 00:04:00,230 drawn across surveys. 70 00:04:00,230 --> 00:04:06,080 Technically, like, why am I, why are we presenting 71 00:04:06,080 --> 00:04:07,980 this here, and what do you people have to 72 00:04:07,980 --> 00:04:12,940 do with it? Apart from this, like, the technical, 73 00:04:12,940 --> 00:04:17,970 like the number of apps and whatnot, there is 74 00:04:17,970 --> 00:04:21,250 so much data coming in, right. The last thing 75 00:04:21,250 --> 00:04:24,560 that we have in our road map is a 76 00:04:24,560 --> 00:04:28,020 separate Clojure app to take care of the big 77 00:04:28,020 --> 00:04:29,910 data stuff. 78 00:04:29,910 --> 00:04:33,210 And, like, personally I have spent hours of my 79 00:04:33,210 --> 00:04:35,780 time looking at the UX in this thing. 80 00:04:35,780 --> 00:04:41,730 So these apps have to go down to the 81 00:04:41,730 --> 00:04:46,680 last mile, down to people's homes, where there's no 82 00:04:46,680 --> 00:04:49,810 internet, right. And they have, like, one hour of 83 00:04:49,810 --> 00:04:52,820 internet in a week, and then there's so much 84 00:04:52,820 --> 00:04:54,820 data integrated problems that you have to deal with 85 00:04:54,820 --> 00:04:58,100 as well. 86 00:04:58,100 --> 00:05:01,560 And sadly over the last month or so, this 87 00:05:01,560 --> 00:05:05,010 has come to a slow stop, and we have 88 00:05:05,010 --> 00:05:08,520 not had the time to work on this. But, 89 00:05:08,520 --> 00:05:11,340 I'm hoping that a lot of people here do 90 00:05:11,340 --> 00:05:13,770 have some time to spare. Send us a poll 91 00:05:13,770 --> 00:05:17,250 request, whatever it is. 92 00:05:17,250 --> 00:05:20,460 These are the people we really care about. We 93 00:05:20,460 --> 00:05:23,970 write algorithms to bring down our performance from point 94 00:05:23,970 --> 00:05:28,000 zero one seconds to point zero zero one seconds, 95 00:05:28,000 --> 00:05:28,930 and that's all we have, right. 96 00:05:28,930 --> 00:05:33,550 S.1.: So I'll wrap it up really fast. So 97 00:05:33,550 --> 00:05:35,860 let's not always write code to help these people 98 00:05:35,860 --> 00:05:39,730 out with our wonderful projects like WunderRails RubyGems and 99 00:05:39,730 --> 00:05:41,310 other languages. 100 00:05:41,310 --> 00:05:44,250 Let's also these people out as well. You know, 101 00:05:44,250 --> 00:05:47,090 maybe give them a boost, because I really believe 102 00:05:47,090 --> 00:05:48,970 we don't all have to be Bill Gates to 103 00:05:48,970 --> 00:05:51,620 help these people out. With our own skills we 104 00:05:51,620 --> 00:05:53,990 can contribute to and write technical projects that could 105 00:05:53,990 --> 00:05:55,370 help them out. 106 00:05:55,370 --> 00:05:58,430 And, yeah, this is where you can find the 107 00:05:58,430 --> 00:06:00,820 projects and start and everything. 108 00:06:00,820 --> 00:06:01,620 Thank you. 109 00:06:01,620 --> 00:06:04,090 S.2.: You can catch anyone of us after the 110 00:06:04,090 --> 00:06:10,240 talk if you want to help us out. Thanks. 111 00:06:10,240 --> 00:06:12,930 INTRO: So next up we have Kestap?? [00:06:12] on 112 00:06:12,930 --> 00:06:14,510 the stage. Time starts now. 113 00:06:14,510 --> 00:06:17,630 SPEAKER: Hi everyone. Today I'll be talking about Sinatra, 114 00:06:17,630 --> 00:06:20,800 basic introduction. Probably everybody knows this, but more and 115 00:06:20,800 --> 00:06:22,370 more though I'll be talking about how to write 116 00:06:22,370 --> 00:06:24,139 an extension in Sinatra. 117 00:06:24,139 --> 00:06:27,300 So the basic structure of Sinatra is this. There 118 00:06:27,300 --> 00:06:29,510 is a request class that extends from Rack::Request, response 119 00:06:29,510 --> 00:06:36,510 that extends from Rack::Response, ExtendedRack is basically for the 120 00:06:36,780 --> 00:06:39,070 things that are not in rack, and so they 121 00:06:39,070 --> 00:06:41,680 define extra methods there. 122 00:06:41,680 --> 00:06:45,660 There is a commonlogger which extends from Rack::CommonLogger, and 123 00:06:45,660 --> 00:06:48,900 this is the main part, Base. 124 00:06:48,900 --> 00:06:52,330 So there are actually three ways to, there are 125 00:06:52,330 --> 00:06:54,930 actually three ways to extending Sinatra. The first one 126 00:06:54,930 --> 00:06:59,020 is extensions, the second one is - no. 127 00:06:59,020 --> 00:07:01,800 Not quite. 128 00:07:01,800 --> 00:07:03,610 The second one is helpers and the third one 129 00:07:03,610 --> 00:07:06,490 is middleware. I won't be talking about middleware probably, 130 00:07:06,490 --> 00:07:10,180 there is a lot of material on that. but 131 00:07:10,180 --> 00:07:14,050 the extensions and helpers, I've found it difficult to 132 00:07:14,050 --> 00:07:16,979 use them, so. I've kind of made a small 133 00:07:16,979 --> 00:07:18,259 presentation here. 134 00:07:18,259 --> 00:07:21,199 So the first difference between helpers and extensions is 135 00:07:21,199 --> 00:07:24,430 that, in helpers, you use a helper or you 136 00:07:24,430 --> 00:07:28,600 write a helper if the functionality is required in 137 00:07:28,600 --> 00:07:32,330 the get method or post method or any other 138 00:07:32,330 --> 00:07:35,169 blocks that we use. 139 00:07:35,169 --> 00:07:38,759 So inside a route block the extensions are for 140 00:07:38,759 --> 00:07:41,040 extending the functionality of Sinatra itself. 141 00:07:41,040 --> 00:07:44,850 So for example, inside a get block we find 142 00:07:44,850 --> 00:07:48,050 our two, return JSON response every time, so I 143 00:07:48,050 --> 00:07:51,380 can make a function like this, JSON(a) and convert 144 00:07:51,380 --> 00:07:55,130 basically converts our hash into a JSON string. 145 00:07:55,130 --> 00:07:59,680 So the implementation is this. You write it in 146 00:07:59,680 --> 00:08:02,800 a module called Helpers. You define the method, you 147 00:08:02,800 --> 00:08:06,539 pass it in, and it basically returns the string. 148 00:08:06,539 --> 00:08:10,240 And you include your helpers in before, in your 149 00:08:10,240 --> 00:08:11,210 app file. 150 00:08:11,210 --> 00:08:13,240 So to write this as a gem you have 151 00:08:13,240 --> 00:08:16,729 to put that under a namespace of Sinatra, then 152 00:08:16,729 --> 00:08:19,889 use the module, the same code as above. 153 00:08:19,889 --> 00:08:21,979 And these two are the magic things that actually 154 00:08:21,979 --> 00:08:24,240 happen. So base dot helpers is almost similar to 155 00:08:24,240 --> 00:08:27,229 adding helpers json inside your app file. 156 00:08:27,229 --> 00:08:30,350 So, and base dot set is basically, it sets 157 00:08:30,350 --> 00:08:35,549 the json_content_type, sets the request_content_type to JSON by default 158 00:08:35,549 --> 00:08:37,889 for every request. 159 00:08:37,889 --> 00:08:43,979 So the other thing, the major portion is extensions. 160 00:08:43,979 --> 00:08:48,490 So in extensions, Sinatra provides extensions to, let's say 161 00:08:48,490 --> 00:08:51,470 you want to define a new route, so you 162 00:08:51,470 --> 00:08:53,639 can do that by extensions. I'll demonstrate a small 163 00:08:53,639 --> 00:08:59,129 thing, a small route actually. So I created this 164 00:08:59,129 --> 00:09:01,360 extension today. 165 00:09:01,360 --> 00:09:03,429 So I have a module Sinatra, I have this 166 00:09:03,429 --> 00:09:06,970 super module, and this is an extra route. So 167 00:09:06,970 --> 00:09:11,759 this, the route method is provided by Sinatra base, 168 00:09:11,759 --> 00:09:14,540 and I'm extending that, so that every, every request 169 00:09:14,540 --> 00:09:17,939 that you make to this end point, to, with 170 00:09:17,939 --> 00:09:21,569 a method request of this one, instead of get 171 00:09:21,569 --> 00:09:26,069 r post, it will return something pretty good. 172 00:09:26,069 --> 00:09:31,629 So start it up. 173 00:09:31,629 --> 00:09:38,629 And yeah. So that's what it does. 174 00:09:44,249 --> 00:09:51,129 So, you don't have to clap for that, it's 175 00:09:51,129 --> 00:09:51,839 lame. 176 00:09:51,839 --> 00:09:55,240 So the basic difference between these two is that 177 00:09:55,240 --> 00:09:57,879 this is, this is an extension of Sinatra. This 178 00:09:57,879 --> 00:10:00,100 route is not defined but we are defining that 179 00:10:00,100 --> 00:10:00,420 route. 180 00:10:00,420 --> 00:10:02,800 We are using the things that are provided by 181 00:10:02,800 --> 00:10:06,470 Sinatra and we are basically extending. So the register 182 00:10:06,470 --> 00:10:10,550 method is a method provided by Sinatra where all, 183 00:10:10,550 --> 00:10:13,360 whatever module you define have to be registered with 184 00:10:13,360 --> 00:10:18,850 Sinatra, so that every app that you use, and, 185 00:10:18,850 --> 00:10:23,309 like this. So every app that you use, you 186 00:10:23,309 --> 00:10:26,480 just call register Sinatra, that one, and I'll, I've 187 00:10:26,480 --> 00:10:30,949 defined my route instead of get slash, I have 188 00:10:30,949 --> 00:10:34,199 used doge and it returns this. 189 00:10:34,199 --> 00:10:38,689 So the basic difference is that it's, like you, 190 00:10:38,689 --> 00:10:41,629 if you want to extend so there are these 191 00:10:41,629 --> 00:10:47,860 two things, and I think that's it. 192 00:10:47,860 --> 00:10:54,860 VINASH: Yeah, so. This Billard, I am Vinash. We 193 00:10:55,019 --> 00:10:58,699 are from Mumbai, RV?? [00:10:57] So I just want 194 00:10:58,699 --> 00:11:00,559 to tell all of you guys, and introduce us 195 00:11:00,559 --> 00:11:01,720 too, we're from Mumbai RV?? [00:11:01]. 196 00:11:01,720 --> 00:11:04,720 We have total counted seven meet ups in all. 197 00:11:04,720 --> 00:11:06,720 So we are on our way to have a 198 00:11:06,720 --> 00:11:10,369 big meet up soon. Maybe in June or later. 199 00:11:10,369 --> 00:11:13,399 But till now we have a frequent audience of 200 00:11:13,399 --> 00:11:16,179 ten to twenty people, always there. We have one 201 00:11:16,179 --> 00:11:18,970 or two talks, we have a single hack session 202 00:11:18,970 --> 00:11:21,329 once. That was for Brails?? [00:11:19] 203 00:11:21,329 --> 00:11:24,949 We are not going to push anything, but we 204 00:11:24,949 --> 00:11:28,569 are able to discuss a few things and we 205 00:11:28,569 --> 00:11:32,189 wrote entire cookies, et cetera et al. Everyone knows. 206 00:11:32,189 --> 00:11:35,110 So there is a mindset about Bombai that Bombai 207 00:11:35,110 --> 00:11:36,569 is partially, Bombai has very few jobs and all 208 00:11:36,569 --> 00:11:40,239 that stuff. But I can say that nowadays with 209 00:11:40,239 --> 00:11:44,939 so many startups starting up, the salaries are very 210 00:11:44,939 --> 00:11:47,800 good I guess, currently. 211 00:11:47,800 --> 00:11:52,079 So I guess I will tell you that. You 212 00:11:52,079 --> 00:11:54,579 should ship to Bombai if you are born in 213 00:11:54,579 --> 00:11:56,259 part of Bombai, you should definitely come back to 214 00:11:56,259 --> 00:12:00,040 Bombai rather than going to Bangalore and Pume, because, 215 00:12:00,040 --> 00:12:00,449 yeah. 216 00:12:00,449 --> 00:12:07,449 I know! The intellectual level at Bombai is a 217 00:12:07,559 --> 00:12:10,720 little low as compared to Bangalore or Pume, but 218 00:12:10,720 --> 00:12:13,670 we need to change that, and we want guys 219 00:12:13,670 --> 00:12:16,119 like you to come back to Bombai who were 220 00:12:16,119 --> 00:12:18,660 born in a part of Bombai and increase the 221 00:12:18,660 --> 00:12:20,799 ?? [00:12:18] of Bombai to a level which can 222 00:12:20,799 --> 00:12:23,529 compete with Bangalore and Pume itself. 223 00:12:23,529 --> 00:12:26,129 So I want Billard to say a few words 224 00:12:26,129 --> 00:12:29,009 about the same. 225 00:12:29,009 --> 00:12:31,720 BILLARD: Actually I just interacted with some of the 226 00:12:31,720 --> 00:12:35,259 peers here, and I found out that they didn't 227 00:12:35,259 --> 00:12:38,029 even know that there's are some developers in Bombai 228 00:12:38,029 --> 00:12:40,850 like who know Rails or something. So we just 229 00:12:40,850 --> 00:12:44,569 came here to give a lightning talk that, oh, 230 00:12:44,569 --> 00:12:47,549 dude we are, we exist there, there are some 231 00:12:47,549 --> 00:12:49,879 people who are trying to make a dent, not 232 00:12:49,879 --> 00:12:53,279 in the, not in the universe, but at least 233 00:12:53,279 --> 00:12:54,079 in Bombai. 234 00:12:54,079 --> 00:12:57,769 To, so we are that's what we are putting 235 00:12:57,769 --> 00:13:01,439 all our efforts, like, and that's what, as my- 236 00:13:01,439 --> 00:13:05,100 as Vanash said that we are about to complete 237 00:13:05,100 --> 00:13:09,699 first annual city for Mombai. I RV?? [00:13:11]. That's 238 00:13:09,699 --> 00:13:12,329 what we are now making the name out of 239 00:13:12,329 --> 00:13:12,980 it. 240 00:13:12,980 --> 00:13:16,819 So we are created at least a small event, 241 00:13:16,819 --> 00:13:22,170 which, so, which we all are planning, looking forward 242 00:13:22,170 --> 00:13:26,999 to. So that's all we have. And Bombai RV 243 00:13:26,999 --> 00:13:30,629 is alive and it will be. 244 00:13:30,629 --> 00:13:35,549 SATYA KALLURI: Hey guys, this is Satya, I'm from 245 00:13:35,549 --> 00:13:37,759 Hadribad?? [00:13:36], and you know, I basically want to 246 00:13:37,759 --> 00:13:40,230 talk about technology meetups. I've been part of some 247 00:13:40,230 --> 00:13:43,369 technology meetups for quite some time. And you know 248 00:13:43,369 --> 00:13:45,139 to be very straight, I was a little upset 249 00:13:45,139 --> 00:13:46,579 with the way they go. 250 00:13:46,579 --> 00:13:48,769 So, and fortunately, you know, I've been in touch 251 00:13:48,769 --> 00:13:50,769 with some of the technologies these days, and they've 252 00:13:50,769 --> 00:13:53,019 revived the hope in me, so I just wanted 253 00:13:53,019 --> 00:13:55,259 to share some of my learnings, and how can 254 00:13:55,259 --> 00:13:58,569 we make better use of these technology meetups. 255 00:13:58,569 --> 00:14:02,329 Oh, by the way, I'm Satya Kalluri and our 256 00:14:02,329 --> 00:14:04,970 group is @HydRuby, so you can follow us there. 257 00:14:04,970 --> 00:14:06,439 So the first thing is I believe there are 258 00:14:06,439 --> 00:14:08,799 two kinds of meetups in the universe. There are 259 00:14:08,799 --> 00:14:10,429 two really kind of different meetups. 260 00:14:10,429 --> 00:14:12,999 A) is technology meetups, which we need to consider 261 00:14:12,999 --> 00:14:15,519 them as absolutely local. It's like you and me 262 00:14:15,519 --> 00:14:17,299 catch up together in the next house or the 263 00:14:17,299 --> 00:14:19,259 next coffee house. It doesn't have to be as 264 00:14:19,259 --> 00:14:21,329 big as this in total area?? [00:14:21]. So it's 265 00:14:21,329 --> 00:14:23,319 a technology meetup where you know what, it's a 266 00:14:23,319 --> 00:14:26,549 local thing. And you know what, the, and it's 267 00:14:26,549 --> 00:14:28,910 focused. It doesn't have to be as wide agenda 268 00:14:28,910 --> 00:14:29,549 as this. 269 00:14:29,549 --> 00:14:31,540 It could be as simple as a bug-a-thon. It 270 00:14:31,540 --> 00:14:33,639 could be as simple as learning a new gem, 271 00:14:33,639 --> 00:14:36,299 or it could be anything basically. A small local, 272 00:14:36,299 --> 00:14:36,999 focused. 273 00:14:36,999 --> 00:14:39,179 And there are other ones which are technology conferences. 274 00:14:39,179 --> 00:14:41,079 These are bigger ones, where in what, all, it's 275 00:14:41,079 --> 00:14:42,790 like one of the organizers said, you know like, 276 00:14:42,790 --> 00:14:45,720 made of communities and sub communities. Atoms and molecules, 277 00:14:45,720 --> 00:14:46,249 right. 278 00:14:46,249 --> 00:14:49,239 So these small technology meetups, they come up together 279 00:14:49,239 --> 00:14:52,920 and create these bigger conferences, regional ones, which have 280 00:14:52,920 --> 00:14:54,309 a wider agenda. 281 00:14:54,309 --> 00:14:56,600 So my problem is about the technology meetups. The 282 00:14:56,600 --> 00:14:58,869 conferences are going good. GCRC here is an example, 283 00:14:58,869 --> 00:15:01,389 they're doing an awesome job. But how can we 284 00:15:01,389 --> 00:15:03,519 improve the technology meetups. You know whenever I catch 285 00:15:03,519 --> 00:15:06,079 up with folks at the lunch place or something, 286 00:15:06,079 --> 00:15:08,100 the majority of them say, oh, you know, my 287 00:15:08,100 --> 00:15:10,069 meetup gets only two attendees, three attendees. 288 00:15:10,069 --> 00:15:11,629 You know that over a period of time I've 289 00:15:11,629 --> 00:15:13,989 just found that certain items, if, which if we 290 00:15:13,989 --> 00:15:16,179 address them properly I think the local technology meetups 291 00:15:16,179 --> 00:15:18,160 are gonna be kickass. 292 00:15:18,160 --> 00:15:19,629 So. 293 00:15:19,629 --> 00:15:23,470 So. Basically I wanted to let you know what 294 00:15:23,470 --> 00:15:25,619 a technology meetup is, first of all, and why 295 00:15:25,619 --> 00:15:26,660 are they for? 296 00:15:26,660 --> 00:15:29,859 Technology meetups are absolutely for techies to collaborate, learn, 297 00:15:29,859 --> 00:15:32,519 contribute, share knowledge. So these are local ones. So 298 00:15:32,519 --> 00:15:34,309 do understand, these are the only for those techies. 299 00:15:34,309 --> 00:15:36,679 They're not for the job seekers and not the 300 00:15:36,679 --> 00:15:38,749 employers. Whenever there's a technology meetup going, and if 301 00:15:38,749 --> 00:15:40,499 you need a Rails developer, please do not go 302 00:15:40,499 --> 00:15:41,069 there. 303 00:15:41,069 --> 00:15:42,739 And if you're looking for a job, don't go 304 00:15:42,739 --> 00:15:45,100 there. Just, let's not pollute these small local meetups. 305 00:15:45,100 --> 00:15:48,160 They have for technology peers to basically go there, 306 00:15:48,160 --> 00:15:51,429 share knowledge and solve each others problems and become 307 00:15:51,429 --> 00:15:52,579 better in technology. 308 00:15:52,579 --> 00:15:54,829 You know the last two are acceptable for conferences 309 00:15:54,829 --> 00:15:57,369 like these, where, you know, these are big things 310 00:15:57,369 --> 00:16:00,259 where there are networking opportunities and tech meetups and 311 00:16:00,259 --> 00:16:03,410 everything. But for local meetups let's stick to technology. 312 00:16:03,410 --> 00:16:05,910 That way everybody who comes, you know what, knows 313 00:16:05,910 --> 00:16:08,329 what's going to happen. It's technology. This is Rails, 314 00:16:08,329 --> 00:16:10,970 which I love. I come here to write, to 315 00:16:10,970 --> 00:16:12,449 learn Rails. 316 00:16:12,449 --> 00:16:14,859 And while participating, you know what, these, the following 317 00:16:14,859 --> 00:16:17,119 six things are the most important things which I 318 00:16:17,119 --> 00:16:18,879 could recommend everybody to follow. 319 00:16:18,879 --> 00:16:21,149 The first thing is identity. Most of those whom 320 00:16:21,149 --> 00:16:22,970 I see don't have an identity on Twitter, don't 321 00:16:22,970 --> 00:16:25,239 have an identity on StackerWorkflow, even meetup I see 322 00:16:25,239 --> 00:16:27,309 some of them say plus five. Now what the 323 00:16:27,309 --> 00:16:28,519 heck does plus five mean? 324 00:16:28,519 --> 00:16:30,549 Not what, who are the other five guys? So 325 00:16:30,549 --> 00:16:32,160 it would be nice if they identities, because that 326 00:16:32,160 --> 00:16:34,889 way I might want to communicate with that fifth 327 00:16:34,889 --> 00:16:38,029 guy. I don't need to contact this first guy. 328 00:16:38,029 --> 00:16:39,939 So and you are gonna create your identity, somebody 329 00:16:39,939 --> 00:16:41,809 needs to contact you directly, you know what, it 330 00:16:41,809 --> 00:16:44,230 creates an open channel, and as one of them, 331 00:16:44,230 --> 00:16:45,449 one of the speakers said, you know, you are 332 00:16:45,449 --> 00:16:47,439 going to create and identity and then a brand. 333 00:16:47,439 --> 00:16:49,279 So this is the first step. So create an 334 00:16:49,279 --> 00:16:52,299 identity for yourself on Twitter, StackerWorkflow and everything. 335 00:16:52,299 --> 00:16:54,569 It adds authenticity to the group, you know. Two 336 00:16:54,569 --> 00:16:56,569 guys, two persons catch up in a meetup doesn't 337 00:16:56,569 --> 00:16:58,910 make sense. But two plus five is seven, so 338 00:16:58,910 --> 00:17:01,410 when seven people really catch up in a meetup, 339 00:17:01,410 --> 00:17:02,919 I think it adds a lot of authenticity to 340 00:17:02,919 --> 00:17:03,749 the group. 341 00:17:03,749 --> 00:17:05,559 When you guys have your own facebook account, why 342 00:17:05,559 --> 00:17:07,750 not have your own StackOverflow account. I don't get 343 00:17:07,750 --> 00:17:08,429 it. 344 00:17:08,429 --> 00:17:11,609 The, so the next thing is RSVPs. I see 345 00:17:11,609 --> 00:17:15,829 many RSVPs, like even our @HydRuby has thirty-five RSVPs, 346 00:17:15,829 --> 00:17:17,940 but only four of them turned up, so. Take 347 00:17:17,940 --> 00:17:20,959 your RSVPs seriously because there are people, like, you 348 00:17:20,959 --> 00:17:22,440 know, they're not awake, and you know all these 349 00:17:22,440 --> 00:17:26,130 people who take these meetups very seriously, and there 350 00:17:26,130 --> 00:17:27,770 may not be some, some people who buy beers 351 00:17:27,770 --> 00:17:28,880 for everybody who come up and- 352 00:17:28,880 --> 00:17:31,250 When 31 beers are leftover, you know, nobody's gonna 353 00:17:31,250 --> 00:17:33,830 buy them, so. Please take your RSVP seriously. That 354 00:17:33,830 --> 00:17:36,950 adds authenticity to the group, OK. 355 00:17:36,950 --> 00:17:38,450 And the next thing is attendees, you know, don't 356 00:17:38,450 --> 00:17:40,830 wait for ten or twenty people to really come 357 00:17:40,830 --> 00:17:43,280 to a meetup. You just need one other guy 358 00:17:43,280 --> 00:17:45,480 to listen to you and you can create a 359 00:17:45,480 --> 00:17:48,010 meetup, and you can, guys, can really discuss about 360 00:17:48,010 --> 00:17:48,830 technology. 361 00:17:48,830 --> 00:17:50,830 The next thing is StackOverflow, you know, just share 362 00:17:50,830 --> 00:17:53,310 and contribute. You don't have to really, I mean, 363 00:17:53,310 --> 00:17:55,270 for you to really become a good meetup guy, 364 00:17:55,270 --> 00:17:57,600 I think at least spend every day, fifteen minutes 365 00:17:57,600 --> 00:18:01,200 on StackOverflow. Don't just find answers but answer the 366 00:18:01,200 --> 00:18:02,980 questions. This I've learned from Swanand. This guy has 367 00:18:02,980 --> 00:18:05,060 some 6,000 bloody points on StackOverflow. I have some 368 00:18:05,060 --> 00:18:06,000 twelve hundred, that's it. 369 00:18:06,000 --> 00:18:07,900 So I've learned from it. So become a better 370 00:18:07,900 --> 00:18:10,000 contributer. You become really confident, and you'll become a 371 00:18:10,000 --> 00:18:13,430 different person. You can also contribute at GitHub. If 372 00:18:13,430 --> 00:18:15,980 you don't know which GitHub module to really contribute, 373 00:18:15,980 --> 00:18:19,930 go for Codetriage. It gives you good popular libraries 374 00:18:19,930 --> 00:18:20,790 to really help. 375 00:18:20,790 --> 00:18:23,130 And, do you have an idea? Just stop working 376 00:18:23,130 --> 00:18:25,430 on it. First learn better technology and then, you 377 00:18:25,430 --> 00:18:28,370 know, you can definitely work on the product. And 378 00:18:28,370 --> 00:18:30,620 the last thing is, like, spread the word. This 379 00:18:30,620 --> 00:18:33,330 guy's already on me, so. Spread the word. Go 380 00:18:33,330 --> 00:18:36,070 for Facebook. You can use Facebook too, and you 381 00:18:36,070 --> 00:18:37,170 can also use Twitter. 382 00:18:37,170 --> 00:18:39,770 So spread the word and make these technology meetups 383 00:18:39,770 --> 00:18:40,370 a good thing. 384 00:18:40,370 --> 00:18:42,210 Cheers guys, thank you. 385 00:18:42,210 --> 00:18:46,670 SPEAKER: Before I start, big thumbs up for the 386 00:18:46,670 --> 00:18:49,520 guys who started off. It's great to see, you 387 00:18:49,520 --> 00:18:53,800 know, technology people, developers who care about social issues. 388 00:18:53,800 --> 00:18:56,840 And here I am to talk about Milaap, which 389 00:18:56,840 --> 00:19:00,120 is also a social enterprise. And I just want 390 00:19:00,120 --> 00:19:01,720 to talk about what Milaap is all about and 391 00:19:01,720 --> 00:19:05,360 how you can help. 392 00:19:05,360 --> 00:19:10,660 So Milaap is a Crowdfunding platform for communities in 393 00:19:10,660 --> 00:19:15,650 need which is powered by Ruby on Rails. So 394 00:19:15,650 --> 00:19:18,430 we are a hardcore Ruby on Rails shop, and 395 00:19:18,430 --> 00:19:21,770 we bridge the gap between people who are need 396 00:19:21,770 --> 00:19:24,810 of help and people who want to help, right. 397 00:19:24,810 --> 00:19:27,550 So let's quickly look at what that means. So 398 00:19:27,550 --> 00:19:30,670 I'm sure all of us want to do good. 399 00:19:30,670 --> 00:19:33,280 We want to help others. But when it comes 400 00:19:33,280 --> 00:19:37,760 to helping others with financial aid a lot of 401 00:19:37,760 --> 00:19:41,060 us are hesitant, because we are not sure, you 402 00:19:41,060 --> 00:19:43,300 know, our hard-earned money, when we give it to 403 00:19:43,300 --> 00:19:45,360 someone, you know, is it going to be used 404 00:19:45,360 --> 00:19:47,080 in the right way? Is it the right person 405 00:19:47,080 --> 00:19:49,300 I'm going to give this money to. 406 00:19:49,300 --> 00:19:53,020 So Milaap tries to bridge this gap, right. So 407 00:19:53,020 --> 00:19:56,910 Milaap has a set of profiles uploaded on our 408 00:19:56,910 --> 00:20:00,480 website, which are across various kind of causes, and 409 00:20:00,480 --> 00:20:03,010 you can, you can filter through various criteria and 410 00:20:03,010 --> 00:20:06,130 choose them. And it helps you make an informed 411 00:20:06,130 --> 00:20:08,670 decision about whom you want to help, right. 412 00:20:08,670 --> 00:20:11,300 So this is how it brings, it bridges the 413 00:20:11,300 --> 00:20:13,870 gap between people who want to help and people 414 00:20:13,870 --> 00:20:16,210 who are in need of help. 415 00:20:16,210 --> 00:20:18,800 How it works: It's very simple. Just four steps. 416 00:20:18,800 --> 00:20:21,120 As I said, the first step is, you look 417 00:20:21,120 --> 00:20:24,570 at the various causes and various filter criterias and 418 00:20:24,570 --> 00:20:26,370 choose the person you need to help. You want 419 00:20:26,370 --> 00:20:27,530 to help. 420 00:20:27,530 --> 00:20:31,060 And make a loan on Milaap website. This is 421 00:20:31,060 --> 00:20:34,410 just an online payment that you do. The real 422 00:20:34,410 --> 00:20:37,180 test starts after website. So the whole business is 423 00:20:37,180 --> 00:20:41,180 about testing transferrency. Can you trust Milaap that the 424 00:20:41,180 --> 00:20:42,850 money is going in the right hands? 425 00:20:42,850 --> 00:20:47,290 Another big thing, when it comes to helping is, 426 00:20:47,290 --> 00:20:51,060 donations - there is this hesitancy that, you know, 427 00:20:51,060 --> 00:20:53,870 my hard-earned money is going away, whereas what you 428 00:20:53,870 --> 00:20:56,360 do on Milaap is not a donation but a 429 00:20:56,360 --> 00:20:59,700 loan. That means you help one person, let's say 430 00:20:59,700 --> 00:21:01,870 a person needs ten thousand rupees to build a 431 00:21:01,870 --> 00:21:04,820 toilet. You contribute just 500 rupees out of it, 432 00:21:04,820 --> 00:21:06,370 but that 500 is not a donation. 433 00:21:06,370 --> 00:21:09,020 Within a year, month on month, you get back 434 00:21:09,020 --> 00:21:11,010 your money, and all your 500 rupees back to 435 00:21:11,010 --> 00:21:14,610 your account within one year's time. And then you 436 00:21:14,610 --> 00:21:17,820 can utilize the same thing to make an impact 437 00:21:17,820 --> 00:21:20,970 on someone else's life. This is what we call 438 00:21:20,970 --> 00:21:22,520 making an impact, again and again with the same 439 00:21:22,520 --> 00:21:25,800 money. And of course if you start believing in 440 00:21:25,800 --> 00:21:29,320 the idea, you start putting more, more of money 441 00:21:29,320 --> 00:21:30,700 in helping others, right. 442 00:21:30,700 --> 00:21:32,900 So there's the four simple steps. Choose a customer, 443 00:21:32,900 --> 00:21:36,570 make a loan, get repaid and relend. 444 00:21:36,570 --> 00:21:39,660 How can you help, right? Of course the obvious 445 00:21:39,660 --> 00:21:44,090 thing is you know check out the website, if 446 00:21:44,090 --> 00:21:47,500 you like the idea, like us on Facebook. Tweet 447 00:21:47,500 --> 00:21:49,800 about us, write about us on your blog. We 448 00:21:49,800 --> 00:21:51,280 also have a widget which you can put on 449 00:21:51,280 --> 00:21:53,960 your blog saying that you support Milaap. 450 00:21:53,960 --> 00:21:57,920 But if you want to do even more, right, 451 00:21:57,920 --> 00:22:00,700 obviously you can actually be an active participant on 452 00:22:00,700 --> 00:22:02,820 our website. Go and make a loan to someone 453 00:22:02,820 --> 00:22:07,590 there today. You could also do something interesting, I 454 00:22:07,590 --> 00:22:09,570 think one of the best gift ideas that you 455 00:22:09,570 --> 00:22:11,570 could have is to give a Milaap gift card 456 00:22:11,570 --> 00:22:12,630 to someone. 457 00:22:12,630 --> 00:22:14,350 That is you are gifting someone the ability to 458 00:22:14,350 --> 00:22:20,760 help someone, and repeatedly keep doing it, right. 459 00:22:20,760 --> 00:22:23,370 Finally you could also start a campaign. If you 460 00:22:23,370 --> 00:22:25,500 want to go really big, you could adopt a 461 00:22:25,500 --> 00:22:28,220 particular borrower on the website or adopt a particular 462 00:22:28,220 --> 00:22:31,610 cause, and decide to raise some funds to impact 463 00:22:31,610 --> 00:22:34,480 that critical cause. So you can decide to raise 464 00:22:34,480 --> 00:22:36,600 some money for education. Let's say you're running a 465 00:22:36,600 --> 00:22:38,080 marathon, you can put out, we can put up 466 00:22:38,080 --> 00:22:41,830 a page for you and help you raise some 467 00:22:41,830 --> 00:22:45,050 of money through you, through that event. 468 00:22:45,050 --> 00:22:49,690 But, right, I'm sure many of you would think, 469 00:22:49,690 --> 00:22:53,430 this guy's coming here talking about some company, Milaap 470 00:22:53,430 --> 00:22:55,720 in three, four minutes, why should I go ahead 471 00:22:55,720 --> 00:22:57,860 and do anything about it, right? So proof of 472 00:22:57,860 --> 00:22:59,810 the pudding is in it's eating, right. 473 00:22:59,810 --> 00:23:02,570 So what we want you is to first get 474 00:23:02,570 --> 00:23:06,090 real, first-hand experience of what Milaap is and how 475 00:23:06,090 --> 00:23:09,240 it helps people, how much you can trust it, 476 00:23:09,240 --> 00:23:12,220 how transparant it is. So we are right now 477 00:23:12,220 --> 00:23:17,720 giving away free credits, free Milaap credits worth 500 478 00:23:17,720 --> 00:23:20,280 rupees. Anyone who wants to try out what Milaap 479 00:23:20,280 --> 00:23:23,440 is without spending a buck from your pocket can 480 00:23:23,440 --> 00:23:29,430 use this gift card, GCRC14, which some of, same 481 00:23:29,430 --> 00:23:32,550 as our twitter hash tag as well. And you'll 482 00:23:32,550 --> 00:23:34,390 be able to make a loan on Milaap just 483 00:23:34,390 --> 00:23:36,670 by using those 500 rupees. 484 00:23:36,670 --> 00:23:39,180 You just click on lend button and when it 485 00:23:39,180 --> 00:23:41,030 comes to actually making a payment, just write in 486 00:23:41,030 --> 00:23:43,680 the coupon and you'll be able to, you are 487 00:23:43,680 --> 00:23:45,220 good to go, right. 488 00:23:45,220 --> 00:23:46,760 Thanks a lot. 489 00:23:46,760 --> 00:23:48,810 V.O.: Thanks Sarish?? [00:23:48]. 490 00:23:48,810 --> 00:23:51,530 SORU: Houston, can you copy me? 491 00:23:51,530 --> 00:23:56,550 OK. So I don't have slides. So I'm Soru. 492 00:23:56,550 --> 00:24:00,400 I'm nineteen. I'm still in college. So over the 493 00:24:00,400 --> 00:24:02,310 last summer I did a Google Summer of Code 494 00:24:02,310 --> 00:24:04,670 with a ?? project [00:24:03]. And I built this 495 00:24:04,670 --> 00:24:06,790 GitHub for designers, so I thought I would teach 496 00:24:06,790 --> 00:24:09,470 that here so that you could know about it, 497 00:24:09,470 --> 00:24:12,050 and I could, I saw that there are some 498 00:24:12,050 --> 00:24:15,810 design-oriented start-ups so they could probably give me feedback. 499 00:24:15,810 --> 00:24:19,450 So the idea is that, like, when designers collaborate, 500 00:24:19,450 --> 00:24:23,070 especially opensource designers, they go to mailing lists and 501 00:24:23,070 --> 00:24:27,260 they share links, and so, let's say, Coby decides 502 00:24:27,260 --> 00:24:30,780 to make, make this banner. So he starts with, 503 00:24:30,780 --> 00:24:33,640 he starts with the logo, and he puts it 504 00:24:33,640 --> 00:24:35,530 on MGo?? [00:24:34] and shares a link on the 505 00:24:35,530 --> 00:24:38,170 mailing list, and people go plus one, cool, or 506 00:24:38,170 --> 00:24:39,430 this is awesome. 507 00:24:39,430 --> 00:24:41,110 And everybody gets that link. It's a pain in 508 00:24:41,110 --> 00:24:45,020 the ass. So like, this is kind of very, 509 00:24:45,020 --> 00:24:48,400 it's like spam, it's also annoying, and there's no 510 00:24:48,400 --> 00:24:51,340 nice way to understand designer feedback. 511 00:24:51,340 --> 00:24:55,490 So how it helps is, so you can, GlitterGallery 512 00:24:55,490 --> 00:24:57,510 is not live right now. But I'll get it 513 00:24:57,510 --> 00:24:59,450 up soon. So right now what you can do, 514 00:24:59,450 --> 00:25:01,690 there is, you can go create a new design 515 00:25:01,690 --> 00:25:04,170 project just like GitHub and you can create SVG 516 00:25:04,170 --> 00:25:07,770 files, or you can create, you can upload your 517 00:25:07,770 --> 00:25:10,310 own SVGs or PNG or JPEG or whatever. 518 00:25:10,310 --> 00:25:13,020 So after that, so let's say he created the 519 00:25:13,020 --> 00:25:15,800 same thing inverted in color, and he can post 520 00:25:15,800 --> 00:25:17,410 it there and he can share links with his 521 00:25:17,410 --> 00:25:20,860 friends and anybody else on the app can log 522 00:25:20,860 --> 00:25:23,800 in and he can comment over there, so. So 523 00:25:23,800 --> 00:25:25,550 cool, plus one and all that. 524 00:25:25,550 --> 00:25:27,900 So some comments make sense. Because these comments are 525 00:25:27,900 --> 00:25:30,050 nice, they make you feel good. But there are 526 00:25:30,050 --> 00:25:32,590 certain comments which could, which could say that, OK, 527 00:25:32,590 --> 00:25:34,170 if you're going to project this, this won't be 528 00:25:34,170 --> 00:25:36,790 visible properly. So he can mark said comments as 529 00:25:36,790 --> 00:25:39,170 issues. They go to an issue tracker, and somebody 530 00:25:39,170 --> 00:25:42,440 else can forward the project, so it becomes theirs. 531 00:25:42,440 --> 00:25:44,410 They can make changes to it and send back 532 00:25:44,410 --> 00:25:46,730 poll requests to the original designer. 533 00:25:46,730 --> 00:25:49,810 So he can, you know, pull back and. So 534 00:25:49,810 --> 00:25:53,110 design projects can flourish that way. And also we 535 00:25:53,110 --> 00:25:56,680 have a feature called GlitterPosts. So something like, I 536 00:25:56,680 --> 00:25:59,270 don't know, maybe like medium, where you can go 537 00:25:59,270 --> 00:26:02,160 and explain what, what design process you went through. 538 00:26:02,160 --> 00:26:05,110 So every time you make a new change, anytime 539 00:26:05,110 --> 00:26:07,100 you update, there is a commit happening in the 540 00:26:07,100 --> 00:26:07,550 background. 541 00:26:07,550 --> 00:26:09,710 So we use the great library provided by GitHub. 542 00:26:09,710 --> 00:26:12,600 They use the same thing. So every instance has 543 00:26:12,600 --> 00:26:15,460 a commit idea and all that. So you can 544 00:26:15,460 --> 00:26:17,560 reference comments, so you can go there and say 545 00:26:17,560 --> 00:26:20,040 I started with this file, this is the idea 546 00:26:20,040 --> 00:26:23,540 behind it, and now, next I did this, this 547 00:26:23,540 --> 00:26:24,450 is how it went. 548 00:26:24,450 --> 00:26:26,530 So it also serves as a nice way to 549 00:26:26,530 --> 00:26:29,730 learn, also maybe a nice way to judge designers' 550 00:26:29,730 --> 00:26:33,240 thought process. So, so I would just like to 551 00:26:33,240 --> 00:26:35,590 ask if any of you work with designers or 552 00:26:35,590 --> 00:26:38,480 are designers yourselves, what could be some better ways 553 00:26:38,480 --> 00:26:41,400 to collaborate, and how else could I extend this 554 00:26:41,400 --> 00:26:41,550 project. 555 00:26:41,550 --> 00:26:44,130 By the way, this is opensource. And next summer 556 00:26:44,130 --> 00:26:45,740 for Google Summer of Code we might be taking 557 00:26:45,740 --> 00:26:48,120 around two people. So if there are any students 558 00:26:48,120 --> 00:26:51,020 here who would like to contribute, you can ping 559 00:26:51,020 --> 00:26:54,700 me later. Thanks. 560 00:26:54,700 --> 00:27:00,030 SPEAKER: Thanks, Qwinik, for the opportunity to be here, 561 00:27:00,030 --> 00:27:02,870 first of all, because they sent us here just 562 00:27:02,870 --> 00:27:06,200 to, to sponsor and represent Qwiniks. 563 00:27:06,200 --> 00:27:09,600 It happens that I land in this company, and 564 00:27:09,600 --> 00:27:13,650 I start to work with them as a programmer, 565 00:27:13,650 --> 00:27:16,610 and I have a lot of difficulties to, to 566 00:27:16,610 --> 00:27:21,750 adopt my German mindset to the Indian mindset. And 567 00:27:21,750 --> 00:27:26,309 I'm still having difficulties. I'm still not understanding things, 568 00:27:26,309 --> 00:27:28,990 and I'm trying, deeply. 569 00:27:28,990 --> 00:27:33,730 So, but I want to advise, or talk about, 570 00:27:33,730 --> 00:27:38,170 what, what was the things that I've faced here, 571 00:27:38,170 --> 00:27:41,100 and first thing that I want to advise, and, 572 00:27:41,100 --> 00:27:45,520 is that this is opensource work. Opensource work means 573 00:27:45,520 --> 00:27:48,180 that there is no one willing to teach you. 574 00:27:48,180 --> 00:27:51,390 You have to teach by yourself. And the code 575 00:27:51,390 --> 00:27:54,330 is there. Please open libraries and write libraries. Not 576 00:27:54,330 --> 00:27:57,030 write what is the code inside, and not what 577 00:27:57,030 --> 00:28:00,430 is the documentation says, because documentation can be outdated. 578 00:28:00,430 --> 00:28:03,440 So with this I will advise that you need 579 00:28:03,440 --> 00:28:05,970 to handle your own will and what is the 580 00:28:05,970 --> 00:28:09,890 consequences. So you need to be able to know 581 00:28:09,890 --> 00:28:12,520 the difference between what you want and what the 582 00:28:12,520 --> 00:28:14,809 project wants. This is for people that works either 583 00:28:14,809 --> 00:28:18,059 for projects, companies or by freelancers. 584 00:28:18,059 --> 00:28:20,809 And you need to think about the consequences. You 585 00:28:20,809 --> 00:28:23,350 need to think about what is the, what is 586 00:28:23,350 --> 00:28:25,610 the impact of this code, what is the maintenance 587 00:28:25,610 --> 00:28:28,530 of this code, and what is the purpose of 588 00:28:28,530 --> 00:28:31,010 this code. So think about that before writing the 589 00:28:31,010 --> 00:28:32,490 first line of code. 590 00:28:32,490 --> 00:28:35,350 The second thing is setting up your priorities. So 591 00:28:35,350 --> 00:28:41,780 I found that it's somehow some people wants to 592 00:28:41,780 --> 00:28:45,420 rush to the finish, just to find a solution, 593 00:28:45,420 --> 00:28:48,420 and most of the time without understanding what the 594 00:28:48,420 --> 00:28:49,830 problem is. 595 00:28:49,830 --> 00:28:53,220 I spent two, three days thinking what the real 596 00:28:53,220 --> 00:28:55,390 problem is. What is the thing that you have 597 00:28:55,390 --> 00:28:58,570 to solve, and then solve it. It's become, it 598 00:28:58,570 --> 00:29:03,980 will become easier in time. Mostly for maintainers. 599 00:29:03,980 --> 00:29:06,680 They other one will be, be humble. Not be 600 00:29:06,680 --> 00:29:09,590 humble in the streets saying, I'm not so, or 601 00:29:09,590 --> 00:29:12,740 not so, be humble with your code. So don't 602 00:29:12,740 --> 00:29:15,410 try to solve big problems. Solve the small problems. 603 00:29:15,410 --> 00:29:17,710 So don't focus on the solution and the feature 604 00:29:17,710 --> 00:29:20,510 that you want to generate. Focus in the method 605 00:29:20,510 --> 00:29:23,780 that you're generate in. Making it consistent, make it 606 00:29:23,780 --> 00:29:25,110 very small. 607 00:29:25,110 --> 00:29:27,309 I am try to go because there is a 608 00:29:27,309 --> 00:29:31,210 lot of the - I will jump the career 609 00:29:31,210 --> 00:29:34,200 of the programming to the culture one. I'm sorry, 610 00:29:34,200 --> 00:29:36,940 I will say. Clients are not gods. So you 611 00:29:36,940 --> 00:29:40,610 are, you can be against them. It's allowed. You're 612 00:29:40,610 --> 00:29:42,809 allowed to be against them. 613 00:29:42,809 --> 00:29:47,630 Meaning I, don't want to take this seriously, but 614 00:29:47,630 --> 00:29:50,800 meaning, meaning with this, you are allowed to say 615 00:29:50,800 --> 00:29:55,710 no, you are allowed to say scopes. Saying we 616 00:29:55,710 --> 00:29:59,250 are not allowed to do this. We need more 617 00:29:59,250 --> 00:30:03,320 time or we need this resources that we don't 618 00:30:03,320 --> 00:30:07,160 have. So please take in mind this because this 619 00:30:07,160 --> 00:30:10,450 is a huge impact for the company owners, for 620 00:30:10,450 --> 00:30:12,590 the people in project managers. 621 00:30:12,590 --> 00:30:16,710 Project managers are waiting, expecting something from you, and 622 00:30:16,710 --> 00:30:20,200 if you will not deliver on time, or what 623 00:30:20,200 --> 00:30:24,110 they're expecting, you're breaking big rules. It's not a 624 00:30:24,110 --> 00:30:26,700 small thing. You're breaking big, big rules. 625 00:30:26,700 --> 00:30:30,990 With this, I want to add, you need to 626 00:30:30,990 --> 00:30:34,680 be predictable. Whatever you do make it predictable for 627 00:30:34,680 --> 00:30:36,960 the project manager, for the company owner, for the 628 00:30:36,960 --> 00:30:39,740 client. Meaning if you're doing something that you know 629 00:30:39,740 --> 00:30:42,220 that will be wrong, just tell him, it will 630 00:30:42,220 --> 00:30:45,600 be wrong. But make it predictable. So don't make 631 00:30:45,600 --> 00:30:49,730 people wait for you, to see what is, what 632 00:30:49,730 --> 00:30:51,960 it will happen. One minute more. 633 00:30:51,960 --> 00:30:55,490 OK, I just jump down to, so I will 634 00:30:55,490 --> 00:30:59,080 say after coming here, I'm just seeing the huge 635 00:30:59,080 --> 00:31:02,500 effort you are doing to work in opensource. I 636 00:31:02,500 --> 00:31:06,130 have seen sadly for me that some books are 637 00:31:06,130 --> 00:31:10,710 more expensive than what juniors earn in one month. 638 00:31:10,710 --> 00:31:15,400 So that's brokes my heart, some way, because I 639 00:31:15,400 --> 00:31:18,520 am able to buy in Europe we're able to 640 00:31:18,520 --> 00:31:22,870 buy books as something, without side effects. And here 641 00:31:22,870 --> 00:31:26,720 people that ?? [00:31:25], for them it's impossible. 642 00:31:26,720 --> 00:31:29,750 I mean the book is two, is twice what 643 00:31:29,750 --> 00:31:32,660 they earn a month. So with that, it is 644 00:31:32,660 --> 00:31:35,330 impossible, I know that it's impossible to learn. So 645 00:31:35,330 --> 00:31:38,490 I really admire the courage that you have to 646 00:31:38,490 --> 00:31:40,940 come here. I know the price that you're paying 647 00:31:40,940 --> 00:31:43,080 for coming here. I know the effort that you're 648 00:31:43,080 --> 00:31:46,220 doing and I will like to say that, I 649 00:31:46,220 --> 00:31:48,290 really admire that. 650 00:31:48,290 --> 00:31:50,750 And yeah. My time is over. This guy has 651 00:31:50,750 --> 00:31:54,330 an android with him, so I better run. 652 00:31:54,330 --> 00:31:58,260 SPEAKER: OK, so I'll, I'll just go over this 653 00:31:58,260 --> 00:32:01,610 and then see if I can- 654 00:32:01,610 --> 00:32:05,720 So, what I'm going to do is I, the 655 00:32:05,720 --> 00:32:07,440 time I have, I'll try to sow some doubts 656 00:32:07,440 --> 00:32:09,300 in your mind, and then make you go back 657 00:32:09,300 --> 00:32:11,540 and think about some of the things that you've 658 00:32:11,540 --> 00:32:12,960 believed about. 659 00:32:12,960 --> 00:32:16,450 So like I'll talk about my experience working with 660 00:32:16,450 --> 00:32:20,130 ActiveRecord and why I think it's a very bad 661 00:32:20,130 --> 00:32:22,620 thing for building business applications. 662 00:32:22,620 --> 00:32:25,400 So ActiveRecord is good when you're building web applications, 663 00:32:25,400 --> 00:32:28,800 shallow web applications that have a database and some 664 00:32:28,800 --> 00:32:33,270 rich UI on top of it. But when you 665 00:32:33,270 --> 00:32:35,929 are trying to build business applications that have a 666 00:32:35,929 --> 00:32:38,980 lot of heavy logic, it's not a good, a 667 00:32:38,980 --> 00:32:40,240 good thing to do. 668 00:32:40,240 --> 00:32:42,390 I'll briefly talk about why it's not such a 669 00:32:42,390 --> 00:32:46,510 good thing. One of the most problematic things about 670 00:32:46,510 --> 00:32:49,770 ActiveRecord is it's so much coupled with databases. So 671 00:32:49,770 --> 00:32:51,950 when I am trying to solve a problem that 672 00:32:51,950 --> 00:32:55,740 is very business logic heavy, I tend to put 673 00:32:55,740 --> 00:32:58,220 things that are difficult to, positions that are difficult 674 00:32:58,220 --> 00:32:59,660 to reverse later. 675 00:32:59,660 --> 00:33:02,860 The database schema is something that is very difficult 676 00:33:02,860 --> 00:33:05,230 to reverse. ActiveRecord makes you do that upfront. Any 677 00:33:05,230 --> 00:33:08,900 model that is tied to ActiveRecord, you can't write 678 00:33:08,900 --> 00:33:10,809 this without connecting to database and all that. We 679 00:33:10,809 --> 00:33:12,600 need to define schema up front. 680 00:33:12,600 --> 00:33:17,640 Which I think is troublesome. So it kind of 681 00:33:17,640 --> 00:33:21,770 makes it difficult to decouple the core business logic 682 00:33:21,770 --> 00:33:24,030 from the framework. Most of the stuff you're writing 683 00:33:24,030 --> 00:33:26,480 is tightly coupled with the framework. Something new comes 684 00:33:26,480 --> 00:33:28,730 up, you need to rewrite the entire thing. There's 685 00:33:28,730 --> 00:33:31,770 no, nothing that can you, you can take to 686 00:33:31,770 --> 00:33:35,210 that new, new framework. 687 00:33:35,210 --> 00:33:40,190 There other things, like, so whenever you encounter situations 688 00:33:40,190 --> 00:33:43,000 which were not thought of when the framework was 689 00:33:43,000 --> 00:33:46,070 designed, there are no points that allow you to 690 00:33:46,070 --> 00:33:49,260 extend. There's no easy way to customize the ID 691 00:33:49,260 --> 00:33:53,590 generator, logic. There's no easy way to incorporate composite 692 00:33:53,590 --> 00:33:55,790 keys. So the project I was working on,w e 693 00:33:55,790 --> 00:34:00,760 needed to use mySQL partitions. So I can't use 694 00:34:00,760 --> 00:34:02,420 mySQL ID generation. I have to use auto composite 695 00:34:02,420 --> 00:34:03,210 keys. 696 00:34:03,210 --> 00:34:04,700 And there was no easy way of doing it. 697 00:34:04,700 --> 00:34:07,860 There's a plugin that provides composite key support, if 698 00:34:07,860 --> 00:34:10,099 you go look at the implementation of that, you'd 699 00:34:10,099 --> 00:34:13,168 be scared to use it. So it's like, gorilla 700 00:34:13,168 --> 00:34:16,139 patching - monkey patching to the extreme. So it 701 00:34:16,139 --> 00:34:21,309 kind of like highlights some of the problems. How 702 00:34:21,309 --> 00:34:24,609 the code to framework has been written. 703 00:34:24,609 --> 00:34:27,379 And there are other features that I like and 704 00:34:27,379 --> 00:34:30,399 other form mapping?? frameworks [00:34:29]. Like you load a 705 00:34:30,399 --> 00:34:32,440 bunch of objects, do something on it, at the 706 00:34:32,440 --> 00:34:36,099 end they all get persisted to the database. It's 707 00:34:36,099 --> 00:34:39,929 automatic, dirty checking transaction right behind. There's something called 708 00:34:39,929 --> 00:34:42,710 a persistence data utility. I create an order, order 709 00:34:42,710 --> 00:34:44,339 line items, all this stuff. 710 00:34:44,339 --> 00:34:46,998 I create save and it saves everything. So limited 711 00:34:46,998 --> 00:34:48,609 support for things like that. 712 00:34:48,609 --> 00:34:51,690 These features are very important when you're trying to 713 00:34:51,690 --> 00:34:54,349 follow these practices, domain-driven design, so you need to 714 00:34:54,349 --> 00:34:57,099 work in terms of aggragates, so you need to 715 00:34:57,099 --> 00:35:00,289 decouple your persistence logic from your busienss logic. All 716 00:35:00,289 --> 00:35:03,480 that is very, very hard to do if you're 717 00:35:03,480 --> 00:35:04,140 using ActiveRecord. 718 00:35:04,140 --> 00:35:07,499 So there are some alternatives. 719 00:35:07,499 --> 00:35:09,549 So datamapper is a framework, but I think it's 720 00:35:09,549 --> 00:35:13,749 become stagnant. There's a new version of it called 721 00:35:13,749 --> 00:35:15,309 Ruby?? [00:35:13]. I don't see a release for that 722 00:35:15,309 --> 00:35:17,380 as yet. So those are some alternatives that you 723 00:35:17,380 --> 00:35:19,480 can look at. 724 00:35:19,480 --> 00:35:25,239 Or, yeah. Look at something in other languages. So 725 00:35:25,239 --> 00:35:27,319 these are based on my observations of working with 726 00:35:27,319 --> 00:35:29,900 ActiveRecord for the last five months, and I'm comparing 727 00:35:29,900 --> 00:35:34,390 it with eight years I've spent working with Hibernate, 728 00:35:34,390 --> 00:35:39,619 and this looks like a toy compared to what 729 00:35:39,619 --> 00:35:41,690 that can do. 730 00:35:41,690 --> 00:35:43,059 Thank you. 731 00:35:43,059 --> 00:35:45,359 NIRANJAN PARANJAPE: So, a few really good talks. Heavy 732 00:35:45,359 --> 00:35:45,509 talks. I'm gonna keep this light. 733 00:35:45,509 --> 00:35:48,700 So any - talk abuot continous learning. 734 00:35:48,700 --> 00:35:50,499 But before going there I want to talk about 735 00:35:50,499 --> 00:35:51,749 what happens if you don't learn continuously. 736 00:35:51,749 --> 00:35:53,680 So we have been doing interviews for quite some 737 00:35:53,680 --> 00:35:56,470 time. And these are a few gems I have 738 00:35:56,470 --> 00:35:57,720 heard while doing interviews. 739 00:35:57,720 --> 00:36:00,710 So I asked a question: Which programming language do 740 00:36:00,710 --> 00:36:01,989 you like? 741 00:36:01,989 --> 00:36:04,499 Imagine the answer - come on. 742 00:36:04,499 --> 00:36:05,569 AUDIENCE: Ruby! 743 00:36:05,569 --> 00:36:08,999 N.P.: No. I program in Rails. 744 00:36:08,999 --> 00:36:14,539 Go read RubyonRails dot org. You'll find something different. 745 00:36:14,539 --> 00:36:17,220 Someone asked me, why shouldn't I use GOTO? 746 00:36:17,220 --> 00:36:19,499 After all language supports it. 747 00:36:19,499 --> 00:36:22,170 Do you know anything about cyclomatic complexity? 748 00:36:22,170 --> 00:36:24,470 Do you know what other feature language supports which 749 00:36:24,470 --> 00:36:26,970 are really bad programming constructs and you should generally 750 00:36:26,970 --> 00:36:27,259 avoid? 751 00:36:27,259 --> 00:36:30,269 Go read about that. 752 00:36:30,269 --> 00:36:32,700 So I started the interview. I spoke about like, 753 00:36:32,700 --> 00:36:34,489 OK we have been hearing a lot about, you 754 00:36:34,489 --> 00:36:36,529 should ask skinny controllers and fat models, and there 755 00:36:36,529 --> 00:36:37,869 was a huge buzz about it. 756 00:36:37,869 --> 00:36:40,099 Then we went and said that, no we actually 757 00:36:40,099 --> 00:36:42,029 need thin models. 758 00:36:42,029 --> 00:36:43,420 So where to I write my business logic. 759 00:36:43,420 --> 00:36:45,529 And I wrote a response. Helpers. 760 00:36:45,529 --> 00:36:50,589 I asked someone, how do you scale your application? 761 00:36:50,589 --> 00:36:53,980 I got a response: I don't have to, I 762 00:36:53,980 --> 00:36:55,559 deploy in Cloud. 763 00:36:55,559 --> 00:36:58,970 I asked someone, can you talked about GC? 764 00:36:58,970 --> 00:37:02,019 Oh, GC, garbage compiler. Let's talk about it. 765 00:37:02,019 --> 00:37:06,489 I asked someone, why is encapsulation important? 766 00:37:06,489 --> 00:37:09,930 I heard, because the book says data security is 767 00:37:09,930 --> 00:37:10,390 important. 768 00:37:10,390 --> 00:37:14,119 And, last noted, but not the least - I 769 00:37:14,119 --> 00:37:15,989 have heard this, actually. 770 00:37:15,989 --> 00:37:18,789 I don't believe in learning in my personal time, 771 00:37:18,789 --> 00:37:21,579 because I believe in work-life balance. Now, my answer 772 00:37:21,579 --> 00:37:24,369 to that person is, this is the doctor's roadside. 773 00:37:24,369 --> 00:37:26,779 Are you going to go to him, or are 774 00:37:26,779 --> 00:37:28,230 you going to go to him? 775 00:37:28,230 --> 00:37:30,650 You want your doctor to continuously learn and understand 776 00:37:30,650 --> 00:37:33,950 his medical practices, and essentially keep up with the 777 00:37:33,950 --> 00:37:37,829 latest technology. You are a software programmer. You are 778 00:37:37,829 --> 00:37:39,769 You cannot afford to fall behind the scene. You 779 00:37:39,769 --> 00:37:40,900 have to keep learning. 780 00:37:40,900 --> 00:37:43,049 How do you keep learning? Lots of books are 781 00:37:43,049 --> 00:37:45,930 out there. How many of you have read Pragmatic 782 00:37:45,930 --> 00:37:47,749 Programmer's Journeyman to Masterman? 783 00:37:47,749 --> 00:37:50,650 How many of you have read it twice? 784 00:37:50,650 --> 00:37:54,849 This is a book you should read every year. 785 00:37:54,849 --> 00:38:00,109 It's a brilliant book. Coding Honor. Clear coding. Wonderful 786 00:38:00,109 --> 00:38:05,210 books. Read different blogs. Learn different language or paradigm, 787 00:38:05,210 --> 00:38:07,259 because what you learn there, you can essentially translate 788 00:38:07,259 --> 00:38:10,950 it into your understanding of programming itself, and maybe 789 00:38:10,950 --> 00:38:14,049 bring some parts in your actual code. 790 00:38:14,049 --> 00:38:16,589 But just reading these things are not important. Understand 791 00:38:16,589 --> 00:38:18,910 the concept behind is important. Where do you understand 792 00:38:18,910 --> 00:38:20,069 the concept? 793 00:38:20,069 --> 00:38:21,660 Maybe you can go to, read c2 dot com. 794 00:38:21,660 --> 00:38:23,759 How many people know that? What is c2 dot 795 00:38:23,759 --> 00:38:24,210 com? 796 00:38:24,210 --> 00:38:26,609 It's a first Wiki. And then maybe you can 797 00:38:26,609 --> 00:38:29,089 go to c2 dot com. And maybe you can 798 00:38:29,089 --> 00:38:30,259 go to c2 dot com again, because that's a 799 00:38:30,259 --> 00:38:33,779 brilliant, brilliant site. 800 00:38:33,779 --> 00:38:36,039 And most importantly, contribute to opensource. We hear a 801 00:38:36,039 --> 00:38:39,119 lot about hey, you should contribute to opensource because, 802 00:38:39,119 --> 00:38:42,210 you know, give back to the community, it's fun. 803 00:38:42,210 --> 00:38:44,640 But there is one major aspect of contributing to 804 00:38:44,640 --> 00:38:47,200 opensource that's just learning, self-learning. And that is something 805 00:38:47,200 --> 00:38:48,690 which I have done a lot. 806 00:38:48,690 --> 00:38:51,579 How do you start? You start by reading code. 807 00:38:51,579 --> 00:38:53,259 Read what other people are writing. 808 00:38:53,259 --> 00:38:57,119 That's the first step in understanding how to write 809 00:38:57,119 --> 00:38:58,680 better code. 810 00:38:58,680 --> 00:39:01,739 Essentially it allows you to pair with good people, 811 00:39:01,739 --> 00:39:04,390 across the globe, and get their feedback about your 812 00:39:04,390 --> 00:39:07,150 code. Talk to them about their design, their understanding 813 00:39:07,150 --> 00:39:10,739 of programming. So it's a wonderful tool. 814 00:39:10,739 --> 00:39:12,549 Find a mentor if possible, and just, don't just 815 00:39:12,549 --> 00:39:15,150 stop there. You have to actually go and become 816 00:39:15,150 --> 00:39:17,859 a mentor and teach someone what you have learned. 817 00:39:17,859 --> 00:39:24,859 So yeah. That's it.