[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:27.00,0:00:34.90,Default,,0000,0000,0000,,HEMANT KUMAR: So I would ask our panelists\Nto come forward and chat. Dialogue: 0,0:00:34.92,0:00:41.27,Default,,0000,0000,0000,,So Chad is, Chad Fowler is the author of The\NPassionate Programmer Dialogue: 0,0:00:41.27,0:00:45.07,Default,,0000,0000,0000,,and he has been a- Dialogue: 0,0:00:45.07,0:00:46.94,Default,,0000,0000,0000,,CHAD FOWLER: Yes? Dialogue: 0,0:00:46.94,0:00:51.56,Default,,0000,0000,0000,,H.K.: He's been like, he's one of the oldest, Dialogue: 0,0:00:51.56,0:00:55.97,Default,,0000,0000,0000,,one of the oldest Ruby guys around. He's embarrassing\Nme. Dialogue: 0,0:00:55.97,0:01:01.87,Default,,0000,0000,0000,,C.F.: I'm one of the oldest people here. Thank\Nyou Colby (00:01:00). Dialogue: 0,0:01:01.87,0:01:08.63,Default,,0000,0000,0000,,H.K.: And next, Yogi. Yogi is principal architect\Nof Flipkart Dialogue: 0,0:01:08.63,0:01:13.76,Default,,0000,0000,0000,,and he has obviously worked in one of the\Nlargest Dialogue: 0,0:01:13.76,0:01:20.76,Default,,0000,0000,0000,,deployment serve and supply chain in Ruby,\Nand yeah. Dialogue: 0,0:01:21.42,0:01:27.49,Default,,0000,0000,0000,,Next person I'm gonna ask is Baishampayan\NGhose, uh, BG. Dialogue: 0,0:01:27.49,0:01:30.89,Default,,0000,0000,0000,,Is he outside? Can you, can anyone? So. You\Nguys can sit. Dialogue: 0,0:01:30.89,0:01:36.74,Default,,0000,0000,0000,,C.F.: Yes, what? Dialogue: 0,0:01:36.74,0:01:38.89,Default,,0000,0000,0000,,H.K.: You guys can sit actually. Dialogue: 0,0:01:38.89,0:01:42.02,Default,,0000,0000,0000,,C.F.: He wants us to sit down. Sorry, I'll\Nsit. Dialogue: 0,0:01:42.02,0:01:47.08,Default,,0000,0000,0000,,H.K.: So, yeah, our next panelist is Baishampayan\NGhose. Dialogue: 0,0:01:47.08,0:01:49.54,Default,,0000,0000,0000,,He is a polyglot programmer Dialogue: 0,0:01:49.54,0:01:55.33,Default,,0000,0000,0000,,and he is CTO of Helpshift, a start-up running\Nfrom California. Dialogue: 0,0:01:55.33,0:02:02.33,Default,,0000,0000,0000,,And last I would like to call on Venkat Subramaniyan. Dialogue: 0,0:02:07.99,0:02:11.33,Default,,0000,0000,0000,,He is CEO of Mahaswami Software. Dialogue: 0,0:02:11.33,0:02:15.42,Default,,0000,0000,0000,,He has been programming in Ruby for like ten\Nyears, Dialogue: 0,0:02:15.42,0:02:21.94,Default,,0000,0000,0000,,and for a real long time, so. Dialogue: 0,0:02:21.94,0:02:28.94,Default,,0000,0000,0000,,OK, so we'll start the panel discussion by\Nasking the panelists like, Dialogue: 0,0:02:30.53,0:02:36.65,Default,,0000,0000,0000,,what is your current language of choice primarily,\Nand why? Swami, Venkat. Dialogue: 0,0:02:36.65,0:02:41.97,Default,,0000,0000,0000,,Venkat Subramaniyan: OK, we use primarily\NRuby. Dialogue: 0,0:02:41.97,0:02:45.51,Default,,0000,0000,0000,,We've been using Ruby for the past, I mean, Dialogue: 0,0:02:45.51,0:02:48.78,Default,,0000,0000,0000,,writing bigger-sized products since six, seven\Nyears. Dialogue: 0,0:02:48.78,0:02:51.45,Default,,0000,0000,0000,,But we use quite a bit of Java along with\Nit. Dialogue: 0,0:02:51.45,0:02:53.97,Default,,0000,0000,0000,,H.K.: Why? Like, why do you use it? (00:02:51) Dialogue: 0,0:02:53.97,0:02:58.08,Default,,0000,0000,0000,,V.S.: Well, see there is some very, like, Dialogue: 0,0:02:58.08,0:03:00.23,Default,,0000,0000,0000,,well-established libraries, like reporting\NGINs, Dialogue: 0,0:03:00.23,0:03:02.65,Default,,0000,0000,0000,,and several stuff that you don't want to really,\Nyou know, Dialogue: 0,0:03:02.65,0:03:04.29,Default,,0000,0000,0000,,try to match from the Ruby side. Dialogue: 0,0:03:04.29,0:03:06.46,Default,,0000,0000,0000,,So we just bring the best of both worlds by Dialogue: 0,0:03:06.46,0:03:08.04,Default,,0000,0000,0000,,cutting forward all the good libraries. Dialogue: 0,0:03:08.04,0:03:10.83,Default,,0000,0000,0000,,Jewels we have used quite a bit. Jasper reports. Dialogue: 0,0:03:10.83,0:03:13.57,Default,,0000,0000,0000,,These are all stuff for which there isn't\Nan equivalent exist, Dialogue: 0,0:03:13.57,0:03:15.89,Default,,0000,0000,0000,,and we just want to use the knowledge Dialogue: 0,0:03:15.89,0:03:18.66,Default,,0000,0000,0000,,and, you know, the well-established software\Nthere, Dialogue: 0,0:03:18.66,0:03:24.70,Default,,0000,0000,0000,,for their purpose. So that's one of the main\Nreasons. Dialogue: 0,0:03:24.70,0:03:28.93,Default,,0000,0000,0000,,Baishampayan Ghose: So we use multiple languages,\Nbut, Dialogue: 0,0:03:28.93,0:03:32.12,Default,,0000,0000,0000,,Closure is our main programming language of\Nchoice. Dialogue: 0,0:03:32.12,0:03:34.68,Default,,0000,0000,0000,,We have been using it since I think late 2008. Dialogue: 0,0:03:34.68,0:03:40.75,Default,,0000,0000,0000,,We're one of the first companies to put Closure\Ninto production. Dialogue: 0,0:03:40.75,0:03:42.76,Default,,0000,0000,0000,,We use Closure because a variety of reasons,\Nbut, Dialogue: 0,0:03:42.76,0:03:49.13,Default,,0000,0000,0000,,I guess if I have to say name a few reasons,\Nthat would be, Dialogue: 0,0:03:49.13,0:03:52.10,Default,,0000,0000,0000,,Closure lets me focus on the problem, Dialogue: 0,0:03:52.10,0:03:53.90,Default,,0000,0000,0000,,and it pretty much gets out of the way. Dialogue: 0,0:03:53.90,0:03:58.49,Default,,0000,0000,0000,,And there is a lot of focus on awesome things\Nlike immutability, Dialogue: 0,0:03:58.49,0:04:04.16,Default,,0000,0000,0000,,data as a main construct for doing competition. Dialogue: 0,0:04:04.16,0:04:07.37,Default,,0000,0000,0000,,And of course it's a lisp so I get all the\Npower, Dialogue: 0,0:04:07.37,0:04:10.63,Default,,0000,0000,0000,,and it's also something that runs in the JVM, Dialogue: 0,0:04:10.63,0:04:15.51,Default,,0000,0000,0000,,so I can also leverage the awesome Java ecosystem. Dialogue: 0,0:04:15.51,0:04:16.84,Default,,0000,0000,0000,,So yeah, but, at the same time, Dialogue: 0,0:04:16.84,0:04:18.38,Default,,0000,0000,0000,,we do use different languages for different\Nneeds. Dialogue: 0,0:04:18.38,0:04:22.35,Default,,0000,0000,0000,,We have used Erlang in the past, we use Go\Nas well, Dialogue: 0,0:04:22.35,0:04:27.61,Default,,0000,0000,0000,,and of course there is JavaScript and a bunch\Nof other languages. Dialogue: 0,0:04:27.61,0:04:29.49,Default,,0000,0000,0000,,H.K.: So do you think like, let's say, Dialogue: 0,0:04:29.49,0:04:31.26,Default,,0000,0000,0000,,Closure doesn't seem to be right language\Nfor Dialogue: 0,0:04:31.26,0:04:33.97,Default,,0000,0000,0000,,how to write utility to you know like Dialogue: 0,0:04:33.97,0:04:37.82,Default,,0000,0000,0000,,do something on my OS X, for example. Dialogue: 0,0:04:37.82,0:04:40.50,Default,,0000,0000,0000,,If I auto-install something or manage processes\Nor anything. Dialogue: 0,0:04:40.50,0:04:44.04,Default,,0000,0000,0000,,Do you think like it's a right tool for that\Nsort of thing? Dialogue: 0,0:04:44.04,0:04:47.58,Default,,0000,0000,0000,,B.G.: So, to build your, if you want to build\Na small utility, Dialogue: 0,0:04:47.58,0:04:49.49,Default,,0000,0000,0000,,you'd need a faster start-up time, Dialogue: 0,0:04:49.49,0:04:51.35,Default,,0000,0000,0000,,and that problem is inherent in JVM. Dialogue: 0,0:04:51.35,0:04:54.51,Default,,0000,0000,0000,,It has nothing to do with Closure, per se. Dialogue: 0,0:04:54.51,0:04:57.37,Default,,0000,0000,0000,,But Closure also has something called Closure\NScript, Dialogue: 0,0:04:57.37,0:04:59.53,Default,,0000,0000,0000,,which lets you write whatever code that you\Nwant to write in Closure, Dialogue: 0,0:04:59.53,0:05:01.28,Default,,0000,0000,0000,,but then the compiler compiles it down to\NJavaScript, Dialogue: 0,0:05:01.28,0:05:07.85,Default,,0000,0000,0000,,and basically you can create a node.js application\Nout of Closure code. Dialogue: 0,0:05:07.85,0:05:11.23,Default,,0000,0000,0000,,You get all the flexibility and constructs Dialogue: 0,0:05:11.23,0:05:14.25,Default,,0000,0000,0000,,to build abstractions that Closure provides, Dialogue: 0,0:05:14.25,0:05:18.44,Default,,0000,0000,0000,,but you can target, you know, different run-times. Dialogue: 0,0:05:18.44,0:05:21.99,Default,,0000,0000,0000,,So you can run, you can build a shell utility\Nas well. Dialogue: 0,0:05:21.99,0:05:22.74,Default,,0000,0000,0000,,C.F.: Do you actually do that? Dialogue: 0,0:05:22.74,0:05:24.71,Default,,0000,0000,0000,,Do you like write command line programs? Dialogue: 0,0:05:24.71,0:05:28.63,Default,,0000,0000,0000,,B.G.: We've done it a few times. We've done\Nit a few times. Dialogue: 0,0:05:28.63,0:05:30.46,Default,,0000,0000,0000,,It's not something that we publicly do, but\Nyeah, Dialogue: 0,0:05:30.46,0:05:33.30,Default,,0000,0000,0000,,Nailgun is another upload that you talked\Nabout in your talk, right. Dialogue: 0,0:05:33.30,0:05:36.94,Default,,0000,0000,0000,,And, so yeah, so that's what we do. Dialogue: 0,0:05:36.94,0:05:37.89,Default,,0000,0000,0000,,But there are other hacks, like tweaking Dialogue: 0,0:05:37.89,0:05:39.29,Default,,0000,0000,0000,,the boot class paths in JVM to make the start\Nup times faster. Dialogue: 0,0:05:39.29,0:05:43.68,Default,,0000,0000,0000,,That's what something learning new is in Closure. Dialogue: 0,0:05:43.68,0:05:48.82,Default,,0000,0000,0000,,There are ways of getting it, but yeah, you\Nare, Dialogue: 0,0:05:48.82,0:05:52.99,Default,,0000,0000,0000,,in a way, right that, by default, it's, Closure\Nis probably not a, Dialogue: 0,0:05:52.99,0:05:57.49,Default,,0000,0000,0000,,not the right run time for building shell\Nutilities. Dialogue: 0,0:05:57.49,0:06:01.67,Default,,0000,0000,0000,,H.K.: OK, so, before we move to Chad, like,\Nyou said like, Dialogue: 0,0:06:01.67,0:06:03.26,Default,,0000,0000,0000,,all the power of lisp actually, Dialogue: 0,0:06:03.26,0:06:04.38,Default,,0000,0000,0000,,so, can you elaborate on that? Dialogue: 0,0:06:04.38,0:06:05.37,Default,,0000,0000,0000,,What do you mean by all the power of Lisp? Dialogue: 0,0:06:05.37,0:06:09.59,Default,,0000,0000,0000,,B.G.: Sure. So, how many people use Emacs\Nhere? Dialogue: 0,0:06:09.59,0:06:11.93,Default,,0000,0000,0000,,Twenty percent maybe. You do? Dialogue: 0,0:06:11.93,0:06:17.23,Default,,0000,0000,0000,,C.F.: No, I don't personally. Dialogue: 0,0:06:17.23,0:06:19.22,Default,,0000,0000,0000,,Never. Dialogue: 0,0:06:19.22,0:06:25.48,Default,,0000,0000,0000,,B.G.: Never? But you talked about Emacs Dialogue: 0,0:06:25.48,0:06:28.91,Default,,0000,0000,0000,,as well as good software systems. Dialogue: 0,0:06:28.91,0:06:32.21,Default,,0000,0000,0000,,C.F.: Not to use, though, just as an example. Dialogue: 0,0:06:32.21,0:06:36.76,Default,,0000,0000,0000,,B.G.: Just to talk a lot. Anyway, so Emacs\Nas a software Dialogue: 0,0:06:36.76,0:06:38.45,Default,,0000,0000,0000,,is thirty-five years old today, Dialogue: 0,0:06:38.45,0:06:43.37,Default,,0000,0000,0000,,and still is in production, so to speak, Dialogue: 0,0:06:43.37,0:06:44.09,Default,,0000,0000,0000,,you can still use it. Dialogue: 0,0:06:44.09,0:06:46.74,Default,,0000,0000,0000,,So, what can we learn from Emacs? Dialogue: 0,0:06:46.74,0:06:50.80,Default,,0000,0000,0000,,Well, the language is always available to\Nuse, Dialogue: 0,0:06:50.80,0:06:53.95,Default,,0000,0000,0000,,right, so if you compare it with, let's say, Dialogue: 0,0:06:53.95,0:06:56.58,Default,,0000,0000,0000,,Python or Java, there is a difference between Dialogue: 0,0:06:56.58,0:06:59.54,Default,,0000,0000,0000,,compile time and run time. When you are running, Dialogue: 0,0:06:59.54,0:07:06.54,Default,,0000,0000,0000,,the language is not available to you. Dialogue: 0,0:07:06.71,0:07:09.59,Default,,0000,0000,0000,,You cannot, you know, manipulate the code\Nitself Dialogue: 0,0:07:09.59,0:07:14.82,Default,,0000,0000,0000,,while it is running, or generate new code,\Ndynamically. Dialogue: 0,0:07:14.82,0:07:21.82,Default,,0000,0000,0000,,So that is one thing that lisp dialect exploits\Nby design, Dialogue: 0,0:07:22.82,0:07:25.73,Default,,0000,0000,0000,,because they have something, Dialogue: 0,0:07:25.73,0:07:27.05,Default,,0000,0000,0000,,a property called homoiconicity, Dialogue: 0,0:07:27.05,0:07:29.65,Default,,0000,0000,0000,,which basically means that the code and data Dialogue: 0,0:07:29.65,0:07:30.36,Default,,0000,0000,0000,,are pretty much the same. Even though they\Nmay not be identical, Dialogue: 0,0:07:30.36,0:07:30.49,Default,,0000,0000,0000,,but, for all practical purposes they are the\Nsame. Dialogue: 0,0:07:30.49,0:07:33.92,Default,,0000,0000,0000,,That means when a Closure code is running, Dialogue: 0,0:07:33.92,0:07:36.25,Default,,0000,0000,0000,,it can manipulate itself while it's running, Dialogue: 0,0:07:36.25,0:07:38.37,Default,,0000,0000,0000,,and it can maybe generate new code, optimize\Nsomething away. Dialogue: 0,0:07:38.37,0:07:41.03,Default,,0000,0000,0000,,So basically it lets you write code which\Nwrites more code, Dialogue: 0,0:07:41.03,0:07:42.25,Default,,0000,0000,0000,,so, and that is something which is always\Npreferable. Dialogue: 0,0:07:42.25,0:07:44.89,Default,,0000,0000,0000,,It is better to write a code that writes more\Ncode Dialogue: 0,0:07:44.89,0:07:51.89,Default,,0000,0000,0000,,than to just write code. So, and there are\Nmany other features Dialogue: 0,0:07:52.43,0:07:56.39,Default,,0000,0000,0000,,that lisp has, for example, the language itself\Nis so simple, Dialogue: 0,0:07:56.39,0:08:01.26,Default,,0000,0000,0000,,like there are just few primitives to understand\Nand learn about. Dialogue: 0,0:08:01.26,0:08:02.54,Default,,0000,0000,0000,,Syntax is pretty much non-existent, Dialogue: 0,0:08:02.54,0:08:04.01,Default,,0000,0000,0000,,and very simple to understand and learn. Dialogue: 0,0:08:04.01,0:08:09.14,Default,,0000,0000,0000,,And that really reduces a lot of cognitive\Noverload Dialogue: 0,0:08:09.14,0:08:09.90,Default,,0000,0000,0000,,that some languages might introduce. Dialogue: 0,0:08:09.90,0:08:11.97,Default,,0000,0000,0000,,So yeah, I mean, these are probably a few\Nsuperficial advantages. Dialogue: 0,0:08:11.97,0:08:17.70,Default,,0000,0000,0000,,I can go deep into it, but maybe we can talk\Nabout it after. Dialogue: 0,0:08:17.70,0:08:24.70,Default,,0000,0000,0000,,H.K.: Yeah, so, Chad, like, what is your poison\Nof choice? Dialogue: 0,0:08:30.00,0:08:32.43,Default,,0000,0000,0000,,C.F.: My poison of choice? Dialogue: 0,0:08:32.43,0:08:34.67,Default,,0000,0000,0000,,H.K.: Yeah. Dialogue: 0,0:08:34.67,0:08:37.75,Default,,0000,0000,0000,,C.F.: I guess, it's hard to answer that question. Dialogue: 0,0:08:37.75,0:08:39.24,Default,,0000,0000,0000,,I don't have an answer, right? Dialogue: 0,0:08:39.24,0:08:43.55,Default,,0000,0000,0000,,The one single answer I could give you is\Nanything except for Ruby. Dialogue: 0,0:08:43.55,0:08:44.24,Default,,0000,0000,0000,,H.K.: OK. Dialogue: 0,0:08:44.24,0:08:49.17,Default,,0000,0000,0000,,C.F.: And I mean that very seriously. Dialogue: 0,0:08:49.17,0:08:53.67,Default,,0000,0000,0000,,I remember in 2007, I was at MountainWest\NRuby Conference, Dialogue: 0,0:08:53.67,0:08:57.44,Default,,0000,0000,0000,,the first one, that Coby was talking about\Nearlier, Dialogue: 0,0:08:57.44,0:09:00.52,Default,,0000,0000,0000,,and I did a keynote, my first- no, it wasn't\Nmy first keynote, Dialogue: 0,0:09:00.52,0:09:02.33,Default,,0000,0000,0000,,it was my first Ruby Conference keynote. Dialogue: 0,0:09:02.33,0:09:06.02,Default,,0000,0000,0000,,It was about, like, what do we do next, after\NRuby? Dialogue: 0,0:09:06.02,0:09:10.26,Default,,0000,0000,0000,,And I was already deep in the like toil Dialogue: 0,0:09:10.26,0:09:13.52,Default,,0000,0000,0000,,and stress of being worried that I identified Dialogue: 0,0:09:13.52,0:09:16.31,Default,,0000,0000,0000,,too heavily with Ruby, in 2007. Dialogue: 0,0:09:16.31,0:09:19.12,Default,,0000,0000,0000,,So I wanted to like get out of the Ruby thing Dialogue: 0,0:09:19.12,0:09:21.48,Default,,0000,0000,0000,,and not be the Ruby guy, Dialogue: 0,0:09:21.48,0:09:23.89,Default,,0000,0000,0000,,and I'm still desperately trying to do that. Dialogue: 0,0:09:23.89,0:09:27.00,Default,,0000,0000,0000,,But, no, I mean, like, I said, Dialogue: 0,0:09:27.00,0:09:28.62,Default,,0000,0000,0000,,when I was speaking earlier, Dialogue: 0,0:09:28.62,0:09:35.62,Default,,0000,0000,0000,,I'm using Closure, Scala, Node, Java, Objective\NC, Ruby, Erlang, everything, Dialogue: 0,0:09:35.76,0:09:40.49,Default,,0000,0000,0000,,at work right now. I think probably what I'll\Nlearn next Dialogue: 0,0:09:40.49,0:09:42.61,Default,,0000,0000,0000,,really seriously is Objective C. Dialogue: 0,0:09:42.61,0:09:47.29,Default,,0000,0000,0000,,But I'm going to try to use it, even on the\Nserver, Dialogue: 0,0:09:47.29,0:09:50.14,Default,,0000,0000,0000,,as like a language to develop services in, Dialogue: 0,0:09:50.14,0:09:52.30,Default,,0000,0000,0000,,just as an experiment so I can learn it better Dialogue: 0,0:09:52.30,0:09:55.09,Default,,0000,0000,0000,,and do better job on the clients. Dialogue: 0,0:09:55.09,0:09:58.20,Default,,0000,0000,0000,,H.K.: So like not Ruby? Dialogue: 0,0:09:58.20,0:10:01.45,Default,,0000,0000,0000,,Is it because like you already had kind of\Na Ruby like, Dialogue: 0,0:10:01.45,0:10:02.39,Default,,0000,0000,0000,,you obviously work with Ruby as like with\Nthe, Dialogue: 0,0:10:02.39,0:10:02.52,Default,,0000,0000,0000,,along with Dave Thomas, and all of these guys, Dialogue: 0,0:10:02.52,0:10:08.70,Default,,0000,0000,0000,,you were one of the earlier adopters of Ruby,\Nso like, are- Dialogue: 0,0:10:08.70,0:10:11.87,Default,,0000,0000,0000,,C.F.: Yeah, because I will never learn anything\Nelse about Ruby, Dialogue: 0,0:10:11.87,0:10:13.54,Default,,0000,0000,0000,,cause I know everything. Dialogue: 0,0:10:13.54,0:10:17.74,Default,,0000,0000,0000,,No, it's- I'm always suspicious of myself Dialogue: 0,0:10:17.74,0:10:22.58,Default,,0000,0000,0000,,when I identify too heavily with anything\Nextrinsic to me. Dialogue: 0,0:10:22.58,0:10:24.49,Default,,0000,0000,0000,,Like for me to say I am a Ruby programmer- Dialogue: 0,0:10:24.49,0:10:27.70,Default,,0000,0000,0000,,if I say that, I feel bad, and I know that\NI've made a mistake. Dialogue: 0,0:10:27.70,0:10:30.57,Default,,0000,0000,0000,,I know that I'm creating some rigidity of\Nvalue Dialogue: 0,0:10:30.57,0:10:36.20,Default,,0000,0000,0000,,that is ultimately counter productive to my\Nsuccess Dialogue: 0,0:10:36.20,0:10:38.87,Default,,0000,0000,0000,,and to the success of people around me. Dialogue: 0,0:10:38.87,0:10:41.95,Default,,0000,0000,0000,,So like I've been doing more Java in the past\Nmonth Dialogue: 0,0:10:41.95,0:10:47.46,Default,,0000,0000,0000,,than Ruby, which I used to do full time in\N1999. Dialogue: 0,0:10:47.46,0:10:49.76,Default,,0000,0000,0000,,And it's been a really good freeing thing, Dialogue: 0,0:10:49.76,0:10:53.23,Default,,0000,0000,0000,,like I am not a Ruby programmer, I am a programmer, Dialogue: 0,0:10:53.23,0:10:54.46,Default,,0000,0000,0000,,and even that is kind of limiting, Dialogue: 0,0:10:54.46,0:10:57.21,Default,,0000,0000,0000,,because I'm more and less than that at the\Nsame time. Dialogue: 0,0:10:57.21,0:10:59.64,Default,,0000,0000,0000,,So it's not so much that I'm worried about\NRuby itself, Dialogue: 0,0:10:59.64,0:11:01.21,Default,,0000,0000,0000,,it's that I'm worried about putting myself Dialogue: 0,0:11:01.21,0:11:03.45,Default,,0000,0000,0000,,into a bucket that I can't get out of, Dialogue: 0,0:11:03.45,0:11:07.41,Default,,0000,0000,0000,,even if it's a subconscious problem. Dialogue: 0,0:11:07.41,0:11:13.58,Default,,0000,0000,0000,,H.K.: OK, Yogi. Yeah, so what do you- Dialogue: 0,0:11:13.58,0:11:14.33,Default,,0000,0000,0000,,Yogi Kulkarni: Sure. Dialogue: 0,0:11:14.33,0:11:16.74,Default,,0000,0000,0000,,So, if you're asking about personal choice\Nthen, Dialogue: 0,0:11:16.74,0:11:19.28,Default,,0000,0000,0000,,sure, you know I like coding in Ruby. Dialogue: 0,0:11:19.28,0:11:21.84,Default,,0000,0000,0000,,I just love it because it's compact. Dialogue: 0,0:11:21.84,0:11:26.34,Default,,0000,0000,0000,,I feel the translation from my thoughts to\Ncode is shortest in Ruby, Dialogue: 0,0:11:26.34,0:11:28.86,Default,,0000,0000,0000,,so it just feels very natural. Dialogue: 0,0:11:28.86,0:11:32.55,Default,,0000,0000,0000,,But that said, I think I've moved the last\Nseven years Dialogue: 0,0:11:32.55,0:11:37.04,Default,,0000,0000,0000,,from being a kind of a language geek, of sorts, Dialogue: 0,0:11:37.04,0:11:40.11,Default,,0000,0000,0000,,not really, but, I used to love program language\Ntheory Dialogue: 0,0:11:40.11,0:11:42.03,Default,,0000,0000,0000,,and getting into stuff like that, Dialogue: 0,0:11:42.03,0:11:45.87,Default,,0000,0000,0000,,but to actually not caring too much about\Nit. Dialogue: 0,0:11:45.87,0:11:47.93,Default,,0000,0000,0000,,I think programming languages are good, Dialogue: 0,0:11:47.93,0:11:50.70,Default,,0000,0000,0000,,and they kind of get you excited, Dialogue: 0,0:11:50.70,0:11:54.60,Default,,0000,0000,0000,,but when it comes to actually solving hard\Nproblems, Dialogue: 0,0:11:54.60,0:11:57.04,Default,,0000,0000,0000,,it's the ecosystem that matters around that\Nlanguage. Dialogue: 0,0:11:57.04,0:11:59.96,Default,,0000,0000,0000,,Things like the tools, the profilers, the\Nmonitoring tools, Dialogue: 0,0:11:59.96,0:12:03.52,Default,,0000,0000,0000,,debuggers, you know that's the stuff which\Nno language Dialogue: 0,0:12:03.52,0:12:06.08,Default,,0000,0000,0000,,is gonna save you when you're in production,\Nright. Dialogue: 0,0:12:06.08,0:12:06.92,Default,,0000,0000,0000,,So you just need to have that, Dialogue: 0,0:12:06.92,0:12:10.20,Default,,0000,0000,0000,,the maturity of an ecosystem is really important\Nthere. Dialogue: 0,0:12:10.20,0:12:12.71,Default,,0000,0000,0000,,Which is why we keep going back to the JVM\Nover and over, Dialogue: 0,0:12:12.71,0:12:15.93,Default,,0000,0000,0000,,and even the new languages are being built\Non the JVM as, Dialogue: 0,0:12:15.93,0:12:19.29,Default,,0000,0000,0000,,it's for exactly that reason. Dialogue: 0,0:12:19.29,0:12:21.40,Default,,0000,0000,0000,,But among the newer languages on the JVM, Dialogue: 0,0:12:21.40,0:12:25.08,Default,,0000,0000,0000,,I'm actually surprised that I've- so, I'm\Nkind of Dialogue: 0,0:12:25.08,0:12:26.21,Default,,0000,0000,0000,,intrigued by Closure and Scala. Dialogue: 0,0:12:26.21,0:12:28.99,Default,,0000,0000,0000,,We actually looked at Scala very carefully Dialogue: 0,0:12:28.99,0:12:32.23,Default,,0000,0000,0000,,for the system I spoke about. Dialogue: 0,0:12:32.23,0:12:36.27,Default,,0000,0000,0000,,But I didn't think it gave the kind of jump. Dialogue: 0,0:12:36.27,0:12:39.98,Default,,0000,0000,0000,,I felt was kind of marginal, Dialogue: 0,0:12:39.98,0:12:42.60,Default,,0000,0000,0000,,the improvement over just doing good Java, Dialogue: 0,0:12:42.60,0:12:44.68,Default,,0000,0000,0000,,that Scala gave, that's arguable. Dialogue: 0,0:12:44.68,0:12:47.29,Default,,0000,0000,0000,,There's a lot of language features there, Dialogue: 0,0:12:47.29,0:12:48.64,Default,,0000,0000,0000,,possibly too many language features, Dialogue: 0,0:12:48.64,0:12:51.56,Default,,0000,0000,0000,,which is one of my concerns. Dialogue: 0,0:12:51.56,0:12:53.21,Default,,0000,0000,0000,,But Closure, we looked at that also, Dialogue: 0,0:12:53.21,0:12:54.74,Default,,0000,0000,0000,,but we didn't look, we didn't actually Dialogue: 0,0:12:54.74,0:12:56.53,Default,,0000,0000,0000,,take it that seriously, because of basically Dialogue: 0,0:12:56.53,0:12:57.64,Default,,0000,0000,0000,,the prefix notation being too alien. Dialogue: 0,0:12:57.64,0:12:59.59,Default,,0000,0000,0000,,We wanted something block structured Dialogue: 0,0:12:59.59,0:13:04.20,Default,,0000,0000,0000,,for people moving from Java to Ruby. Dialogue: 0,0:13:04.20,0:13:05.76,Default,,0000,0000,0000,,So I think, yeah, Dialogue: 0,0:13:05.76,0:13:08.71,Default,,0000,0000,0000,,those are the kind of things that are on my\Nmind. Dialogue: 0,0:13:08.71,0:13:12.78,Default,,0000,0000,0000,,H.K.: OK. So, Ghose, do you- I'm gonna call\Nyou BG, OK? Dialogue: 0,0:13:12.78,0:13:15.28,Default,,0000,0000,0000,,Yeah, so, BG, do you ever like, Dialogue: 0,0:13:15.28,0:13:19.19,Default,,0000,0000,0000,,the programming languages do not matter all\Nthat much, Dialogue: 0,0:13:19.19,0:13:22.76,Default,,0000,0000,0000,,do you think the state of it are like if you\Nimproved like- Dialogue: 0,0:13:22.76,0:13:28.19,Default,,0000,0000,0000,,B.G.: I'm told Alan Pearl is here, Dialogue: 0,0:13:28.19,0:13:32.14,Default,,0000,0000,0000,,and he basically said that programming language Dialogue: 0,0:13:32.14,0:13:36.02,Default,,0000,0000,0000,,basically shapes the way you think about solving\Nproblems. Dialogue: 0,0:13:36.02,0:13:37.25,Default,,0000,0000,0000,,So even if you do not use Closure or Scala Dialogue: 0,0:13:37.25,0:13:37.57,Default,,0000,0000,0000,,or whatever fancy language that comes out, Dialogue: 0,0:13:37.57,0:13:42.46,Default,,0000,0000,0000,,you should try it out because ultimately Dialogue: 0,0:13:42.46,0:13:45.36,Default,,0000,0000,0000,,you're trying to solve a problem, right. Dialogue: 0,0:13:45.36,0:13:47.36,Default,,0000,0000,0000,,You have the problem at hand, Dialogue: 0,0:13:47.36,0:13:50.33,Default,,0000,0000,0000,,and you'd like to look at the problem from\Ndifferent perspectives. Dialogue: 0,0:13:50.33,0:13:52.69,Default,,0000,0000,0000,,See if you only have one way of looking at\Nthe problem, Dialogue: 0,0:13:52.69,0:13:56.15,Default,,0000,0000,0000,,then you know, by repeating the same approach\Na Dialogue: 0,0:13:56.15,0:13:59.01,Default,,0000,0000,0000,,thousand times is not going to help you. Dialogue: 0,0:13:59.01,0:13:59.37,Default,,0000,0000,0000,,You should look at different ways of Dialogue: 0,0:13:59.37,0:14:00.20,Default,,0000,0000,0000,,maybe approaching the problem, Dialogue: 0,0:14:00.20,0:14:04.74,Default,,0000,0000,0000,,and even understanding the problem itself. Dialogue: 0,0:14:04.74,0:14:11.74,Default,,0000,0000,0000,,Simple example, parallel processing can be\Ndone using threads. Dialogue: 0,0:14:13.37,0:14:16.07,Default,,0000,0000,0000,,You can use quarantines. Dialogue: 0,0:14:16.07,0:14:17.46,Default,,0000,0000,0000,,You can use CSB, you can use Actor. Dialogue: 0,0:14:17.46,0:14:18.29,Default,,0000,0000,0000,,What should I use, given any situation? Dialogue: 0,0:14:18.29,0:14:19.35,Default,,0000,0000,0000,,So even if that- if I don't even know about\NActors or CSB, Dialogue: 0,0:14:19.35,0:14:20.47,Default,,0000,0000,0000,,I'll never be exposed to that line of thought, Dialogue: 0,0:14:20.47,0:14:24.73,Default,,0000,0000,0000,,so that code is basically to learn a language, Dialogue: 0,0:14:24.73,0:14:27.70,Default,,0000,0000,0000,,not to just switch wholesale to that language, Dialogue: 0,0:14:27.70,0:14:34.39,Default,,0000,0000,0000,,but to be able to appreciate new ways of looking\Nat solving problems. Dialogue: 0,0:14:34.39,0:14:37.35,Default,,0000,0000,0000,,Y.K.: So I think that's a great point, and\Nwhen I, Dialogue: 0,0:14:37.35,0:14:39.90,Default,,0000,0000,0000,,kind of, I missed mentioning this, see, Dialogue: 0,0:14:39.90,0:14:42.16,Default,,0000,0000,0000,,when I was a program language geek, Dialogue: 0,0:14:42.16,0:14:46.16,Default,,0000,0000,0000,,I think the one great important inspiration\Nfor me was SICP, Dialogue: 0,0:14:46.16,0:14:49.18,Default,,0000,0000,0000,,right, structural interpretation of computer\Nprograms. Dialogue: 0,0:14:49.18,0:14:52.80,Default,,0000,0000,0000,,And that's something which, again, goes back\Nto what is, Dialogue: 0,0:14:52.80,0:14:55.64,Default,,0000,0000,0000,,what are the fundamental abstractions again, Dialogue: 0,0:14:55.64,0:14:58.31,Default,,0000,0000,0000,,you can reach out to solve problems of different\Nnatures, right. Dialogue: 0,0:14:58.31,0:15:01.28,Default,,0000,0000,0000,,And that was the crux of it, you can use data\Nas abstraction, Dialogue: 0,0:15:01.28,0:15:02.12,Default,,0000,0000,0000,,procedures are abstraction, Dialogue: 0,0:15:02.12,0:15:05.74,Default,,0000,0000,0000,,stream processing and actually creating languages\Nof your own. Dialogue: 0,0:15:05.74,0:15:08.79,Default,,0000,0000,0000,,So the point is that there are far more paradigms,\Nright, Dialogue: 0,0:15:08.79,0:15:11.32,Default,,0000,0000,0000,,and I think getting a grasp of those paradigms\Nis very critical, Dialogue: 0,0:15:11.32,0:15:13.14,Default,,0000,0000,0000,,but for that you don't necessarily need to\Ngo Dialogue: 0,0:15:13.14,0:15:16.02,Default,,0000,0000,0000,,every new languages around for you to see\Nwhat Dialogue: 0,0:15:16.02,0:15:18.58,Default,,0000,0000,0000,,ideas are implemented well in which language, Dialogue: 0,0:15:18.58,0:15:19.27,Default,,0000,0000,0000,,what can you adopt. Dialogue: 0,0:15:19.27,0:15:21.27,Default,,0000,0000,0000,,Take for example, after reading SICP, Dialogue: 0,0:15:21.27,0:15:24.22,Default,,0000,0000,0000,,I think my Java programming became so much\Nbetter, Dialogue: 0,0:15:24.22,0:15:28.65,Default,,0000,0000,0000,,I have said using more anonymous functions\Nor classes, Dialogue: 0,0:15:28.65,0:15:34.87,Default,,0000,0000,0000,,yeah, that's ugly but, so yeah. So I totally\Nagree with that. Dialogue: 0,0:15:34.87,0:15:39.00,Default,,0000,0000,0000,,H.K. So we, you talked about like, Dialogue: 0,0:15:39.00,0:15:42.85,Default,,0000,0000,0000,,how many of you heard of like something like, Dialogue: 0,0:15:42.85,0:15:45.29,Default,,0000,0000,0000,,or used a after patch in full or any sort\Nof concurrent programming, Dialogue: 0,0:15:45.29,0:15:46.81,Default,,0000,0000,0000,,can we have a show of hands? Dialogue: 0,0:15:46.81,0:15:50.30,Default,,0000,0000,0000,,OK, so, anybody wants to explain like yeah? Dialogue: 0,0:15:50.30,0:15:52.92,Default,,0000,0000,0000,,B.G.: There is nothing to explain. Dialogue: 0,0:15:52.92,0:15:56.60,Default,,0000,0000,0000,,Just go and read on Wikipedia. Dialogue: 0,0:15:56.60,0:15:59.40,Default,,0000,0000,0000,,C.F.: Or DFM. Dialogue: 0,0:15:59.40,0:16:03.14,Default,,0000,0000,0000,,B.G.: Or DFM, yeah. Dialogue: 0,0:16:03.14,0:16:06.44,Default,,0000,0000,0000,,H.K.: So. Which language you think like does Dialogue: 0,0:16:06.44,0:16:09.80,Default,,0000,0000,0000,,the whole active pattern problem programming\Nproperly? Dialogue: 0,0:16:09.80,0:16:13.49,Default,,0000,0000,0000,,B.G.: So Actors are well implemented in Erlang, Dialogue: 0,0:16:13.49,0:16:18.93,Default,,0000,0000,0000,,and Echo, if you are using Scala, so take\Na look at it. Dialogue: 0,0:16:18.93,0:16:20.60,Default,,0000,0000,0000,,And again this is not a single bullet, Dialogue: 0,0:16:20.60,0:16:22.05,Default,,0000,0000,0000,,again go back to your own basics, Dialogue: 0,0:16:22.05,0:16:23.24,Default,,0000,0000,0000,,Fred Brooks told you guys many years back, Dialogue: 0,0:16:23.24,0:16:23.98,Default,,0000,0000,0000,,go back to your basics. (00:16:28 - ??) Dialogue: 0,0:16:23.98,0:16:25.10,Default,,0000,0000,0000,,So Actors will not solve all kinds of problems Dialogue: 0,0:16:25.10,0:16:25.58,Default,,0000,0000,0000,,for you but you should be aware that there\Nis Dialogue: 0,0:16:25.58,0:16:25.62,Default,,0000,0000,0000,,another abstraction that I could probably\Nleverage Dialogue: 0,0:16:25.62,0:16:32.62,Default,,0000,0000,0000,,to solve whatever problem that I have and\Ncan. Dialogue: 0,0:16:38.29,0:16:43.10,Default,,0000,0000,0000,,CSP is another thing that I briefly alluded\Nto. Dialogue: 0,0:16:43.10,0:16:46.55,Default,,0000,0000,0000,,That's something that is embodied in Go. Dialogue: 0,0:16:46.55,0:16:50.53,Default,,0000,0000,0000,,So Yogi just said that you don't need to learn\Na programming language, Dialogue: 0,0:16:50.53,0:16:54.81,Default,,0000,0000,0000,,but look at systems where all these ideas\Nare well-implemented, Dialogue: 0,0:16:54.81,0:16:58.25,Default,,0000,0000,0000,,but I would also argue that not all ideas Dialogue: 0,0:16:58.25,0:17:01.74,Default,,0000,0000,0000,,can be implemented as well in all languages. Dialogue: 0,0:17:01.74,0:17:05.10,Default,,0000,0000,0000,,So you cannot, for example, Java does not,\NI mean, Dialogue: 0,0:17:05.10,0:17:07.68,Default,,0000,0000,0000,,Java has something called Lambdas, but Java\Nhasn't, Dialogue: 0,0:17:07.68,0:17:09.37,Default,,0000,0000,0000,,does not have any of those functions. Dialogue: 0,0:17:09.37,0:17:10.95,Default,,0000,0000,0000,,So if I really wanted to understand the value Dialogue: 0,0:17:10.95,0:17:16.08,Default,,0000,0000,0000,,and virtues of any of those functions, Dialogue: 0,0:17:16.08,0:17:18.41,Default,,0000,0000,0000,,I can't learn it through Java. Dialogue: 0,0:17:18.41,0:17:20.24,Default,,0000,0000,0000,,The closest I'll get to is dependent injection, Dialogue: 0,0:17:20.24,0:17:23.07,Default,,0000,0000,0000,,but that is yet another level of abstraction, Dialogue: 0,0:17:23.07,0:17:28.80,Default,,0000,0000,0000,,which basically removes me part of the way\Nfrom the core goal, right. Dialogue: 0,0:17:28.80,0:17:34.24,Default,,0000,0000,0000,,So there are languages which are design to\Nlevel certain principles. Dialogue: 0,0:17:34.24,0:17:38.73,Default,,0000,0000,0000,,Go for example is built on top of CSP, Dialogue: 0,0:17:38.73,0:17:41.42,Default,,0000,0000,0000,,and the channels are a first class thing, Dialogue: 0,0:17:41.42,0:17:41.76,Default,,0000,0000,0000,,Erlang, also has something similar. Dialogue: 0,0:17:41.76,0:17:45.14,Default,,0000,0000,0000,,So maybe learning those languages will expose\Nyou Dialogue: 0,0:17:45.14,0:17:47.92,Default,,0000,0000,0000,,to those ideas much better than something\Nother language. Dialogue: 0,0:17:47.92,0:17:48.86,Default,,0000,0000,0000,,H.K.: Chad, you want to- Dialogue: 0,0:17:48.86,0:17:50.04,Default,,0000,0000,0000,,C.F.: Yeah, I think from a, Dialogue: 0,0:17:50.04,0:17:52.77,Default,,0000,0000,0000,,from the perspective of learning the paradigm, Dialogue: 0,0:17:52.77,0:17:55.34,Default,,0000,0000,0000,,I think Yogi is lucky that he is smart enough Dialogue: 0,0:17:55.34,0:17:58.85,Default,,0000,0000,0000,,to read a book and then get all these things. Dialogue: 0,0:17:58.85,0:18:00.70,Default,,0000,0000,0000,,My experience is not the same. Dialogue: 0,0:18:00.70,0:18:01.80,Default,,0000,0000,0000,,I'm honest about that. Dialogue: 0,0:18:01.80,0:18:02.66,Default,,0000,0000,0000,,I don't think you're not being sincere, Dialogue: 0,0:18:02.66,0:18:07.36,Default,,0000,0000,0000,,I think some people, including me, Dialogue: 0,0:18:07.36,0:18:09.30,Default,,0000,0000,0000,,have to actually use the thing, Dialogue: 0,0:18:09.30,0:18:11.95,Default,,0000,0000,0000,,not just the language but the paradigm. Dialogue: 0,0:18:11.95,0:18:15.91,Default,,0000,0000,0000,,So like I can read about Actors in five minutes. Dialogue: 0,0:18:15.91,0:18:20.35,Default,,0000,0000,0000,,I totally understand it from a theoretical\Nperspective. Dialogue: 0,0:18:20.35,0:18:21.09,Default,,0000,0000,0000,,But it takes awhile, Dialogue: 0,0:18:21.09,0:18:22.49,Default,,0000,0000,0000,,and it takes actually trying Dialogue: 0,0:18:22.49,0:18:27.09,Default,,0000,0000,0000,,for me to really get where it makes sense,\Nyou know. Dialogue: 0,0:18:27.09,0:18:28.30,Default,,0000,0000,0000,,B.G.: To appreciate it. Dialogue: 0,0:18:28.30,0:18:31.20,Default,,0000,0000,0000,,and also to appreciate the edges of it. Dialogue: 0,0:18:31.20,0:18:33.63,Default,,0000,0000,0000,,So I actually think like, Dialogue: 0,0:18:33.63,0:18:35.99,Default,,0000,0000,0000,,I've been trying to get out of Ruby Dialogue: 0,0:18:35.99,0:18:36.86,Default,,0000,0000,0000,,as I've been saying. Dialogue: 0,0:18:36.86,0:18:39.15,Default,,0000,0000,0000,,I mean the truth is I have learned, Dialogue: 0,0:18:39.15,0:18:40.82,Default,,0000,0000,0000,,I don't know how many programming languages Dialogue: 0,0:18:40.82,0:18:42.29,Default,,0000,0000,0000,,since I started doing Ruby, Dialogue: 0,0:18:42.29,0:18:44.13,Default,,0000,0000,0000,,but I have never stuck to one. Dialogue: 0,0:18:44.13,0:18:45.81,Default,,0000,0000,0000,,I have, but you know, Dialogue: 0,0:18:45.81,0:18:48.01,Default,,0000,0000,0000,,I have rarely stuck to one long enough to\Nwhere Dialogue: 0,0:18:48.01,0:18:50.78,Default,,0000,0000,0000,,I really, really thought like that, Dialogue: 0,0:18:50.78,0:18:53.16,Default,,0000,0000,0000,,and like the best case scenario for me Dialogue: 0,0:18:53.16,0:18:58.79,Default,,0000,0000,0000,,in picking up these other paradigms is to\Nlike Dialogue: 0,0:18:58.79,0:19:03.57,Default,,0000,0000,0000,,get so into Go programming that then I go\Nback to Ruby, Dialogue: 0,0:19:03.57,0:19:07.29,Default,,0000,0000,0000,,and I go to do something, and I don't try\Nto implement channels, Dialogue: 0,0:19:07.29,0:19:10.89,Default,,0000,0000,0000,,I just say, damn it, channels aren't here,\NI'm frustrated now. Dialogue: 0,0:19:10.89,0:19:13.94,Default,,0000,0000,0000,,And it, I see that this language isn't perfect Dialogue: 0,0:19:13.94,0:19:15.19,Default,,0000,0000,0000,,because no language is. Dialogue: 0,0:19:15.19,0:19:17.15,Default,,0000,0000,0000,,But you can't get to that point, Dialogue: 0,0:19:17.15,0:19:19.07,Default,,0000,0000,0000,,and that's like where the maturity comes from, Dialogue: 0,0:19:19.07,0:19:21.86,Default,,0000,0000,0000,,where you're not in love with any certain\Nthing, Dialogue: 0,0:19:21.86,0:19:24.08,Default,,0000,0000,0000,,and you're, you see the entire landscape, Dialogue: 0,0:19:24.08,0:19:26.30,Default,,0000,0000,0000,,and this is a part of why I can't answer the\Nquestion Dialogue: 0,0:19:26.30,0:19:28.07,Default,,0000,0000,0000,,of what my go-to language is right now. Dialogue: 0,0:19:28.07,0:19:30.87,Default,,0000,0000,0000,,Like I'm doing a lot of Scala because there Dialogue: 0,0:19:30.87,0:19:35.42,Default,,0000,0000,0000,,are certain things that I'm working on that\Nwork really well with Actors. Dialogue: 0,0:19:35.42,0:19:39.13,Default,,0000,0000,0000,,Like I can conceptualize them with Actors\Nand that's what I'm gonna- Dialogue: 0,0:19:39.13,0:19:42.19,Default,,0000,0000,0000,,I'm gonna write it in Scala because we already\Nhave the JVM, Dialogue: 0,0:19:42.19,0:19:44.55,Default,,0000,0000,0000,,so therefore it's easy to do Scala versus\NErlang. Dialogue: 0,0:19:44.55,0:19:48.20,Default,,0000,0000,0000,,H.K.: But still there's a problem here. Dialogue: 0,0:19:48.20,0:19:50.22,Default,,0000,0000,0000,,Like the way you approach programming language Dialogue: 0,0:19:50.22,0:19:53.09,Default,,0000,0000,0000,,for example like in Ruby world for example, Dialogue: 0,0:19:53.09,0:19:56.51,Default,,0000,0000,0000,,like Eric Hodel or [00"19"54] ?? Dialogue: 0,0:19:56.51,0:19:59.08,Default,,0000,0000,0000,,these guys are maintaining tools that you\Nhave written actually, Dialogue: 0,0:19:59.08,0:20:02.26,Default,,0000,0000,0000,,for many years back, and those tools all have, Dialogue: 0,0:20:02.26,0:20:04.77,Default,,0000,0000,0000,,like for example Ruby gems didn't have proper Dialogue: 0,0:20:04.77,0:20:08.63,Default,,0000,0000,0000,,test suite for awhile actually, and like the\Nbuilding- Dialogue: 0,0:20:08.63,0:20:12.22,Default,,0000,0000,0000,,C.F.: That's because tests are a design smell. Dialogue: 0,0:20:12.22,0:20:13.18,Default,,0000,0000,0000,,That's why. Dialogue: 0,0:20:13.18,0:20:17.97,Default,,0000,0000,0000,,H.K.: My point is like building a tools like\Nof a language, Dialogue: 0,0:20:17.97,0:20:19.46,Default,,0000,0000,0000,,around a language takes time actually. Dialogue: 0,0:20:19.46,0:20:21.78,Default,,0000,0000,0000,,Do you think like for example like Eric Hodel Dialogue: 0,0:20:21.78,0:20:24.29,Default,,0000,0000,0000,,and these guys are probably working with this\Nthing Dialogue: 0,0:20:24.29,0:20:26.37,Default,,0000,0000,0000,,for like nine years or so, Dialogue: 0,0:20:26.37,0:20:28.00,Default,,0000,0000,0000,,and they're still doing it, right, Dialogue: 0,0:20:28.00,0:20:30.28,Default,,0000,0000,0000,,so how do you like, if, how do you fix that? Dialogue: 0,0:20:30.28,0:20:34.28,Default,,0000,0000,0000,,Like you need to stay long-term in a language Dialogue: 0,0:20:34.28,0:20:37.46,Default,,0000,0000,0000,,to really change it, right, or like am I wrong\Nhere? Dialogue: 0,0:20:37.46,0:20:40.22,Default,,0000,0000,0000,,C.F.: You mean you need to stay in it to change\Nthe language itself? Dialogue: 0,0:20:40.22,0:20:42.36,Default,,0000,0000,0000,,H.K.: To change the language or build like Dialogue: 0,0:20:42.36,0:20:46.69,Default,,0000,0000,0000,,the infrastructure or the libraries, gems\Nto support it. Dialogue: 0,0:20:46.69,0:20:48.17,Default,,0000,0000,0000,,C.F.: Yeah, somebody does. Dialogue: 0,0:20:48.17,0:20:50.53,Default,,0000,0000,0000,,It doesn't have to be me, right. Dialogue: 0,0:20:50.53,0:20:52.77,Default,,0000,0000,0000,,B.G.: Again, so let me add something to what\NChad said. Dialogue: 0,0:20:52.77,0:20:57.49,Default,,0000,0000,0000,,So Chad said that I don't want to remain a\NRuby programmer. Dialogue: 0,0:20:57.49,0:21:00.46,Default,,0000,0000,0000,,I think what he means is the Ruby mindset,\NOK, Dialogue: 0,0:21:00.46,0:21:03.65,Default,,0000,0000,0000,,or any mindset thereof. It's not about writing, Dialogue: 0,0:21:03.65,0:21:05.01,Default,,0000,0000,0000,,just coding that language. Dialogue: 0,0:21:05.01,0:21:05.82,Default,,0000,0000,0000,,So you can still be a Ruby programmer for\Ntwenty years, Dialogue: 0,0:21:05.82,0:21:10.37,Default,,0000,0000,0000,,but that doesn't mean you keep the same mindset Dialogue: 0,0:21:10.37,0:21:13.49,Default,,0000,0000,0000,,all the time, right. There are things which\Nare not even new, Dialogue: 0,0:21:13.49,0:21:15.10,Default,,0000,0000,0000,,but we are not discovering those things Dialogue: 0,0:21:15.10,0:21:17.01,Default,,0000,0000,0000,,because we are not looking beyond Ruby. Dialogue: 0,0:21:17.01,0:21:18.85,Default,,0000,0000,0000,,H.K.: Can anyone else, sorry - Dialogue: 0,0:21:18.85,0:21:21.98,Default,,0000,0000,0000,,can anyone else carry the mic Dialogue: 0,0:21:21.98,0:21:26.02,Default,,0000,0000,0000,,and give it to the audience actually because-\Nthere's no mic Dialogue: 0,0:21:26.02,0:21:26.86,Default,,0000,0000,0000,,B.G.: It's not just about Ruby, per se, right, Dialogue: 0,0:21:26.86,0:21:27.61,Default,,0000,0000,0000,,it's about any- it's applicable to any language, Dialogue: 0,0:21:27.61,0:21:31.81,Default,,0000,0000,0000,,like JavaScript, or Scala, or even Java for\Nthat matter. Dialogue: 0,0:21:31.81,0:21:36.23,Default,,0000,0000,0000,,V.S.: So this, this is kind of intrinsic to, Dialogue: 0,0:21:36.23,0:21:39.61,Default,,0000,0000,0000,,something intrinsic to all we actually select Dialogue: 0,0:21:39.61,0:21:42.94,Default,,0000,0000,0000,,a language or set of languages to develop\Nthese tastes, Dialogue: 0,0:21:42.94,0:21:44.07,Default,,0000,0000,0000,,depending on the nature of the problem, Dialogue: 0,0:21:44.07,0:21:47.09,Default,,0000,0000,0000,,I guess you pick what is called like a language Dialogue: 0,0:21:47.09,0:21:50.26,Default,,0000,0000,0000,,to which other languages can actually circle\Naround Dialogue: 0,0:21:50.26,0:21:52.58,Default,,0000,0000,0000,,and support various smaller problems, Dialogue: 0,0:21:52.58,0:21:55.25,Default,,0000,0000,0000,,whereas this core language that you're picking\Nis solving Dialogue: 0,0:21:55.25,0:21:58.13,Default,,0000,0000,0000,,like majority of the nature of the problem. Dialogue: 0,0:21:58.13,0:21:59.52,Default,,0000,0000,0000,,For example, web application, Dialogue: 0,0:21:59.52,0:22:00.72,Default,,0000,0000,0000,,but you got some parallelism stuff Dialogue: 0,0:22:00.72,0:22:03.24,Default,,0000,0000,0000,,that you need to do or you got some Dialogue: 0,0:22:03.24,0:22:04.94,Default,,0000,0000,0000,,functional programming stuff you need to do\Nlike Scala, Dialogue: 0,0:22:04.94,0:22:07.04,Default,,0000,0000,0000,,so you probably pick one language, well like, Dialogue: 0,0:22:07.04,0:22:10.36,Default,,0000,0000,0000,,Ruby, as to kind of like hold everything together, Dialogue: 0,0:22:10.36,0:22:12.02,Default,,0000,0000,0000,,but you do have these other languages in which Dialogue: 0,0:22:12.02,0:22:12.31,Default,,0000,0000,0000,,you actually solve problems differently. Dialogue: 0,0:22:12.31,0:22:18.51,Default,,0000,0000,0000,,So it's more of- but different problems in\Nsome contexts, Dialogue: 0,0:22:18.51,0:22:19.88,Default,,0000,0000,0000,,Scala may be the code language, Dialogue: 0,0:22:19.88,0:22:21.50,Default,,0000,0000,0000,,and you may want to wrap it around Ruby Dialogue: 0,0:22:21.50,0:22:23.89,Default,,0000,0000,0000,,a little bit or maybe other things a little\Nbit as well, Dialogue: 0,0:22:23.89,0:22:26.31,Default,,0000,0000,0000,,so it's more of starting from the Dialogue: 0,0:22:26.31,0:22:28.44,Default,,0000,0000,0000,,architecture of the nature of the problem, Dialogue: 0,0:22:28.44,0:22:30.97,Default,,0000,0000,0000,,but being polyglots, you have this choice\Nnow, Dialogue: 0,0:22:30.97,0:22:32.92,Default,,0000,0000,0000,,not to implement and struggle with one language Dialogue: 0,0:22:32.92,0:22:34.97,Default,,0000,0000,0000,,like you just talked about example, but I\Nwish Dialogue: 0,0:22:34.97,0:22:37.11,Default,,0000,0000,0000,,channels were there in one particular case. Dialogue: 0,0:22:37.11,0:22:39.78,Default,,0000,0000,0000,,But now you could pick, if you can become\Na polyglot Dialogue: 0,0:22:39.78,0:22:42.40,Default,,0000,0000,0000,,and learn these other languages to a good\Ndegree, Dialogue: 0,0:22:42.40,0:22:44.58,Default,,0000,0000,0000,,you could pick other languages to compliment\Nit Dialogue: 0,0:22:44.58,0:22:46.61,Default,,0000,0000,0000,,and solve those specific problems. So this\Nseems Dialogue: 0,0:22:46.61,0:22:49.13,Default,,0000,0000,0000,,to be an approach that's kind of intrinsically Dialogue: 0,0:22:49.13,0:22:50.17,Default,,0000,0000,0000,,developing right now. Dialogue: 0,0:22:50.17,0:22:55.47,Default,,0000,0000,0000,,QUERANT: I have a point very close to what\Nyou're saying. Dialogue: 0,0:22:55.47,0:22:59.94,Default,,0000,0000,0000,,Like based on, like especially what you said\Nabout languages, right. Dialogue: 0,0:22:59.94,0:23:04.28,Default,,0000,0000,0000,,Like a general message could be use the right\Ntool Dialogue: 0,0:23:04.28,0:23:07.36,Default,,0000,0000,0000,,for the right thing kind of a thing, Dialogue: 0,0:23:07.36,0:23:12.92,Default,,0000,0000,0000,,but the problem could be that not everyone\Ncan pick up, Dialogue: 0,0:23:12.92,0:23:14.54,Default,,0000,0000,0000,,so when you go into a code based on, Dialogue: 0,0:23:14.54,0:23:16.55,Default,,0000,0000,0000,,let's say, five different languages are being\Nused Dialogue: 0,0:23:16.55,0:23:19.36,Default,,0000,0000,0000,,for the right kind of problems, Dialogue: 0,0:23:19.36,0:23:20.95,Default,,0000,0000,0000,,so they are doing the right thing, Dialogue: 0,0:23:20.95,0:23:22.44,Default,,0000,0000,0000,,but for someone to go into that code base Dialogue: 0,0:23:22.44,0:23:24.69,Default,,0000,0000,0000,,and pick it up would become very hard right, Dialogue: 0,0:23:24.69,0:23:26.99,Default,,0000,0000,0000,,because not everybody's turned in that way. Dialogue: 0,0:23:26.99,0:23:30.04,Default,,0000,0000,0000,,So that's like, so polyglot comes with a very\Nheavy cost Dialogue: 0,0:23:30.04,0:23:31.79,Default,,0000,0000,0000,,of being able to replace yourself. Dialogue: 0,0:23:31.79,0:23:34.13,Default,,0000,0000,0000,,At least that's been my experience, Dialogue: 0,0:23:34.13,0:23:35.55,Default,,0000,0000,0000,,so that's my first question, Dialogue: 0,0:23:35.55,0:23:40.19,Default,,0000,0000,0000,,and like adding onto that like it's very easy Dialogue: 0,0:23:40.19,0:23:43.53,Default,,0000,0000,0000,,like you said you know like to pick up a book, Dialogue: 0,0:23:43.53,0:23:44.96,Default,,0000,0000,0000,,read through it, go through some you know Dialogue: 0,0:23:44.96,0:23:47.11,Default,,0000,0000,0000,,tutorials or whatever it is but like Yogi Dialogue: 0,0:23:47.11,0:23:49.30,Default,,0000,0000,0000,,was saying how his team had a, Dialogue: 0,0:23:49.30,0:23:51.41,Default,,0000,0000,0000,,they needed about three to four months Dialogue: 0,0:23:51.41,0:23:53.63,Default,,0000,0000,0000,,to start writing idiomatic Ruby, right, Dialogue: 0,0:23:53.63,0:23:55.07,Default,,0000,0000,0000,,and that is a big deal, Dialogue: 0,0:23:55.07,0:23:56.54,Default,,0000,0000,0000,,because in those three to four months Dialogue: 0,0:23:56.54,0:23:59.95,Default,,0000,0000,0000,,it's critical that you keep churning out code,\Nright. Dialogue: 0,0:23:59.95,0:24:01.31,Default,,0000,0000,0000,,You'll kill yourself or you can't Dialogue: 0,0:24:01.31,0:24:04.39,Default,,0000,0000,0000,,come to a halt because now you're getting\Nthis new language on board. Dialogue: 0,0:24:04.39,0:24:07.82,Default,,0000,0000,0000,,You guys had the luxury of having an existing\Nsystem, Dialogue: 0,0:24:07.82,0:24:09.69,Default,,0000,0000,0000,,which was, and you were replacing that system, Dialogue: 0,0:24:09.69,0:24:12.10,Default,,0000,0000,0000,,but that's not necessarily always the case. Dialogue: 0,0:24:12.10,0:24:17.33,Default,,0000,0000,0000,,You have to write, so- yeah, so Dialogue: 0,0:24:17.33,0:24:17.41,Default,,0000,0000,0000,,H.K.: [indecipherable] (00:24:14) Dialogue: 0,0:24:17.41,0:24:19.66,Default,,0000,0000,0000,,QUERANT: Yeah, so like my second point was\Naround, like, Dialogue: 0,0:24:19.66,0:24:22.81,Default,,0000,0000,0000,,that was the first question for polyglot recruiting Dialogue: 0,0:24:22.81,0:24:24.24,Default,,0000,0000,0000,,and things like that would become very hard, Dialogue: 0,0:24:24.24,0:24:25.93,Default,,0000,0000,0000,,how do you know that. Dialogue: 0,0:24:25.93,0:24:29.33,Default,,0000,0000,0000,,Second, it's easy to pick up a language on\Na theoretical sense, Dialogue: 0,0:24:29.33,0:24:31.98,Default,,0000,0000,0000,,but to be able to start writing idiomatic\Nprograms Dialogue: 0,0:24:31.98,0:24:35.87,Default,,0000,0000,0000,,while also developing production-quality code, Dialogue: 0,0:24:35.87,0:24:39.46,Default,,0000,0000,0000,,do you guys have any experience about how\Nyou got that working? Dialogue: 0,0:24:39.46,0:24:42.65,Default,,0000,0000,0000,,H.K.: That was the second question here that Dialogue: 0,0:24:42.65,0:24:46.81,Default,,0000,0000,0000,,I was about to ask actually, which was like, Dialogue: 0,0:24:46.81,0:24:48.02,Default,,0000,0000,0000,,at least one part of, but like, Dialogue: 0,0:24:48.02,0:24:50.89,Default,,0000,0000,0000,,how does an organization adopt a new you know\Nlike language? Dialogue: 0,0:24:50.89,0:24:51.57,Default,,0000,0000,0000,,For example in Flipkart, like, Dialogue: 0,0:24:51.57,0:24:54.49,Default,,0000,0000,0000,,or the company where all of us work, Dialogue: 0,0:24:54.49,0:24:56.60,Default,,0000,0000,0000,,like you know like there's a, Dialogue: 0,0:24:56.60,0:24:58.30,Default,,0000,0000,0000,,in January a programmer decides I'm going\Nto build Dialogue: 0,0:24:58.30,0:25:00.36,Default,,0000,0000,0000,,this program in Erlang or I'm going to build\Nthis thing Dialogue: 0,0:25:00.36,0:25:02.77,Default,,0000,0000,0000,,in Go and there's nobody else Go, Dialogue: 0,0:25:02.77,0:25:04.25,Default,,0000,0000,0000,,nobody else doing Go, Dialogue: 0,0:25:04.25,0:25:06.27,Default,,0000,0000,0000,,so as like you guys, Dialogue: 0,0:25:06.27,0:25:08.91,Default,,0000,0000,0000,,a senior person in your respective companies, Dialogue: 0,0:25:08.91,0:25:12.09,Default,,0000,0000,0000,,so do you listen to that guy or - Dialogue: 0,0:25:12.09,0:25:15.65,Default,,0000,0000,0000,,our deployment system is attuned for like\NJVM deployment Dialogue: 0,0:25:15.65,0:25:19.79,Default,,0000,0000,0000,,or Ruby deployment and whole package management\Nor whatever, Dialogue: 0,0:25:19.79,0:25:21.24,Default,,0000,0000,0000,,and don't write this. Dialogue: 0,0:25:21.24,0:25:23.79,Default,,0000,0000,0000,,So there is like an aspect of like adopting\Na new technology, Dialogue: 0,0:25:23.79,0:25:28.38,Default,,0000,0000,0000,,hiring, you know like the skill, the idea\Nof entry, Dialogue: 0,0:25:28.38,0:25:35.38,Default,,0000,0000,0000,,like in code business which are like- so how\Ndo you tackle that problem in general? Dialogue: 0,0:25:36.39,0:25:42.23,Default,,0000,0000,0000,,Y.K.: So it's a hard problem, right. So at\NFlipkart, Dialogue: 0,0:25:42.23,0:25:44.64,Default,,0000,0000,0000,,we were already fairly polyglot, Dialogue: 0,0:25:44.64,0:25:49.19,Default,,0000,0000,0000,,for example we all, the website is in PHP, Dialogue: 0,0:25:49.19,0:25:50.97,Default,,0000,0000,0000,,the search engine is in Closure, Dialogue: 0,0:25:50.97,0:25:53.14,Default,,0000,0000,0000,,the UGC system is written in Scala, Dialogue: 0,0:25:53.14,0:25:54.88,Default,,0000,0000,0000,,Java is all over the place, Dialogue: 0,0:25:54.88,0:25:56.45,Default,,0000,0000,0000,,Ruby came into the supply chain, Dialogue: 0,0:25:56.45,0:25:58.64,Default,,0000,0000,0000,,node.js is there in the seller platform and\Nmore. Dialogue: 0,0:25:58.64,0:26:00.28,Default,,0000,0000,0000,,So we were already there, Dialogue: 0,0:26:00.28,0:26:02.52,Default,,0000,0000,0000,,but we actually ran into a few problems there. Dialogue: 0,0:26:02.52,0:26:07.19,Default,,0000,0000,0000,,So when, I think the question of technology\Nselection Dialogue: 0,0:26:07.19,0:26:08.71,Default,,0000,0000,0000,,is actually quite critical. Dialogue: 0,0:26:08.71,0:26:10.78,Default,,0000,0000,0000,,Very often a lot of it is driven by, Dialogue: 0,0:26:10.78,0:26:14.81,Default,,0000,0000,0000,,is mostly blog-driven decision making, Dialogue: 0,0:26:14.81,0:26:20.64,Default,,0000,0000,0000,,and that is, that can be quite scary. Dialogue: 0,0:26:20.64,0:26:23.17,Default,,0000,0000,0000,,So we've started to put in some kind of process, Dialogue: 0,0:26:23.17,0:26:24.59,Default,,0000,0000,0000,,it's hard, it's not worked so far. Dialogue: 0,0:26:24.59,0:26:26.06,Default,,0000,0000,0000,,We've been trying for one year Dialogue: 0,0:26:26.06,0:26:27.18,Default,,0000,0000,0000,,and the process is like, Dialogue: 0,0:26:27.18,0:26:29.22,Default,,0000,0000,0000,,you know OK go up to somebody else in the\Nteam Dialogue: 0,0:26:29.22,0:26:30.87,Default,,0000,0000,0000,,and just ask them, just bounce off your thoughts Dialogue: 0,0:26:30.87,0:26:33.54,Default,,0000,0000,0000,,first before you kind of take up a new system, Dialogue: 0,0:26:33.54,0:26:34.33,Default,,0000,0000,0000,,a new technology. Dialogue: 0,0:26:34.33,0:26:38.42,Default,,0000,0000,0000,,So we tried to formalize that, we failed miserably\Nat it. Dialogue: 0,0:26:38.42,0:26:41.49,Default,,0000,0000,0000,,But right now what we have set focus on is\Ninterfaces. Dialogue: 0,0:26:41.49,0:26:46.37,Default,,0000,0000,0000,,So we've become fairly diligent about Dialogue: 0,0:26:46.37,0:26:48.69,Default,,0000,0000,0000,,making sure that the interface and contracts\Nare good, Dialogue: 0,0:26:48.69,0:26:50.57,Default,,0000,0000,0000,,building systems, and then the systems can\Ncall independently, Dialogue: 0,0:26:50.57,0:26:51.60,Default,,0000,0000,0000,,whatever tech stack they use, Dialogue: 0,0:26:51.60,0:26:53.57,Default,,0000,0000,0000,,as long as the team is committed to it, Dialogue: 0,0:26:53.57,0:26:56.32,Default,,0000,0000,0000,,that's not a completely way-out language. Dialogue: 0,0:26:56.32,0:26:59.17,Default,,0000,0000,0000,,So we moved from being predominantly Dialogue: 0,0:26:59.17,0:27:02.55,Default,,0000,0000,0000,,thrift-oriented interfaces to HTTP, Dialogue: 0,0:27:02.55,0:27:02.79,Default,,0000,0000,0000,,and that's added a huge amount of value. Dialogue: 0,0:27:02.79,0:27:06.98,Default,,0000,0000,0000,,QUERANT: Can you say what thrift is? (00:27:06\N- indecipherable) Dialogue: 0,0:27:06.98,0:27:10.77,Default,,0000,0000,0000,,Y.K.: Sure. So Thrift is a binding protocol Dialogue: 0,0:27:10.77,0:27:12.07,Default,,0000,0000,0000,,which came out of Facebook I think, Dialogue: 0,0:27:12.07,0:27:15.17,Default,,0000,0000,0000,,so it basically gives you both RPCM point Dialogue: 0,0:27:15.17,0:27:16.58,Default,,0000,0000,0000,,and a data utilization mechanism, Dialogue: 0,0:27:16.58,0:27:21.62,Default,,0000,0000,0000,,so it's basically like Corba, Dialogue: 0,0:27:21.62,0:27:23.24,Default,,0000,0000,0000,,but it's, so it basically gives you a fast,\Nuh- Dialogue: 0,0:27:23.24,0:27:25.35,Default,,0000,0000,0000,,C.F.: These people are too young for that\Nactually. Dialogue: 0,0:27:25.35,0:27:28.18,Default,,0000,0000,0000,,Y.K.: Oops. What is Corba? Yeah. Dialogue: 0,0:27:28.18,0:27:31.03,Default,,0000,0000,0000,,C.F.: Do not ask that question. Dialogue: 0,0:27:31.03,0:27:34.47,Default,,0000,0000,0000,,B.G.: That'll be a big panel discussion by\Nitself, right. Dialogue: 0,0:27:34.47,0:27:36.19,Default,,0000,0000,0000,,C.F.: You have to be at least twenty-one to\Nhear Dialogue: 0,0:27:36.19,0:27:38.95,Default,,0000,0000,0000,,about Corba and not everyone in this room\Nis twenty-one. Dialogue: 0,0:27:38.95,0:27:44.43,Default,,0000,0000,0000,,Y.K.: Protocol buffers. It's more like that,\NOK anyway. So- Dialogue: 0,0:27:44.43,0:27:46.65,Default,,0000,0000,0000,,C.F.: I think connection is open too, right- Dialogue: 0,0:27:46.65,0:27:47.20,Default,,0000,0000,0000,,Y.K.: Sorry? Dialogue: 0,0:27:47.20,0:27:49.46,Default,,0000,0000,0000,,C.F.: You can keep a long-running PCP connection\Nwith that. Dialogue: 0,0:27:49.46,0:27:54.07,Default,,0000,0000,0000,,Y.K.: With Thrift you can do it, yes I think\Nso. Yes. Dialogue: 0,0:27:54.07,0:27:57.10,Default,,0000,0000,0000,,C.F.: You can keep a long-running PCP connection\Nopen too, Dialogue: 0,0:27:57.10,0:28:00.48,Default,,0000,0000,0000,,which makes performance better than HTTP in\Nsome cases. Dialogue: 0,0:28:00.48,0:28:03.79,Default,,0000,0000,0000,,Y.K.: Right, but if you already moved to HTTP\N1.1% Dialogue: 0,0:28:03.79,0:28:04.89,Default,,0000,0000,0000,,connections that's kind of taken care of. Dialogue: 0,0:28:04.89,0:28:07.56,Default,,0000,0000,0000,,So yeah most modern libraries have that. So- Dialogue: 0,0:28:07.56,0:28:09.90,Default,,0000,0000,0000,,H.K.: We are digressing I think- Dialogue: 0,0:28:09.90,0:28:11.85,Default,,0000,0000,0000,,Y.K.: Yeah, where were we? Dialogue: 0,0:28:11.85,0:28:13.44,Default,,0000,0000,0000,,C.F.: Let's keep digressing, let's go. Dialogue: 0,0:28:13.44,0:28:16.75,Default,,0000,0000,0000,,Y.K.: We were talking about the language and\Nlike the context- Dialogue: 0,0:28:16.75,0:28:19.19,Default,,0000,0000,0000,,Y.K.: Right, so we become pretty delusioned\Nabout contacts, Dialogue: 0,0:28:19.19,0:28:23.59,Default,,0000,0000,0000,,so HTTP and the, and actually having sensible\Nrest end points Dialogue: 0,0:28:23.59,0:28:26.24,Default,,0000,0000,0000,,and resources has become kind of defacto, Dialogue: 0,0:28:26.24,0:28:27.97,Default,,0000,0000,0000,,and that's actually helped a lot. Dialogue: 0,0:28:27.97,0:28:29.94,Default,,0000,0000,0000,,So systems within Flipkart are extremely open, Dialogue: 0,0:28:29.94,0:28:32.97,Default,,0000,0000,0000,,you can actually query them pretty easily\Nto extract data, Dialogue: 0,0:28:32.97,0:28:37.24,Default,,0000,0000,0000,,not push data to it, but yeah, so I think\Nthat works. Dialogue: 0,0:28:37.24,0:28:41.41,Default,,0000,0000,0000,,And then each team can independently take\Ndecisions Dialogue: 0,0:28:41.41,0:28:42.34,Default,,0000,0000,0000,,with some guidelines at hand, Dialogue: 0,0:28:42.34,0:28:44.72,Default,,0000,0000,0000,,so we kind of brought people towards Dialogue: 0,0:28:44.72,0:28:47.95,Default,,0000,0000,0000,,a few languages and technology stacks that\Nhave worked, Dialogue: 0,0:28:47.95,0:28:49.84,Default,,0000,0000,0000,,but not insist on it, so if somebody goes\Nout and says you know, Dialogue: 0,0:28:49.84,0:28:52.20,Default,,0000,0000,0000,,Elixir is also meant for these reasons, Dialogue: 0,0:28:52.20,0:28:54.03,Default,,0000,0000,0000,,we'll at least ask them that OK, Dialogue: 0,0:28:54.03,0:28:56.86,Default,,0000,0000,0000,,does it check a box on tooling, Dialogue: 0,0:28:56.86,0:28:59.09,Default,,0000,0000,0000,,on some mode of profiling or monitoring, Dialogue: 0,0:28:59.09,0:29:01.22,Default,,0000,0000,0000,,and basically a small check list of sorts. Dialogue: 0,0:29:01.22,0:29:03.30,Default,,0000,0000,0000,,We have not implemented this yet. Dialogue: 0,0:29:03.30,0:29:04.32,Default,,0000,0000,0000,,It's probably going to- Dialogue: 0,0:29:04.32,0:29:06.90,Default,,0000,0000,0000,,shit's going to hit the fan when we kind of\Nsuggest it, Dialogue: 0,0:29:06.90,0:29:08.89,Default,,0000,0000,0000,,but yeah that's the idea. Dialogue: 0,0:29:08.89,0:29:13.03,Default,,0000,0000,0000,,C.F.: Our solution is a little more messy, Dialogue: 0,0:29:13.03,0:29:18.44,Default,,0000,0000,0000,,I guess, as you would probably expect from\Nme. Dialogue: 0,0:29:18.44,0:29:21.04,Default,,0000,0000,0000,,But like you said, not too way-out language, Dialogue: 0,0:29:21.04,0:29:24.16,Default,,0000,0000,0000,,I like the way-out languages, and I would\Nlike everyone Dialogue: 0,0:29:24.16,0:29:27.52,Default,,0000,0000,0000,,to be able to do any weird language they want, Dialogue: 0,0:29:27.52,0:29:30.51,Default,,0000,0000,0000,,cause I hate that being a thing that people\Ntalk about Dialogue: 0,0:29:30.51,0:29:33.15,Default,,0000,0000,0000,,and are frustrated about at work. Dialogue: 0,0:29:33.15,0:29:34.59,Default,,0000,0000,0000,,Such a stupid thing to worry about. Dialogue: 0,0:29:34.59,0:29:37.84,Default,,0000,0000,0000,,So as I talked about in my talk this morning, Dialogue: 0,0:29:37.84,0:29:41.06,Default,,0000,0000,0000,,I will tell developers, any language you want,\Nfine, Dialogue: 0,0:29:41.06,0:29:43.88,Default,,0000,0000,0000,,go ahead, but you have to write very little\Ncode, Dialogue: 0,0:29:43.88,0:29:46.35,Default,,0000,0000,0000,,it has to be a very small well-defined thing. Dialogue: 0,0:29:46.35,0:29:49.21,Default,,0000,0000,0000,,We are also working very hard on the interface\Ndefinitions, Dialogue: 0,0:29:49.21,0:29:52.33,Default,,0000,0000,0000,,and that's why I was talking about that JSON\NSchema validation stuff, Dialogue: 0,0:29:52.33,0:29:56.03,Default,,0000,0000,0000,,to add one more layer of monitoring to it. Dialogue: 0,0:29:56.03,0:30:01.53,Default,,0000,0000,0000,,But most importantly, I want to hire people\Nthat I trust, Dialogue: 0,0:30:01.53,0:30:04.80,Default,,0000,0000,0000,,and I want to show them that I trust them. Dialogue: 0,0:30:04.80,0:30:07.41,Default,,0000,0000,0000,,So if someone really, really wants to do something\Nin Elixir, Dialogue: 0,0:30:07.41,0:30:11.38,Default,,0000,0000,0000,,and I have one guy who really, really wants\Nto do something in Elixir, Dialogue: 0,0:30:11.38,0:30:13.99,Default,,0000,0000,0000,,he actually proposed it for one project and\NI said fine, Dialogue: 0,0:30:13.99,0:30:16.46,Default,,0000,0000,0000,,whatever. Then we realized we needed to do\Na lot of stuff Dialogue: 0,0:30:16.46,0:30:20.47,Default,,0000,0000,0000,,that talked to Amazon SQS, and there was no\Ngood Erlang library Dialogue: 0,0:30:20.47,0:30:22.10,Default,,0000,0000,0000,,or Elixir library we could find, Dialogue: 0,0:30:22.10,0:30:24.63,Default,,0000,0000,0000,,so we did it in Scala instead, because it\Nwas easier. Dialogue: 0,0:30:24.63,0:30:27.66,Default,,0000,0000,0000,,But he made the choice, not me, and so, Dialogue: 0,0:30:27.66,0:30:32.05,Default,,0000,0000,0000,,like, we have one thing in Lua even, in engine\NX. Dialogue: 0,0:30:32.05,0:30:37.50,Default,,0000,0000,0000,,I would love to have like Assembly and Objective\NC on the server, Dialogue: 0,0:30:37.50,0:30:39.79,Default,,0000,0000,0000,,you know any, maybe, I don't know, Visual\NBasic, Dialogue: 0,0:30:39.79,0:30:43.00,Default,,0000,0000,0000,,does that still exist? We could do that too. Dialogue: 0,0:30:43.00,0:30:43.60,Default,,0000,0000,0000,,Off-screen: It totally does. Dialogue: 0,0:30:43.60,0:30:44.63,Default,,0000,0000,0000,,C.F.: Yeah, it does. All right, awesome. Dialogue: 0,0:30:44.63,0:30:46.07,Default,,0000,0000,0000,,Server-side Visual Basic. Dialogue: 0,0:30:46.07,0:30:52.17,Default,,0000,0000,0000,,B.G.: So I guess it's more of a cultural problem, Dialogue: 0,0:30:52.17,0:30:54.66,Default,,0000,0000,0000,,it's not really a technical problem. Dialogue: 0,0:30:54.66,0:30:58.17,Default,,0000,0000,0000,,And I think it can be solved by setting the\Nright expectations Dialogue: 0,0:30:58.17,0:31:03.90,Default,,0000,0000,0000,,and what Chad said, totally agree. Trust your\Nteam members. Dialogue: 0,0:31:03.90,0:31:08.17,Default,,0000,0000,0000,,Give them the opportunity to try out new tools,\Nand you know, prove them. Dialogue: 0,0:31:08.17,0:31:11.93,Default,,0000,0000,0000,,So what we do is that, when a new programming\Nlanguage Dialogue: 0,0:31:11.93,0:31:14.48,Default,,0000,0000,0000,,comes out, any way as such we are using a\Ncool Dialogue: 0,0:31:14.48,0:31:19.19,Default,,0000,0000,0000,,and really hip programming. But if something\Ncooler comes out, Dialogue: 0,0:31:19.19,0:31:22.61,Default,,0000,0000,0000,,like, I don't know, something might come out\Ntomorrow. Dialogue: 0,0:31:22.61,0:31:28.73,Default,,0000,0000,0000,,But we always have encouraged people to try\Nout new languages Dialogue: 0,0:31:28.73,0:31:32.78,Default,,0000,0000,0000,,and maybe build a internal project and show\Nit to us Dialogue: 0,0:31:32.78,0:31:36.58,Default,,0000,0000,0000,,and we take a collective decision in such\Ncases. Dialogue: 0,0:31:36.58,0:31:39.04,Default,,0000,0000,0000,,But, yeah. So I think it seems more like a\Ncultural situation, Dialogue: 0,0:31:39.04,0:31:40.64,Default,,0000,0000,0000,,and as far as hiring is concerned, I think\Nit's better off, Dialogue: 0,0:31:40.64,0:31:45.17,Default,,0000,0000,0000,,better if you hire programmers, instead of\NRuby programmers Dialogue: 0,0:31:45.17,0:31:48.19,Default,,0000,0000,0000,,or Java programmers, or PHP programmers. Dialogue: 0,0:31:48.19,0:31:50.60,Default,,0000,0000,0000,,Get people who can write code and who can\Nlearn new things, Dialogue: 0,0:31:50.60,0:31:54.68,Default,,0000,0000,0000,,because even in the Ruby world, you are doing\Nnew things every day. Dialogue: 0,0:31:54.68,0:32:01.27,Default,,0000,0000,0000,,If you cannot learn new tools or techniques\Nthen you are stuck. Dialogue: 0,0:32:01.27,0:32:01.57,Default,,0000,0000,0000,,QUERANT: (indecipherable - 00:31:57) Dialogue: 0,0:32:01.57,0:32:03.54,Default,,0000,0000,0000,,B.G.: A code base, you are talking about a\Ncode base. Dialogue: 0,0:32:03.54,0:32:04.19,Default,,0000,0000,0000,,QUERANT: (indecipherable - 00:32:04) Dialogue: 0,0:32:04.19,0:32:07.35,Default,,0000,0000,0000,,B.G.: So idioms are formed over time, right, Dialogue: 0,0:32:07.35,0:32:09.72,Default,,0000,0000,0000,,and they are also learned over time. Dialogue: 0,0:32:09.72,0:32:12.15,Default,,0000,0000,0000,,So if you are working on a sufficiently complicated\Ncode base, Dialogue: 0,0:32:12.15,0:32:14.99,Default,,0000,0000,0000,,any way will take you some time to grok it, Dialogue: 0,0:32:14.99,0:32:16.12,Default,,0000,0000,0000,,if there's and existing code base. Dialogue: 0,0:32:16.12,0:32:17.56,Default,,0000,0000,0000,,Now if you were trying to learn something Dialogue: 0,0:32:17.56,0:32:19.97,Default,,0000,0000,0000,,and to build something fresh. Dialogue: 0,0:32:19.97,0:32:21.76,Default,,0000,0000,0000,,It will take you some time, there will be\Nsome iterative- Dialogue: 0,0:32:21.76,0:32:24.55,Default,,0000,0000,0000,,some iterations, right. That, I think is perfectly\Nnormal. Dialogue: 0,0:32:24.55,0:32:27.99,Default,,0000,0000,0000,,C.F.: Yeah, I actually meant to answer the\Nidiomatic thing. Dialogue: 0,0:32:27.99,0:32:30.88,Default,,0000,0000,0000,,If it works and everyone can understand it, Dialogue: 0,0:32:30.88,0:32:32.14,Default,,0000,0000,0000,,I don't really care. Dialogue: 0,0:32:32.14,0:32:34.08,Default,,0000,0000,0000,,Like let it look like Java code written Dialogue: 0,0:32:34.08,0:32:36.85,Default,,0000,0000,0000,,with Ruby syntax. Doesn't matter if it performs Dialogue: 0,0:32:36.85,0:32:39.06,Default,,0000,0000,0000,,and the person enjoyed doing it and it, Dialogue: 0,0:32:39.06,0:32:42.05,Default,,0000,0000,0000,,you know, didn't take them forever, Dialogue: 0,0:32:42.05,0:32:44.16,Default,,0000,0000,0000,,and it's not completely confusing. Dialogue: 0,0:32:44.16,0:32:47.42,Default,,0000,0000,0000,,But, and my answer to that is keep it really\Nsmall. Dialogue: 0,0:32:47.42,0:32:50.54,Default,,0000,0000,0000,,If it does, it doesn't matter if it's idiomatic\Nat all. Dialogue: 0,0:32:50.54,0:32:51.45,Default,,0000,0000,0000,,H.K.: But there's like- Dialogue: 0,0:32:51.45,0:32:54.99,Default,,0000,0000,0000,,B.G.: Another thing, just one thing that I'll\Nadd is that, Dialogue: 0,0:32:54.99,0:32:56.46,Default,,0000,0000,0000,,how do you really define idiomatic code, OK? Dialogue: 0,0:32:56.46,0:33:00.40,Default,,0000,0000,0000,,A code in which you are able to leverage the\Nfeatures Dialogue: 0,0:33:00.40,0:33:03.97,Default,,0000,0000,0000,,of a programming language the best is idiomatic\Ncode, right. Dialogue: 0,0:33:03.97,0:33:05.43,Default,,0000,0000,0000,,So if you're championing a programming language Dialogue: 0,0:33:05.43,0:33:08.68,Default,,0000,0000,0000,,you are trying to introduce the new programming\Nlanguage to your company, Dialogue: 0,0:33:08.68,0:33:11.64,Default,,0000,0000,0000,,and of course you'd like to exploit all its\Nfeatures, right. Dialogue: 0,0:33:11.64,0:33:15.74,Default,,0000,0000,0000,,Unless it is handed down to you by your boss,\Nright. Dialogue: 0,0:33:15.74,0:33:18.77,Default,,0000,0000,0000,,So if someone is championing a new programming\Nlanguage, Dialogue: 0,0:33:18.77,0:33:23.68,Default,,0000,0000,0000,,it's his prerogative to you know to learn\Nwhat the idioms are, Dialogue: 0,0:33:23.68,0:33:25.47,Default,,0000,0000,0000,,maybe figure them out over time. Dialogue: 0,0:33:25.47,0:33:28.46,Default,,0000,0000,0000,,H.K. This not working? Dialogue: 0,0:33:28.46,0:33:35.46,Default,,0000,0000,0000,,B.G.: Yeah that doesn't seem to work. Dialogue: 0,0:33:36.08,0:33:38.38,Default,,0000,0000,0000,,V.S.: So it's gonna be a slow process, you\Nknow, Dialogue: 0,0:33:38.38,0:33:40.55,Default,,0000,0000,0000,,obviously we just talked about lots of languages, Dialogue: 0,0:33:40.55,0:33:43.08,Default,,0000,0000,0000,,and the key thing is are we doing in house, Dialogue: 0,0:33:43.08,0:33:44.59,Default,,0000,0000,0000,,we have control of the deployment environment, Dialogue: 0,0:33:44.59,0:33:46.44,Default,,0000,0000,0000,,versus, we are gonna consult. Dialogue: 0,0:33:46.44,0:33:49.06,Default,,0000,0000,0000,,So for example, Flipkart, or, in several cases, Dialogue: 0,0:33:49.06,0:33:52.02,Default,,0000,0000,0000,,that there's a lot, you're in control of the\Nwhole thing, Dialogue: 0,0:33:52.02,0:33:53.69,Default,,0000,0000,0000,,that, and you basically decide, or, Dialogue: 0,0:33:53.69,0:33:56.06,Default,,0000,0000,0000,,you live with the consequences of the whole\Nthing, right. Dialogue: 0,0:33:56.06,0:33:58.52,Default,,0000,0000,0000,,Then when you're dealing with the customer-based\Nsolution, Dialogue: 0,0:33:58.52,0:34:01.27,Default,,0000,0000,0000,,obviously there's a lot more constraints as\Nto, Dialogue: 0,0:34:01.27,0:34:02.86,Default,,0000,0000,0000,,you know, he would look for somethings that\Nhe can Dialogue: 0,0:34:02.86,0:34:04.66,Default,,0000,0000,0000,,add more people to work with as opposed to\Njust you, Dialogue: 0,0:34:04.66,0:34:05.82,Default,,0000,0000,0000,,and what if you can go away, Dialogue: 0,0:34:05.82,0:34:07.60,Default,,0000,0000,0000,,and in-house holds the same problem. Dialogue: 0,0:34:07.60,0:34:11.36,Default,,0000,0000,0000,,So probably to start with just learn one more\Nlanguage. Dialogue: 0,0:34:11.36,0:34:13.25,Default,,0000,0000,0000,,Just learn one more language and start using\Nit, Dialogue: 0,0:34:13.25,0:34:14.38,Default,,0000,0000,0000,,and it's gonna take some time, like you said, Dialogue: 0,0:34:14.38,0:34:15.83,Default,,0000,0000,0000,,it's just cultural thing, you know. Dialogue: 0,0:34:15.83,0:34:18.50,Default,,0000,0000,0000,,Particularly in India the context is not just, Dialogue: 0,0:34:18.50,0:34:21.98,Default,,0000,0000,0000,,you know, just start with one more language, Dialogue: 0,0:34:21.98,0:34:23.20,Default,,0000,0000,0000,,try to use it in deployment, Dialogue: 0,0:34:23.20,0:34:25.56,Default,,0000,0000,0000,,so it doesn't look like you're grabbing this\Nopportunity Dialogue: 0,0:34:25.56,0:34:28.78,Default,,0000,0000,0000,,to as many language as possible into solution\Nyou build, Dialogue: 0,0:34:28.78,0:34:31.09,Default,,0000,0000,0000,,just for the sake of learning new things. Dialogue: 0,0:34:31.09,0:34:33.81,Default,,0000,0000,0000,,But just do one more language, carefully. Dialogue: 0,0:34:33.81,0:34:34.96,Default,,0000,0000,0000,,But in order for you to do that Dialogue: 0,0:34:34.96,0:34:37.55,Default,,0000,0000,0000,,you probably will have to casually learn five-six\Nlanguages. Dialogue: 0,0:34:37.55,0:34:38.95,Default,,0000,0000,0000,,And you may want to pick that language Dialogue: 0,0:34:38.95,0:34:40.87,Default,,0000,0000,0000,,that you want and it's gonna be a slow process. Dialogue: 0,0:34:40.87,0:34:41.26,Default,,0000,0000,0000,,You're not gonna be able to finally deliver\Nall this, Dialogue: 0,0:34:41.26,0:34:46.70,Default,,0000,0000,0000,,and then you know, introduce a new language\Njust like that next day. Dialogue: 0,0:34:46.70,0:34:48.71,Default,,0000,0000,0000,,C.F.: Yeah, when I started learning Ruby, Dialogue: 0,0:34:48.71,0:34:52.05,Default,,0000,0000,0000,,I started using it in 2000 network, Dialogue: 0,0:34:52.05,0:34:53.83,Default,,0000,0000,0000,,and it was to generate Java code, Dialogue: 0,0:34:53.83,0:34:55.37,Default,,0000,0000,0000,,because no one would let me deploy Ruby. Dialogue: 0,0:34:55.37,0:34:57.02,Default,,0000,0000,0000,,So I just wrote Java generators Dialogue: 0,0:34:57.02,0:34:58.86,Default,,0000,0000,0000,,and I wrote everything like as a DSL in Ruby. Dialogue: 0,0:34:58.86,0:35:00.60,Default,,0000,0000,0000,,V.S.: Yeah absolutely. Dialogue: 0,0:35:00.60,0:35:02.71,Default,,0000,0000,0000,,My first experience with Ruby was not really\Nmainstream. Dialogue: 0,0:35:02.71,0:35:04.83,Default,,0000,0000,0000,,We were just doing, it was called load disk\Nconductors. Dialogue: 0,0:35:04.83,0:35:07.29,Default,,0000,0000,0000,,It was an OpenSource thing that we were just\Ndoing. Dialogue: 0,0:35:07.29,0:35:09.21,Default,,0000,0000,0000,,So what we wanted is we wanted to drive these\Ncommand lines, Dialogue: 0,0:35:09.21,0:35:11.02,Default,,0000,0000,0000,,and Ruby was a language to do that. Dialogue: 0,0:35:11.02,0:35:12.84,Default,,0000,0000,0000,,So there are other opportunities for you to\Nuse Dialogue: 0,0:35:12.84,0:35:15.09,Default,,0000,0000,0000,,new languages may not be in your main code\Nbase, Dialogue: 0,0:35:15.09,0:35:17.23,Default,,0000,0000,0000,,all the supporting tool systems as well. Dialogue: 0,0:35:17.23,0:35:18.04,Default,,0000,0000,0000,,So there's a lot of opportunities, Dialogue: 0,0:35:18.04,0:35:20.23,Default,,0000,0000,0000,,so you may not look at it as, Dialogue: 0,0:35:20.23,0:35:25.35,Default,,0000,0000,0000,,can I change my main language, or how soon\Ncan I do it? Dialogue: 0,0:35:25.35,0:35:26.14,Default,,0000,0000,0000,,K.H.: So- Dialogue: 0,0:35:26.14,0:35:28.47,Default,,0000,0000,0000,,Y.K.: So, one of the, I don't know, Dialogue: 0,0:35:28.47,0:35:30.71,Default,,0000,0000,0000,,this is a thought, this has been kind of crossing\Nmy mind repeatedly, Dialogue: 0,0:35:30.71,0:35:32.96,Default,,0000,0000,0000,,and kind of worrying me, also. Dialogue: 0,0:35:32.96,0:35:38.41,Default,,0000,0000,0000,,So I used to be kind of involved in the language\Nchoice wars a lot, Dialogue: 0,0:35:38.41,0:35:44.96,Default,,0000,0000,0000,,and always on the now try out something new\Nside. Dialogue: 0,0:35:44.96,0:35:46.43,Default,,0000,0000,0000,,And I've kind of discovered a completely Dialogue: 0,0:35:46.43,0:35:47.66,Default,,0000,0000,0000,,different way of working at Flipkart, Dialogue: 0,0:35:47.66,0:35:50.26,Default,,0000,0000,0000,,and some of the other people who've been there. Dialogue: 0,0:35:50.26,0:35:52.59,Default,,0000,0000,0000,,They kind of shook me out of, Dialogue: 0,0:35:52.59,0:35:56.44,Default,,0000,0000,0000,,maybe my Thoughtworks influenced it in a certain\Nway. Dialogue: 0,0:35:56.44,0:36:00.17,Default,,0000,0000,0000,,So, and there's a very key point when that\Nhappened. Dialogue: 0,0:36:00.17,0:36:03.19,Default,,0000,0000,0000,,So I think the difference was this, right. Dialogue: 0,0:36:03.19,0:36:05.37,Default,,0000,0000,0000,,The take-away was that, Dialogue: 0,0:36:05.37,0:36:06.92,Default,,0000,0000,0000,,if I'm arguing about a programming language, Dialogue: 0,0:36:06.92,0:36:11.92,Default,,0000,0000,0000,,I probably don't understand the problem domain\Nwell enough, right. Dialogue: 0,0:36:11.92,0:36:15.78,Default,,0000,0000,0000,,And I've seen cases where systems have been\Nbuilt Dialogue: 0,0:36:15.78,0:36:19.33,Default,,0000,0000,0000,,which go fundamentally towards the problem\Nbeing solved as really about, Dialogue: 0,0:36:19.33,0:36:20.31,Default,,0000,0000,0000,,and modeled the code abstraction so beautifully, Dialogue: 0,0:36:20.31,0:36:24.10,Default,,0000,0000,0000,,that then, or it identified the co-op section\Nso beautifully Dialogue: 0,0:36:24.10,0:36:28.92,Default,,0000,0000,0000,,that it doesn't matter which language you\Nimplement it in, Dialogue: 0,0:36:28.92,0:36:30.17,Default,,0000,0000,0000,,because that problem is solved. Dialogue: 0,0:36:30.17,0:36:33.01,Default,,0000,0000,0000,,And even before we started implementation\Nthat is beautiful. Dialogue: 0,0:36:33.01,0:36:34.10,Default,,0000,0000,0000,,I think with this giant perspective, Dialogue: 0,0:36:34.10,0:36:36.33,Default,,0000,0000,0000,,I think somewhere that has got lost. Dialogue: 0,0:36:36.33,0:36:38.73,Default,,0000,0000,0000,,We try to kind of get into implementation\Nmuch sooner. Dialogue: 0,0:36:38.73,0:36:41.98,Default,,0000,0000,0000,,So if I could actually go back and say what's\Nthe most, Dialogue: 0,0:36:41.98,0:36:43.15,Default,,0000,0000,0000,,my favorite programming language, Dialogue: 0,0:36:43.15,0:36:45.31,Default,,0000,0000,0000,,I think I would say domain-driven design actually. Dialogue: 0,0:36:45.31,0:36:47.86,Default,,0000,0000,0000,,I would actually just recommend people to... Dialogue: 0,0:36:47.86,0:36:50.18,Default,,0000,0000,0000,,oh and actually do that on my team also, too, Dialogue: 0,0:36:50.18,0:36:53.53,Default,,0000,0000,0000,,actually read that book and try and apply\Nit. Dialogue: 0,0:36:53.53,0:36:57.04,Default,,0000,0000,0000,,Because I think a huge set of wins are possible\Nfrom that, Dialogue: 0,0:36:57.04,0:36:59.92,Default,,0000,0000,0000,,without even going down to the programming\Nlanguage level. Dialogue: 0,0:36:59.92,0:37:03.91,Default,,0000,0000,0000,,C.F.: Yeah, the programming language is a\Ntactical choice, Dialogue: 0,0:37:03.91,0:37:06.80,Default,,0000,0000,0000,,in most cases, right, but the domain, Dialogue: 0,0:37:06.80,0:37:09.15,Default,,0000,0000,0000,,it's like what you were saying about performance\Nearlier. Dialogue: 0,0:37:09.15,0:37:12.83,Default,,0000,0000,0000,,You could use Java or you could use JRuby,\Ndoesn't really matter, Dialogue: 0,0:37:12.83,0:37:15.10,Default,,0000,0000,0000,,because the database is gonna be slow, right. Dialogue: 0,0:37:15.10,0:37:18.39,Default,,0000,0000,0000,,When it comes to application design and architecture, Dialogue: 0,0:37:18.39,0:37:21.72,Default,,0000,0000,0000,,it's really a hierarchy, so domain-driven\Ndesign is Dialogue: 0,0:37:21.72,0:37:23.73,Default,,0000,0000,0000,,at a level higher than the languages. Dialogue: 0,0:37:23.73,0:37:27.27,Default,,0000,0000,0000,,I would still say that the languages make\Nyou think differently, Dialogue: 0,0:37:27.27,0:37:30.56,Default,,0000,0000,0000,,and some languages suit different domains\Nbetter, Dialogue: 0,0:37:30.56,0:37:33.38,Default,,0000,0000,0000,,and having really open-mindedly going, Dialogue: 0,0:37:33.38,0:37:36.99,Default,,0000,0000,0000,,gone back to Java recently for various reasons, Dialogue: 0,0:37:36.99,0:37:40.89,Default,,0000,0000,0000,,I can tell you that it's terrible to use,\Nit really is. Dialogue: 0,0:37:40.89,0:37:42.73,Default,,0000,0000,0000,,It wastes my time compared to Ruby Dialogue: 0,0:37:42.73,0:37:45.52,Default,,0000,0000,0000,,and compared to Scala and compared to more\Nmodern languages. Dialogue: 0,0:37:45.52,0:37:47.04,Default,,0000,0000,0000,,And it's not a knock against Java - Dialogue: 0,0:37:47.04,0:37:49.55,Default,,0000,0000,0000,,Java's older and doesn't have those benefits. Dialogue: 0,0:37:49.55,0:37:52.86,Default,,0000,0000,0000,,So I think tactically, it's a bit of an exaggeration Dialogue: 0,0:37:52.86,0:37:55.45,Default,,0000,0000,0000,,to say that the language doesn't matter, but\NI get your point. Dialogue: 0,0:37:55.45,0:37:57.76,Default,,0000,0000,0000,,Y.K.: Sure. So just as a counterpoint to that. Dialogue: 0,0:37:57.76,0:38:00.15,Default,,0000,0000,0000,,Actually having gone from Ruby back to Java, Dialogue: 0,0:38:00.15,0:38:03.45,Default,,0000,0000,0000,,there's a few very low-latency systems that\Nwe had to Dialogue: 0,0:38:03.45,0:38:07.53,Default,,0000,0000,0000,,build out recently and those are built with\Nsome of the newer Java stacks, Dialogue: 0,0:38:07.53,0:38:12.61,Default,,0000,0000,0000,,like say dropwizard which has got Hibernate\Nintegrated into it, Dialogue: 0,0:38:12.61,0:38:16.88,Default,,0000,0000,0000,,and Netti and, so it's basically a complete\Nstack Dialogue: 0,0:38:16.88,0:38:18.44,Default,,0000,0000,0000,,and actual systems and the designs that came\Nout of it Dialogue: 0,0:38:18.44,0:38:18.65,Default,,0000,0000,0000,,were actually pretty good, Dialogue: 0,0:38:18.65,0:38:22.02,Default,,0000,0000,0000,,and I was surprised and actually happy Dialogue: 0,0:38:22.02,0:38:23.27,Default,,0000,0000,0000,,to go back and look at Java. Dialogue: 0,0:38:23.27,0:38:27.14,Default,,0000,0000,0000,,And I actually enjoy looking forward to Java\Nahead. Dialogue: 0,0:38:27.14,0:38:29.86,Default,,0000,0000,0000,,More than Scala in a sense. Dialogue: 0,0:38:29.86,0:38:31.92,Default,,0000,0000,0000,,H.K.: That's good, because- Dialogue: 0,0:38:31.92,0:38:37.32,Default,,0000,0000,0000,,So the Java aid that you mentioned and then\NScala. Dialogue: 0,0:38:37.32,0:38:38.50,Default,,0000,0000,0000,,So there's a couple of things Dialogue: 0,0:38:38.50,0:38:43.60,Default,,0000,0000,0000,,like if you talked about this Java like and\NScala like, Dialogue: 0,0:38:43.60,0:38:44.69,Default,,0000,0000,0000,,why would you choose like, for example, today, Dialogue: 0,0:38:44.69,0:38:46.57,Default,,0000,0000,0000,,like Java it is not released. Dialogue: 0,0:38:46.57,0:38:52.23,Default,,0000,0000,0000,,But what would issues like, is there any reason\Nto choose Dialogue: 0,0:38:52.23,0:38:55.07,Default,,0000,0000,0000,,like Scala over Java now actually? Dialogue: 0,0:38:55.07,0:38:57.83,Default,,0000,0000,0000,,Because now for example, (00:38:57 - ??) Dialogue: 0,0:38:57.83,0:39:00.16,Default,,0000,0000,0000,,is a good system, but it is usable from both\Nthe languages, Dialogue: 0,0:39:00.16,0:39:04.24,Default,,0000,0000,0000,,right, so is there any reason to pick- Chad? Dialogue: 0,0:39:04.24,0:39:09.68,Default,,0000,0000,0000,,C.F.: Yes. So the question is, Dialogue: 0,0:39:09.68,0:39:11.53,Default,,0000,0000,0000,,is there any reason to pick Java over Scala, Dialogue: 0,0:39:11.53,0:39:13.82,Default,,0000,0000,0000,,or Scala over Java. Does one win? Dialogue: 0,0:39:13.82,0:39:19.43,Default,,0000,0000,0000,,H.K.: No, no, no, no. Just Java, like Scala\Nover Java, like- Dialogue: 0,0:39:19.43,0:39:21.83,Default,,0000,0000,0000,,C.F.: Is Scal- or, should you actually, Dialogue: 0,0:39:21.83,0:39:23.72,Default,,0000,0000,0000,,because of Java aid, does Scala need- Dialogue: 0,0:39:23.72,0:39:25.28,Default,,0000,0000,0000,,H.K.: Or Java seven, yeah. Dialogue: 0,0:39:25.28,0:39:29.32,Default,,0000,0000,0000,,C.F.: Java seven, then yes. Like. Dialogue: 0,0:39:29.32,0:39:35.45,Default,,0000,0000,0000,,For me I see Scala as like totally over-engineered, Dialogue: 0,0:39:35.45,0:39:38.51,Default,,0000,0000,0000,,in the same way that Yogi almost said, but\Nlike, Dialogue: 0,0:39:38.51,0:39:42.71,Default,,0000,0000,0000,,too many features. But, and I'm even writing\Na book about it, Dialogue: 0,0:39:42.71,0:39:45.71,Default,,0000,0000,0000,,but I kind of hate it. Dialogue: 0,0:39:45.71,0:39:49.14,Default,,0000,0000,0000,,That said, you can program Scala like Java Dialogue: 0,0:39:49.14,0:39:52.11,Default,,0000,0000,0000,,with less annoying syntax. You can do that, Dialogue: 0,0:39:52.11,0:39:54.17,Default,,0000,0000,0000,,you can make it be like a Java program, Dialogue: 0,0:39:54.17,0:39:56.85,Default,,0000,0000,0000,,and if you do, I would argue very strongly, Dialogue: 0,0:39:56.85,0:39:58.17,Default,,0000,0000,0000,,and maybe, and this is subjective Dialogue: 0,0:39:58.17,0:40:00.69,Default,,0000,0000,0000,,and maybe even kind of fashion-oriented, Dialogue: 0,0:40:00.69,0:40:03.39,Default,,0000,0000,0000,,I would argue that the Scala code is better\Nto look at Dialogue: 0,0:40:03.39,0:40:05.81,Default,,0000,0000,0000,,and easier to write than the Java code. Dialogue: 0,0:40:05.81,0:40:09.43,Default,,0000,0000,0000,,There's less typing, and I mean that in two\Nsense. Dialogue: 0,0:40:09.43,0:40:10.41,Default,,0000,0000,0000,,Less typing on the keyboard Dialogue: 0,0:40:10.41,0:40:15.07,Default,,0000,0000,0000,,and less having to explicitly type because\Nof type inference. Dialogue: 0,0:40:15.07,0:40:18.60,Default,,0000,0000,0000,,I'm sure, and like with Java seven there are\NLambdas, Dialogue: 0,0:40:18.60,0:40:20.51,Default,,0000,0000,0000,,with Java 8 I'm sure it's gonna be some sort\Nof Dialogue: 0,0:40:20.51,0:40:23.54,Default,,0000,0000,0000,,anemic thing that doesn't quite work the way\Nwe want it to. Dialogue: 0,0:40:23.54,0:40:25.30,Default,,0000,0000,0000,,It's perfect in Scala. Dialogue: 0,0:40:25.30,0:40:27.14,Default,,0000,0000,0000,,There's a lot of great stuff about Scala, Dialogue: 0,0:40:27.14,0:40:31.52,Default,,0000,0000,0000,,as a next evolution of Java. Dialogue: 0,0:40:31.52,0:40:34.47,Default,,0000,0000,0000,,But, you can also, like Ruby, Dialogue: 0,0:40:34.47,0:40:37.63,Default,,0000,0000,0000,,with meta-programming and eval and all the\Ncrazy stuff you can do, Dialogue: 0,0:40:37.63,0:40:44.63,Default,,0000,0000,0000,,you can completely shoot yourself in the foot\Nwith it, too. Dialogue: 0,0:40:46.60,0:40:53.60,Default,,0000,0000,0000,,QUERANT: So, when we compare these languages, Dialogue: 0,0:40:55.38,0:40:56.75,Default,,0000,0000,0000,,like Java and Ruby and all that, Dialogue: 0,0:40:56.75,0:41:00.44,Default,,0000,0000,0000,,the thing that we kind of focus on is the\Namount of, Dialogue: 0,0:41:00.44,0:41:04.100,Default,,0000,0000,0000,,volume of code. Volume of code doesn't lead\Nto the ease of understanding. Dialogue: 0,0:41:04.100,0:41:07.66,Default,,0000,0000,0000,,One of the thing that Java really does well Dialogue: 0,0:41:07.66,0:41:11.52,Default,,0000,0000,0000,,is things are so simple that there's no, Dialogue: 0,0:41:11.52,0:41:13.74,Default,,0000,0000,0000,,there's implicit stuff happening behind Dialogue: 0,0:41:13.74,0:41:17.20,Default,,0000,0000,0000,,the scenes and all that. And very, very well-factored\NJava code Dialogue: 0,0:41:17.20,0:41:18.88,Default,,0000,0000,0000,,is not so ugly to look at. Dialogue: 0,0:41:18.88,0:41:20.61,Default,,0000,0000,0000,,We have written all small methods Dialogue: 0,0:41:20.61,0:41:22.59,Default,,0000,0000,0000,,and composed stuff out of it. Dialogue: 0,0:41:22.59,0:41:25.48,Default,,0000,0000,0000,,It's not so ugly to write or ugly to look\Nat it. So- Dialogue: 0,0:41:25.48,0:41:26.59,Default,,0000,0000,0000,,C.F.: I would like to answer that Dialogue: 0,0:41:26.59,0:41:28.57,Default,,0000,0000,0000,,even if you're not asking me, Dialogue: 0,0:41:28.57,0:41:31.40,Default,,0000,0000,0000,,cause I could imagine myself saying that Dialogue: 0,0:41:31.40,0:41:33.03,Default,,0000,0000,0000,,if I were in the audience. Dialogue: 0,0:41:33.03,0:41:36.50,Default,,0000,0000,0000,,But right now I strongly disagree with you. Dialogue: 0,0:41:36.50,0:41:41.89,Default,,0000,0000,0000,,I think Java is simple as a language, yes, Dialogue: 0,0:41:41.89,0:41:46.88,Default,,0000,0000,0000,,but what it leads to is, because of its lack\Nof flexibility, Dialogue: 0,0:41:46.88,0:41:49.15,Default,,0000,0000,0000,,it's not the volume of code that I hate - Dialogue: 0,0:41:49.15,0:41:51.28,Default,,0000,0000,0000,,I mean sometimes it is, sometimes it's literally\Nbecause Dialogue: 0,0:41:51.28,0:41:53.60,Default,,0000,0000,0000,,I have to type date date equals new date. Dialogue: 0,0:41:53.60,0:41:56.22,Default,,0000,0000,0000,,I don't need that. Dialogue: 0,0:41:56.22,0:41:59.12,Default,,0000,0000,0000,,But it's also the ability to be expressive, Dialogue: 0,0:41:59.12,0:42:02.26,Default,,0000,0000,0000,,and to me that's where Java strongly lacks. Dialogue: 0,0:42:02.26,0:42:05.100,Default,,0000,0000,0000,,It's pretty good as a system language, like, Dialogue: 0,0:42:05.100,0:42:08.34,Default,,0000,0000,0000,,at the point where you decide you need to\Nmake that distinction, Dialogue: 0,0:42:08.34,0:42:10.78,Default,,0000,0000,0000,,but maybe as things get faster you don't need\Nto anymore. Dialogue: 0,0:42:10.78,0:42:15.48,Default,,0000,0000,0000,,But I believe that the abstractions that people\Nend up creating for Java, Dialogue: 0,0:42:15.48,0:42:19.07,Default,,0000,0000,0000,,at least idiomatic Java, like in the Java\Nworld, Dialogue: 0,0:42:19.07,0:42:21.55,Default,,0000,0000,0000,,idiomatic is a bad sign, I would say, Dialogue: 0,0:42:21.55,0:42:24.47,Default,,0000,0000,0000,,because it leads to this kind of pattern soup\Nthing. Dialogue: 0,0:42:24.47,0:42:26.81,Default,,0000,0000,0000,,And it's true that you can reason about it, Dialogue: 0,0:42:26.81,0:42:29.17,Default,,0000,0000,0000,,because it's statically typed, and there are Dialogue: 0,0:42:29.17,0:42:31.50,Default,,0000,0000,0000,,less opportunities for meta-programming, Dialogue: 0,0:42:31.50,0:42:34.14,Default,,0000,0000,0000,,but it's a slow process in my experience of\Nreasoning about it, Dialogue: 0,0:42:34.14,0:42:37.18,Default,,0000,0000,0000,,because you get so far away from the domain, Dialogue: 0,0:42:37.18,0:42:40.12,Default,,0000,0000,0000,,creating all these factories and interfaces\Nand crap, Dialogue: 0,0:42:40.12,0:42:42.77,Default,,0000,0000,0000,,just so that you can make it testable and\Nplugable, Dialogue: 0,0:42:42.77,0:42:47.96,Default,,0000,0000,0000,,that it, the actual logic and the core of\Nthe business gets lost. Dialogue: 0,0:42:47.96,0:42:52.46,Default,,0000,0000,0000,,Do you have a- anyone have a point to make\Non that? Dialogue: 0,0:42:52.46,0:42:55.59,Default,,0000,0000,0000,,B.G.: So yeah, I totally agree with Chad here. Dialogue: 0,0:42:55.59,0:42:57.95,Default,,0000,0000,0000,,Java the language is designed to be very simple, Dialogue: 0,0:42:57.95,0:42:59.84,Default,,0000,0000,0000,,but at the same time it's also very rigid. Dialogue: 0,0:42:59.84,0:43:03.69,Default,,0000,0000,0000,,So imagine explaining philosophy to a kid,\Nright. Dialogue: 0,0:43:03.69,0:43:07.09,Default,,0000,0000,0000,,The kid probably has a vocabulary of maybe\Nhundred words. Dialogue: 0,0:43:07.09,0:43:11.84,Default,,0000,0000,0000,,How do you do that? You cannot discuss the\Nexistence of God, Dialogue: 0,0:43:11.84,0:43:14.63,Default,,0000,0000,0000,,you know, or maybe the nature of knowledge, Dialogue: 0,0:43:14.63,0:43:18.30,Default,,0000,0000,0000,,in front of a kid, because the kid doesn't\Nhave the vocabulary Dialogue: 0,0:43:18.30,0:43:21.36,Default,,0000,0000,0000,,that you need to communicate with that child,\Nright. Dialogue: 0,0:43:21.36,0:43:23.55,Default,,0000,0000,0000,,So what you end up doing is over-simplification. Dialogue: 0,0:43:23.55,0:43:26.58,Default,,0000,0000,0000,,So by the time you simplify the concepts to Dialogue: 0,0:43:26.58,0:43:29.38,Default,,0000,0000,0000,,the primitives that the child can understand, Dialogue: 0,0:43:29.38,0:43:33.11,Default,,0000,0000,0000,,you're far away from Aristotle and Plato,\Nyou know. Dialogue: 0,0:43:33.11,0:43:36.81,Default,,0000,0000,0000,,So that's the example that I give you. Dialogue: 0,0:43:36.81,0:43:39.29,Default,,0000,0000,0000,,QUERANT: I have a question. Dialogue: 0,0:43:39.29,0:43:41.77,Default,,0000,0000,0000,,At what point do you feel comfortable or something Dialogue: 0,0:43:41.77,0:43:46.40,Default,,0000,0000,0000,,like a threshold level for new languages to\Nbe used in production, Dialogue: 0,0:43:46.40,0:43:48.16,Default,,0000,0000,0000,,you know, like, there are some languages which\Nare Dialogue: 0,0:43:48.16,0:43:49.97,Default,,0000,0000,0000,,coming up now but you still you know Dialogue: 0,0:43:49.97,0:43:51.43,Default,,0000,0000,0000,,that it's not something that you use. Dialogue: 0,0:43:51.43,0:43:53.79,Default,,0000,0000,0000,,As for me I would probably look at an example, Dialogue: 0,0:43:53.79,0:43:55.75,Default,,0000,0000,0000,,if I would say OK, there are quite a few systems, Dialogue: 0,0:43:55.75,0:43:58.45,Default,,0000,0000,0000,,big huge systems based on Ruby, I could recommend Dialogue: 0,0:43:58.45,0:44:01.24,Default,,0000,0000,0000,,it to someone people who are comfortable say\Nif Dialogue: 0,0:44:01.24,0:44:04.06,Default,,0000,0000,0000,,they say it is OK if I use Ruby yeah say because Dialogue: 0,0:44:04.06,0:44:06.01,Default,,0000,0000,0000,,there are people who use it. But at production\Nlevel Dialogue: 0,0:44:06.01,0:44:07.77,Default,,0000,0000,0000,,when that new language is- at what point do\Nyou feel Dialogue: 0,0:44:07.77,0:44:08.80,Default,,0000,0000,0000,,comfortable to say that, OK, this is viable\Nto use Dialogue: 0,0:44:08.80,0:44:08.100,Default,,0000,0000,0000,,in production? Dialogue: 0,0:44:08.100,0:44:09.94,Default,,0000,0000,0000,,B.G.: Fantastic question. I would say that\Nthis is a Dialogue: 0,0:44:09.94,0:44:10.28,Default,,0000,0000,0000,,case that you need to develop over time, and\NI think Dialogue: 0,0:44:10.28,0:44:10.80,Default,,0000,0000,0000,,it comes with experience. The more you learn\Nof different Dialogue: 0,0:44:10.80,0:44:16.85,Default,,0000,0000,0000,,programming languages, the better you get\Nat evaluating them, Dialogue: 0,0:44:16.85,0:44:23.85,Default,,0000,0000,0000,,but having said that, community support does\Nmatter, Dialogue: 0,0:44:25.30,0:44:27.65,Default,,0000,0000,0000,,based on- Dialogue: 0,0:44:27.65,0:44:32.35,Default,,0000,0000,0000,,(00:44:36 - dead audio - 00:44:37) Dialogue: 0,0:44:32.35,0:44:39.35,Default,,0000,0000,0000,,OK, you can have a language which can have\Na Dialogue: 0,0:44:40.26,0:44:42.28,Default,,0000,0000,0000,,huge community around it. Dialogue: 0,0:44:42.28,0:44:44.18,Default,,0000,0000,0000,,That does not necessarily equate to the language\Nbeing awesome, OK. Dialogue: 0,0:44:44.18,0:44:46.06,Default,,0000,0000,0000,,Documentation is also another thing, ?? (00:44:45) Dialogue: 0,0:44:46.06,0:44:47.32,Default,,0000,0000,0000,,is also another thing. Dialogue: 0,0:44:47.32,0:44:52.64,Default,,0000,0000,0000,,But again I would say that one of the ways\Nis to really see, Dialogue: 0,0:44:52.64,0:44:55.52,Default,,0000,0000,0000,,what is the USB of the language, what kind\Nof problem Dialogue: 0,0:44:55.52,0:44:58.88,Default,,0000,0000,0000,,is the language helping you solve, OK. If\Nyou see that, Dialogue: 0,0:44:58.88,0:45:02.20,Default,,0000,0000,0000,,it's like you already know Python, and there\Nis Ruby, Dialogue: 0,0:45:02.20,0:45:04.04,Default,,0000,0000,0000,,not really very different, honestly. Dialogue: 0,0:45:04.04,0:45:08.38,Default,,0000,0000,0000,,So, but if you see Go, again, very different, Dialogue: 0,0:45:08.38,0:45:12.48,Default,,0000,0000,0000,,a lot of interesting concepts, and so you\Nmight Dialogue: 0,0:45:12.48,0:45:16.80,Default,,0000,0000,0000,,find problems where that language might fit\Nin just perfectly, right. Dialogue: 0,0:45:16.80,0:45:21.74,Default,,0000,0000,0000,,So it's OK to maybe wait for a production\Nby a larger community, Dialogue: 0,0:45:21.74,0:45:25.21,Default,,0000,0000,0000,,but sometimes you have to be that champion\Nyourself, right. Dialogue: 0,0:45:25.21,0:45:28.32,Default,,0000,0000,0000,,Someone started using the language first,\Nwhen Ruby came out, right. Dialogue: 0,0:45:28.32,0:45:30.42,Default,,0000,0000,0000,,(00:45:27) was the guy, probably. Dialogue: 0,0:45:30.42,0:45:32.12,Default,,0000,0000,0000,,That's why he's worshiped today. Dialogue: 0,0:45:32.12,0:45:35.64,Default,,0000,0000,0000,,So why not be the (name) yourself. Dialogue: 0,0:45:35.64,0:45:38.64,Default,,0000,0000,0000,,QUERANT: (indecipherable - 00:45:37) Dialogue: 0,0:45:38.64,0:45:43.95,Default,,0000,0000,0000,,Y.K.: Yup. Yeah, so I think it's, Dialogue: 0,0:45:43.95,0:45:47.18,Default,,0000,0000,0000,,there are quite a few kind of milestones for\Na language Dialogue: 0,0:45:47.18,0:45:49.19,Default,,0000,0000,0000,,to go through, but I think the most critical, Dialogue: 0,0:45:49.19,0:45:51.22,Default,,0000,0000,0000,,so again, it depends on the kind of client Dialogue: 0,0:45:51.22,0:45:52.51,Default,,0000,0000,0000,,that you're kind of suggesting this to, right, Dialogue: 0,0:45:52.51,0:45:54.24,Default,,0000,0000,0000,,like if it's a small start up then sure, Dialogue: 0,0:45:54.24,0:45:55.35,Default,,0000,0000,0000,,you have a lot more flexibility. Dialogue: 0,0:45:55.35,0:45:56.100,Default,,0000,0000,0000,,If it's a larger system, it has to scale, Dialogue: 0,0:45:56.100,0:45:58.90,Default,,0000,0000,0000,,you got different constraints. Dialogue: 0,0:45:58.90,0:46:02.45,Default,,0000,0000,0000,,But I think by and large the existence Dialogue: 0,0:46:02.45,0:46:08.24,Default,,0000,0000,0000,,of a very low latency production profiler Dialogue: 0,0:46:08.24,0:46:12.04,Default,,0000,0000,0000,,or on-time run system is probably that milestone. Dialogue: 0,0:46:12.04,0:46:14.52,Default,,0000,0000,0000,,The moment that it is in place, Dialogue: 0,0:46:14.52,0:46:17.36,Default,,0000,0000,0000,,a profiler which can actually run in production, Dialogue: 0,0:46:17.36,0:46:19.73,Default,,0000,0000,0000,,for that language, I think that marks a very\Ncritical Dialogue: 0,0:46:19.73,0:46:22.01,Default,,0000,0000,0000,,milestone when the language starts evolving\Nat a very Dialogue: 0,0:46:22.01,0:46:25.32,Default,,0000,0000,0000,,different pace. Because you start kind of\Nfinding issues Dialogue: 0,0:46:25.32,0:46:27.79,Default,,0000,0000,0000,,which you never had been able to find before,\Nright. Dialogue: 0,0:46:27.79,0:46:30.74,Default,,0000,0000,0000,,So for example, with both tools, we've been\Nable to do Dialogue: 0,0:46:30.74,0:46:32.82,Default,,0000,0000,0000,,amazing things in production with Ruby, which\Nwas just Dialogue: 0,0:46:32.82,0:46:35.25,Default,,0000,0000,0000,,not possible before we knew, even the commercial\Nordinative, Dialogue: 0,0:46:35.25,0:46:37.51,Default,,0000,0000,0000,,like ?? (00:46:35) for that matter, right,\Nso either a Dialogue: 0,0:46:37.51,0:46:40.10,Default,,0000,0000,0000,,commercial or opensource production profiling\Ntool I Dialogue: 0,0:46:40.10,0:46:41.22,Default,,0000,0000,0000,,think is a pretty significant milestone. Dialogue: 0,0:46:41.22,0:46:43.82,Default,,0000,0000,0000,,QUERANT: I have a couple of questions here. Dialogue: 0,0:46:43.82,0:46:45.89,Default,,0000,0000,0000,,B.G.: Right, Yogi. Dialogue: 0,0:46:45.89,0:46:51.43,Default,,0000,0000,0000,,Y.K.: I don't know. Haven't you seen production? Dialogue: 0,0:46:51.43,0:46:56.31,Default,,0000,0000,0000,,B.G.: The production level compiler which\Nyou can plug into a running system? Dialogue: 0,0:46:56.31,0:46:59.04,Default,,0000,0000,0000,,Y.K.: So there are- Dialogue: 0,0:46:59.04,0:47:03.34,Default,,0000,0000,0000,,(00:46:58 - dead audio - 00:47:29) Dialogue: 0,0:47:03.34,0:47:07.94,Default,,0000,0000,0000,,B.G.: Yeah, but those are Valgrind but, which\Nis not probably- Dialogue: 0,0:47:07.94,0:47:08.92,Default,,0000,0000,0000,,Y.K.: Sure. Dialogue: 0,0:47:08.92,0:47:12.50,Default,,0000,0000,0000,,B.G.: I think, what I will say is that, Dialogue: 0,0:47:12.50,0:47:16.46,Default,,0000,0000,0000,,Yogi is talking about the presence of a profiler\Nbeing very important. Dialogue: 0,0:47:16.46,0:47:18.90,Default,,0000,0000,0000,,I think again it depends on the domain that\Nyou are in. Dialogue: 0,0:47:18.90,0:47:21.85,Default,,0000,0000,0000,,What kind of company you work for, what your\Nchallenges are. Dialogue: 0,0:47:21.85,0:47:24.77,Default,,0000,0000,0000,,It could just be documentation for you. Right\Nor it could be Dialogue: 0,0:47:24.77,0:47:29.83,Default,,0000,0000,0000,,just the existence of a all-out library for\Nyou, right. Dialogue: 0,0:47:29.83,0:47:34.58,Default,,0000,0000,0000,,So I think it depends. The answer, real answer\Nis it really depends. Dialogue: 0,0:47:34.58,0:47:39.50,Default,,0000,0000,0000,,QUERANT: I have a question. Like when do we\Nactually Dialogue: 0,0:47:39.50,0:47:42.54,Default,,0000,0000,0000,,choose a interpreted language versus a compile\Nlanguage, Dialogue: 0,0:47:42.54,0:47:45.17,Default,,0000,0000,0000,,is my first question. Like for example, Dialogue: 0,0:47:45.17,0:47:48.13,Default,,0000,0000,0000,,Ruby's interpreted language, and like Java\Nis kind of both, Dialogue: 0,0:47:48.13,0:47:51.75,Default,,0000,0000,0000,,like when do we actually choose that one is\Nthe first question, Dialogue: 0,0:47:51.75,0:47:53.42,Default,,0000,0000,0000,,and second question is- Dialogue: 0,0:47:53.42,0:48:00.42,Default,,0000,0000,0000,,H.K.: Just ask one question. Please ask one\Nquestion. Dialogue: 0,0:48:02.51,0:48:08.57,Default,,0000,0000,0000,,QUERANT: Yeah. The question is asked. Dialogue: 0,0:48:08.57,0:48:14.66,Default,,0000,0000,0000,,Y.K.: So, OK again this is, as Baishampayan\Nsaid, Dialogue: 0,0:48:14.66,0:48:19.21,Default,,0000,0000,0000,,it's kind of a black art. But roughly the\Neuristics that I used were, Dialogue: 0,0:48:19.21,0:48:23.93,Default,,0000,0000,0000,,is primarily driven by is the system gonna\Nbe Dialogue: 0,0:48:23.93,0:48:30.93,Default,,0000,0000,0000,,CPU-bound or IO-bound? What kind of latencies\Ndo you need? Do you want Dialogue: 0,0:48:34.94,0:48:38.32,Default,,0000,0000,0000,,(00:48:27 - dead audio - 00:48:42) Dialogue: 0,0:48:38.32,0:48:43.40,Default,,0000,0000,0000,,I'd probably go straight away to Dialogue: 0,0:48:43.40,0:48:48.49,Default,,0000,0000,0000,,Java or any other static-type language, Dialogue: 0,0:48:48.49,0:48:49.66,Default,,0000,0000,0000,,which gives those kind of performance. Dialogue: 0,0:48:49.66,0:48:53.98,Default,,0000,0000,0000,,So I think latency is one. I don't know - you\Nmight- Dialogue: 0,0:48:53.98,0:48:56.58,Default,,0000,0000,0000,,B.G.: So I would say that the differences\Nbetween Dialogue: 0,0:48:56.58,0:48:58.99,Default,,0000,0000,0000,,interpreted and compile languages, they are\Nkind of Dialogue: 0,0:48:58.99,0:49:02.07,Default,,0000,0000,0000,,like blurring these days. I think you, what\Nyou really mean, Dialogue: 0,0:49:02.07,0:49:05.38,Default,,0000,0000,0000,,is a native language versus a language that\Nruns in the VM. Dialogue: 0,0:49:05.38,0:49:11.67,Default,,0000,0000,0000,,OK. So I think VMs are as fast as natively\Ncompiled languages today. Dialogue: 0,0:49:11.67,0:49:16.73,Default,,0000,0000,0000,,And so for example, one of the lowest latency\Nlanguages Dialogue: 0,0:49:16.73,0:49:19.89,Default,,0000,0000,0000,,would be Erlang, but it's not really a natively Dialogue: 0,0:49:19.89,0:49:23.43,Default,,0000,0000,0000,,ompiled language for that matter. Dialogue: 0,0:49:23.43,0:49:27.81,Default,,0000,0000,0000,,So again, Yogi is absolutely right, it depends\Non the problem. Dialogue: 0,0:49:27.81,0:49:30.83,Default,,0000,0000,0000,,If it's CPO-bound, maybe you should use a\Nlanguage Dialogue: 0,0:49:30.83,0:49:33.77,Default,,0000,0000,0000,,which spits out a native binary or maybe Dialogue: 0,0:49:33.77,0:49:36.70,Default,,0000,0000,0000,,has a very fast git compiler inside of VM. Dialogue: 0,0:49:36.70,0:49:40.100,Default,,0000,0000,0000,,Or if it's IO-bound, which most web-applications\Nare by the way, Dialogue: 0,0:49:40.100,0:49:44.01,Default,,0000,0000,0000,,then just use Python, Ruby or whatever, or\NJavaScript. Dialogue: 0,0:49:44.01,0:49:48.55,Default,,0000,0000,0000,,C.F.: Yeah, but in, it is a blurring not only\Nof that boundary, Dialogue: 0,0:49:48.55,0:49:50.49,Default,,0000,0000,0000,,but a blurring of concerns. Dialogue: 0,0:49:50.49,0:49:55.75,Default,,0000,0000,0000,,So like you said you have never used Ruby\Nfor something that Dialogue: 0,0:49:55.75,0:49:57.02,Default,,0000,0000,0000,,requires that low-latency. That's because\NRuby's not fast enough, Dialogue: 0,0:49:57.02,0:49:58.18,Default,,0000,0000,0000,,not because it's an interpretive language,\Nright. Dialogue: 0,0:49:58.18,0:50:04.20,Default,,0000,0000,0000,,If it were, yeah, so I would personally say\Non anything where Dialogue: 0,0:50:04.20,0:50:04.44,Default,,0000,0000,0000,,I don't mind having the source code present,\Nwhich means any Dialogue: 0,0:50:04.44,0:50:04.51,Default,,0000,0000,0000,,server-side thing for example, I would use\Ninterpretive languages, Dialogue: 0,0:50:04.51,0:50:04.83,Default,,0000,0000,0000,,because it's a pain in the ass, I don't want\Nto do that. Dialogue: 0,0:50:04.83,0:50:05.10,Default,,0000,0000,0000,,And what all of these things do is the answer,\Neffectively Dialogue: 0,0:50:05.10,0:50:05.25,Default,,0000,0000,0000,,just compile it for you, anyway. Dialogue: 0,0:50:05.25,0:50:05.45,Default,,0000,0000,0000,,QUERANT: My question is for all panel members. Dialogue: 0,0:50:05.45,0:50:05.64,Default,,0000,0000,0000,,From invention of a competitive we're seeing\Nthat Dialogue: 0,0:50:05.64,0:50:05.84,Default,,0000,0000,0000,,there are so many languages came and gone, Dialogue: 0,0:50:05.84,0:50:12.84,Default,,0000,0000,0000,,and each language right on the veil, Dialogue: 0,0:50:13.20,0:50:20.20,Default,,0000,0000,0000,,are serving out their time. Dialogue: 0,0:50:34.29,0:50:41.29,Default,,0000,0000,0000,,I would say that today Ruby is one of those\Nlanguages riding on the veil. Dialogue: 0,0:50:44.68,0:50:48.23,Default,,0000,0000,0000,,C is the only language which is there for\Na long time, Dialogue: 0,0:50:48.23,0:50:51.43,Default,,0000,0000,0000,,and it is from the starting of the computer\Nstill it is there. Dialogue: 0,0:50:51.43,0:50:55.53,Default,,0000,0000,0000,,So my question is, how long do you think that\Nthe Ruby will be last, Dialogue: 0,0:50:55.53,0:50:59.48,Default,,0000,0000,0000,,and what is going to be the next veil? Will\Nit be Closure, or Scala, Dialogue: 0,0:50:59.48,0:51:03.65,Default,,0000,0000,0000,,Go or any other language, because the moment\Nis coming to the market Dialogue: 0,0:51:03.65,0:51:06.71,Default,,0000,0000,0000,,and total paradigm of programming is changing. Dialogue: 0,0:51:06.71,0:51:09.47,Default,,0000,0000,0000,,B.G.: Great question. I will just, in my recollection, Dialogue: 0,0:51:09.47,0:51:12.13,Default,,0000,0000,0000,,the oldest language that is still in existence\Nis Lisp, Dialogue: 0,0:51:12.13,0:51:17.69,Default,,0000,0000,0000,,and not C. It predates Unix and C by twenty\Nyears. Dialogue: 0,0:51:17.69,0:51:18.21,Default,,0000,0000,0000,,And anyway- Dialogue: 0,0:51:18.21,0:51:21.04,Default,,0000,0000,0000,,C.F.: So that's a huge wave is what you're\Nsaying. Dialogue: 0,0:51:21.04,0:51:22.16,Default,,0000,0000,0000,,B.G.: Huge wave. Dialogue: 0,0:51:22.16,0:51:27.03,Default,,0000,0000,0000,,C.F.: We're still in the Lisp bubble, which\Nwill soon burst. Dialogue: 0,0:51:27.03,0:51:30.99,Default,,0000,0000,0000,,Everyone will realize that was stupid. Dialogue: 0,0:51:30.99,0:51:35.06,Default,,0000,0000,0000,,Do you really want an answer to that question.\NWe didn't really answer it. Dialogue: 0,0:51:35.06,0:51:38.34,Default,,0000,0000,0000,,B.G.: So languages do come and go but paradigms\Ndo stay, Dialogue: 0,0:51:38.34,0:51:40.87,Default,,0000,0000,0000,,OK. So fine, don't focus on languages, Dialogue: 0,0:51:40.87,0:51:42.84,Default,,0000,0000,0000,,focus on learning different paradigms. Dialogue: 0,0:51:42.84,0:51:45.85,Default,,0000,0000,0000,,C.F.: But they don't really come and go that\Nmuch. Dialogue: 0,0:51:45.85,0:51:47.39,Default,,0000,0000,0000,,I mean think about it, like- Dialogue: 0,0:51:47.39,0:51:49.70,Default,,0000,0000,0000,,B.G.: They might, like PHP fell out of favor. Dialogue: 0,0:51:49.70,0:51:51.89,Default,,0000,0000,0000,,C.F.: But it's not, not it's out of fashion.\NFashion. Dialogue: 0,0:51:51.89,0:51:53.05,Default,,0000,0000,0000,,B.G.: It is that. Dialogue: 0,0:51:53.05,0:51:55.80,Default,,0000,0000,0000,,C.F.: It is heavily deployed, right, you're\Nrunning it. Dialogue: 0,0:51:55.80,0:51:57.06,Default,,0000,0000,0000,,So it still exists. Dialogue: 0,0:51:57.06,0:51:59.88,Default,,0000,0000,0000,,H.K.: A bit sheepishly but running. Dialogue: 0,0:51:59.88,0:52:04.41,Default,,0000,0000,0000,,V.K.: But remember one thing. Ruby is older\Nthan Java. Dialogue: 0,0:52:04.41,0:52:06.53,Default,,0000,0000,0000,,It's been there since 2004. Dialogue: 0,0:52:06.53,0:52:08.55,Default,,0000,0000,0000,,But how many people started referring to Ruby Dialogue: 0,0:52:08.55,0:52:12.17,Default,,0000,0000,0000,,until Ruby on Rails came? So it's a solution\Nthat language Dialogue: 0,0:52:12.17,0:52:15.20,Default,,0000,0000,0000,,or a framework provides this, what inspired\Neverything. Dialogue: 0,0:52:15.20,0:52:18.14,Default,,0000,0000,0000,,In fact Ruby on Rails inspired the entire\Necosystem Dialogue: 0,0:52:18.14,0:52:21.42,Default,,0000,0000,0000,,much more of other languages beyond just Ruby. Dialogue: 0,0:52:21.42,0:52:24.96,Default,,0000,0000,0000,,So that's in fact, it's Ruby on Rails that\Nmade Ruby popular. Dialogue: 0,0:52:24.96,0:52:28.30,Default,,0000,0000,0000,,B.G.: It's also Ruby's Achille's heel, by\Nthe way. Dialogue: 0,0:52:28.30,0:52:30.45,Default,,0000,0000,0000,,V.K.: Absolutely. There's a downside to it,\Nextra- Dialogue: 0,0:52:30.45,0:52:32.33,Default,,0000,0000,0000,,B.G.: I'll keep patching FTW, right? Not. Dialogue: 0,0:52:32.33,0:52:34.87,Default,,0000,0000,0000,,V.K.: But remember, you know, we were doing\Nall Dialogue: 0,0:52:34.87,0:52:38.85,Default,,0000,0000,0000,,this web XML business till Ruby on Rails came\Nabout, Dialogue: 0,0:52:38.85,0:52:42.79,Default,,0000,0000,0000,,and all this other stuff. So what changed,\Nif you were to call it, Dialogue: 0,0:52:42.79,0:52:45.99,Default,,0000,0000,0000,,you would call it Ruby on Rails for the better,\Nrather than Ruby- Dialogue: 0,0:52:45.99,0:52:47.84,Default,,0000,0000,0000,,H.K.: Are you saying that the whole rest Dialogue: 0,0:52:47.84,0:52:52.12,Default,,0000,0000,0000,,thing was because of Rails? Venkat? Dialogue: 0,0:52:52.12,0:52:56.34,Default,,0000,0000,0000,,V.K.: Certainly the moment was more simplification, Dialogue: 0,0:52:56.34,0:52:58.26,Default,,0000,0000,0000,,convection over configuration, Dialogue: 0,0:52:58.26,0:53:00.25,Default,,0000,0000,0000,,so that's what the Ruby on Rails was inspiring. Dialogue: 0,0:53:00.25,0:53:01.48,Default,,0000,0000,0000,,So you could just say that, you know, Dialogue: 0,0:53:01.48,0:53:03.81,Default,,0000,0000,0000,,people who were doing Ruby on Rails were doing\Nmore Dialogue: 0,0:53:03.81,0:53:05.76,Default,,0000,0000,0000,,rest than people who were doing dot net Dialogue: 0,0:53:05.76,0:53:06.95,Default,,0000,0000,0000,,and doing the sub-business. Dialogue: 0,0:53:06.95,0:53:10.81,Default,,0000,0000,0000,,But by the way, sub seems to be effectively\Ndead, right. Dialogue: 0,0:53:10.81,0:53:12.100,Default,,0000,0000,0000,,C.F.: But unfortunately it's dead Dialogue: 0,0:53:12.100,0:53:16.45,Default,,0000,0000,0000,,in the same way that PHP is dead. It still\Nexists. Dialogue: 0,0:53:16.45,0:53:19.60,Default,,0000,0000,0000,,V.K.: That's true. The same that Colba is\Ndead, right. Dialogue: 0,0:53:19.60,0:53:21.37,Default,,0000,0000,0000,,C.F.: And Colba, for that matter. Sorry kids. Dialogue: 0,0:53:21.37,0:53:25.19,Default,,0000,0000,0000,,V.K.: And that will never go away, because\Nas long as- Dialogue: 0,0:53:25.19,0:53:30.74,Default,,0000,0000,0000,,H.K.: So the next question that I wanted to\Nask is like, Dialogue: 0,0:53:30.74,0:53:32.16,Default,,0000,0000,0000,,Yogi talked about in his presentation, like, Dialogue: 0,0:53:32.16,0:53:35.27,Default,,0000,0000,0000,,how using a service architecture, Dialogue: 0,0:53:35.27,0:53:37.83,Default,,0000,0000,0000,,like for interface-based for, you know like\Nmultiple small Dialogue: 0,0:53:37.83,0:53:39.76,Default,,0000,0000,0000,,micro-applications, small applications. Dialogue: 0,0:53:39.76,0:53:42.74,Default,,0000,0000,0000,,So the next question is like how do you go\Nabout Dialogue: 0,0:53:42.74,0:53:45.03,Default,,0000,0000,0000,,in an organization, you have a product, Dialogue: 0,0:53:45.03,0:53:46.85,Default,,0000,0000,0000,,or maybe more than one product. Dialogue: 0,0:53:46.85,0:53:51.25,Default,,0000,0000,0000,,How do you go about building a true polyglot\Nsystem, Dialogue: 0,0:53:51.25,0:53:53.48,Default,,0000,0000,0000,,where you know like programmers are encouraged\Nto come Dialogue: 0,0:53:53.48,0:53:55.84,Default,,0000,0000,0000,,and you know like use different languages. Dialogue: 0,0:53:55.84,0:53:58.84,Default,,0000,0000,0000,,Does this require like some previous thought, Dialogue: 0,0:53:58.84,0:54:00.46,Default,,0000,0000,0000,,or does it happen automatically, like, yeah. Dialogue: 0,0:54:00.46,0:54:04.10,Default,,0000,0000,0000,,What are the best practices and everything? Dialogue: 0,0:54:04.10,0:54:08.19,Default,,0000,0000,0000,,C.F.: It's for one of us isn't it. Dialogue: 0,0:54:08.19,0:54:11.39,Default,,0000,0000,0000,,Or he says it's for me and I say it's for\Nyou. Dialogue: 0,0:54:11.39,0:54:15.78,Default,,0000,0000,0000,,OK, so I, actually Yogi did sort of answer\Nthis a minute ago. Dialogue: 0,0:54:15.78,0:54:18.21,Default,,0000,0000,0000,,You know, you really do need to focus on the Dialogue: 0,0:54:18.21,0:54:20.43,Default,,0000,0000,0000,,architecture of the system first. Dialogue: 0,0:54:20.43,0:54:23.09,Default,,0000,0000,0000,,That's essentially what my whole rant was\Nthis morning, Dialogue: 0,0:54:23.09,0:54:25.86,Default,,0000,0000,0000,,is about the architecture of a system that's Dialogue: 0,0:54:25.86,0:54:31.71,Default,,0000,0000,0000,,made of small components that interact in\Nwell-defined ways Dialogue: 0,0:54:31.71,0:54:35.16,Default,,0000,0000,0000,,with very clear responsibilities of each component, Dialogue: 0,0:54:35.16,0:54:37.85,Default,,0000,0000,0000,,and the components can and will be thrown\Naway. Dialogue: 0,0:54:37.85,0:54:40.75,Default,,0000,0000,0000,,I think for us once we have that set up, Dialogue: 0,0:54:40.75,0:54:44.20,Default,,0000,0000,0000,,I really can say yes, write a service in Rust, Dialogue: 0,0:54:44.20,0:54:46.33,Default,,0000,0000,0000,,I don't care. I don't even know what it looks\Nlike, Dialogue: 0,0:54:46.33,0:54:48.23,Default,,0000,0000,0000,,I haven't bothered to read about it yet. Dialogue: 0,0:54:48.23,0:54:50.56,Default,,0000,0000,0000,,It's fine. Yeah, it's like C++. Dialogue: 0,0:54:50.56,0:54:54.02,Default,,0000,0000,0000,,So yeah it's excellent. It's battle-worn. Dialogue: 0,0:54:54.02,0:54:57.37,Default,,0000,0000,0000,,But if it performs well enough Dialogue: 0,0:54:57.37,0:54:59.24,Default,,0000,0000,0000,,and it actually works and we're monitoring\Nit Dialogue: 0,0:54:59.24,0:55:03.32,Default,,0000,0000,0000,,and doing these, and it's deployable in the\Nway that we can deploy, Dialogue: 0,0:55:03.32,0:55:06.80,Default,,0000,0000,0000,,I don't need an ecosystem for polyglot programming\Nthen. Dialogue: 0,0:55:06.80,0:55:09.21,Default,,0000,0000,0000,,I just need to encourage people to try things Dialogue: 0,0:55:09.21,0:55:13.05,Default,,0000,0000,0000,,and to throw them away if they didn't work\Nout. Dialogue: 0,0:55:13.05,0:55:15.12,Default,,0000,0000,0000,,H.K.: Venkat, you had something- Dialogue: 0,0:55:15.12,0:55:16.35,Default,,0000,0000,0000,,V.K.: Actually there's something Dialogue: 0,0:55:16.35,0:55:18.83,Default,,0000,0000,0000,,we just talked about this morning. Dialogue: 0,0:55:18.83,0:55:21.61,Default,,0000,0000,0000,,We have to move away from a language requiring Dialogue: 0,0:55:21.61,0:55:23.94,Default,,0000,0000,0000,,to be hidden in a web service just to be safe, Dialogue: 0,0:55:23.94,0:55:25.55,Default,,0000,0000,0000,,and you can throw it away later. Dialogue: 0,0:55:25.55,0:55:28.42,Default,,0000,0000,0000,,I think the languages will have to find a\Nway to work together, Dialogue: 0,0:55:28.42,0:55:30.95,Default,,0000,0000,0000,,where you don't need to hide things behind\Nrest. Dialogue: 0,0:55:30.95,0:55:33.81,Default,,0000,0000,0000,,All these languages will have to come with\Na way to improve, Dialogue: 0,0:55:33.81,0:55:36.87,Default,,0000,0000,0000,,thereby they should, Ruby should really Dialogue: 0,0:55:36.87,0:55:38.52,Default,,0000,0000,0000,,see a world of coexistence with Java, Dialogue: 0,0:55:38.52,0:55:40.63,Default,,0000,0000,0000,,and a world of coexistence with dot net. Dialogue: 0,0:55:40.63,0:55:42.58,Default,,0000,0000,0000,,Because in many cases we develop in, like\NJRuby, Dialogue: 0,0:55:42.58,0:55:45.08,Default,,0000,0000,0000,,right. You develop in Ruby and you deploy\Nit in Java, Dialogue: 0,0:55:45.08,0:55:47.36,Default,,0000,0000,0000,,or J to E, with all the monitoring tools, Dialogue: 0,0:55:47.36,0:55:49.19,Default,,0000,0000,0000,,and you talked about profiling. Dialogue: 0,0:55:49.19,0:55:52.51,Default,,0000,0000,0000,,JVM and the JV-maker system is very great\Nfor deployments Dialogue: 0,0:55:52.51,0:55:55.71,Default,,0000,0000,0000,,actually better. So in order for you to use\Nit, Dialogue: 0,0:55:55.71,0:55:58.31,Default,,0000,0000,0000,,the Ruby language has to become friendly with\NJava. Dialogue: 0,0:55:58.31,0:55:59.91,Default,,0000,0000,0000,,The simplest thing for example is RJB, which\Nis a bridge to Dialogue: 0,0:55:59.91,0:56:03.39,Default,,0000,0000,0000,,Java, which is still, we use by the way, Dialogue: 0,0:56:03.39,0:56:05.17,Default,,0000,0000,0000,,over in JRuby as well as separately. Dialogue: 0,0:56:05.17,0:56:07.30,Default,,0000,0000,0000,,So you need a way to actually have one language Dialogue: 0,0:56:07.30,0:56:09.77,Default,,0000,0000,0000,,talk to another in somewhat standardized,\Nsimpler, Dialogue: 0,0:56:09.77,0:56:11.05,Default,,0000,0000,0000,,less overhead mechanism. Dialogue: 0,0:56:11.05,0:56:14.08,Default,,0000,0000,0000,,And I think that would really encourage people Dialogue: 0,0:56:14.08,0:56:16.60,Default,,0000,0000,0000,,to use different languages without having Dialogue: 0,0:56:16.60,0:56:19.50,Default,,0000,0000,0000,,to build this up layer or risk layer. Dialogue: 0,0:56:19.50,0:56:21.68,Default,,0000,0000,0000,,Y.K.: So you're saying that at like binary\Nlevel, Dialogue: 0,0:56:21.68,0:56:24.85,Default,,0000,0000,0000,,actually like a foreign function interface\Nand. Dialogue: 0,0:56:24.85,0:56:27.12,Default,,0000,0000,0000,,I think the simplest way to do that is still\Nover the network. Dialogue: 0,0:56:27.12,0:56:29.14,Default,,0000,0000,0000,,Like when it's rest or it's zero MQO or whatever,\Nright, Dialogue: 0,0:56:29.14,0:56:31.60,Default,,0000,0000,0000,,it's like independent processes interacting\Nwith each other, Dialogue: 0,0:56:31.60,0:56:33.60,Default,,0000,0000,0000,,isolated, not messing with each other. Dialogue: 0,0:56:33.60,0:56:36.52,Default,,0000,0000,0000,,It just works well. Not convince the RJB or- Dialogue: 0,0:56:36.52,0:56:38.37,Default,,0000,0000,0000,,V.K.: You're talking about it from an architecting Dialogue: 0,0:56:38.37,0:56:41.19,Default,,0000,0000,0000,,a bigger system standpoint, but I'm just talking\Nabout Dialogue: 0,0:56:41.19,0:56:43.81,Default,,0000,0000,0000,,simply, I'm running this web application,\Nbut certain Dialogue: 0,0:56:43.81,0:56:45.92,Default,,0000,0000,0000,,part has to be paralyzed. I should be able\Nto do it Dialogue: 0,0:56:45.92,0:56:50.54,Default,,0000,0000,0000,,with less overhead, less new layers, if a\Nsimpler Dialogue: 0,0:56:50.54,0:56:52.33,Default,,0000,0000,0000,,problem exists where that's applicable, right. Dialogue: 0,0:56:52.33,0:56:54.15,Default,,0000,0000,0000,,What you were just talking about, it's applicable, Dialogue: 0,0:56:54.15,0:56:56.69,Default,,0000,0000,0000,,has certain complexity and certain layer,\Nbut Dialogue: 0,0:56:56.69,0:56:59.26,Default,,0000,0000,0000,,generally encouraging people to apply multiple Dialogue: 0,0:56:59.26,0:57:01.59,Default,,0000,0000,0000,,languages to a single solution, right now, Dialogue: 0,0:57:01.59,0:57:02.81,Default,,0000,0000,0000,,has so much overhead. Dialogue: 0,0:57:02.81,0:57:06.11,Default,,0000,0000,0000,,I mean, today colleges are teach kids, Dialogue: 0,0:57:06.11,0:57:07.97,Default,,0000,0000,0000,,people about different languages, Dialogue: 0,0:57:07.97,0:57:09.64,Default,,0000,0000,0000,,but it's as if, like if you don't get a job Dialogue: 0,0:57:09.64,0:57:12.59,Default,,0000,0000,0000,,in Java then go and look for a dot net job. Dialogue: 0,0:57:12.59,0:57:14.36,Default,,0000,0000,0000,,That's really how we are learning multiple\Nlanguages, Dialogue: 0,0:57:14.36,0:57:16.40,Default,,0000,0000,0000,,so but we are not learning, it's not that Dialogue: 0,0:57:16.40,0:57:17.61,Default,,0000,0000,0000,,we are not learning multiple languages, Dialogue: 0,0:57:17.61,0:57:20.47,Default,,0000,0000,0000,,but we are not polyglots by default or Dialogue: 0,0:57:20.47,0:57:22.59,Default,,0000,0000,0000,,by simplicity of the system. Dialogue: 0,0:57:22.59,0:57:24.91,Default,,0000,0000,0000,,That is I believe, if you want to be, Dialogue: 0,0:57:24.91,0:57:26.29,Default,,0000,0000,0000,,if you want to encourage polyglotism, Dialogue: 0,0:57:26.29,0:57:27.83,Default,,0000,0000,0000,,you just have to go to the next level Dialogue: 0,0:57:27.83,0:57:30.48,Default,,0000,0000,0000,,where languages will have to coexist with\Neach other. Dialogue: 0,0:57:30.48,0:57:30.95,Default,,0000,0000,0000,,B.G.: I think- Dialogue: 0,0:57:30.95,0:57:32.32,Default,,0000,0000,0000,,V.K.: That is what we built with that notion. Dialogue: 0,0:57:32.32,0:57:33.93,Default,,0000,0000,0000,,B.G.: Fair enough. So I think co-existence\Ncan Dialogue: 0,0:57:33.93,0:57:35.91,Default,,0000,0000,0000,,be looked at from different angles. Dialogue: 0,0:57:35.91,0:57:39.27,Default,,0000,0000,0000,,I think what you're talking about is run-time\Nco-existence, Dialogue: 0,0:57:39.27,0:57:42.61,Default,,0000,0000,0000,,you know, inside one run-time you have multiple\Nlanguages running. Dialogue: 0,0:57:42.61,0:57:44.44,Default,,0000,0000,0000,,I don't know that that's technically feasible- Dialogue: 0,0:57:44.44,0:57:46.07,Default,,0000,0000,0000,,V.K.: It may not be run time, it may not be Dialogue: 0,0:57:46.07,0:57:48.66,Default,,0000,0000,0000,,a single process co-existence- it would be\Na multi-process. Dialogue: 0,0:57:48.66,0:57:51.43,Default,,0000,0000,0000,,B.G.: But it would have to be over some network,\Nright. Dialogue: 0,0:57:51.43,0:57:53.04,Default,,0000,0000,0000,,V.K.: No. For example, take RGB. Dialogue: 0,0:57:53.04,0:57:54.38,Default,,0000,0000,0000,,B.G.: How does it work? Dialogue: 0,0:57:54.38,0:57:56.06,Default,,0000,0000,0000,,V.K.: It's almost like you're just calling Dialogue: 0,0:57:56.06,0:57:57.30,Default,,0000,0000,0000,,it into the process and kind of like- Dialogue: 0,0:57:57.30,0:57:58.19,Default,,0000,0000,0000,,B.G.: But how does it really work? Dialogue: 0,0:57:58.19,0:57:59.82,Default,,0000,0000,0000,,V.K.: It could even be- Dialogue: 0,0:57:59.82,0:58:01.67,Default,,0000,0000,0000,,C.F.: It's still one process, right, RGB. Dialogue: 0,0:58:01.67,0:58:02.67,Default,,0000,0000,0000,,B.G.: Yeah it's still one process. Dialogue: 0,0:58:02.67,0:58:03.40,Default,,0000,0000,0000,,V.K.: I agree. Dialogue: 0,0:58:03.40,0:58:04.86,Default,,0000,0000,0000,,B.G.: It's still one process, right. Dialogue: 0,0:58:04.86,0:58:06.57,Default,,0000,0000,0000,,V.K.: JVM does its own thing, right. Dialogue: 0,0:58:06.57,0:58:08.51,Default,,0000,0000,0000,,In a way JVM has its own layer- Dialogue: 0,0:58:08.51,0:58:10.42,Default,,0000,0000,0000,,B.G.: But ultimately it's all JVM bite code- Dialogue: 0,0:58:10.42,0:58:11.38,Default,,0000,0000,0000,,V.K.: True. Dialogue: 0,0:58:11.38,0:58:14.53,Default,,0000,0000,0000,,B.G.: So I think we are all building, or have\Nto Dialogue: 0,0:58:14.53,0:58:17.08,Default,,0000,0000,0000,,build distributor systems at the end of the\Nday today, Dialogue: 0,0:58:17.08,0:58:18.83,Default,,0000,0000,0000,,and we're also trying to build abstractions. Dialogue: 0,0:58:18.83,0:58:20.100,Default,,0000,0000,0000,,Right, that is the whole goal of building Dialogue: 0,0:58:20.100,0:58:24.95,Default,,0000,0000,0000,,a software architecture that lets, let me\Nfind out which parts Dialogue: 0,0:58:24.95,0:58:26.81,Default,,0000,0000,0000,,I can abstract and how. Dialogue: 0,0:58:26.81,0:58:28.77,Default,,0000,0000,0000,,So what Yogi talked about, Dialogue: 0,0:58:28.77,0:58:30.05,Default,,0000,0000,0000,,and totally agree with him, Dialogue: 0,0:58:30.05,0:58:34.87,Default,,0000,0000,0000,,I think the best approach is to abstract away\Nthe optimal concerns Dialogue: 0,0:58:34.87,0:58:35.94,Default,,0000,0000,0000,,and constructs of the system Dialogue: 0,0:58:35.94,0:58:38.83,Default,,0000,0000,0000,,and tie them together using one language Dialogue: 0,0:58:38.83,0:58:40.42,Default,,0000,0000,0000,,that is spoken on the system. Dialogue: 0,0:58:40.42,0:58:43.41,Default,,0000,0000,0000,,So I think they used JSON in JSON Schema for\Nthe- Dialogue: 0,0:58:43.41,0:58:44.19,Default,,0000,0000,0000,,Y.K.: It was in HTTP. Dialogue: 0,0:58:44.19,0:58:45.29,Default,,0000,0000,0000,,B.G.: It was in HTTP, OK, yeah. Dialogue: 0,0:58:45.29,0:58:48.31,Default,,0000,0000,0000,,So what you could use- you guys use it- Dialogue: 0,0:58:48.31,0:58:50.46,Default,,0000,0000,0000,,you could use a message queue or maybe use Dialogue: 0,0:58:50.46,0:58:53.36,Default,,0000,0000,0000,,something like zero in cue sockets to communicate Dialogue: 0,0:58:53.36,0:58:57.94,Default,,0000,0000,0000,,over and maybe use Thrift or even JSON data\Nfor communication, but- Dialogue: 0,0:58:57.94,0:58:58.51,Default,,0000,0000,0000,,H.K.: So- Dialogue: 0,0:58:58.51,0:59:01.44,Default,,0000,0000,0000,,B.G.: The idea is to basically build a system Dialogue: 0,0:59:01.44,0:59:04.79,Default,,0000,0000,0000,,of optimal components tied together but using\None system, Dialogue: 0,0:59:04.79,0:59:06.44,Default,,0000,0000,0000,,but then for the message buzz you can either Dialogue: 0,0:59:06.44,0:59:09.44,Default,,0000,0000,0000,,use a socket or a message queue. Dialogue: 0,0:59:09.44,0:59:14.40,Default,,0000,0000,0000,,H.K.: So, there's definitely a lot of tools\Nwhich are, Dialogue: 0,0:59:14.40,0:59:18.26,Default,,0000,0000,0000,,like run-times that exist which allow run-time\Nre-use of languages, Dialogue: 0,0:59:18.26,0:59:22.22,Default,,0000,0000,0000,,for example like, either on top of the LLVM\Nor on top of JVM, Dialogue: 0,0:59:22.22,0:59:24.93,Default,,0000,0000,0000,,you know like how you have Closure collections\Nyou can use Dialogue: 0,0:59:24.93,0:59:27.31,Default,,0000,0000,0000,,from JRuby actually, there are projects that\Nallow that. Dialogue: 0,0:59:27.31,0:59:29.29,Default,,0000,0000,0000,,Do you think that all those are basically\Ntoys Dialogue: 0,0:59:29.29,0:59:32.60,Default,,0000,0000,0000,,and shouldn't be used in any seriousness? Dialogue: 0,0:59:32.60,0:59:35.21,Default,,0000,0000,0000,,B.G.: Closure collections are not toys. Dialogue: 0,0:59:35.21,0:59:39.37,Default,,0000,0000,0000,,But what I would say that, I think that this\Nidea, Dialogue: 0,0:59:39.37,0:59:42.55,Default,,0000,0000,0000,,it can be applied to the JVM languages, Dialogue: 0,0:59:42.55,0:59:44.11,Default,,0000,0000,0000,,but many times you have to use some language Dialogue: 0,0:59:44.11,0:59:46.91,Default,,0000,0000,0000,,which is not available on the JVM, right. Dialogue: 0,0:59:46.91,0:59:48.50,Default,,0000,0000,0000,,And you cannot use LLVM for it, Dialogue: 0,0:59:48.50,0:59:50.81,Default,,0000,0000,0000,,because it's something which is much lower\Nlevel Dialogue: 0,0:59:50.81,0:59:53.68,Default,,0000,0000,0000,,than the JVM. So you'll have to use the network Dialogue: 0,0:59:53.68,0:59:57.02,Default,,0000,0000,0000,,to communicate over each other. Dialogue: 0,0:59:57.02,0:59:59.64,Default,,0000,0000,0000,,But as far as JVM languages are concerned,\Nyeah, why not. Dialogue: 0,0:59:59.64,1:00:03.85,Default,,0000,0000,0000,,At a theoretical level, inter-opt between\Nlanguages Dialogue: 0,1:00:03.85,1:00:06.89,Default,,0000,0000,0000,,is something that we should shoot for. Absolutely. Dialogue: 0,1:00:06.89,1:00:10.13,Default,,0000,0000,0000,,QUERANT: I have a complaint and a question\Nhere. Dialogue: 0,1:00:10.13,1:00:13.61,Default,,0000,0000,0000,,Complaint: You're arguing too much. Dialogue: 0,1:00:13.61,1:00:17.43,Default,,0000,0000,0000,,You obviously are in disagreement. Dialogue: 0,1:00:17.43,1:00:18.20,Default,,0000,0000,0000,,So Dialogue: 0,1:00:18.20,1:00:22.01,Default,,0000,0000,0000,,B.G.: Agreeing too each other. Dialogue: 0,1:00:22.01,1:00:26.80,Default,,0000,0000,0000,,C.F.: Closure collections are a toy then- Dialogue: 0,1:00:26.80,1:00:29.48,Default,,0000,0000,0000,,I actually, when he was saying are these things\Na toy, Dialogue: 0,1:00:29.48,1:00:32.99,Default,,0000,0000,0000,,I don't mean Closure collections, but I do\Nthink that, Dialogue: 0,1:00:32.99,1:00:38.34,Default,,0000,0000,0000,,the whole idea of interrupt in a VM or in\Na process is overrated. Dialogue: 0,1:00:38.34,1:00:40.71,Default,,0000,0000,0000,,And I think it's overrated, like, Dialogue: 0,1:00:40.71,1:00:43.92,Default,,0000,0000,0000,,I remember being at Fu Camp talking to the\Nparrot guys Dialogue: 0,1:00:43.92,1:00:46.93,Default,,0000,0000,0000,,and LLVM guys awhile back in a workshop, Dialogue: 0,1:00:46.93,1:00:48.09,Default,,0000,0000,0000,,and they were all complaining because they Dialogue: 0,1:00:48.09,1:00:52.08,Default,,0000,0000,0000,,had tried to do like JavaScript on all these\Ndifferent VMs. Dialogue: 0,1:00:52.08,1:00:53.91,Default,,0000,0000,0000,,They realized that like an array in JavaScript Dialogue: 0,1:00:53.91,1:00:55.64,Default,,0000,0000,0000,,has different semantics then like an array\Nin Java Dialogue: 0,1:00:55.64,1:00:57.94,Default,,0000,0000,0000,,and an array in Ruby. You know if you add Dialogue: 0,1:00:57.94,1:01:00.89,Default,,0000,0000,0000,,something way off in the distance, Dialogue: 0,1:01:00.89,1:01:02.76,Default,,0000,0000,0000,,past the end of the array, in some languages Dialogue: 0,1:01:02.76,1:01:04.79,Default,,0000,0000,0000,,it's an error and in some languages it nil\Nfills, Dialogue: 0,1:01:04.79,1:01:07.85,Default,,0000,0000,0000,,in some languages it's you know, so like, Dialogue: 0,1:01:07.85,1:01:09.07,Default,,0000,0000,0000,,that's a really stupid example, Dialogue: 0,1:01:09.07,1:01:12.38,Default,,0000,0000,0000,,and you can all imagine there's some way to\Nsolve that. Dialogue: 0,1:01:12.38,1:01:15.24,Default,,0000,0000,0000,,But with the more interesting features of\Nthe language, Dialogue: 0,1:01:15.24,1:01:18.43,Default,,0000,0000,0000,,that lead us to want to be polyglots, Dialogue: 0,1:01:18.43,1:01:20.92,Default,,0000,0000,0000,,like I don't really think it makes sense to\Ninstantiate Dialogue: 0,1:01:20.92,1:01:23.15,Default,,0000,0000,0000,,a Ruby class from Java, for example. Dialogue: 0,1:01:23.15,1:01:24.33,Default,,0000,0000,0000,,Because the Ruby class does different Dialogue: 0,1:01:24.33,1:01:27.80,Default,,0000,0000,0000,,things than the Java class and vice versa. Dialogue: 0,1:01:27.80,1:01:30.29,Default,,0000,0000,0000,,Yes it can sometimes be nice. Dialogue: 0,1:01:30.29,1:01:31.28,Default,,0000,0000,0000,,So like when you're in Closure Dialogue: 0,1:01:31.28,1:01:33.04,Default,,0000,0000,0000,,and you want to use someone's ancient Dialogue: 0,1:01:33.04,1:01:35.58,Default,,0000,0000,0000,,Java library that has been working for years, Dialogue: 0,1:01:35.58,1:01:37.52,Default,,0000,0000,0000,,you just do it. When you do it, though, Dialogue: 0,1:01:37.52,1:01:39.40,Default,,0000,0000,0000,,it's hideous, and it like, the Java interrupt Dialogue: 0,1:01:39.40,1:01:42.08,Default,,0000,0000,0000,,is really not nice. And you know you're doing\N- Dialogue: 0,1:01:42.08,1:01:44.82,Default,,0000,0000,0000,,it works fine. But it's uglier than Closure\Ncode. Dialogue: 0,1:01:44.82,1:01:46.85,Default,,0000,0000,0000,,Right, so then you want to write something\Nso it Dialogue: 0,1:01:46.85,1:01:49.70,Default,,0000,0000,0000,,looks like Closure and feels like Closure. Dialogue: 0,1:01:49.70,1:01:53.84,Default,,0000,0000,0000,,So personally I think an operating system\Nis also Dialogue: 0,1:01:53.84,1:01:56.51,Default,,0000,0000,0000,,like one process, you can think of it that\Nway these days. Dialogue: 0,1:01:56.51,1:01:59.22,Default,,0000,0000,0000,,It didn't use to be the case. But I can spin\None up Dialogue: 0,1:01:59.22,1:02:01.62,Default,,0000,0000,0000,,and start running it, and then have language\Ninterrupt Dialogue: 0,1:02:01.62,1:02:05.05,Default,,0000,0000,0000,,with multiple processes in there talking via\Nsockets, Dialogue: 0,1:02:05.05,1:02:07.56,Default,,0000,0000,0000,,and it's conceptually not very different.\NLike if Dialogue: 0,1:02:07.56,1:02:09.49,Default,,0000,0000,0000,,I describe it to my mom she won't know the\Ndifference Dialogue: 0,1:02:09.49,1:02:12.12,Default,,0000,0000,0000,,between that and a virtual machine, so. Dialogue: 0,1:02:12.12,1:02:14.02,Default,,0000,0000,0000,,B.G.: There's domain sockets in Unix, right. Dialogue: 0,1:02:14.02,1:02:15.22,Default,,0000,0000,0000,,C.F.: Oh yeah domain sockets in Unix. Of course. Dialogue: 0,1:02:15.22,1:02:16.74,Default,,0000,0000,0000,,This might be the solution, then. Dialogue: 0,1:02:16.74,1:02:19.10,Default,,0000,0000,0000,,QUERANT: Quick question to all the panelists. Dialogue: 0,1:02:19.10,1:02:22.61,Default,,0000,0000,0000,,As we stand today, what is the minimum number\Nof languages, Dialogue: 0,1:02:22.61,1:02:28.41,Default,,0000,0000,0000,,minimum set-up languages you would recommend\Nto all the programmers. Dialogue: 0,1:02:28.41,1:02:32.56,Default,,0000,0000,0000,,H.K.: 01:02:30 - dead audio Dialogue: 0,1:02:32.56,1:02:38.45,Default,,0000,0000,0000,,C.F.: Did you tell him his question was invalid,\Nis that it? I disagree. Dialogue: 0,1:02:38.45,1:02:43.89,Default,,0000,0000,0000,,H.K.: So what I was trying to- Dialogue: 0,1:02:43.89,1:02:44.49,Default,,0000,0000,0000,,B.G.: I would say it's a really awesome question. Dialogue: 0,1:02:44.49,1:02:47.84,Default,,0000,0000,0000,,I would say is that maybe don't worry too\Nmuch about Dialogue: 0,1:02:47.84,1:02:49.80,Default,,0000,0000,0000,,the number of languages that you are learning, Dialogue: 0,1:02:49.80,1:02:52.52,Default,,0000,0000,0000,,but number of different paradigms that you\Nare learning, right. Dialogue: 0,1:02:52.52,1:02:58.66,Default,,0000,0000,0000,,H.K.: So the question was like, like a kind\Nof paraphrasing, like, so- Dialogue: 0,1:02:58.66,1:03:01.68,Default,,0000,0000,0000,,B.G.: Doesn't matter. Look at the paradigms. Dialogue: 0,1:03:01.68,1:03:05.13,Default,,0000,0000,0000,,If you already know C, then don't bother about\NC++, Dialogue: 0,1:03:05.13,1:03:07.76,Default,,0000,0000,0000,,you know, for example, or whatever. Dialogue: 0,1:03:07.76,1:03:12.19,Default,,0000,0000,0000,,H.K.: Yeah so the next question I had here\Nwas like, Dialogue: 0,1:03:12.19,1:03:15.53,Default,,0000,0000,0000,,I'm just jumping back and forth, but like\Nyeah, Dialogue: 0,1:03:15.53,1:03:18.35,Default,,0000,0000,0000,,what next programming languages, like for\Nexample, Dialogue: 0,1:03:18.35,1:03:22.83,Default,,0000,0000,0000,,you guys are looking forward to. Like you\Nknow Dialogue: 0,1:03:22.83,1:03:26.50,Default,,0000,0000,0000,,starting with Swami like, sorry, Venkat, like- Dialogue: 0,1:03:26.50,1:03:30.67,Default,,0000,0000,0000,,V.K.: OK I'm just looking for a better Ruby. Dialogue: 0,1:03:30.67,1:03:32.81,Default,,0000,0000,0000,,H.K.: What do you mean by that? Dialogue: 0,1:03:32.81,1:03:35.07,Default,,0000,0000,0000,,V.K.: It's more of- I'm just looking for a Dialogue: 0,1:03:35.07,1:03:37.04,Default,,0000,0000,0000,,standardized Ruby where I should be able to Dialogue: 0,1:03:37.04,1:03:39.53,Default,,0000,0000,0000,,switch between the Java world and the MRA\Nworld, Dialogue: 0,1:03:39.53,1:03:41.88,Default,,0000,0000,0000,,without lots of friction and you know, and\Nbetter Dialogue: 0,1:03:41.88,1:03:43.71,Default,,0000,0000,0000,,performing Ruby generally speaking. When as\Nmuch Dialogue: 0,1:03:43.71,1:03:47.09,Default,,0000,0000,0000,,as we just talked about low-level you know\Nyou talk Dialogue: 0,1:03:47.09,1:03:48.75,Default,,0000,0000,0000,,low-latency stuff. I think we can't keep saying\Nthat Dialogue: 0,1:03:48.75,1:03:53.51,Default,,0000,0000,0000,,Ruby's, you know, it's really slow for a reason,\Nright. Dialogue: 0,1:03:53.51,1:03:57.63,Default,,0000,0000,0000,,And Ruby can run in a hot spot. I want- Java\Nwas slow Dialogue: 0,1:03:57.63,1:04:00.07,Default,,0000,0000,0000,,because of hot- before hotspot. But Java became\Nvery, Dialogue: 0,1:04:00.07,1:04:03.41,Default,,0000,0000,0000,,very fast through that time and lots of new\Nwork has Dialogue: 0,1:04:03.41,1:04:05.26,Default,,0000,0000,0000,,put in there. So there has to be some research\Ninto Dialogue: 0,1:04:05.26,1:04:08.08,Default,,0000,0000,0000,,performance in Ruby I think or something.\NI'm just looking Dialogue: 0,1:04:08.08,1:04:13.74,Default,,0000,0000,0000,,for better Ruby essentially. For my investment\Nof time and Dialogue: 0,1:04:13.74,1:04:15.100,Default,,0000,0000,0000,,language. But certainly, I mean I would like\Nto learn Scala Dialogue: 0,1:04:15.100,1:04:17.50,Default,,0000,0000,0000,,and stuff that like, something. Dialogue: 0,1:04:17.50,1:04:20.71,Default,,0000,0000,0000,,B.G.: So for me learning a new programming\Nlanguage is Dialogue: 0,1:04:20.71,1:04:24.11,Default,,0000,0000,0000,,more like a cognitive exercise to expand my\Nown thought Dialogue: 0,1:04:24.11,1:04:29.68,Default,,0000,0000,0000,,processes, not specifically to you know apply\Nin production. Dialogue: 0,1:04:29.68,1:04:33.20,Default,,0000,0000,0000,,So the new language that I will be learning\Nin 2014 is Factor, Dialogue: 0,1:04:33.20,1:04:35.37,Default,,0000,0000,0000,,and you should check it out. Dialogue: 0,1:04:35.37,1:04:39.06,Default,,0000,0000,0000,,C.F.: I was gonna say Factor. Dialogue: 0,1:04:39.06,1:04:41.11,Default,,0000,0000,0000,,We should not sit next to each other. We're\Ntoo similar. Dialogue: 0,1:04:41.11,1:04:44.23,Default,,0000,0000,0000,,H.K.: Why, but why, can you just like say\Nwhy exactly Factor? Dialogue: 0,1:04:44.23,1:04:48.78,Default,,0000,0000,0000,,C.F.: I would say Factor because it really\Nhurts to, Dialogue: 0,1:04:48.78,1:04:50.33,Default,,0000,0000,0000,,it hurts in a non-stupid way. Dialogue: 0,1:04:50.33,1:04:53.89,Default,,0000,0000,0000,,Like if you learn Befunge it hurts in a stupid\Nway. Dialogue: 0,1:04:53.89,1:04:57.37,Default,,0000,0000,0000,,Like there's no reason to learn Befunge except\Nfor fun. Dialogue: 0,1:04:57.37,1:05:00.73,Default,,0000,0000,0000,,Factor, though, there's something clearly\Nthere, right. Dialogue: 0,1:05:00.73,1:05:07.27,Default,,0000,0000,0000,,It's concatenative programming. It's a different\Nway of having to think. Dialogue: 0,1:05:07.27,1:05:10.23,Default,,0000,0000,0000,,And it's a different way that to me feels Dialogue: 0,1:05:10.23,1:05:15.47,Default,,0000,0000,0000,,like it's deeper than it is stupid. It, so,\Nactually Dialogue: 0,1:05:15.47,1:05:19.95,Default,,0000,0000,0000,,I wouldn't probably learn it now, but I almost\Nsaid that though. Dialogue: 0,1:05:19.95,1:05:21.44,Default,,0000,0000,0000,,It was on my list. Dialogue: 0,1:05:21.44,1:05:25.46,Default,,0000,0000,0000,,B.G.: I already know APL and a little bit\Nof J maybe. Dialogue: 0,1:05:25.46,1:05:28.68,Default,,0000,0000,0000,,But APL is, again another concatenative language, Dialogue: 0,1:05:28.68,1:05:30.26,Default,,0000,0000,0000,,which inspired Factor. Dialogue: 0,1:05:30.26,1:05:33.63,Default,,0000,0000,0000,,APL is some language which I can read but\Ncannot type, Dialogue: 0,1:05:33.63,1:05:36.27,Default,,0000,0000,0000,,because to type APL code you need a separate\Nkeyboard. Dialogue: 0,1:05:36.27,1:05:39.75,Default,,0000,0000,0000,,That's why I'm learning Factor this year. Dialogue: 0,1:05:39.75,1:05:41.08,Default,,0000,0000,0000,,H.K.: Yogi? Dialogue: 0,1:05:41.08,1:05:45.72,Default,,0000,0000,0000,,Y.K.: I don't know, Sanskrit, maybe. (01:04:41\N??) Dialogue: 0,1:05:45.72,1:05:48.88,Default,,0000,0000,0000,,But yeah, I think Go or Haskel. Dialogue: 0,1:05:48.88,1:05:53.09,Default,,0000,0000,0000,,I think there the most differences from what\NI already know, so. Dialogue: 0,1:05:53.09,1:05:57.89,Default,,0000,0000,0000,,H.K.: Fair enough. So I think a lot of first\N- Dialogue: 0,1:05:57.89,1:06:01.32,Default,,0000,0000,0000,,learn programming languages and then the Dave\NThomas Dialogue: 0,1:06:01.32,1:06:04.73,Default,,0000,0000,0000,,like his book Pragmatic Programmer recommends\Nlike learn Dialogue: 0,1:06:04.73,1:06:06.26,Default,,0000,0000,0000,,a programming language a year actually. Dialogue: 0,1:06:06.26,1:06:09.81,Default,,0000,0000,0000,,And so one of the things that I've been Dialogue: 0,1:06:09.81,1:06:13.15,Default,,0000,0000,0000,,wondering is like, how do you exactly like Dialogue: 0,1:06:13.15,1:06:15.21,Default,,0000,0000,0000,,go about learning a language? You cannot, Dialogue: 0,1:06:15.21,1:06:18.69,Default,,0000,0000,0000,,so like you cannot go to Flipkart and deploy Dialogue: 0,1:06:18.69,1:06:21.05,Default,,0000,0000,0000,,a production system in Hascal, that, I don't Dialogue: 0,1:06:21.05,1:06:24.58,Default,,0000,0000,0000,,know if you allow, but we talked about that\Nalready, actually. Dialogue: 0,1:06:24.58,1:06:26.76,Default,,0000,0000,0000,,So but like how do, how does a person like Dialogue: 0,1:06:26.76,1:06:28.39,Default,,0000,0000,0000,,when picking up a language go about Dialogue: 0,1:06:28.39,1:06:32.23,Default,,0000,0000,0000,,learning a programming language, and like\Nso- Dialogue: 0,1:06:32.23,1:06:35.34,Default,,0000,0000,0000,,V.K.: So I think I've probably got the - Dialogue: 0,1:06:35.34,1:06:39.06,Default,,0000,0000,0000,,so yeah like. I actually read the manual. Dialogue: 0,1:06:39.06,1:06:44.06,Default,,0000,0000,0000,,Yeah, I'm so boring. And so I just read the\Nmanual Dialogue: 0,1:06:44.06,1:06:47.40,Default,,0000,0000,0000,,just to get a flavor of what it's about and\Nwhat's possible. Dialogue: 0,1:06:47.40,1:06:50.56,Default,,0000,0000,0000,,Without going deeply into it it usually takes Dialogue: 0,1:06:50.56,1:06:51.62,Default,,0000,0000,0000,,like a few hours, because it's really superficial. Dialogue: 0,1:06:51.62,1:06:53.67,Default,,0000,0000,0000,,But once I get a sense of what the language\Nis about, Dialogue: 0,1:06:53.67,1:06:54.98,Default,,0000,0000,0000,,what the code constructs are, then do a second\Npass Dialogue: 0,1:06:54.98,1:06:55.55,Default,,0000,0000,0000,,to kind of just decide really what's it about Dialogue: 0,1:06:55.55,1:06:56.11,Default,,0000,0000,0000,,and then play around with some code. But as- Dialogue: 0,1:06:56.11,1:06:56.42,Default,,0000,0000,0000,,(01:07:03 - dead audio space 01:07:47) Dialogue: 0,1:06:56.42,1:06:57.05,Default,,0000,0000,0000,,C.F.: I would try to do some simple services Dialogue: 0,1:06:57.05,1:07:01.81,Default,,0000,0000,0000,,and you know stuff with Actors running in\Nthe background. Dialogue: 0,1:07:01.81,1:07:08.81,Default,,0000,0000,0000,,And whenever I saw something I didn't understand Dialogue: 0,1:07:29.61,1:07:36.61,Default,,0000,0000,0000,,I would just go look in the source code for\Nplay. Dialogue: 0,1:07:51.84,1:07:58.84,Default,,0000,0000,0000,,Then I would look at this crazy Scala type\Nstuff Dialogue: 0,1:07:58.90,1:08:00.74,Default,,0000,0000,0000,,and have to then read the manual for a few\Nhours Dialogue: 0,1:08:00.74,1:08:03.62,Default,,0000,0000,0000,,to figure out what's happening. But now I\Nwill never forget, Dialogue: 0,1:08:03.62,1:08:06.39,Default,,0000,0000,0000,,because I encountered it through a painful\Nsituation, Dialogue: 0,1:08:06.39,1:08:11.12,Default,,0000,0000,0000,,so I have like the emotional trigger to never\Nlet go of that knowledge. Dialogue: 0,1:08:11.12,1:08:12.91,Default,,0000,0000,0000,,B.G.: That's interesting, yeah. Dialogue: 0,1:08:12.91,1:08:16.66,Default,,0000,0000,0000,,I think, so every new language brings a different\Nway Dialogue: 0,1:08:16.66,1:08:20.42,Default,,0000,0000,0000,,of thinking to the table. So reading the manual Dialogue: 0,1:08:20.42,1:08:23.08,Default,,0000,0000,0000,,should be the first thing that you should\Ndo I think. Dialogue: 0,1:08:23.08,1:08:24.76,Default,,0000,0000,0000,,Maybe because, usually the manual is written Dialogue: 0,1:08:24.76,1:08:26.31,Default,,0000,0000,0000,,by the author of the language, Dialogue: 0,1:08:26.31,1:08:30.16,Default,,0000,0000,0000,,or at least some supporting material about\Nthe rational Dialogue: 0,1:08:30.16,1:08:32.37,Default,,0000,0000,0000,,or the ethos of language. Dialogue: 0,1:08:32.37,1:08:34.32,Default,,0000,0000,0000,,And once you have some superficial idea Dialogue: 0,1:08:34.32,1:08:37.08,Default,,0000,0000,0000,,what the language, start building something. Dialogue: 0,1:08:37.08,1:08:39.47,Default,,0000,0000,0000,,And at the same time look at the source code Dialogue: 0,1:08:39.47,1:08:41.65,Default,,0000,0000,0000,,of the language, or maybe the standard library Dialogue: 0,1:08:41.65,1:08:44.69,Default,,0000,0000,0000,,or some other products or tools that have\Nalready Dialogue: 0,1:08:44.69,1:08:45.96,Default,,0000,0000,0000,,been written in that language, Dialogue: 0,1:08:45.96,1:08:48.48,Default,,0000,0000,0000,,to get a sense of how things are detected, Dialogue: 0,1:08:48.48,1:08:50.09,Default,,0000,0000,0000,,what the idioms could be. Dialogue: 0,1:08:50.09,1:08:53.95,Default,,0000,0000,0000,,And basically read more code, and then write. Dialogue: 0,1:08:53.95,1:08:56.53,Default,,0000,0000,0000,,I think I've always benefited more from Dialogue: 0,1:08:56.53,1:08:59.36,Default,,0000,0000,0000,,reading a lot more code than writing. Dialogue: 0,1:08:59.36,1:09:02.55,Default,,0000,0000,0000,,V.K.: Yeah I think the problem comes first\Nin, Dialogue: 0,1:09:02.55,1:09:02.99,Default,,0000,0000,0000,,I don't choose a language, just more of a\Nproblem, Dialogue: 0,1:09:02.99,1:09:05.95,Default,,0000,0000,0000,,and I think this language could be better\Nto solve that problem, Dialogue: 0,1:09:05.95,1:09:08.18,Default,,0000,0000,0000,,and then just to find the quickest way to\Nsolve the problem Dialogue: 0,1:09:08.18,1:09:09.72,Default,,0000,0000,0000,,and learn the crux of the language. Dialogue: 0,1:09:09.72,1:09:14.43,Default,,0000,0000,0000,,And then go learn further by looking into\Nthe manual and other stuff. Dialogue: 0,1:09:14.43,1:09:17.59,Default,,0000,0000,0000,,H.K.: So Chad I was talking to you before Dialogue: 0,1:09:17.59,1:09:21.89,Default,,0000,0000,0000,,and like you said like don't just learn a\Nlanguage, Dialogue: 0,1:09:21.89,1:09:23.46,Default,,0000,0000,0000,,deploy something production like similar, Dialogue: 0,1:09:23.46,1:09:27.28,Default,,0000,0000,0000,,and don't learn a language in a year, like\Nspend time with it. Dialogue: 0,1:09:27.28,1:09:29.46,Default,,0000,0000,0000,,Build something, solve a hard problem, Dialogue: 0,1:09:29.46,1:09:31.99,Default,,0000,0000,0000,,build something complicated, how do you say- Dialogue: 0,1:09:31.99,1:09:35.26,Default,,0000,0000,0000,,C.F.: Well yeah what I was telling you about\Nis Dave Thomas, Dialogue: 0,1:09:35.26,1:09:37.99,Default,,0000,0000,0000,,who is one of the authors of Pragmatic Programmer Dialogue: 0,1:09:37.99,1:09:41.41,Default,,0000,0000,0000,,who coined this language of the year idea, Dialogue: 0,1:09:41.41,1:09:44.57,Default,,0000,0000,0000,,he spoke at RubyConf 2010 and he said that\Nhe had Dialogue: 0,1:09:44.57,1:09:48.07,Default,,0000,0000,0000,,revised his thoughts on what the challenge\Nshould be. Dialogue: 0,1:09:48.07,1:09:49.91,Default,,0000,0000,0000,,Instead of just learning a language every\Nyear, Dialogue: 0,1:09:49.91,1:09:53.24,Default,,0000,0000,0000,,I think he has the same problem I do, he can't\Nretain it. Dialogue: 0,1:09:53.24,1:09:56.34,Default,,0000,0000,0000,,He challenged everyone to learn a language\Nand deploy it Dialogue: 0,1:09:56.34,1:09:58.76,Default,,0000,0000,0000,,to production every year. Dialogue: 0,1:09:58.76,1:10:02.36,Default,,0000,0000,0000,,Because to him again it's the same thing I\Njust described for myself, Dialogue: 0,1:10:02.36,1:10:05.67,Default,,0000,0000,0000,,that he personally can't hold on to the knowledge Dialogue: 0,1:10:05.67,1:10:08.40,Default,,0000,0000,0000,,unless he experiences the real pain Dialogue: 0,1:10:08.40,1:10:10.57,Default,,0000,0000,0000,,of putting something into practice. Dialogue: 0,1:10:10.57,1:10:11.70,Default,,0000,0000,0000,,V.K.: Absolutely. Dialogue: 0,1:10:11.70,1:10:15.28,Default,,0000,0000,0000,,H.K.: So the pretty much like, Dialogue: 0,1:10:15.28,1:10:17.55,Default,,0000,0000,0000,,you learn programming languages like a lot\Nof persons, Dialogue: 0,1:10:17.55,1:10:21.30,Default,,0000,0000,0000,,but really our day jobs still requires to\Nprogramm in Ruby Dialogue: 0,1:10:21.30,1:10:25.17,Default,,0000,0000,0000,,or Java or whatever, so, one of the key things\Nlike, Dialogue: 0,1:10:25.17,1:10:28.08,Default,,0000,0000,0000,,you write Lisp, you become a better Java programmer. Dialogue: 0,1:10:28.08,1:10:30.66,Default,,0000,0000,0000,,That's the wisdom so, like, how do you exactly\Ngo Dialogue: 0,1:10:30.66,1:10:32.37,Default,,0000,0000,0000,,about adopting features, you know like, for\Nexample, Dialogue: 0,1:10:32.37,1:10:37.93,Default,,0000,0000,0000,,like Closure or Scala or Haskel or Go, and\Nyou know Dialogue: 0,1:10:37.93,1:10:41.79,Default,,0000,0000,0000,,like the language the you program in day to\Nday, Dialogue: 0,1:10:41.79,1:10:44.33,Default,,0000,0000,0000,,maybe for the dayjob. So like, Dialogue: 0,1:10:44.33,1:10:45.25,Default,,0000,0000,0000,,B.G.: How do you adopt a new language? Dialogue: 0,1:10:45.25,1:10:46.63,Default,,0000,0000,0000,,H.K.: How do you adopt features? Dialogue: 0,1:10:46.63,1:10:47.26,Default,,0000,0000,0000,,B.G.: Ideas. Dialogue: 0,1:10:47.26,1:10:48.20,Default,,0000,0000,0000,,H.K.: Ideas, yeah. Dialogue: 0,1:10:48.20,1:10:51.01,Default,,0000,0000,0000,,B.G.: So, as I said, every language has a\Ndifferent Dialogue: 0,1:10:51.01,1:10:55.72,Default,,0000,0000,0000,,way of you know solving problems. So for example Dialogue: 0,1:10:55.72,1:10:57.11,Default,,0000,0000,0000,,if I take the example of Closure, in Closure\Nthere Dialogue: 0,1:10:57.11,1:11:01.30,Default,,0000,0000,0000,,is a lot of emphasis on data. OK, you don't\Nhide data Dialogue: 0,1:11:01.30,1:11:04.09,Default,,0000,0000,0000,,inside objects and stuff. Dialogue: 0,1:11:04.09,1:11:06.84,Default,,0000,0000,0000,,You basically treat everything as first class\Ndata structures Dialogue: 0,1:11:06.84,1:11:09.75,Default,,0000,0000,0000,,and then manipulate the data using standard\Nlibrary Dialogue: 0,1:11:09.75,1:11:12.53,Default,,0000,0000,0000,,functions and spit it out into a different\Nformat Dialogue: 0,1:11:12.53,1:11:16.28,Default,,0000,0000,0000,,if you need to. So that, some design or architectural Dialogue: 0,1:11:16.28,1:11:18.71,Default,,0000,0000,0000,,thinking that can be applied to any language,\Nright. Dialogue: 0,1:11:18.71,1:11:21.41,Default,,0000,0000,0000,,I know people who are actual provisional Dialogue: 0,1:11:21.41,1:11:23.43,Default,,0000,0000,0000,,Python programmers, who learned Closure, Dialogue: 0,1:11:23.43,1:11:25.91,Default,,0000,0000,0000,,did some real programming in Closure, Dialogue: 0,1:11:25.91,1:11:28.19,Default,,0000,0000,0000,,and went back to doing Python Dialogue: 0,1:11:28.19,1:11:30.93,Default,,0000,0000,0000,,and came back to me and told me that my Python\Ncode Dialogue: 0,1:11:30.93,1:11:33.32,Default,,0000,0000,0000,,is so much better now, right. Dialogue: 0,1:11:33.32,1:11:34.76,Default,,0000,0000,0000,,So I think it's not just about Closure Dialogue: 0,1:11:34.76,1:11:39.77,Default,,0000,0000,0000,,or any specific language, but the idea is\Nthat, Dialogue: 0,1:11:39.77,1:11:42.36,Default,,0000,0000,0000,,get a taste of the language, Dialogue: 0,1:11:42.36,1:11:44.55,Default,,0000,0000,0000,,see how they think about solving problems, Dialogue: 0,1:11:44.55,1:11:46.08,Default,,0000,0000,0000,,and you know, you may not be able Dialogue: 0,1:11:46.08,1:11:47.83,Default,,0000,0000,0000,,to transport all the ideas, Dialogue: 0,1:11:47.83,1:11:49.14,Default,,0000,0000,0000,,like if you like channels in Dialogue: 0,1:11:49.14,1:11:51.51,Default,,0000,0000,0000,,Go you cannot build a channel-like thing in\NJava, Dialogue: 0,1:11:51.51,1:11:55.36,Default,,0000,0000,0000,,for example. It would be very hard for you\Nto do it. Dialogue: 0,1:11:55.36,1:11:58.04,Default,,0000,0000,0000,,But at least if you have an appreciation for\Nit, Dialogue: 0,1:11:58.04,1:11:59.08,Default,,0000,0000,0000,,maybe who knows tomorrow you might Dialogue: 0,1:11:59.08,1:12:03.20,Default,,0000,0000,0000,,be able to use a third party library to use\Nit. Dialogue: 0,1:12:03.20,1:12:06.95,Default,,0000,0000,0000,,C.F.: There's actually a problem that can\Nhappen, Dialogue: 0,1:12:06.95,1:12:08.84,Default,,0000,0000,0000,,though. So you can take good things, Dialogue: 0,1:12:08.84,1:12:12.78,Default,,0000,0000,0000,,like the data orientation or the ideas of\Nimmutability Dialogue: 0,1:12:12.78,1:12:16.89,Default,,0000,0000,0000,,by default in Closure and then just try to\Nmake your Dialogue: 0,1:12:16.89,1:12:20.31,Default,,0000,0000,0000,,Ruby code be like that, because you understand\Nthe benefits. Dialogue: 0,1:12:20.31,1:12:23.43,Default,,0000,0000,0000,,Or you could do stuff like try Dialogue: 0,1:12:23.43,1:12:26.04,Default,,0000,0000,0000,,(01:12:23 - dead audio space - 01:12:36) Dialogue: 0,1:12:26.04,1:12:30.20,Default,,0000,0000,0000,,it's even possible to then simulate the features Dialogue: 0,1:12:30.20,1:12:34.89,Default,,0000,0000,0000,,of one of these languages that you're learning\Nfrom, Dialogue: 0,1:12:34.89,1:12:41.15,Default,,0000,0000,0000,,but you emulate them in an environment that's\Nnot friendly to them, Dialogue: 0,1:12:41.15,1:12:47.52,Default,,0000,0000,0000,,and it's a bad idea. So I would say don't\Ngo too crazy trying Dialogue: 0,1:12:47.52,1:12:50.53,Default,,0000,0000,0000,,to make Ruby be functional more than it is, Dialogue: 0,1:12:50.53,1:12:52.93,Default,,0000,0000,0000,,or to be Actor-oriented or whatever. Dialogue: 0,1:12:52.93,1:12:57.13,Default,,0000,0000,0000,,B.G.: There will always be incidents (01:12:53) Dialogue: 0,1:12:57.13,1:12:58.93,Default,,0000,0000,0000,,in practice, right. Dialogue: 0,1:12:58.93,1:13:03.33,Default,,0000,0000,0000,,You'll figure it out if you try to apply it. Dialogue: 0,1:13:03.33,1:13:07.18,Default,,0000,0000,0000,,Y.K.: I'm gonna agree with Chad, so. Dialogue: 0,1:13:07.18,1:13:12.12,Default,,0000,0000,0000,,V.K. Yeah, OK, I'm not into this functional\Nside Dialogue: 0,1:13:12.12,1:13:15.88,Default,,0000,0000,0000,,or you know the Lisp side of Closure set of\Nthings yet. Dialogue: 0,1:13:15.88,1:13:18.19,Default,,0000,0000,0000,,So my experience is essentially trying to\Nplay more Dialogue: 0,1:13:18.19,1:13:20.52,Default,,0000,0000,0000,,ideas from Ruby into Java, and there was a- Dialogue: 0,1:13:20.52,1:13:22.87,Default,,0000,0000,0000,,you know probably Java at level that we just\Ntalked about. Dialogue: 0,1:13:22.87,1:13:25.71,Default,,0000,0000,0000,,It's such a, what is it called, a restrictive\Nlanguage. Dialogue: 0,1:13:25.71,1:13:29.07,Default,,0000,0000,0000,,There is a lot that I could actually learn\Nand apply to Dialogue: 0,1:13:29.07,1:13:31.00,Default,,0000,0000,0000,,Java and Ruby which was really exciting. Dialogue: 0,1:13:31.00,1:13:31.96,Default,,0000,0000,0000,,There were libraries, Dialogue: 0,1:13:31.96,1:13:35.07,Default,,0000,0000,0000,,I think there were coming up for like Dialogue: 0,1:13:35.07,1:13:37.36,Default,,0000,0000,0000,,calling anonymous functions or proc like things Dialogue: 0,1:13:37.36,1:13:38.90,Default,,0000,0000,0000,,that I could actually use them. Dialogue: 0,1:13:38.90,1:13:41.42,Default,,0000,0000,0000,,So those are, it was not really really tangible\Nat Dialogue: 0,1:13:41.42,1:13:44.84,Default,,0000,0000,0000,,specific example I could give. My Java programming\Nextensively improved. Dialogue: 0,1:13:44.84,1:13:49.36,Default,,0000,0000,0000,,Or readability of the code improved by having\Nwritten Ruby code. Dialogue: 0,1:13:49.36,1:13:51.96,Default,,0000,0000,0000,,Some of it will actually happen naturally\NI believe. Dialogue: 0,1:13:51.96,1:13:54.12,Default,,0000,0000,0000,,B.G.: I don't think that - Dialogue: 0,1:13:54.12,1:13:56.34,Default,,0000,0000,0000,,For example I was doing a lot of Python before Dialogue: 0,1:13:56.34,1:13:59.71,Default,,0000,0000,0000,,I started doing some real Lisp programming. Dialogue: 0,1:13:59.71,1:14:03.05,Default,,0000,0000,0000,,Python always had the map and filter and reduce\Nfunctions. Dialogue: 0,1:14:03.05,1:14:05.40,Default,,0000,0000,0000,,I was never able to appreciate those functions\Nwhen Dialogue: 0,1:14:05.40,1:14:08.32,Default,,0000,0000,0000,,I was just a Python programmer, OK. For example, Dialogue: 0,1:14:08.32,1:14:11.63,Default,,0000,0000,0000,,Closure has something called protocols, OK. Dialogue: 0,1:14:11.63,1:14:15.55,Default,,0000,0000,0000,,How many people here have heard about refinements\Nin Ruby 2.0. Dialogue: 0,1:14:15.55,1:14:17.39,Default,,0000,0000,0000,,C.F.: Refinements, yeah. Dialogue: 0,1:14:17.39,1:14:19.55,Default,,0000,0000,0000,,B.G.: Yeah. It's a new feature. Dialogue: 0,1:14:19.55,1:14:22.58,Default,,0000,0000,0000,,So, see, minority. OK, it's a really good\Nfeature, Dialogue: 0,1:14:22.58,1:14:25.90,Default,,0000,0000,0000,,and it lets you do code monkey patching but\Nrestricted Dialogue: 0,1:14:25.90,1:14:29.37,Default,,0000,0000,0000,,to a specific module, OK. So I think that, Dialogue: 0,1:14:29.37,1:14:31.93,Default,,0000,0000,0000,,Ruby guys don't, are often are don't Dialogue: 0,1:14:31.93,1:14:36.64,Default,,0000,0000,0000,,understand benefits then it's kind of like\Na shame, right. Dialogue: 0,1:14:36.64,1:14:39.01,Default,,0000,0000,0000,,Y.K.: Yeah but that's a point right, Dialogue: 0,1:14:39.01,1:14:40.82,Default,,0000,0000,0000,,that's something which has to happen at the\Nlanguage level. Dialogue: 0,1:14:40.82,1:14:44.65,Default,,0000,0000,0000,,Like as a application developer who's not\Nworking on the language itself, Dialogue: 0,1:14:44.65,1:14:48.54,Default,,0000,0000,0000,,adoption of features from other languages\Nwill run into bottle necks. Dialogue: 0,1:14:48.54,1:14:52.06,Default,,0000,0000,0000,,So that's definitely one area where, for example\Nin the Java world, right, Dialogue: 0,1:14:52.06,1:14:55.50,Default,,0000,0000,0000,,when you move back from a lot of the ex-Ruby\Nprogrammers Dialogue: 0,1:14:55.50,1:14:58.49,Default,,0000,0000,0000,,move back to Java, and they created some beautiful\Nlibraries. Dialogue: 0,1:14:58.49,1:15:02.52,Default,,0000,0000,0000,,Like for example I know an ex-thoughtworker\Nwho's done Dialogue: 0,1:15:02.52,1:15:05.60,Default,,0000,0000,0000,,a library called (01:15:03), which allows\Nyou to kind of mimic Dialogue: 0,1:15:05.60,1:15:07.31,Default,,0000,0000,0000,,Closures in Java, and it works through Dialogue: 0,1:15:07.31,1:15:12.75,Default,,0000,0000,0000,,actually hooking up a Java agent at run time. Dialogue: 0,1:15:12.75,1:15:14.68,Default,,0000,0000,0000,,So the point is it's a beautiful experiment, Dialogue: 0,1:15:14.68,1:15:17.37,Default,,0000,0000,0000,,but you can't really use that in production Dialogue: 0,1:15:17.37,1:15:18.58,Default,,0000,0000,0000,,because your IDs not going to recognize it, Dialogue: 0,1:15:18.58,1:15:21.28,Default,,0000,0000,0000,,you know simple things like that which might Dialogue: 0,1:15:21.28,1:15:23.30,Default,,0000,0000,0000,,seem like trivial but they actually hurt,\Nbecause Dialogue: 0,1:15:23.30,1:15:25.86,Default,,0000,0000,0000,,another the code syntax highlighting is kind\Nof Dialogue: 0,1:15:25.86,1:15:28.20,Default,,0000,0000,0000,,gone for a toss. The debug obviously doesn't\Nwork, Dialogue: 0,1:15:28.20,1:15:28.31,Default,,0000,0000,0000,,you can't- Dialogue: 0,1:15:28.31,1:15:33.72,Default,,0000,0000,0000,,So you got to hook up the agent while running\Nthe app. Dialogue: 0,1:15:33.72,1:15:38.90,Default,,0000,0000,0000,,So it becomes tricky, so I think a lot of\Nthe language Dialogue: 0,1:15:38.90,1:15:41.72,Default,,0000,0000,0000,,features which get adopted do get a lot of\Nthose frameworks. Dialogue: 0,1:15:41.72,1:15:44.17,Default,,0000,0000,0000,,For example, Actor systems, even though we\Ndon't have Dialogue: 0,1:15:44.17,1:15:49.00,Default,,0000,0000,0000,,it in Java, kind of analogies of that have\Nbeen funnily Dialogue: 0,1:15:49.00,1:15:52.41,Default,,0000,0000,0000,,enough systems like Mule (01:15:40) right,\Nwhich is again Dialogue: 0,1:15:52.41,1:15:55.41,Default,,0000,0000,0000,,enterprising and boring, but essentially it\Nsolves Dialogue: 0,1:15:55.41,1:15:56.95,Default,,0000,0000,0000,,the same problem. Like not at the language\Nlevel but Dialogue: 0,1:15:56.95,1:16:00.19,Default,,0000,0000,0000,,it allows you to coordinate independent Actors Dialogue: 0,1:16:00.19,1:16:04.37,Default,,0000,0000,0000,,and construct bulges (01:16:01) of flows which\Nkind Dialogue: 0,1:16:04.37,1:16:06.87,Default,,0000,0000,0000,,of do something productive and allow you to\Nscale Dialogue: 0,1:16:06.87,1:16:08.27,Default,,0000,0000,0000,,out in a very simple way, right. Dialogue: 0,1:16:08.27,1:16:11.55,Default,,0000,0000,0000,,So frameworks end up kind of taking their\Nplace in a certain way. Dialogue: 0,1:16:11.55,1:16:14.20,Default,,0000,0000,0000,,I think it's difficult to bring it down to\Na language very well. Dialogue: 0,1:16:14.20,1:16:16.58,Default,,0000,0000,0000,,V.K.: That kind of introduced like using Dialogue: 0,1:16:16.58,1:16:18.10,Default,,0000,0000,0000,,play framework in Java, right. Dialogue: 0,1:16:18.10,1:16:20.14,Default,,0000,0000,0000,,It actually brings a lot of Rails goodness Dialogue: 0,1:16:20.14,1:16:23.09,Default,,0000,0000,0000,,and Rails inspiration into Java, so you don't, Dialogue: 0,1:16:23.09,1:16:24.50,Default,,0000,0000,0000,,it's not necessarily about the language weights. Dialogue: 0,1:16:24.50,1:16:27.41,Default,,0000,0000,0000,,It's also things like dimension or configuration, Dialogue: 0,1:16:27.41,1:16:29.44,Default,,0000,0000,0000,,which can be learned and applied into other\Nlanguages. Dialogue: 0,1:16:29.44,1:16:31.97,Default,,0000,0000,0000,,So just ideas are behind a specific paradigm, Dialogue: 0,1:16:31.97,1:16:34.75,Default,,0000,0000,0000,,the simplicity or the philosophy behind it\Ncan Dialogue: 0,1:16:34.75,1:16:37.02,Default,,0000,0000,0000,,be applied into other languages, like Java\Nfrom Ruby. Dialogue: 0,1:16:37.02,1:16:39.89,Default,,0000,0000,0000,,So I think the framework side of it plays\NI think a big role. Dialogue: 0,1:16:39.89,1:16:41.30,Default,,0000,0000,0000,,Y.K.: Yeah that's a great point because there's Dialogue: 0,1:16:41.30,1:16:46.23,Default,,0000,0000,0000,,funnily enough right like a framework like\NRails Dialogue: 0,1:16:46.23,1:16:48.99,Default,,0000,0000,0000,,or Sinatra was invented in Java. Why is that? Dialogue: 0,1:16:48.99,1:16:52.03,Default,,0000,0000,0000,,Because the thought process that's behind\NJava Dialogue: 0,1:16:52.03,1:16:54.03,Default,,0000,0000,0000,,is just not tooled to the kind of thinking\Nand Dialogue: 0,1:16:54.03,1:16:55.75,Default,,0000,0000,0000,,such lightweight simplistic services. Dialogue: 0,1:16:55.75,1:16:59.24,Default,,0000,0000,0000,,And it only took somebody to kind of look\Nat Ruby, Dialogue: 0,1:16:59.24,1:17:01.16,Default,,0000,0000,0000,,see its simplicity and be able to kind of\Nbuild Dialogue: 0,1:17:01.16,1:17:02.35,Default,,0000,0000,0000,,something so simple as Sinatra, like it's\Nbeautiful. Dialogue: 0,1:17:02.35,1:17:04.25,Default,,0000,0000,0000,,And now that thought process has come out. Dialogue: 0,1:17:04.25,1:17:05.90,Default,,0000,0000,0000,,So yeah play's a great example actually. Dialogue: 0,1:17:05.90,1:17:07.84,Default,,0000,0000,0000,,V.K.: Yeah I think there's two things you\Nknow, Dialogue: 0,1:17:07.84,1:17:10.93,Default,,0000,0000,0000,,the discussion kind of weighed towards more\Ntowards Dialogue: 0,1:17:10.93,1:17:14.47,Default,,0000,0000,0000,,the paradigms, more. But I think there is\Nan Dialogue: 0,1:17:14.47,1:17:16.28,Default,,0000,0000,0000,,things like simplicity, conventional configuration Dialogue: 0,1:17:16.28,1:17:20.41,Default,,0000,0000,0000,,or concepts, which is another side that languages\Nhave, Dialogue: 0,1:17:20.41,1:17:23.37,Default,,0000,0000,0000,,which are not specific to how to make parallelism\Nbetter Dialogue: 0,1:17:23.37,1:17:25.32,Default,,0000,0000,0000,,which are not specific to how to do functional\Nprogramming, Dialogue: 0,1:17:25.32,1:17:27.34,Default,,0000,0000,0000,,but still something which was not done before\Nor Dialogue: 0,1:17:27.34,1:17:29.78,Default,,0000,0000,0000,,easy enough in your language, which you could\Nhave applied. Dialogue: 0,1:17:29.78,1:17:31.21,Default,,0000,0000,0000,,You know the language is easier. Dialogue: 0,1:17:31.21,1:17:32.64,Default,,0000,0000,0000,,But those are not new libraries Dialogue: 0,1:17:32.64,1:17:34.57,Default,,0000,0000,0000,,or nothing to do with really specific functions. Dialogue: 0,1:17:34.57,1:17:36.97,Default,,0000,0000,0000,,But you could get better in other languages\Nby Dialogue: 0,1:17:36.97,1:17:39.18,Default,,0000,0000,0000,,looking at this other philosophy behind Dialogue: 0,1:17:39.18,1:17:41.70,Default,,0000,0000,0000,,the language just beyond a specific paradigm Dialogue: 0,1:17:41.70,1:17:43.12,Default,,0000,0000,0000,,of the strength of the language. Dialogue: 0,1:17:43.12,1:17:47.47,Default,,0000,0000,0000,,H.K.: So we are about to close the panel discussion. Dialogue: 0,1:17:47.47,1:17:50.98,Default,,0000,0000,0000,,Any questions? We have time for questions. Dialogue: 0,1:17:50.98,1:17:51.66,Default,,0000,0000,0000,,Actually. Dialogue: 0,1:17:51.66,1:17:55.18,Default,,0000,0000,0000,,C.F.: Or how about you just raise your hand Dialogue: 0,1:17:55.18,1:17:56.20,Default,,0000,0000,0000,,if you want to ask a question Dialogue: 0,1:17:56.20,1:17:59.23,Default,,0000,0000,0000,,and otherwise we'll all get tea. You have\Na question. Dialogue: 0,1:17:59.23,1:18:04.74,Default,,0000,0000,0000,,B.G.: Or we can just move the discussion to\Nthe break room. Dialogue: 0,1:18:04.74,1:18:10.34,Default,,0000,0000,0000,,We could do that. So let's just you know - OK. Dialogue: 0,1:18:10.34,1:18:17.34,Default,,0000,0000,0000,,QUERANT: So I worked in different programming\Nlanguages. Dialogue: 0,1:18:17.80,1:18:22.87,Default,,0000,0000,0000,,So about four to five, so I think programming\Nlanguages Dialogue: 0,1:18:22.87,1:18:26.47,Default,,0000,0000,0000,,rose to such heights because either because\Nthe programming Dialogue: 0,1:18:26.47,1:18:29.17,Default,,0000,0000,0000,,language itself or through its supporting\Nlibraries. Dialogue: 0,1:18:29.17,1:18:32.54,Default,,0000,0000,0000,,For example, Ruby was not in so much mainstream\Nuntil Dialogue: 0,1:18:32.54,1:18:38.61,Default,,0000,0000,0000,,Rails came into existence. And Python for\Nscientific calculation. Dialogue: 0,1:18:38.61,1:18:41.95,Default,,0000,0000,0000,,C for internal system, you know Linux kind\Nof stuff. Dialogue: 0,1:18:41.95,1:18:42.97,Default,,0000,0000,0000,,C++ for games and other stuff. Dialogue: 0,1:18:42.97,1:18:45.85,Default,,0000,0000,0000,,So what all, I mean do these programming languages Dialogue: 0,1:18:45.85,1:18:50.37,Default,,0000,0000,0000,,have and uh, example like Scala, Closure,\NGo, Erlang. Dialogue: 0,1:18:50.37,1:18:53.00,Default,,0000,0000,0000,,So these are upcoming, like dot also. Dialogue: 0,1:18:53.00,1:18:54.86,Default,,0000,0000,0000,,So what do these programming languages have Dialogue: 0,1:18:54.86,1:18:57.38,Default,,0000,0000,0000,,that they'll come on call. I mean what do\Nthese libraries, Dialogue: 0,1:18:57.38,1:19:00.42,Default,,0000,0000,0000,,I mean what are the bigger libraries that\Nthey have, Dialogue: 0,1:19:00.42,1:19:03.17,Default,,0000,0000,0000,,so that people like me can use them for certain\Npurpose. Dialogue: 0,1:19:03.17,1:19:06.48,Default,,0000,0000,0000,,So what all they are useful for? Dialogue: 0,1:19:06.48,1:19:08.76,Default,,0000,0000,0000,,C.F.: That'll take awhile. Dialogue: 0,1:19:08.76,1:19:11.34,Default,,0000,0000,0000,,B.G.: That's a very long-winded question. Dialogue: 0,1:19:11.34,1:19:13.91,Default,,0000,0000,0000,,I'll very quickly answer that. Dialogue: 0,1:19:13.91,1:19:16.91,Default,,0000,0000,0000,,Every language probably has a killer app,\Nright, Dialogue: 0,1:19:16.91,1:19:20.06,Default,,0000,0000,0000,,to champion it or maybe make it famous or\Npopular. Dialogue: 0,1:19:20.06,1:19:25.91,Default,,0000,0000,0000,,Not every, not all languages have one specific\Nkiller app, Dialogue: 0,1:19:25.91,1:19:28.32,Default,,0000,0000,0000,,for example, while, what would you say the Dialogue: 0,1:19:28.32,1:19:30.49,Default,,0000,0000,0000,,killer app for JavaScript is, right? Dialogue: 0,1:19:30.49,1:19:31.97,Default,,0000,0000,0000,,Or what about Objective C? Dialogue: 0,1:19:31.97,1:19:33.95,Default,,0000,0000,0000,,Right, just that you don't have any other\Nchoice Dialogue: 0,1:19:33.95,1:19:37.40,Default,,0000,0000,0000,,in those cases, right. If you want to program\Nfor the browser, Dialogue: 0,1:19:37.40,1:19:38.89,Default,,0000,0000,0000,,JavaScript is your only choice, Dialogue: 0,1:19:38.89,1:19:42.12,Default,,0000,0000,0000,,Objective C if you are doing Apple programming,\Nright. Dialogue: 0,1:19:42.12,1:19:45.03,Default,,0000,0000,0000,,So yeah, I mean, every once in awhile there Dialogue: 0,1:19:45.03,1:19:47.93,Default,,0000,0000,0000,,are projects or libraries or products which Dialogue: 0,1:19:47.93,1:19:49.48,Default,,0000,0000,0000,,do come and make something very famous. Dialogue: 0,1:19:49.48,1:19:54.51,Default,,0000,0000,0000,,But it may not be true for everything. Dialogue: 0,1:20:01.40,1:20:02.74,Default,,0000,0000,0000,,H.K.: If anybody has any other questions Dialogue: 0,1:20:02.74,1:20:06.00,Default,,0000,0000,0000,,then I can (drowned out by applause - 01:20:05) Dialogue: 0,1:20:06.78,1:20:08.74,Default,,0000,0000,0000,,Thank you.