PodSearch

Hypercritical

15: The Bridges of Siracusa County

 

00:00:00   [Music] [TS]

00:00:02   the name of this show is hypercritical [TS]

00:00:04   it's a weekly talkshow ruminating on [TS]

00:00:07   exactly what is wrong in the world of [TS]

00:00:08   Apple and related technologies and [TS]

00:00:10   businesses john siracusa and i i'm dan [TS]

00:00:13   benjamin we'll talk about how things go [TS]

00:00:17   well and sometimes don't go so well for [TS]

00:00:19   companies like Apple right as we talked [TS]

00:00:21   about here it's not just us [TS]

00:00:23   yeah and the fact is John nothing is so [TS]

00:00:26   perfect that you can't complain about it [TS]

00:00:28   that's what we say that's true and we [TS]

00:00:30   would like to thank the Intuit small [TS]

00:00:32   business blog and their mobile app as [TS]

00:00:35   well as campaign monitors world view for [TS]

00:00:38   making the show possible will tell you [TS]

00:00:39   more about those as the show progresses [TS]

00:00:41   so what are we complaining about today [TS]

00:00:42   first day of you right you get a lot of [TS]

00:00:45   you you know the whole show is a few not [TS]

00:00:48   too much today I turned a lot because I [TS]

00:00:50   know we have a lot of stuff to get do I [TS]

00:00:51   mean you're trying to keep the show [TS]

00:00:52   short now right got had to had some [TS]

00:00:55   requests that the show be Whedon that [TS]

00:00:58   not not cutting it short that's not the [TS]

00:01:00   right thing but just make keeping track [TS]

00:01:02   of time a person who asked that didn't [TS]

00:01:04   even mention my show so he probably [TS]

00:01:06   doesn't even listen I don't think he's [TS]

00:01:08   aware of your show he probably looked at [TS]

00:01:09   the runtime of it and said I can't [TS]

00:01:11   listen it might have been short not that [TS]

00:01:13   long not doing to our things I can use [TS]

00:01:15   bond tacked on to the end or anything [TS]

00:01:16   yeah I think you got of all the shows I [TS]

00:01:19   think you are probably the most time [TS]

00:01:20   sensitive there you go so I feel no [TS]

00:01:24   compunction to try to cut it short all [TS]

00:01:26   right don't cut it normal any shorter [TS]

00:01:28   that I normally do don't do anything [TS]

00:01:29   else don't don't change a thing okay so [TS]

00:01:32   follow up time so we missed last week [TS]

00:01:35   because I was on vacation you were on [TS]

00:01:37   vacation we tried to schedule it before [TS]

00:01:39   you had you had told me six or seven [TS]

00:01:42   weeks earlier that you were going to be [TS]

00:01:44   on vacation I put it on the calendar and [TS]

00:01:46   then I didn't I didn't remember or [TS]

00:01:48   something so it's it was not your fault [TS]

00:01:49   that we didn't have a show it's probably [TS]

00:01:50   mine but but the fact was you were not [TS]

00:01:53   available at the regular time and I [TS]

00:01:56   didn't realize that we had changed it so [TS]

00:01:59   anyway so I'm going back to shows for [TS]

00:02:01   some follow up stuff are two weeks but [TS]

00:02:03   it's just one show so last time what [TS]

00:02:07   we're talking about we're talking about [TS]

00:02:07   objective-c and stuff like that and [TS]

00:02:09   high-level language is low-level [TS]

00:02:12   languages yeah [TS]

00:02:13   I thought it was a shame that some of [TS]

00:02:14   that stuff there was at least two or [TS]

00:02:16   three good points that bled over into [TS]

00:02:18   the after dark so I put in the show [TS]

00:02:20   notes like this week the link to the [TS]

00:02:22   after dark most of which is just typical [TS]

00:02:23   after dark stuff but there are one or [TS]

00:02:26   two good points in there about the [TS]

00:02:28   objective-c stuff that I wish I had [TS]

00:02:30   gotten into the regular show huh [TS]

00:02:32   mostly having to do with how the people [TS]

00:02:35   at Apple how the employees at Apple are [TS]

00:02:37   probably not properly motivated to [TS]

00:02:40   resolve the situation talked about in [TS]

00:02:42   the previous show so I want to go into a [TS]

00:02:44   now for time purposes but if you want a [TS]

00:02:45   little bit more on that topic I suggest [TS]

00:02:47   checking out the after dark which is [TS]

00:02:49   that that's super hidden link but if you [TS]

00:02:50   go to the show notes for the show you [TS]

00:02:51   will find the link to it and I would [TS]

00:02:53   also suggest subscribing to that because [TS]

00:02:55   it's usually pretty funny it's not just [TS]

00:02:57   all hypercritical after dark it's all [TS]

00:02:58   sorts of shows a lot of cursing [TS]

00:03:01   everybody who asks for cursing and [TS]

00:03:03   doesn't understand why we edit out the [TS]

00:03:05   profanity no holds barred there it's [TS]

00:03:09   marked as explicit it's not part of the [TS]

00:03:11   master feed it's like a little Easter [TS]

00:03:13   egg you gotta go find it it'll find it [TS]

00:03:16   so it's interesting that when I did the [TS]

00:03:19   original series on the the Copeland 2010 [TS]

00:03:23   stuff a whole bunch of articles like [TS]

00:03:26   many years ago and I got a lot of [TS]

00:03:28   responses eventually asking about Mac [TS]

00:03:31   Ruby mm-hmm and which I I should also [TS]

00:03:34   mention I erroneously referred to as [TS]

00:03:37   JRuby I said I knew what you meant you [TS]

00:03:39   knew what I meant and you were too [TS]

00:03:40   polite to correct me I clearly know the [TS]

00:03:42   difference I've used both I meant Mac [TS]

00:03:44   Ruby thanks for the thousands of emails [TS]

00:03:46   and Twitter comments about that I do [TS]

00:03:49   know the difference and thank you for [TS]

00:03:51   reminding me yeah so the Mac group [TS]

00:03:55   people emailed a lot this was many years [TS]

00:03:57   ago back when Mac Ruby was younger and [TS]

00:03:59   their email enthusiasm kind of tapered [TS]

00:04:02   off over time but then when I brought it [TS]

00:04:05   up on the show they came back and they [TS]

00:04:07   said hey what about Mac Ruby partly my [TS]

00:04:09   fault for forgetting to talk about Mac [TS]

00:04:12   Ruby because it is definitely we're [TS]

00:04:13   talking about a well a show I talked [TS]

00:04:14   about how bridges stink on you have a [TS]

00:04:18   bridge to an API that's written for one [TS]

00:04:21   language where you get to write to it in [TS]

00:04:22   another language and bridge connects the [TS]

00:04:24   two things together [TS]

00:04:26   and I said I described lots of things [TS]

00:04:28   that are bad about bridges and how you [TS]

00:04:30   don't get to use the the cool features [TS]

00:04:32   of the high-level language that you want [TS]

00:04:34   to use because you're too busy doing [TS]

00:04:35   things in terms of the lower-level [TS]

00:04:36   language right so the nigra people then [TS]

00:04:39   as now bring up the points that a lot of [TS]

00:04:42   things I was asking for Mac would be [TS]

00:04:43   deliver so there's links in the show [TS]

00:04:45   notes to Mac repeat you should check it [TS]

00:04:46   out but just some examples like you [TS]

00:04:49   don't have to deal with you know making [TS]

00:04:51   NS strings or whatever when you do in [TS]

00:04:53   cocoa programming and Mac Ruby because [TS]

00:04:55   the the bridge makes ruby strings into [TS]

00:04:58   bridged over to NS mutable strings and [TS]

00:05:00   the Ruby hashes are really NS mutable [TS]

00:05:03   dictionaries under the covers and the [TS]

00:05:04   Ruby objects are really Objective C [TS]

00:05:06   objects so you're not just using like [TS]

00:05:09   the skin of the language to call api's [TS]

00:05:11   in some other language they've taken a [TS]

00:05:13   lot of the native data structures and [TS]

00:05:17   features and interesting tidbits in Ruby [TS]

00:05:20   and found in Objective C equivalent and [TS]

00:05:22   mapped it to that hmm now and also this [TS]

00:05:29   is the other thing people like to bring [TS]

00:05:30   up is hey this is an Apple project like [TS]

00:05:32   Apple developers are working on it it's [TS]

00:05:36   the people you know it's not just some [TS]

00:05:38   random third party thing it's actually [TS]

00:05:39   under the auspices of Apple in some [TS]

00:05:41   fashion a lot of Apple's open-source [TS]

00:05:43   stuff it's hard to tell what is you know [TS]

00:05:47   just a project with some people at Apple [TS]

00:05:48   wanted to do and it bosses let them do [TS]

00:05:49   versus what is a strategic initiative [TS]

00:05:52   that's poor important for the entire [TS]

00:05:53   company and often a project will start [TS]

00:05:55   in one way and transition to the other [TS]

00:05:58   thing like LLVM probably started life as [TS]

00:06:01   let's just you know hire this guy and [TS]

00:06:03   check out this type of thing and then [TS]

00:06:04   there was a you know an effort to [TS]

00:06:06   convince the powers-that-be and [TS]

00:06:08   eventually the entire company that hey [TS]

00:06:10   we're going to transition our entire [TS]

00:06:11   compiler strategy to this new thing and [TS]

00:06:13   here's how we're going to do it and lo [TS]

00:06:14   and behold here we are today and we're [TS]

00:06:15   almost completely transitioned so Mac [TS]

00:06:17   Ruby could be like that someday but the [TS]

00:06:19   what I said about Mac Ruby many years [TS]

00:06:22   ago still holds today and that I still [TS]

00:06:25   don't think a bridge is the is the right [TS]

00:06:27   answer [TS]

00:06:28   cocoa is still designed for objective-c [TS]

00:06:30   and even if you're mapping you know your [TS]

00:06:32   types from the higher-level language to [TS]

00:06:34   low-level one you're still dealing with [TS]

00:06:36   you know an disputable strings under the [TS]

00:06:38   covers and [TS]

00:06:39   yeah no it's the API is made it's not a [TS]

00:06:43   ruby API if you look at the API you [TS]

00:06:44   would say well that reminds me of you [TS]

00:06:45   know Rails or some other API that's [TS]

00:06:48   idiomatic at like like the bills for the [TS]

00:06:51   Ruby language you look at it and say [TS]

00:06:53   well that that sure looks a lot like [TS]

00:06:54   objective-c to me in this all sorts of [TS]

00:06:57   api's but there's no reasonable way to [TS]

00:06:58   bridge you just have to call these [TS]

00:07:00   methods and with these name parameters [TS]

00:07:03   that look like a projective seeing like [TS]

00:07:04   man why do we need all this parameters [TS]

00:07:05   why am i passing in a value that's going [TS]

00:07:07   to be a read/write attribute that's [TS]

00:07:09   going to have the error written into it [TS]

00:07:10   and all sorts of stuff like that it's [TS]

00:07:12   sort of not the Ruby way but you still [TS]

00:07:14   have to write to those languages there's [TS]

00:07:17   the two layers of debugging problem or [TS]

00:07:18   anytime you have sort of a bridge [TS]

00:07:19   language you would like to debug it the [TS]

00:07:21   Ruby level but the API and you're [TS]

00:07:24   executing code is executing at the [TS]

00:07:26   objective-c level and so if you're using [TS]

00:07:27   gdb or LDB or something you're not [TS]

00:07:30   debugging Ruby you're debugging lower [TS]

00:07:32   level than that so then they have to [TS]

00:07:33   write a higher level of debugger but [TS]

00:07:36   sometimes you might want to look at the [TS]

00:07:37   lower level stuff so you have two layers [TS]

00:07:38   of debuggers to deal with and if your [TS]

00:07:41   bugs in the bridge that's like the worst [TS]

00:07:42   possible situation when there are bugs [TS]

00:07:43   in the bridge itself and you're trying [TS]

00:07:45   to debug with the problem is and there's [TS]

00:07:48   the fact that to write a reasonable [TS]

00:07:50   cocoa program you're not just writing to [TS]

00:07:52   cocoa you're also doing your core [TS]

00:07:53   graphics and core foundation and other [TS]

00:07:55   API is to really are lower level and you [TS]

00:07:58   can bridge them too but it's even bigger [TS]

00:07:59   mismatch between what Ruby expects and [TS]

00:08:01   what these you know native C API is like [TS]

00:08:05   sounding Objective C it's just plain C [TS]

00:08:08   and if you try to keep that paper over [TS]

00:08:11   that then the developers feel like [TS]

00:08:14   they're being kept away from the power [TS]

00:08:16   tools like oh I really want to use core [TS]

00:08:17   graphics to do some drawings here but [TS]

00:08:19   the Ruby language makes it discourages [TS]

00:08:22   me from reaching down to do that or [TS]

00:08:24   makes it more difficult and more [TS]

00:08:25   cumbersome or doesn't feel like I'm I'm [TS]

00:08:26   you know doing things the right way and [TS]

00:08:29   there's also the the non-native problem [TS]

00:08:32   you're like well I'm going to write a [TS]

00:08:33   cocoa application well are you going to [TS]

00:08:35   use like the native language for writing [TS]

00:08:37   cocoa applications Objective C or you [TS]

00:08:39   can use a bridge language because you [TS]

00:08:40   need a crutch sure because you're a [TS]

00:08:41   whimper because but you know it's at [TS]

00:08:43   this macho this macho thing where there [TS]

00:08:46   would be is divided between the [TS]

00:08:47   old-school people like I'm writing a [TS]

00:08:49   real native cocoa application and you're [TS]

00:08:51   not because you're using this other [TS]

00:08:52   thing [TS]

00:08:53   and with all that said it's like would [TS]

00:08:56   experienced objective-c developers see [TS]

00:08:59   enough reason to switch like this [TS]

00:09:00   obviously if you're the best objective-c [TS]

00:09:02   programs today are comfortable with [TS]

00:09:04   Objective C so there has to be something [TS]

00:09:07   pretty significant to make them switch [TS]

00:09:08   you have that a carrot as well as a [TS]

00:09:09   stick now Apple could just force [TS]

00:09:11   everyone to switch and so you know Mac [TS]

00:09:12   Ruby is going to be the thing it's our [TS]

00:09:14   new high-level language is slowly going [TS]

00:09:15   to transition away from you know C based [TS]

00:09:17   languages and and this is the path and [TS]

00:09:19   you're gonna have to go to it that's the [TS]

00:09:21   stick version but the carrot has to be [TS]

00:09:23   hey awesome Objective C developers who [TS]

00:09:25   have made our platform what it is here's [TS]

00:09:28   the good things that await you if you [TS]

00:09:29   stop writing your your code in this [TS]

00:09:32   start writing it in that I think that's [TS]

00:09:33   a tough sell [TS]

00:09:34   because I mean it's hard enough for [TS]

00:09:35   Apple to even get the real old-school [TS]

00:09:38   Objective C guys to use the dot syntax [TS]

00:09:39   for properties let alone to switch to [TS]

00:09:42   like a high-level language into mints [TS]

00:09:44   then there's you know there's a good [TS]

00:09:45   reason to do that so I have to come down [TS]

00:09:49   a similar position as I did many years [TS]

00:09:51   ago on Mac Ruby is that I don't think [TS]

00:09:53   bridges are the answer and I don't think [TS]

00:09:54   my Mac Ruby is the answer certainly it's [TS]

00:09:56   the best bridge I've seen and it has the [TS]

00:09:58   most promise and if Apple wanted to make [TS]

00:09:59   it work they could but I don't think [TS]

00:10:01   it's the best solution I think it's kind [TS]

00:10:03   of like a half measure and maybe that's [TS]

00:10:05   something in favor of it in that if [TS]

00:10:07   you're going to transition to something [TS]

00:10:08   don't make this big giant leap I think I [TS]

00:10:12   come down the other side I say that the [TS]

00:10:13   big giant leap is the only way you're [TS]

00:10:15   going to the only way you're gonna have [TS]

00:10:17   a carrot big enough to get people to [TS]

00:10:18   come over you know it's it to say this [TS]

00:10:21   is totally different than what you [TS]

00:10:22   expected it's awesome in ways that you [TS]

00:10:24   haven't even imagined and it's so unlike [TS]

00:10:26   what you've done before that it you [TS]

00:10:28   won't end up making unfavorable [TS]

00:10:30   comparisons to the objective-c that [TS]

00:10:31   you're used to and then it'll be a [TS]

00:10:33   gradual transition to whatever this [TS]

00:10:34   thing is but as I said in the previous [TS]

00:10:35   show I have no idea what that thing is [TS]

00:10:37   so it's easy for me to say I'll just [TS]

00:10:39   make it awesome and really radically [TS]

00:10:41   different than what's out there now and [TS]

00:10:42   everyone want to switch to it [TS]

00:10:44   so that's Mac Ruby I I think it's it's a [TS]

00:10:48   plausible contender Apple can make it [TS]

00:10:51   work but that I so far don't see [TS]

00:10:53   anything that makes me think Apple has [TS]

00:10:55   blessed that as the next generation I [TS]

00:10:57   think it's definitely in the interesting [TS]

00:10:59   experiment phase and I haven't seen any [TS]

00:11:02   moves from Apple that make me think [TS]

00:11:03   otherwise what did you think about if if [TS]

00:11:05   you remember [TS]

00:11:06   when I guess I don't say when Mac os10 [TS]

00:11:09   was gaining prominence as a really cool [TS]

00:11:12   place to build apps but it was at that [TS]

00:11:14   turning point when things were were [TS]

00:11:17   really Apple was really really pushing [TS]

00:11:19   to try and get as many people on board [TS]

00:11:21   with developing Mac OS 10 applications [TS]

00:11:24   in any capacity and if you remember and [TS]

00:11:26   we talked about this a little bit you've [TS]

00:11:27   touched on it again there was the the [TS]

00:11:30   Java you could use jaw you could write [TS]

00:11:31   absent Java right there inside of the [TS]

00:11:34   you know the SDK you could just write in [TS]

00:11:37   Java and they never really they made a [TS]

00:11:41   big deal out of the fact that they had [TS]

00:11:43   that and that you could do that but they [TS]

00:11:45   never really really got in there and [TS]

00:11:48   supported it they never really had fully [TS]

00:11:50   fluid you know fleshed out documentation [TS]

00:11:52   for it and then it they just kind of [TS]

00:11:54   swept it under the rug and forgot about [TS]

00:11:55   it [TS]

00:11:56   and the people who were you know like [TS]

00:11:59   the big nerd ranch guys you know and [TS]

00:12:02   those books always said look if you're [TS]

00:12:03   going to build apps in Mac OS 10 just [TS]

00:12:05   bite the bullet learn objective-c don't [TS]

00:12:07   do it in Java it's not as good and some [TS]

00:12:11   of the first versions of the encoder [TS]

00:12:12   which is one of the few cocoa apps or I [TS]

00:12:15   should say Mac OS 10 apps that I built [TS]

00:12:16   we actually had some parts of it that [TS]

00:12:18   were in Java and it was true it just [TS]

00:12:21   made more sense to just do in an [TS]

00:12:22   objective-c [TS]

00:12:23   don't you need apples involvement to [TS]

00:12:26   rienne commitment to really make that [TS]

00:12:29   successful to know that you're investing [TS]

00:12:32   in something that's that's long-term as [TS]

00:12:33   a developer at that time I wasn't coming [TS]

00:12:37   from a position of strength with respect [TS]

00:12:39   to languages they were like you know [TS]

00:12:42   they had the capability to have a Java [TS]

00:12:45   bridge Java was really popular back then [TS]

00:12:47   and they were trying to figure out how [TS]

00:12:48   do we get developers and if the Java was [TS]

00:12:50   going to be the way that they did it [TS]

00:12:51   someone an apple thought that that would [TS]

00:12:54   be a good idea and that the powers to be [TS]

00:12:56   said okay fine you know let's give that [TS]

00:12:58   a try we're going to do the carbon thing [TS]

00:12:59   we're going to do cocoa right and you [TS]

00:13:01   want you think you can do a job a bridge [TS]

00:13:03   we'll try that too just because they [TS]

00:13:05   were hedging their bets they want to say [TS]

00:13:07   you know we got to do everything we can [TS]

00:13:08   to get people to develop this I don't [TS]

00:13:09   think they knew what the result would be [TS]

00:13:11   because they were coming from a ton of [TS]

00:13:13   developers who wrote Mac toolbox [TS]

00:13:15   applications right on power plant or [TS]

00:13:17   whatever so they had to have Carbon for [TS]

00:13:18   them like they [TS]

00:13:19   learn that lesson so the Apple guys were [TS]

00:13:22   saying it you know koko necks may be [TS]

00:13:24   great but there's not that many necks [TS]

00:13:25   developers in the world and we're not [TS]

00:13:27   sure that we can convince our huge [TS]

00:13:29   stable of experienced Mac developers to [TS]

00:13:32   switch to this thing that you love so [TS]

00:13:33   much [TS]

00:13:33   so that was one bet and then someone [TS]

00:13:35   else is saying well job is really [TS]

00:13:36   popular and there's tons of java [TS]

00:13:38   programmers in the world so let's try [TS]

00:13:40   that let's see if we can get you know a [TS]

00:13:42   you know hey you can write Mac OS 10 [TS]

00:13:44   applications in Java and they'll be [TS]

00:13:46   awesome so give that a try and you [TS]

00:13:48   objective-c guys you're next people [TS]

00:13:49   we're going to make them use your API [TS]

00:13:51   but we're just going to use a different [TS]

00:13:52   language that I want to learn Objective [TS]

00:13:53   C so they had all these irons in the [TS]

00:13:55   fire the fact that the Objective C [TS]

00:13:58   proponents were inside the company and [TS]

00:14:00   there were a lot of them and they slowly [TS]

00:14:03   came to dominance probably helped but it [TS]

00:14:04   also helps that you know people did the [TS]

00:14:06   math may said well I might as well just [TS]

00:14:09   learn this objective-c thing it's not [TS]

00:14:10   two differents got some weird square [TS]

00:14:11   brackets but it's mostly just C and most [TS]

00:14:14   of them were more inclined to go from C [TS]

00:14:16   C++ to Objective C than to go from C C++ [TS]

00:14:18   to Java and the final thing is the Java [TS]

00:14:22   thing was a bridge and bridges stink it [TS]

00:14:24   gets back to my whole you know bridge [TS]

00:14:25   thing they don't want to do it's not [TS]

00:14:27   like the real API it's not the real [TS]

00:14:30   language do is it was a bridge and you [TS]

00:14:31   know like you said when you look at the [TS]

00:14:33   docs Doc's talked about Objective C [TS]

00:14:35   because they were pre-existing things [TS]

00:14:36   they didn't talk about Joplin it was [TS]

00:14:37   just a big mess so the Java bridge fell [TS]

00:14:40   by the wayside had to be supported for [TS]

00:14:42   many many years just out of respect for [TS]

00:14:44   the people who did sort of put some time [TS]

00:14:46   into it but eventually they dropped it [TS]

00:14:47   and you know carbon has gone by the [TS]

00:14:49   wayside too like we went through the [TS]

00:14:51   transition the bottom line is that they [TS]

00:14:52   moved everybody into a cocoa and [TS]

00:14:54   objective-c they found their winner in [TS]

00:14:56   that in that competition but it is [TS]

00:14:59   interesting that they had like they had [TS]

00:15:00   basically a memory manage language it [TS]

00:15:02   just didn't work out for reasons not [TS]

00:15:04   really related language mostly related [TS]

00:15:05   to the fact that it's a bridge and [TS]

00:15:06   because they were using that language to [TS]

00:15:08   write to an API that was made for [TS]

00:15:09   Objective C I'm with you all right I've [TS]

00:15:16   got one more so would you would you then [TS]

00:15:18   go so far as to say John that the the [TS]

00:15:22   concept of of a bridge is a bad concept [TS]

00:15:26   and Java is proof of that or you [TS]

00:15:28   wouldn't you go that far [TS]

00:15:29   I think the concept I think bridges are [TS]

00:15:31   bad in general [TS]

00:15:32   doesn't mean you can't make it work if [TS]

00:15:33   they like I said if they really wanted [TS]

00:15:35   to and they use Mac Ruby as like their [TS]

00:15:38   transition strategy and they slowly by [TS]

00:15:39   steps chant you know develop the API [TS]

00:15:43   until eventually you know many many [TS]

00:15:44   years down live people people are [TS]

00:15:45   literally writing Java applications and [TS]

00:15:47   it's no longer bridge like they [TS]

00:15:48   transitioned away from all the memory [TS]

00:15:50   dangerous uses and stuff through a [TS]

00:15:52   series of deprecations it could be done [TS]

00:15:54   but that doesn't mean bridges aren't bad [TS]

00:15:56   that just means that they may have [TS]

00:15:58   advantages in terms of getting you from [TS]

00:15:59   point A to point B through a series of [TS]

00:16:02   steps but the I do not think they're [TS]

00:16:04   they're good there are things hard about [TS]

00:16:07   clean breaks as well you could kind of [TS]

00:16:11   say that Objective C is not is not a [TS]

00:16:13   bridge from C C++ but it was a nice [TS]

00:16:15   transition because they share the same [TS]

00:16:17   base language I don't know there's ever [TS]

00:16:20   been a successful bridge stringent but I [TS]

00:16:22   feel like it could be done but now I'm [TS]

00:16:23   not I'm not a fan of bridges as we'll [TS]

00:16:26   get to more when we get to the main [TS]

00:16:27   topic imma do a quick aside here if you [TS]

00:16:30   think we have time yeah I'm Ireland [TS]

00:16:32   stuff from back to work last week sure [TS]

00:16:34   this is a strange aside in the middle of [TS]

00:16:37   show by programming languages but I want [TS]

00:16:38   to be timely because if I keep it around [TS]

00:16:40   for weeks it will make any sense so last [TS]

00:16:44   week [TS]

00:16:45   Rutland man who does the show back to [TS]

00:16:47   work with you had a blog post about his [TS]

00:16:50   ongoing struggles for over the book [TS]

00:16:52   project he's working on and for people [TS]

00:16:54   who don't know Merlin man is a [TS]

00:16:55   Productivity expert if you want to put [TS]

00:16:57   that in quotes I'm sure he would hate [TS]

00:16:58   that description but I don't know how [TS]

00:17:00   else to encapsulate what he does but he [TS]

00:17:01   he writes and gives talks about [TS]

00:17:04   productivity and related topics and last [TS]

00:17:08   week he did this blog post that [TS]

00:17:10   explained the problems he was having [TS]

00:17:12   getting his current work project done to [TS]

00:17:14   do a book and you needed to show about [TS]

00:17:16   it and then after dark as well which are [TS]

00:17:18   in the show notes and he had the the [TS]

00:17:21   preview page open for his show where you [TS]

00:17:23   get the people listeners get to put [TS]

00:17:25   comments before the show airs and then [TS]

00:17:26   you talked about the comments on the air [TS]

00:17:28   and a couple of comments I didn't write [TS]

00:17:30   any comments but I went through the [TS]

00:17:31   comments before the show and I did click [TS]

00:17:33   that little like button yeah on some of [TS]

00:17:35   the ones that I thought were good [TS]

00:17:36   mystery most of the ones most of the [TS]

00:17:38   ones I liked or ones that were [TS]

00:17:41   challenging questions where they would [TS]

00:17:42   say the gist that most of them was hey [TS]

00:17:45   Merlin man your [TS]

00:17:46   you're this productivity expert but here [TS]

00:17:48   you are not able to get this book done [TS]

00:17:50   that's you know you're super late on and [TS]

00:17:52   you kind of seem like you're bailing out [TS]

00:17:53   on it how are we supposed to trust [TS]

00:17:56   anything you say about productivity when [TS]

00:17:57   in your real life you can't obviously [TS]

00:17:59   can't be productive and there were [TS]

00:18:01   several people asking that that's like [TS]

00:18:03   the obvious question about this whole [TS]

00:18:05   thing and you talked about it a lot on [TS]

00:18:07   the show and the reason I click those [TS]

00:18:10   like buttons was not that I agreed with [TS]

00:18:13   the people who were saying it but it but [TS]

00:18:14   that I wanted him to confront those [TS]

00:18:16   points head-on you know because that's [TS]

00:18:17   that's the the question that jumps right [TS]

00:18:19   out at you immediately about this whole [TS]

00:18:21   thing and and he did that for the most [TS]

00:18:24   part he gave you no answer the questions [TS]

00:18:27   head-on and gave answers that he thought [TS]

00:18:30   people wanted to hear you know he wasn't [TS]

00:18:32   shying away from it if anything he was [TS]

00:18:33   trying to stay on topic [TS]

00:18:35   I wouldn't he wouldn't let you move on [TS]

00:18:38   to the next questions he want to feel [TS]

00:18:39   like he addressed it entirely so that [TS]

00:18:41   was good but the other reason I picked [TS]

00:18:43   those those questions is that I felt [TS]

00:18:46   like I knew what the answer was going to [TS]

00:18:47   be like I wanted to hear him say you [TS]

00:18:48   know I felt like if someone had told me [TS]

00:18:50   defend Merlyn man I would have a [TS]

00:18:52   vigorous defense for his his actions and [TS]

00:18:55   and what he'd done with the book and [TS]

00:18:56   everything I don't want to hear him say [TS]

00:18:58   that too right he got out most of the [TS]

00:19:00   points but one of them that he missed [TS]

00:19:01   that I wanted to throw out there [TS]

00:19:03   here's that but I would have sent if I [TS]

00:19:05   was in his shoes and someone said the [TS]

00:19:06   same thing to me here's what I would [TS]

00:19:07   have said about that ah you know so I [TS]

00:19:10   would have said that yeah the [TS]

00:19:11   expectation is that if you some guy [TS]

00:19:13   writing a book about productivity is [TS]

00:19:15   going to be written by a Productivity [TS]

00:19:16   expert that's going to be like somebody [TS]

00:19:18   who's really good at being productive [TS]

00:19:19   right and that's what all those [TS]

00:19:22   questions were based on because people [TS]

00:19:23   feel cheated and duped or whatever when [TS]

00:19:25   they see the problems that he's having [TS]

00:19:26   in real life but what I would say to [TS]

00:19:29   that is that in reality a person writing [TS]

00:19:31   a book about productivity is most likely [TS]

00:19:33   someone who struggle with productivity [TS]

00:19:35   himself and not just someone who [TS]

00:19:37   struggle because lots of people struggle [TS]

00:19:38   with productivity if you're writing a [TS]

00:19:39   book about productivity you're probably [TS]

00:19:40   someone who struggle with productivity [TS]

00:19:41   and also someone's who's smart enough [TS]

00:19:44   and self-aware enough to explore while [TS]

00:19:46   you're struggling with it and come up [TS]

00:19:48   with answers right that's the [TS]

00:19:49   combination you need you need someone [TS]

00:19:50   who having a problem with it and someone [TS]

00:19:52   who's really smart [TS]

00:19:53   who's going to think about why am I [TS]

00:19:54   having a problem is what's the deal here [TS]

00:19:56   if you've never had a problem with [TS]

00:19:57   productivity and you're super productive [TS]

00:19:59   and everything you will [TS]

00:20:00   probably not have much deep insight into [TS]

00:20:01   what helps make people productive [TS]

00:20:03   because it would just be like I don't [TS]

00:20:05   know I just sit down I do work like [TS]

00:20:06   you're not gonna write a book about [TS]

00:20:07   Prague - because you have no idea how it [TS]

00:20:09   works you've never even given it any [TS]

00:20:10   thought right it's like you had an [TS]

00:20:12   interview with a Horace they do on the [TS]

00:20:14   pipeline recently yeah and when he said [TS]

00:20:16   was like basically mistakes or how we [TS]

00:20:18   learn which is topic bit up we've talked [TS]

00:20:20   about on the show before and so what [TS]

00:20:22   Merlin's [TS]

00:20:23   experience do basic science Merlin is [TS]

00:20:25   still making mistakes which means that [TS]

00:20:27   Merlin is still learning like if you [TS]

00:20:29   think you know everything about [TS]

00:20:30   productivity and you're just gonna make [TS]

00:20:31   pronouncements from the mountaintop you [TS]

00:20:33   basically stopped learning like you [TS]

00:20:35   don't want to read that guy's book it's [TS]

00:20:36   gonna be like I know everything there is [TS]

00:20:38   to know about productivity I'm going to [TS]

00:20:39   lay it out for you and here it is right [TS]

00:20:40   because you think you've got it figured [TS]

00:20:42   all all figured out right it's kind of [TS]

00:20:45   similar to the stereotype you hear that [TS]

00:20:46   like you know psychology majors in [TS]

00:20:48   school are the people most likely to [TS]

00:20:49   have psychological problems that that's [TS]

00:20:51   just the way the world works if you're [TS]

00:20:52   interested in the topic or have any [TS]

00:20:55   insight into topics probably something [TS]

00:20:57   you've dealt with yourself and you know [TS]

00:20:58   struggle with and it's not just a [TS]

00:20:59   struggling I guess that you have to be [TS]

00:21:00   someone who has these problems and also [TS]

00:21:03   someone who's super smart and self-aware [TS]

00:21:04   that's how all you know great books and [TS]

00:21:06   investigations into anything that has [TS]

00:21:08   anything to do with like you know [TS]

00:21:11   personality wise or psychological things [TS]

00:21:13   or any sort of you know human type of [TS]

00:21:17   endeavor not just like writing about [TS]

00:21:19   math or something right right the people [TS]

00:21:20   who have who have struggled with it and [TS]

00:21:22   thought about it and come up with [TS]

00:21:23   answers and who continue to do so who [TS]

00:21:25   have the most insights and I wish she'd [TS]

00:21:27   made that point in the showing since he [TS]

00:21:28   didn't I'm making that point in the show [TS]

00:21:30   so for all the people who are thinking [TS]

00:21:31   they don't want to read a Productivity [TS]

00:21:33   book by someone who can't finish a book [TS]

00:21:34   that's exactly the one you do want to [TS]

00:21:36   read because when it's done you will see [TS]

00:21:39   that it has the you know the scars of [TS]

00:21:41   experience have been built into that [TS]

00:21:44   book that's a great point I mean I in a [TS]

00:21:47   way you almost feel like a book like [TS]

00:21:50   this I don't know maybe maybe this [TS]

00:21:52   sounds weird but you almost want it to [TS]

00:21:54   be hard you know what I'm saying [TS]

00:21:58   yeah I mean this is like I said if it's [TS]

00:22:01   easy if it's some dude who's like hasn't [TS]

00:22:02   thought about productivity in ten years [TS]

00:22:04   because he's been given the same talk at [TS]

00:22:06   companies for ten years and he thought [TS]

00:22:07   he figured it out ten years ago and he [TS]

00:22:09   wrote in a little formula and he got a [TS]

00:22:10   best-selling book and hasn't given a day [TS]

00:22:12   of thought since then [TS]

00:22:13   that's not useful you know you have to [TS]

00:22:15   still be doing it you have to still be [TS]

00:22:16   thinking about it to you know to have [TS]

00:22:19   the insights to share with people [TS]

00:22:20   because these these things change you [TS]

00:22:22   know the environment changes technology [TS]

00:22:24   changes all of our lives change you know [TS]

00:22:26   you come to different points in your [TS]

00:22:27   life you can you know relate to things [TS]

00:22:29   differently when you're you know older [TS]

00:22:30   and a father than when you're younger [TS]

00:22:31   and stuff you have to always keep [TS]

00:22:32   learning it always keep making mistakes [TS]

00:22:38   let's make mistakes they'll be the name [TS]

00:22:40   for a show yeah [TS]

00:22:41   if only somebody would do that yeah all [TS]

00:22:46   right are you ready for main topic yeah [TS]

00:22:48   - thirty minutes yeah this is about what [TS]

00:22:51   we do well let's do our first well thank [TS]

00:22:52   our first sponsor it's the into its [TS]

00:22:54   small business blog if you're in a small [TS]

00:22:55   or medium size business not a large one [TS]

00:22:57   it's probably not for you because they [TS]

00:22:59   talk about things like starting a [TS]

00:23:02   business running a business social media [TS]

00:23:04   integrating it with marketing and that [TS]

00:23:06   kind of thing so it really does appealed [TS]

00:23:09   I think the people who run the small in [TS]

00:23:11   the medium-sized businesses well you can [TS]

00:23:13   go there you can go to blog intuit calm [TS]

00:23:16   you can read articles about this they do [TS]

00:23:17   interviews with you know up-and-coming [TS]

00:23:19   business leaders they even interviewed [TS]

00:23:21   me John did you read that one I don't [TS]

00:23:24   think I did they interviewed me there [TS]

00:23:26   and they do that they entered they do [TS]

00:23:27   interviews and now they've gone mobile [TS]

00:23:29   so there is an Intuit small business [TS]

00:23:31   blog iOS app which is very handy of [TS]

00:23:35   course it works for your iPhone your [TS]

00:23:36   iPod Touch if you're like John siracusa [TS]

00:23:39   it works for an iPad and you can read [TS]

00:23:41   the blog articles you can do full-text [TS]

00:23:43   searches you could do tons of stuff and [TS]

00:23:45   it's a brand new app they really want [TS]

00:23:46   you to go out there and kick the tires [TS]

00:23:47   on this so you can download that just by [TS]

00:23:50   searching for Intuit blog in the iTunes [TS]

00:23:52   App Store or by going to blogged on [TS]

00:23:53   Intuit calm it's well worth your time to [TS]

00:23:56   check this out a lot of really valuable [TS]

00:23:58   articles and they have told me that they [TS]

00:24:01   are coming in with an Android version of [TS]

00:24:02   the app as well so go check that out [TS]

00:24:04   thanks to them very much for making this [TS]

00:24:07   show possible now on to the topic the [TS]

00:24:11   real main topic the Royal Wedding is [TS]

00:24:15   that's not there is that thrill I think [TS]

00:24:17   that'd be great thanks to Robert Hoglund [TS]

00:24:20   in the chat room for that idea no that [TS]

00:24:22   is not the main topic I was I was going [TS]

00:24:24   to say I'm probably pretty well prepared [TS]

00:24:25   for that I was what I did watch some of [TS]

00:24:27   it [TS]

00:24:27   sorry to disappoint you guys that have [TS]

00:24:29   such a dim awareness that this thing is [TS]

00:24:31   even taking place yeah but I would have [TS]

00:24:33   nothing to say about it believe it or [TS]

00:24:34   not today believe it or not it's sort of [TS]

00:24:38   a continuation of the the Copeland 2010 [TS]

00:24:41   show because at the end of that show we [TS]

00:24:43   started to talk a little bit about [TS]

00:24:44   programming languages and I thought that [TS]

00:24:46   was a topic that was worth the whole [TS]

00:24:50   show on its own [TS]

00:24:51   some people complain last time that [TS]

00:24:52   talking about programming stuff was too [TS]

00:24:54   esoteric and like not in character for [TS]

00:24:56   the show yeah but just just so happens [TS]

00:25:00   that we picked less techy topics to [TS]

00:25:01   begin with it's definitely in character [TS]

00:25:03   for me it is you're you are a programmer [TS]

00:25:05   that's what he does what I do for a [TS]

00:25:07   living so I don't I don't feel like it's [TS]

00:25:08   out of character so that this is gonna [TS]

00:25:09   be part of the things that we talk about [TS]

00:25:11   on the show is programming language type [TS]

00:25:13   stuffing if you're not a developer and [TS]

00:25:14   don't care about programming languages [TS]

00:25:16   then maybe you can skip this week maybe [TS]

00:25:18   I still think it would be interesting [TS]

00:25:19   yeah but this is definitely what I'm [TS]

00:25:22   saying is this is definitely not out of [TS]

00:25:23   character for this for the show I don't [TS]

00:25:25   think alright I don't I don't think so [TS]

00:25:28   not at all as I said in the past show [TS]

00:25:30   this is a topic that I wanted to write [TS]

00:25:32   about for a long time but I could just [TS]

00:25:33   never get to it mostly because it is [TS]

00:25:35   kind of out of character for what I tend [TS]

00:25:37   to write on ARS technica and elsewhere [TS]

00:25:39   as I don't tend to write about [TS]

00:25:40   programming language that's more of a [TS]

00:25:41   thing you expect to see on either a [TS]

00:25:43   personal developer blog which I don't [TS]

00:25:46   really have one of or a developer [TS]

00:25:49   oriented site which are static and [TS]

00:25:50   Macworld and so on or not [TS]

00:25:52   so I don't get to write about it but I [TS]

00:25:53   would like to talk about it um so here [TS]

00:25:57   we go so in a past show talked a little [TS]

00:26:00   bit about how geeks tend to like a [TS]

00:26:02   meritocracy I think it was in the show [TS]

00:26:03   where I was talking about how they felt [TS]

00:26:05   it was unfair that Windows 1 the desktop [TS]

00:26:07   because it wasn't and undeserved victory [TS]

00:26:09   because Mac operating system was better [TS]

00:26:11   it was the show where we psychoanalyze [TS]

00:26:13   gruber I forgot what episode that was [TS]

00:26:16   but that tends to be the case the geeks [TS]

00:26:19   think that the technically superior [TS]

00:26:21   solution should win and and as we know [TS]

00:26:24   it often doesn't I know in programming [TS]

00:26:26   languages there are a weird case because [TS]

00:26:29   there's something that only geeks care [TS]

00:26:32   about but programming languages almost [TS]

00:26:34   never become popular based on their [TS]

00:26:35   merits because there are so many more [TS]

00:26:37   important things than that so it's kind [TS]

00:26:40   of a weird situation where [TS]

00:26:41   this thing that only geeks care about [TS]

00:26:43   it's never a meritocracy and that's why [TS]

00:26:46   it's a source of lots that's one of the [TS]

00:26:48   many reasons why it's a source of lots [TS]

00:26:49   of tension in the geek community these [TS]

00:26:51   arguments about which language is better [TS]

00:26:54   than another and so on and so forth so [TS]

00:26:57   here are some of the more important [TS]

00:26:58   things that can make a programming [TS]

00:26:59   language popular so when you have a you [TS]

00:27:03   know what platform is this language the [TS]

00:27:06   official language of that's a big thing [TS]

00:27:09   that can help programming language [TS]

00:27:10   obviously objective-c would probably be [TS]

00:27:12   nowhere if it wasn't the official [TS]

00:27:14   language of the Mac and iOS platforms [TS]

00:27:16   the only reason a lot of people have [TS]

00:27:18   especially but in iOS the only reason [TS]

00:27:20   anyone has learned objective-c is [TS]

00:27:21   because this wouldn't need to do if you [TS]

00:27:23   want to write an iPhone app can use this [TS]

00:27:28   language in more than one place is kind [TS]

00:27:29   of the opposite like if I learn this can [TS]

00:27:31   I only write for iOS or can I use it [TS]

00:27:33   someplace else and this is part of [TS]

00:27:35   what's made C and C++ ridiculously [TS]

00:27:38   popular in the old days but so you could [TS]

00:27:39   write C tons of places like it seemed [TS]

00:27:42   like it at one point every single [TS]

00:27:43   platform you see as it's you know native [TS]

00:27:45   systems programming language and C++ [TS]

00:27:47   differently and then later Java was like [TS]

00:27:48   oh you learned Java but you can use it [TS]

00:27:50   everywhere you can use it on all the web [TS]

00:27:51   development and server side code and [TS]

00:27:53   maybe client-side code to knows but you [TS]

00:27:57   weren't just learning a language for one [TS]

00:27:58   particular thing another thing can help [TS]

00:28:00   languages like can I create a new kind [TS]

00:28:03   of application with this language so if [TS]

00:28:06   I learn this language that I never [TS]

00:28:07   learned before can I write an [TS]

00:28:09   application that I can't write in any of [TS]

00:28:11   the languages that I know now or can't [TS]

00:28:14   write easily a good example is that like [TS]

00:28:16   CGI at the dawn of the web you could [TS]

00:28:19   write a CGI program and see and people [TS]

00:28:21   did but it was so clearly not not the [TS]

00:28:24   thing to do so that was a lot of what [TS]

00:28:25   gave pearls popularity and they're gonna [TS]

00:28:27   say like you know CGI web it's great but [TS]

00:28:29   seriously don't write a C program to [TS]

00:28:31   parse HTTP headers and pillow stuff [TS]

00:28:34   here's this other language and it does [TS]

00:28:35   that stuff much easier and look how [TS]

00:28:36   short this is I can give you a nice [TS]

00:28:37   little CGI in like a little page of code [TS]

00:28:40   and hey you don't need to compile it uh [TS]

00:28:42   and that was a new kind of application [TS]

00:28:44   that you couldn't write with you know a [TS]

00:28:46   compiled thing or C or C both of us or [TS]

00:28:48   was it was so cumbersome that you didn't [TS]

00:28:51   want to basically another thing that can [TS]

00:28:53   help languages it is [TS]

00:28:55   can I try this hot new thing if I learn [TS]

00:28:57   this language rails is a great example [TS]

00:28:59   of that rails it was hot and they're [TS]

00:29:01   like well I really want to try this [TS]

00:29:02   Rails thing like I know how to write web [TS]

00:29:04   apps I'm writing about for years but [TS]

00:29:05   this looks like a cool new way to write [TS]

00:29:06   web apps and I guess to try this rails [TS]

00:29:09   things I haven't learned Ruby well okay [TS]

00:29:10   I'll do that it was like you know call [TS]

00:29:13   it a fad but it's not that's kind of [TS]

00:29:15   route but you get the idea and the final [TS]

00:29:20   thing I have my list here is is this one [TS]

00:29:22   of only a few possible choices for doing [TS]

00:29:24   this thing [TS]

00:29:25   javascript is a good example of this if [TS]

00:29:27   you want to write client-side web you [TS]

00:29:30   know code for web applications [TS]

00:29:32   your choices are basically JavaScript [TS]

00:29:35   maybe Java for applets and maybe flash I [TS]

00:29:38   guess but flash requires plugins and [TS]

00:29:40   Java is this big bloated thing that [TS]

00:29:42   nobody really like that's why no those [TS]

00:29:43   took off so your choices are really [TS]

00:29:45   limited if you want to write client-side [TS]

00:29:47   web code you're basically be writing in [TS]

00:29:49   JavaScript write or use or using a [TS]

00:29:51   framework like CoffeeScript that turns [TS]

00:29:53   it into JavaScript for you we'll talk [TS]

00:29:55   about that okay so so the result is [TS]

00:29:58   since most programming languages are not [TS]

00:30:00   picked based on their merit so picked on [TS]

00:30:02   these other tons much more important [TS]

00:30:04   things the result of this is in my [TS]

00:30:06   opinion most programming languages stink [TS]

00:30:07   or in the best case they eventually [TS]

00:30:10   stink that's the best case the worst [TS]

00:30:12   that the normal case is that they stink [TS]

00:30:13   from day one but you have to use them [TS]

00:30:15   for one of those other reasons that's [TS]

00:30:17   much more important and which is fine [TS]

00:30:19   it's not saying you're miserable doing [TS]

00:30:20   it over but the bottom line is that the [TS]

00:30:21   language itself stinks and in the best [TS]

00:30:23   case the day you start using a language [TS]

00:30:25   it's actually awesome you really like it [TS]

00:30:26   but then ten years down the line [TS]

00:30:29   language advancement has moved on you're [TS]

00:30:31   stuck using someone for one of those [TS]

00:30:32   other reasons so that eventually this [TS]

00:30:34   language comes to stink relative to [TS]

00:30:35   everything else it's kind of like [TS]

00:30:38   programming language the lifetime of a [TS]

00:30:40   programming language gets tied to the [TS]

00:30:41   API or platform lifetime right so you [TS]

00:30:46   know the API or the platform will live [TS]

00:30:50   for just decades sometimes but during [TS]

00:30:52   that time the state of the art in [TS]

00:30:54   languages it just has that you know [TS]

00:30:55   advanced way past that and even just [TS]

00:30:57   during the first few years it you know [TS]

00:30:59   it doesn't ache long for people to see [TS]

00:31:00   what it is about the language they're [TS]

00:31:02   currently using it stinks when they look [TS]

00:31:04   off to the side to see you know wow look [TS]

00:31:06   at that cool thing they're doing over [TS]

00:31:07   there well I can't use that because [TS]

00:31:08   got a ride iOS applications that use [TS]

00:31:10   objective-c or well I can't use that [TS]

00:31:11   because I'm writing web applications and [TS]

00:31:13   I gotta use JavaScript and numerous [TS]

00:31:17   cases sometimes a language can suck for [TS]

00:31:18   years and years even before it becomes [TS]

00:31:20   popular so the javascript is a great [TS]

00:31:22   example this JavaScript you know was [TS]

00:31:24   introduced in that scape whatever was [TS]

00:31:25   1.0 or ages ago javascript was [TS]

00:31:27   introduced and it just sat there sort of [TS]

00:31:31   unloved for years because I got a [TS]

00:31:33   JavaScript I guess you can do some stuff [TS]

00:31:35   to like you know validate forms or [TS]

00:31:37   something but whatever right and it [TS]

00:31:39   wasn't and it wasn't that great back [TS]

00:31:42   then and then years and years later you [TS]

00:31:44   know with better dom support and CSS and [TS]

00:31:46   faster CPUs and better browsers and [TS]

00:31:48   stuff suddenly javascript is hot it's [TS]

00:31:50   like well now hey you know we've got we [TS]

00:31:52   with all these advances in web engine [TS]

00:31:53   technology and better CPUs and you know [TS]

00:31:56   all these other things we can do with it [TS]

00:31:57   dynamic HTML whatever buzzword doing [TS]

00:31:59   bottom line is suddenly javascript [TS]

00:32:01   became interesting but it still sucks [TS]

00:32:03   this was still the same crappy language [TS]

00:32:05   it was 50 years ago not 50 seems like 50 [TS]

00:32:07   years ago Internet time is still the [TS]

00:32:09   same credi language but now suddenly [TS]

00:32:10   it's popular so it didn't even get a [TS]

00:32:12   chance to be it was never good right and [TS]

00:32:14   and then it sat there for years doing [TS]

00:32:16   nothing until people even noticed it uh [TS]

00:32:18   but now you know people need to get work [TS]

00:32:20   done like they need to you need to use [TS]

00:32:23   JavaScript so they want to transform the [TS]

00:32:25   language into something that sucks less [TS]

00:32:26   and this happened even before [TS]

00:32:28   CoffeeScript or to talk about in a [TS]

00:32:29   second this happened you know as soon as [TS]

00:32:31   people started having to use JavaScript [TS]

00:32:33   it's all right well I got to write [TS]

00:32:35   JavaScript and dhtml is cool and I can [TS]

00:32:37   do all these cool transformations and [TS]

00:32:38   all most dynamic stuff or whatever but [TS]

00:32:39   you know what I would like I would like [TS]

00:32:41   keep it work like the language that I'm [TS]

00:32:42   used to so I would like if it had a [TS]

00:32:44   class-based inheritance instead of [TS]

00:32:45   prototype based inheritance and I'd [TS]

00:32:47   really like a nice way to define classes [TS]

00:32:48   and methods and I really like to be able [TS]

00:32:50   to subclass stuff and I really like to [TS]

00:32:52   be able to define properties and do [TS]

00:32:54   things without polluting the global [TS]

00:32:55   namespace with variables and all these [TS]

00:32:57   all the tricks that would learn like so [TS]

00:32:59   that they very quickly started building [TS]

00:33:00   this other language on top of JavaScript [TS]

00:33:01   and they went by all sorts of different [TS]

00:33:04   names and different API s and everyone [TS]

00:33:05   who made any sort of library like use [TS]

00:33:07   the library validating form so we're [TS]

00:33:08   also going to define our own class an [TS]

00:33:09   object system and here's how you define [TS]

00:33:11   a class in our system and use that you [TS]

00:33:12   define an object and here's how you doin [TS]

00:33:13   heritance right and then you know seven [TS]

00:33:15   different people did that so if you're [TS]

00:33:16   using prototype they had one system and [TS]

00:33:17   you know something else but but the way [TS]

00:33:21   they did do was add the API [TS]

00:33:22   people actually wanted to use because [TS]

00:33:23   the Dom API the native Dom API who the [TS]

00:33:25   w3c to find that or whoever define that [TS]

00:33:27   it stinks it was just a huge verbose [TS]

00:33:29   thing that nobody ever wanted to type [TS]

00:33:31   and it was just you know inscrutable and [TS]

00:33:33   had no convenience functions and it was [TS]

00:33:35   just just bad so that you know people [TS]

00:33:38   were wrapping the Dom ten different ways [TS]

00:33:40   to Sunday you know like listen we know [TS]

00:33:42   you're never going to use the Dom API [TS]

00:33:43   but here's this nice little wrapper [TS]

00:33:44   function to give that a try and jQuery [TS]

00:33:47   is the big one they're like they did [TS]

00:33:49   their own objects just something they [TS]

00:33:50   did all solve the old stuff but in [TS]

00:33:51   service of saying don't write to the Dom [TS]

00:33:53   write to jQuery and we're going to [TS]

00:33:55   define a really convenient API that you [TS]

00:33:57   can use that it looks like magic and so [TS]

00:33:59   now we're at the point today where [TS]

00:34:00   people know jQuery but they don't know [TS]

00:34:02   JavaScript right the someone did a [TS]

00:34:04   presentation about that I think was like [TS]

00:34:05   a jQuery problem or something I googled [TS]

00:34:07   for it for a while and I couldn't find [TS]

00:34:08   it but it's basically that you're [TS]

00:34:09   raising your breed of programmers who [TS]

00:34:12   thinks that jQuery is what their [TS]

00:34:14   programming and have no idea this is [TS]

00:34:16   this language into their called [TS]

00:34:17   JavaScript that has its own rules and [TS]

00:34:18   works in its own way now that's like the [TS]

00:34:20   JavaScript is like the assembly code a [TS]

00:34:22   CoffeeScript is another example take me [TS]

00:34:25   to even farther and what's that other [TS]

00:34:26   one that the cappuccino guys do [TS]

00:34:27   objective J I think it's called where [TS]

00:34:30   they're saying look the language is so [TS]

00:34:32   irredeemably bad you're just gonna type [TS]

00:34:34   text right we're gonna parse with our [TS]

00:34:37   own little parser written in javascript [TS]

00:34:38   turn into JavaScript for you and then [TS]

00:34:40   execute that so that basically defining [TS]

00:34:42   an entirely different language not just [TS]

00:34:44   a new API not just a wrapper for other [TS]

00:34:46   things but an entirely new language so [TS]

00:34:48   bad is the underlying language is like [TS]

00:34:49   don't even type in that language type [TS]

00:34:52   essentially a big honking string and we [TS]

00:34:54   will we will take your big honkin string [TS]

00:34:56   and turn it into something all right and [TS]

00:35:00   that gets at all that talks about [TS]

00:35:02   bridges and everything like we know when [TS]

00:35:04   you're stepping through the debugger and [TS]

00:35:05   you know Firebug or whatever WebKit [TS]

00:35:07   JavaScript debugger that's a JavaScript [TS]

00:35:09   debugger that's not a coffee script [TS]

00:35:10   debugger it's not a jQuery de barro god [TS]

00:35:11   forbid you ever step into a jQuery [TS]

00:35:13   function you'll know there be dragons [TS]

00:35:15   you do not want to be into that code [TS]

00:35:16   right if you have some sort of problem [TS]

00:35:18   in the middle of jQuery you know even [TS]

00:35:20   when it's not minima minified or [TS]

00:35:21   anything like that they just highlight [TS]

00:35:23   the problems of bridges and stop and [TS]

00:35:25   CoffeeScript and objective J similar [TS]

00:35:27   type things like you know you're not [TS]

00:35:28   going to get Apple or Google or whoever [TS]

00:35:30   to build a coffee script debugger into [TS]

00:35:32   into their browser unless you really [TS]

00:35:35   take over [TS]

00:35:36   the world with your new language that [TS]

00:35:37   you made up that eventually compiles [TS]

00:35:38   into JavaScript [TS]

00:35:40   Google is even worse but they do Java [TS]

00:35:42   that compiles into JavaScript I don't I [TS]

00:35:44   mean think about how they do bug that [TS]

00:35:46   but that's that's Google's problem so [TS]

00:35:51   the moral of story is that every [TS]

00:35:54   existing popular language has something [TS]

00:35:56   terrible about it or many make things [TS]

00:35:58   terrible about it [TS]

00:35:59   and it's usually really easy for [TS]

00:36:02   developers to see what's wrong with this [TS]

00:36:03   language not not the API is not what you [TS]

00:36:05   can do with it you know people like [TS]

00:36:06   these things but just like the language [TS]

00:36:08   isolate the language itself and say is [TS]

00:36:10   there anything bad about the language [TS]

00:36:12   taken in isolation and there always is [TS]

00:36:15   and it seems like as these languages [TS]

00:36:18   have stagnated and been tied to these [TS]

00:36:19   platforms and api's for years and years [TS]

00:36:21   we've you know made little advances [TS]

00:36:24   along the side lines and everything and [TS]

00:36:25   you know academic circles research [TS]

00:36:28   circles but even just trying things out [TS]

00:36:29   for real with you know little niche [TS]

00:36:31   languages and stuff like that we sort of [TS]

00:36:33   collectively decided on what is good and [TS]

00:36:36   then when we collectively decide on what [TS]

00:36:38   is good we can look at the language and [TS]

00:36:39   say well this thing doesn't have this [TS]

00:36:40   good thing which we've all pretty much [TS]

00:36:41   agreed takes a long time to agree on [TS]

00:36:43   this takes you know sometimes years and [TS]

00:36:44   years forever to agree that something is [TS]

00:36:45   good but eventually most people agree so [TS]

00:36:47   I have a little list of things that I [TS]

00:36:49   think that collectively programmers have [TS]

00:36:51   agreed are good things plus or minus [TS]

00:36:54   applicability obviously everything I [TS]

00:36:56   list someone is going to say well if [TS]

00:36:57   you're writing a device driver all that [TS]

00:36:58   stinks yeah obviously you pick the [TS]

00:37:01   language appropriate for a context so [TS]

00:37:02   I'm speaking mostly of the highest of [TS]

00:37:05   the high levels because languages only [TS]

00:37:06   get higher level over time not lower [TS]

00:37:07   level so the lower level languages [TS]

00:37:08   retain their roles in the levels of [TS]

00:37:11   distraction where they work best but the [TS]

00:37:13   top of the stack the highest level [TS]

00:37:15   languages that people most commonly [TS]

00:37:16   write and just keep getting higher level [TS]

00:37:18   and that's the place where the actions [TS]

00:37:19   that's the place where the most language [TS]

00:37:21   advancement happens so some things we've [TS]

00:37:24   decided to good the Commuter decided [TS]

00:37:25   memory management is good because even [TS]

00:37:27   though you know at the lower levels yes [TS]

00:37:29   you do need to management you know [TS]

00:37:30   someone's got a managed memory manually [TS]

00:37:32   underneath there someone's got to do it [TS]

00:37:34   even if you're just writing the VM for [TS]

00:37:35   your JavaScript engine so I want us to [TS]

00:37:36   deal with it but if you're writing an [TS]

00:37:38   application you don't want to deal with [TS]

00:37:39   that so if you have some language that [TS]

00:37:41   doesn't have memory management it starts [TS]

00:37:44   to look a little bit creaky especially [TS]

00:37:46   if you're writing like an application [TS]

00:37:47   where it's like dude clicks the button [TS]

00:37:48   and then this [TS]

00:37:49   happens you know I don't have to manage [TS]

00:37:51   memory to connect the dude clicks the [TS]

00:37:53   button and then something happens thing [TS]

00:37:54   I'm not I'm not writing vice drivers I'm [TS]

00:37:56   not writing a VM for a language right [TS]

00:37:59   one of the deal Denari management native [TS]

00:38:01   strings pretty much everyone has agreed [TS]

00:38:02   that native strings are a good thing you [TS]

00:38:04   know we don't want to add strings to see [TS]

00:38:06   this is just a byte array and blah blah [TS]

00:38:07   native unicode strings at this point if [TS]

00:38:10   you don't iran who doesn't have native [TS]

00:38:11   you don't screen strings some poor [TS]

00:38:13   suckers got to make a library that does [TS]

00:38:14   and then it's just a big hairy mess and [TS]

00:38:16   you have two different competing [TS]

00:38:17   libraries and you get you know what were [TS]

00:38:20   they called in MFC the HIPAA yeah yeah [TS]

00:38:22   why character strings and all sorts of [TS]

00:38:24   you know it's just a big mess native [TS]

00:38:26   native unicode strings have to be in the [TS]

00:38:28   language because they're so darn useful [TS]

00:38:29   i think we that most people have agreed [TS]

00:38:32   at this point for high level languages [TS]

00:38:34   native regular expressions are a good [TS]

00:38:37   thing if not native regulus versions and [TS]

00:38:40   at least a library that implements the [TS]

00:38:41   native ones are nicer because then you [TS]

00:38:42   don't have to take your regular [TS]

00:38:43   expressions and say oh I don't like [TS]

00:38:44   regular expressions I'm gonna you know [TS]

00:38:46   they're in strings now it's just a [TS]

00:38:47   string constant JavaScript does that to [TS]

00:38:49   an extent but it's nice to have native [TS]

00:38:52   regular expressions with the native [TS]

00:38:53   syntax because they're so darn useful [TS]

00:38:55   and so common I think you don't have to [TS]

00:38:57   be calling through the library functions [TS]

00:38:58   for them and you certainly don't want to [TS]

00:38:59   have to load a third-party library to do [TS]

00:39:01   with regular expressions native objects [TS]

00:39:04   and classes not to get into the oo [TS]

00:39:07   procedural debate functional programming [TS]

00:39:10   a lot stuff but if you're going to have [TS]

00:39:12   something that's sort of like objects [TS]

00:39:13   and classes and you're you know that's [TS]

00:39:14   going to be like the way you do [TS]

00:39:16   modularization in your code make it part [TS]

00:39:18   of the language don't make it so that [TS]

00:39:19   everyone has to sort of roll their own [TS]

00:39:20   thing in javascript or say hey we have [TS]

00:39:22   our own object system you know we've got [TS]

00:39:24   and we've got our own heritage systems [TS]

00:39:25   but it's one that people have decided [TS]

00:39:27   they don't want to use like prototype [TS]

00:39:29   inheritance people may love it and think [TS]

00:39:30   it's cool and everything but everyone [TS]

00:39:32   who wants to program in java scripts [TS]

00:39:33   like great so how do i make a class and [TS]

00:39:35   that's kind of a shame for the people [TS]

00:39:36   who love prototype based inheritance but [TS]

00:39:38   the bottom line is that that's what [TS]

00:39:40   people want and you know every single [TS]

00:39:42   library bends over backwards to make [TS]

00:39:43   something that at least looks a little [TS]

00:39:45   bit like objects and classes even when [TS]

00:39:47   under the covers it's not quite the same [TS]

00:39:48   thing [TS]

00:39:50   one I'll add on here that these are [TS]

00:39:53   getting progressively more controversial [TS]

00:39:55   I think is it named parameters [TS]

00:39:57   positional parameters sucka they could [TS]

00:39:59   probably all agree on that no one wants [TS]

00:40:00   a function with 27 parameters that have [TS]

00:40:02   to be exactly the right [TS]

00:40:03   and you gotta pass nulls or zeros for [TS]

00:40:05   the ones you don't include and stuff [TS]

00:40:05   like that names parameters if you if [TS]

00:40:08   your language doesn't have name [TS]

00:40:09   parameters people will basically invent [TS]

00:40:10   them you know for JavaScript passing in [TS]

00:40:13   you know the little JavaScript object [TS]

00:40:16   notation for you know name value pairs [TS]

00:40:18   and stuff like that it's not name [TS]

00:40:19   parameters and I really need to language [TS]

00:40:20   but this is a data structure that looks [TS]

00:40:22   just like name parameters that's what [TS]

00:40:23   everybody uses but it means that order [TS]

00:40:26   is not important and you don't have to [TS]

00:40:27   remember what the seventh argument is [TS]

00:40:29   well the 12th argument is and stuff like [TS]

00:40:31   that people want names that's the [TS]

00:40:33   parameter the code reads better [TS]

00:40:34   Objective C has a half solution where [TS]

00:40:36   it's like are we had name parameters but [TS]

00:40:37   you still have to put them in order and [TS]

00:40:38   if you don't need to put one you got to [TS]

00:40:40   put a null for it and this it's a [TS]

00:40:42   sea-based language you forgive it a lot [TS]

00:40:43   but I think we can all agree things to [TS]

00:40:45   have that name parameters succinct [TS]

00:40:48   syntax for common operations that means [TS]

00:40:50   no boilerplate it means as no matter how [TS]

00:40:53   theoretically pure your language is now [TS]

00:40:55   wants to deal with templates or like if [TS]

00:40:57   you want to make a class put these 80 [TS]

00:40:58   lines of codes in there and then put [TS]

00:41:00   your one line of code that's specific to [TS]

00:41:02   your thing and people don't want things [TS]

00:41:04   to be verbose and wordy and just huge [TS]

00:41:06   they want things to be tight and small [TS]

00:41:08   because if they're not they're not tight [TS]

00:41:10   and small like in JavaScript where you [TS]

00:41:11   got to do these little anonymous [TS]

00:41:12   function closures and everything to get [TS]

00:41:14   variables inside of scope they will [TS]

00:41:15   invent the syntax that is succinct to [TS]

00:41:17   replace your crappy one you know it got [TS]

00:41:20   thanks gamez ago drop it a CoffeeScript [TS]

00:41:21   people were sick of typing the word [TS]

00:41:22   function out what that's you know [TS]

00:41:24   Huffman coding in the parlance of a [TS]

00:41:26   Larry wallet people going to be typing [TS]

00:41:27   the word function eight bazillion times [TS]

00:41:29   don't spell it out function you know [TS]

00:41:30   CoffeeScript goes with a little arrow [TS]

00:41:31   because it's much faster to type it the [TS]

00:41:34   things that are commonly used to be fast [TS]

00:41:36   a type and small you know not giant [TS]

00:41:39   words um have any other good ones here [TS]

00:41:43   some sort of acknowledgment of [TS]

00:41:45   concurrency I think we've all agreed is [TS]

00:41:47   good because languages without any [TS]

00:41:48   acknowledgement that concurrency exists [TS]

00:41:50   you end up having problems with it like [TS]

00:41:52   doesn't mean you have to be you know [TS]

00:41:53   super concurrent like Erlang or whatever [TS]

00:41:55   and your entire language is based around [TS]

00:41:56   that but an acknowledgment that it [TS]

00:41:58   exists and some native mechanism for [TS]

00:42:01   dealing with it even is just like a [TS]

00:42:03   couple primitive native I would say that [TS]

00:42:05   if you have just have a couple [TS]

00:42:06   primitives from mutexes and stuff like [TS]

00:42:08   that then people have this kind of [TS]

00:42:09   invent some sort of concurrency thing on [TS]

00:42:11   top of it I mean even it's like implicit [TS]

00:42:13   concurrency just some acknowledgement [TS]

00:42:14   that it exists even if you don't even [TS]

00:42:16   implement it [TS]

00:42:16   have a language or you can say okay our [TS]

00:42:18   language construct that looks like this [TS]

00:42:20   may not have any actual concurrency but [TS]

00:42:24   the implementation is free to do it [TS]

00:42:26   concurrently because order is not [TS]

00:42:27   guaranteed you know something like that [TS]

00:42:29   I think we've all agreed is a good thing [TS]

00:42:30   because languages that don't have that [TS]

00:42:32   it's really hard to add concurrency [TS]

00:42:33   after the fact so pick a language you [TS]

00:42:37   can find some of these things that are [TS]

00:42:38   missing from it often frustratingly so [TS]

00:42:41   and the question is why if we all if [TS]

00:42:43   you'll agree that these things are great [TS]

00:42:44   and you know over the years we've [TS]

00:42:46   decided this is what languages should be [TS]

00:42:48   and we keep adding new things to this [TS]

00:42:50   list why can't we just make a new [TS]

00:42:52   language that does that well a language [TS]

00:42:54   in isolation is pretty darn useless if [TS]

00:42:56   you don't have anything to do with that [TS]

00:42:57   language if you don't have an API to [TS]

00:42:58   write foo you can't make programs for a [TS]

00:43:01   particular platform you're kind of stuck [TS]

00:43:03   which is a lot of the reason you see [TS]

00:43:04   like the CoffeeScript and objective [TS]

00:43:06   sayst J stuff they could invent those [TS]

00:43:08   languages and I thought hey it's great a [TS]

00:43:09   menu language called objective J and it [TS]

00:43:13   looks like this and it's really fun to [TS]

00:43:14   use they look great what can I do with [TS]

00:43:16   that we said well you can write web [TS]

00:43:17   applications feel like I can't require [TS]

00:43:19   occasions my web browser doesn't have [TS]

00:43:20   objective site so well we'll take your [TS]

00:43:21   objective saying J and compile it into [TS]

00:43:23   JavaScript and then suddenly you have a [TS]

00:43:25   use for this cool new language [TS]

00:43:26   CoffeeScript is similar to that or you [TS]

00:43:28   know rails will make a new API since no [TS]

00:43:30   one seems to be using Ruby now but we [TS]

00:43:32   think it's really cool here's this great [TS]

00:43:34   new framework and if you want to use a [TS]

00:43:36   framework use the language ah nice [TS]

00:43:39   questions why can't we just add these [TS]

00:43:40   cool features to existing languages well [TS]

00:43:42   it's not it's not easy to add features [TS]

00:43:44   to languages because you've got that you [TS]

00:43:47   know installed base and the people who [TS]

00:43:50   are currently using the language just [TS]

00:43:51   like what happened with trying to make a [TS]

00:43:52   Akuma script for which is going to be [TS]

00:43:54   the successor to JavaScript which is [TS]

00:43:55   going to add all sorts of cool wizzy [TS]

00:43:57   stuff that a lot of which is from that [TS]

00:43:59   previous list add that to JavaScript but [TS]

00:44:02   then is like you know it's an open [TS]

00:44:04   standard and there's standards bodies [TS]

00:44:05   and people with interests in keeping the [TS]

00:44:07   language the way it is and then you [TS]

00:44:08   can't get people to agree about what [TS]

00:44:10   should be added and what shouldn't and [TS]

00:44:11   then whole process kind of ground to a [TS]

00:44:12   halt and is really difficult to add [TS]

00:44:15   stuff to an existing language and even [TS]

00:44:17   if you get everyone to agree it takes [TS]

00:44:19   forever for them to be useful like if [TS]

00:44:21   you made here's the new version of [TS]

00:44:22   JavaScript and he's got these great new [TS]

00:44:24   features in fact it's got half of jQuery [TS]

00:44:25   built into it well you can't use that [TS]

00:44:28   until some you know [TS]

00:44:30   a huge percentage of the population has [TS]

00:44:32   upgraded all their browsers to the [TS]

00:44:34   browser that has the fancy new version [TS]

00:44:36   of JavaScript in it and it takes years [TS]

00:44:39   initialize to happen right look at how [TS]

00:44:40   long it's taken for dotnet to be viable [TS]

00:44:44   because you had all those pcs out there [TS]

00:44:46   they couldn't run dotnet or didn't have [TS]

00:44:48   dotnet installed and you didn't want [TS]

00:44:50   your application to be the one that says [TS]

00:44:51   oh here's my cool new application but [TS]

00:44:53   first you got to download this 20 [TS]

00:44:54   megabyte net runtime and then you know [TS]

00:44:55   it's a it's a big hang-up where people [TS]

00:44:58   don't want to download your application [TS]

00:44:59   then you have all those machines in [TS]

00:45:00   China they're still running Windows XP [TS]

00:45:01   and it's just it's just a mess so it's [TS]

00:45:04   really really difficult to add features [TS]

00:45:07   to existing languages and even when you [TS]

00:45:09   can you have to wait so long to use them [TS]

00:45:10   the by the time you get to use them [TS]

00:45:12   maybe you think that all the features [TS]

00:45:14   you add you're too little and you think [TS]

00:45:16   the a language is crappy again so we're [TS]

00:45:18   basically forced to suffer through using [TS]

00:45:20   crappy ancient languages you know as the [TS]

00:45:23   rest of technology advances quickly you [TS]

00:45:25   know and even within the browser stuff [TS]

00:45:27   advances faster than languages like the [TS]

00:45:28   CSS DOM and J and Java Sea is that built [TS]

00:45:32   are rapidly advancing but the JavaScript [TS]

00:45:34   language not so much like look how fast [TS]

00:45:36   you know new versions of CSS are [TS]

00:45:38   supported a new Dom methods and this Dom [TS]

00:45:39   method is native now we're adding local [TS]

00:45:40   database support and all sorts of cool [TS]

00:45:43   stuff that you can write to the API is [TS]

00:45:45   advanced quickly but the JavaScript [TS]

00:45:46   language is just stuck I mean you know [TS]

00:45:49   it there have been tweaks here and there [TS]

00:45:50   and obviously the implementation it's [TS]

00:45:52   way way faster but the language itself [TS]

00:45:53   it's the same old crappy self that [TS]

00:45:55   always was more or less and so here I we [TS]

00:45:58   just wait with crossed fingers and we [TS]

00:46:00   just hope that whatever the next hit [TS]

00:46:02   platform or API is that it's going to [TS]

00:46:04   use a better language right and that the [TS]

00:46:07   that's not just wishful thinking it's [TS]

00:46:08   happened before so like when the CGI [TS]

00:46:10   stuff came along that sort of ushered in [TS]

00:46:12   a new wave of you know dynamic languages [TS]

00:46:14   with the PC had the Perl Python PHP you [TS]

00:46:19   know you couldn't you couldn't make [TS]

00:46:20   those viable to the C programmer say hey [TS]

00:46:22   stop doing your systems programming in C [TS]

00:46:24   and C++ [TS]

00:46:24   try purl knit go no thanks but and see [TS]

00:46:28   when CGI comes along and the P languages [TS]

00:46:30   yeah oh as a new platform and with this [TS]

00:46:33   new platform we're going to get to use [TS]

00:46:34   better languages and since there's no [TS]

00:46:35   incumbent to unseat and so we don't have [TS]

00:46:37   to convince the C and C++ programmers to [TS]

00:46:39   come over we'll just get these new guys [TS]

00:46:41   hey new guys cool new language try this [TS]

00:46:42   out write web applications [TS]

00:46:44   and same thing with rails in Ruby Ruby [TS]

00:46:46   was not going to be to take over the [TS]

00:46:48   world you know it was not going to [TS]

00:46:49   replace you know C++ or you can see [TS]

00:46:52   sharp as the windows programming [TS]

00:46:54   language but if they make this new thing [TS]

00:46:56   with there's no incumbent then Ruby [TS]

00:46:57   suddenly can become popular and cocoa [TS]

00:46:58   with Objective C and so on and so forth [TS]

00:47:00   [Music] [TS]

00:47:04   and of course it helps when you have a [TS]

00:47:05   language is controlled by a single [TS]

00:47:07   vendor like c-sharp where C and C++ you [TS]

00:47:12   know with it's standard versions that [TS]

00:47:14   take a million years to come out doesn't [TS]

00:47:15   change that quickly but c-sharp has [TS]

00:47:17   changed really fast like it was [TS]

00:47:18   introduced out of nowhere as kind of a [TS]

00:47:19   Java cloning thing or whatever and then [TS]

00:47:22   they've advanced now their versioning [TS]

00:47:23   version their language like C sharp [TS]

00:47:25   point 1.0 2.0 3.0 4.0 since a single [TS]

00:47:29   vendor controls it they don't have to [TS]

00:47:30   get the okay from anyone else they just [TS]

00:47:32   stick you want to add a cool new feature [TS]

00:47:33   to language or controlling we're going [TS]

00:47:34   to add a new feature add a new feature [TS]

00:47:35   Apple does something similar with [TS]

00:47:37   Objective C maybe a little bit slower [TS]

00:47:39   but they took it easy in the beginning [TS]

00:47:40   because they're just getting your OB on [TS]

00:47:42   board Objective C but then it's like [TS]

00:47:43   guess what properties synthesized [TS]

00:47:45   methods and the dot syntax and now fast [TS]

00:47:49   enumeration and and blocks and you know [TS]

00:47:51   I mean they're add except to C that's [TS]

00:47:52   pretty crazy it's kind of more of a [TS]

00:47:54   library thing but if you if you have a [TS]

00:47:57   single vendor and control of a language [TS]

00:47:59   it can advanced more rapidly than the [TS]

00:48:01   standards-based languages but then you [TS]

00:48:02   know it's the other side of that coin is [TS]

00:48:03   that if it's not a standard base [TS]

00:48:04   language people are afraid to use it [TS]

00:48:05   because they're like I don't want to be [TS]

00:48:06   under Apple's thumb I'm not going to do [TS]

00:48:08   Objective C and I don't want to be under [TS]

00:48:10   Microsoft's thumb so I'm not going to do [TS]

00:48:11   she sharp and even if it's like an open [TS]

00:48:13   standards de facto controlled by one [TS]

00:48:15   person it's always a tension there [TS]

00:48:17   between the development of the language [TS]

00:48:19   and how fast is going to move on so now [TS]

00:48:25   finally finally I think we can talk [TS]

00:48:28   about Perl [TS]

00:48:28   oh is this is this is the interesting [TS]

00:48:31   part for me where you get to participate [TS]

00:48:33   and express your disdain [TS]

00:48:35   people love the rants when you go on the [TS]

00:48:37   rants like that they love it last time [TS]

00:48:42   so people tuned in for booed maybe we [TS]

00:48:44   should do our spot you want to do the [TS]

00:48:45   sponsor now or neck or after this yeah [TS]

00:48:47   you should go for it [TS]

00:48:48   world view we've talked about these guys [TS]

00:48:50   before this is the totally addictive [TS]

00:48:52   take on email reporting from campaign [TS]

00:48:54   monitor basically and we have a lot of [TS]

00:48:55   people I think in the audience ooh [TS]

00:48:57   - newsletters they have their own [TS]

00:48:58   business they have a small they do a [TS]

00:49:01   website maybe they're a software [TS]

00:49:02   developer they have clients so this is [TS]

00:49:05   from campaign monitor when you send a [TS]

00:49:06   newsletter they'll show you on a map in [TS]

00:49:08   real time [TS]

00:49:09   whenever somebody opens the newsletter [TS]

00:49:11   because that's the thing you send out a [TS]

00:49:12   newsletter you're like whoa who read it [TS]

00:49:14   Oh 34 people read it who where are they [TS]

00:49:16   what's going on [TS]

00:49:18   now they actually show you this in real [TS]

00:49:21   time on a map and it's very you're [TS]

00:49:23   talking about things like JavaScript a [TS]

00:49:25   lot of JavaScript here but it's all [TS]

00:49:28   seamless it's gorgeous [TS]

00:49:29   gonna check this out go to a campaign [TS]

00:49:31   monitor comm slash world view whenever [TS]

00:49:34   somebody opens your newsletter when they [TS]

00:49:36   click on a link when they forward it to [TS]

00:49:37   a buddy in in real time it shows up on [TS]

00:49:40   this map are you looking at it right now [TS]

00:49:41   it's very cool it also show you on [TS]

00:49:44   Facebook when it's mentioned when it's [TS]

00:49:46   mentioned on Twitter instantaneously and [TS]

00:49:48   it's free for every email campaign you [TS]

00:49:51   send and you can you can get started for [TS]

00:49:53   free too so go check them out check [TS]

00:49:54   these guys out campaign monitor comm [TS]

00:49:56   slash worldview [TS]

00:49:58   thanks very much those guys they're [TS]

00:50:01   really smart for advertising that [TS]

00:50:02   feature because I guarantee you that is [TS]

00:50:04   the the feature that the people who who [TS]

00:50:06   purchase the service are most excited [TS]

00:50:07   about news you can just see people [TS]

00:50:09   staring at that map you know because [TS]

00:50:10   watching listening and you're gonna send [TS]

00:50:12   out direct communication like this is [TS]

00:50:14   what you want like if you just click the [TS]

00:50:16   button and go home it's not exciting [TS]

00:50:17   you're gonna sit there and stare at that [TS]

00:50:18   map and like now now the world will see [TS]

00:50:21   what I have to say and exactly that is a [TS]

00:50:24   very smart feature very cool and that's [TS]

00:50:26   just a demo so go go try this out anyway [TS]

00:50:28   we got to talk about this Perl thing now [TS]

00:50:30   you it has been revealed here not only [TS]

00:50:34   to two things that are I think going to [TS]

00:50:36   be shocking to most of the listening [TS]

00:50:38   audience the first one is listen to [TS]

00:50:40   other shows we've talked about it before [TS]

00:50:42   two things are going to be shocking to [TS]

00:50:44   listening on it's the first one is that [TS]

00:50:46   you you your job you are a pearl [TS]

00:50:50   programmer so that's shocked number one [TS]

00:50:52   and shock number two is that at least [TS]

00:50:55   this is the part that we're going to [TS]

00:50:56   have to talk about my understanding is [TS]

00:50:58   you can actually read the pearl after [TS]

00:51:01   you've written it you can go back and [TS]

00:51:02   read what you've written and understand [TS]

00:51:04   it which is my understanding is that's [TS]

00:51:06   not possible with pearl at all even in [TS]

00:51:08   the best situation so I'd like for you [TS]

00:51:09   to address both of those points [TS]

00:51:11   please begin well at first I want to [TS]

00:51:14   talk about something that you said on a [TS]

00:51:15   past show about objective-c but I think [TS]

00:51:17   it was on the previous show where you [TS]

00:51:19   were talking about the square brackets [TS]

00:51:20   in a coalition - and you can't stand I [TS]

00:51:23   don't like this yeah so you've obviously [TS]

00:51:25   done a little bit of objective-c [TS]

00:51:26   development ah yeah and you like what [TS]

00:51:30   the language can do for you you like [TS]

00:51:32   yeah the resulting applications you know [TS]

00:51:34   you like the platform you like iOS you [TS]

00:51:35   like Mac OS 10 yeah [TS]

00:51:37   but the language itself you don't like [TS]

00:51:40   and you brought up the square brackets [TS]

00:51:42   cuz you think they're ugly I don't like [TS]

00:51:45   this I don't like the look of it I am a [TS]

00:51:47   very uh I care a lot at least on on the [TS]

00:51:52   computer I care a lot about how things [TS]

00:51:55   look visually but you know I'm a [TS]

00:51:57   stickler for fonts I've written a lot of [TS]

00:51:59   articles on high vulajin sand what fonts [TS]

00:52:04   I it's you know the editor that I use is [TS]

00:52:07   almost secondary to the font that I'm [TS]

00:52:09   using to do code in I mean I'm very the [TS]

00:52:12   way that things look the way the [TS]

00:52:13   language looks and this this again this [TS]

00:52:15   is why I'm such a big fan of programming [TS]

00:52:18   languages like Ruby because they look it [TS]

00:52:21   looks great I mean even even the people [TS]

00:52:23   who hate the Ruby most and I'm talking [TS]

00:52:25   about anybody who prefers Python they're [TS]

00:52:28   the biggest the biggest anti rubyists [TS]

00:52:30   out there in the world even they admit [TS]

00:52:32   the Ruby looks nice I mean they'll say [TS]

00:52:33   python is better I'm you know we don't [TS]

00:52:35   need to get into that on this show but [TS]

00:52:38   even they'll admit that it is a nice [TS]

00:52:40   looking a nice looking language for me [TS]

00:52:43   that typing in in something that that [TS]

00:52:46   you know creating code that looks nice [TS]

00:52:48   I'd I'd try you know I love that so that [TS]

00:52:51   matters to me there's a lot of people [TS]

00:52:53   who are you know laughing saying oh who [TS]

00:52:55   cares about that it's the power of the [TS]

00:52:57   language that you want and and if that's [TS]

00:52:59   the case then I think they get in line [TS]

00:53:02   with you and then start writing right [TS]

00:53:04   and Perl because you can do stuff in [TS]

00:53:06   Perl it's just kind of crazy so the [TS]

00:53:09   point I want to bring up about this is [TS]

00:53:11   two things first that aesthetics and [TS]

00:53:13   programming languages even though it's [TS]

00:53:15   subjective I think you could probably [TS]

00:53:19   identify some themes and I think one of [TS]

00:53:22   the themes especially for the people who [TS]

00:53:24   like Ruby [TS]

00:53:25   is that none word characters are ugly [TS]

00:53:29   and word characters are not right so [TS]

00:53:32   anytime you get a non word characters [TS]

00:53:34   anything that's not you know a through Z [TS]

00:53:35   numbers or underscores maybe hyphens [TS]

00:53:37   anytime you get anything that's not one [TS]

00:53:39   of those characters it's it's noisy and [TS]

00:53:41   it's ugly but you know basically any [TS]

00:53:42   character you wouldn't see in prose or [TS]

00:53:44   even stuff like commas sometimes with [TS]

00:53:46   periods they don't like right so the [TS]

00:53:48   square brackets they fall under your [TS]

00:53:49   your unkind gaze because square brackets [TS]

00:53:53   don't appear in regular prose almost [TS]

00:53:55   ever and there's certainly not word [TS]

00:53:57   characters and they're actually kind of [TS]

00:53:58   like sharp pointy edges right am i [TS]

00:54:01   understanding by the way as an aside is [TS]

00:54:02   that you can use dot notation instead of [TS]

00:54:07   brackets in objective-c [TS]

00:54:10   and I was talk to the guy who wrote note [TS]

00:54:12   C which is a great iOS app he told me [TS]

00:54:15   this on the daily Edition earlier in the [TS]

00:54:17   week I heard that but then you're [TS]

00:54:20   falling into something that's [TS]

00:54:21   non-standard you're like the one guy who [TS]

00:54:22   does it that way which is not a really [TS]

00:54:25   good topic I want to talk to you about [TS]

00:54:27   perhaps on this show or another show [TS]

00:54:28   about whether you adapt the language to [TS]

00:54:31   your own particular style or whether you [TS]

00:54:33   adapt your style to the language of [TS]

00:54:35   choice or a third option as you adopt [TS]

00:54:38   whatever the corporate style is for the [TS]

00:54:42   project and or tasks that your team team [TS]

00:54:46   rather that you're working on anyway [TS]

00:54:47   there could be another topic well Apple [TS]

00:54:49   has been pushing sort of pushing the dot [TS]

00:54:52   syntax even within Apple there are [TS]

00:54:56   people who still won't use it and I bet [TS]

00:54:57   if you were to look at Apple's code [TS]

00:54:58   they'd be big divisions like these are [TS]

00:54:59   the dot people and these are the non dot [TS]

00:55:01   people I think suspect the old-school [TS]

00:55:03   guys don't like that syntax but apples [TS]

00:55:04   been pushing it a lot like if you go to [TS]

00:55:06   WC a lot of the sessions the official [TS]

00:55:08   party line is we invented dot notation [TS]

00:55:11   so you could use it it's not like we're [TS]

00:55:12   going to invent it and nobody should use [TS]

00:55:13   it you should use it and they will make [TS]

00:55:15   a good show of saying we here at Apple I [TS]

00:55:17   trying to use it too with our new you [TS]

00:55:19   know stuff at the very least I want you [TS]

00:55:21   to use the app property at synthesize [TS]

00:55:22   and stuff like that like they're pushing [TS]

00:55:24   that as a modernization of the language [TS]

00:55:26   right um [TS]

00:55:27   and partly because I think it does look [TS]

00:55:30   nicer you know fewer non word characters [TS]

00:55:33   right so the point I want to bring up [TS]

00:55:34   about non word characters is the aside [TS]

00:55:36   that I meant to get to last time about [TS]

00:55:37   the Joint Strike Fighter [TS]

00:55:39   I put a link in the show notes too to [TS]

00:55:40   this the Joint Strike Fighter was a US [TS]

00:55:43   government project to make a new [TS]

00:55:46   airplane to replace several existing [TS]

00:55:49   models of airplanes through several [TS]

00:55:51   branches of the armed forces they wanted [TS]

00:55:53   to replace a bunch of planes in the Navy [TS]

00:55:54   the Air Force and the Marines with a [TS]

00:55:57   single new plan that could be adapted to [TS]

00:55:58   several different purposes that's [TS]

00:56:00   actually an aside that's not the point [TS]

00:56:01   of trying to get about making one plane [TS]

00:56:02   to replace many different other ones but [TS]

00:56:04   the main thing is they had a competition [TS]

00:56:05   between defense contractors said you [TS]

00:56:07   want to be the the company that makes a [TS]

00:56:08   Joint Strike Fighter well you know [TS]

00:56:10   here's some amount of money and bring us [TS]

00:56:13   two prototypes and you know it was the [TS]

00:56:16   competition between basically Boeing and [TS]

00:56:18   Lockheed were the two big ones that were [TS]

00:56:19   the only people who had the money and [TS]

00:56:21   skills basically to compete so it was [TS]

00:56:24   actually contract for the government [TS]

00:56:25   that did they had more than one bidder [TS]

00:56:26   but anyway uh they said you know bring [TS]

00:56:28   us what you think is the best suited [TS]

00:56:30   plane for this and then we as the [TS]

00:56:31   government will take a look well you [TS]

00:56:32   brought us and bring each one through a [TS]

00:56:33   series of tests and decide which one [TS]

00:56:35   we're going to spend you know bazillions [TS]

00:56:36   of dollars on over the next decade two [TS]

00:56:38   decades three decades to replace all our [TS]

00:56:40   points and there was a PBS show I think [TS]

00:56:43   it was a nova thing but anyways a link [TS]

00:56:45   to in the show notes I don't know if you [TS]

00:56:46   can actually watch the video it's a very [TS]

00:56:47   old show so I think maybe you can get [TS]

00:56:49   the video online but if not you could [TS]

00:56:51   maybe see if it comes on TV again but it [TS]

00:56:54   was a documentary showing the [TS]

00:56:56   competition between Boeing and Lockheed [TS]

00:56:57   which is excellent show if you have an [TS]

00:56:58   hour of time you can find this thing you [TS]

00:57:00   should watch it it's really awesome to [TS]

00:57:01   watch the show but the boss fascinating [TS]

00:57:03   aspect of it was that at a certain point [TS]

00:57:05   in the program they started to talk [TS]

00:57:08   about the difference between these two [TS]

00:57:10   planes and it was something that would [TS]

00:57:12   be on anyone's mind watching the show up [TS]

00:57:14   to that point but not discuss then they [TS]

00:57:15   came out and discussed it which was that [TS]

00:57:17   Boeing's entry was uglier than la Keats [TS]

00:57:20   the plane itself have you were to put [TS]

00:57:22   them side-by-side like right note from [TS]

00:57:23   the second you see it Lockheed looks [TS]

00:57:25   cool like a little spaceship like [TS]

00:57:26   something from Star Wars and Boeing's [TS]

00:57:27   it's kind of you know homely looking [TS]

00:57:29   it's got a big mouth for an air intake [TS]

00:57:31   and it's kind of stub nosed and just it [TS]

00:57:34   just looks uglier now this is a [TS]

00:57:37   competition billions and billions of [TS]

00:57:40   dollars are on the line [TS]

00:57:41   the security of your entire nation the [TS]

00:57:43   safety of your people there's going to [TS]

00:57:45   be people flying these planes people [TS]

00:57:46   repairing like the looks of these planes [TS]

00:57:49   you would think could anything possibly [TS]

00:57:51   be less important this is [TS]

00:57:52   life-or-death situation things that [TS]

00:57:55   matter are like performance cost safety [TS]

00:57:57   you know effectiveness that the the [TS]

00:58:01   performance of the actual plane itself [TS]

00:58:03   the durability does looks have anything [TS]

00:58:07   to do with it [TS]

00:58:07   anything at all and as the people [TS]

00:58:09   discuss very openly in the show they can [TS]

00:58:11   say you know well looks of the plane [TS]

00:58:14   really shouldn't matter but is it an old [TS]

00:58:15   saying in aviation that if it looks [TS]

00:58:17   right it'll fly right hmm now that's [TS]

00:58:19   saying the origin of that saying is like [TS]

00:58:22   that's just like a massive [TS]

00:58:23   rationalization for the idea that people [TS]

00:58:25   and men in particular are hardwired to [TS]

00:58:27   like things that are attractive doesn't [TS]

00:58:29   mean the plane has to look like you know [TS]

00:58:30   the body of a woman although it often [TS]

00:58:32   does but that people like beautiful [TS]

00:58:35   things and you can they're rational mind [TS]

00:58:38   can say to them all the other stuff [TS]

00:58:39   about how everything else is more [TS]

00:58:41   important and how this plane looks means [TS]

00:58:42   absolutely nothing the bottom line is [TS]

00:58:44   that the better-looking plane usually [TS]

00:58:46   wins when there's a competition for you [TS]

00:58:48   know which things going to get a [TS]

00:58:49   contract and I'm not saying that's why [TS]

00:58:52   the winner of the Lockheed won this this [TS]

00:58:55   contract I don't think I'm spoiling [TS]

00:58:57   anything to say that but Lockheed [TS]

00:59:00   eventually did win because they had the [TS]

00:59:01   better-looking plane right there are [TS]

00:59:03   many other reasons that that they won [TS]

00:59:05   the contract but the fact that looks was [TS]

00:59:08   acknowledged to be a factor that [TS]

00:59:10   basically saying we can't help but we're [TS]

00:59:12   silly meatbags who love beautiful things [TS]

00:59:13   and right or wrong looks are going to be [TS]

00:59:16   a factor and we can rationalize and say [TS]

00:59:18   even if we had never seen these points [TS]

00:59:20   and adjust seeing the numbers and we [TS]

00:59:22   just knew based on experience but the [TS]

00:59:23   Lockheed makes great planes or whatever [TS]

00:59:25   you know blah blah walkie was probably [TS]

00:59:26   gonna win no matter what but the fact [TS]

00:59:28   that looks are you know acknowledged to [TS]

00:59:31   be an important factor in that thing [TS]

00:59:32   there's no hope of aesthetics not being [TS]

00:59:36   a factor in something like programming [TS]

00:59:37   languages we're much less is at stake [TS]

00:59:39   right I think this reveals you know I [TS]

00:59:42   hope the people ever involved a [TS]

00:59:44   self-aware enough to realize that this [TS]

00:59:46   is this is a flaw in reasoning and they [TS]

00:59:48   shouldn't go back to if it looks right [TS]

00:59:49   it flies right it's the old saying that [TS]

00:59:50   my Pappy says your Pappy was was [TS]

00:59:53   excusing his stupid illogical behavior [TS]

00:59:56   with a catchy saying like that's an [TS]

00:59:58   acknowledgement of you being wrong [TS]

00:59:58   acknowledgement of you being wrong [TS]

01:00:00   you can't use that to support your [TS]

01:00:01   argument no if it looks right it does [TS]

01:00:03   not fly right things a lot of things [TS]

01:00:04   that look awful [TS]

01:00:05   fly great and a lot of things that look [TS]

01:00:06   great do not fly at all it's not this [TS]

01:00:09   thing makes no sense so to bring that [TS]

01:00:11   back to programming languages yeah [TS]

01:00:14   people pick a lot based on their [TS]

01:00:15   aesthetics but you know it shouldn't be [TS]

01:00:20   a factor even though it is luckily with [TS]

01:00:23   programming languages there are so many [TS]

01:00:24   other factors that even that dominate [TS]

01:00:26   looks that you know we can't even get [TS]

01:00:27   decent languages irregardless of [TS]

01:00:28   irregardless is not a word sorry [TS]

01:00:30   regardless of the looks of the language [TS]

01:00:32   you can't we can't get a good one that [TS]

01:00:34   has all the features you want because of [TS]

01:00:35   other things that are involved but you [TS]

01:00:37   know when we're left to you know have [TS]

01:00:39   petty squabbles about which one of the [TS]

01:00:41   crappy languages that were forced to use [TS]

01:00:43   is better than the other we fall back on [TS]

01:00:45   looks and the gang gets back to the [TS]

01:00:48   fewer non-work characters the better so [TS]

01:00:50   I don't like discussions about books of [TS]

01:00:52   languages because I think it's mostly [TS]

01:00:54   moot with programming language at least [TS]

01:00:57   you can say all right maybe it has [TS]

01:00:59   nothing to do with looks but a lot of [TS]

01:01:00   these know our characters I need to hold [TS]

01:01:02   down shift to use and they're not you [TS]

01:01:04   know there have take my fingers off the [TS]

01:01:06   HOME key so they're like actual rational [TS]

01:01:09   regions where you can talk about curly [TS]

01:01:11   braces are bad or square brackets are [TS]

01:01:14   bad or any other character that I have [TS]

01:01:15   to stop typing stop typing [TS]

01:01:17   touch typing for and do a chord [TS]

01:01:19   keystroke to get that's bad mmm so at [TS]

01:01:22   least you have that little thing in that [TS]

01:01:23   word but the aesthetics of languages [TS]

01:01:25   even though you can find that common [TS]

01:01:26   thread of non mark characters being ugly [TS]

01:01:28   it really depends on what you're used to [TS]

01:01:30   a lot to and where you're coming from [TS]

01:01:33   so with Perl I would imagine the number [TS]

01:01:36   of characters that are most offensive to [TS]

01:01:37   everyone are things like the dollar sign [TS]

01:01:39   which is and all the variables no one [TS]

01:01:40   likes that the @ sign % that's you know [TS]

01:01:44   the fact that every identifier has some [TS]

01:01:46   sort of prefix on it people don't like [TS]

01:01:49   that now if you're coming from shell [TS]

01:01:50   programming that's not a big deal [TS]

01:01:51   because in shell success is the same [TS]

01:01:52   thing it's like that's where the syntax [TS]

01:01:53   comes from reading you know basic stuff [TS]

01:01:55   like that on it too but if you're coming [TS]

01:01:57   from see where your identifiers are [TS]

01:01:59   basically unadorned you see that as no [TS]

01:02:01   eyes and you think it's ugly [TS]

01:02:02   no so getting into Perl specifically [TS]

01:02:08   it's got all the prefixes in the various [TS]

01:02:10   people alike but another reason Pro [TS]

01:02:12   comes in for the ugliness thing [TS]

01:02:13   is that it was the first language to [TS]

01:02:15   first language to really become popular [TS]

01:02:17   that had made of regular expressions in [TS]

01:02:19   it [TS]

01:02:20   the programmers use obviously regular [TS]

01:02:21   expressions were out there and you know [TS]

01:02:22   command-line utilities like grep and [TS]

01:02:23   stuff like that but this was the first [TS]

01:02:25   time that a real programmer quote [TS]

01:02:27   unquote was forced to see regular [TS]

01:02:29   expressions because he was doing this [TS]

01:02:30   program and see Recife sauce and some [TS]

01:02:31   dude came along and said I'm writing a [TS]

01:02:33   CGI application it's Perl and check this [TS]

01:02:34   out and then it's the first time they [TS]

01:02:36   see your deal with regular expressions [TS]

01:02:37   and what they think is a real program [TS]

01:02:38   and not just like some shell thing sis [TS]

01:02:40   admin's do which is beneath them like [TS]

01:02:42   what the hell is that now as we all know [TS]

01:02:44   today regular expressions look like that [TS]

01:02:47   for a reason it's a compact [TS]

01:02:48   representation of something that would [TS]

01:02:49   it would be much uglier and longer if [TS]

01:02:51   you had to write your own you know state [TS]

01:02:53   machine or you know okay what you write [TS]

01:02:56   your own regular expression engine you'd [TS]

01:02:57   basically end up either reinventing [TS]

01:02:59   regular expressions yourself badly or [TS]

01:03:00   writing a huge strings Betty spaghetti [TS]

01:03:02   go to do a regular expressions to do so [TS]

01:03:04   regular expressions look kind of like [TS]

01:03:06   line noise but they're they look like [TS]

01:03:08   that for a reason and they're useful and [TS]

01:03:10   every language nowadays has them and [TS]

01:03:12   recognizes that but Perl was the first [TS]

01:03:13   so the impression of Perl is look at all [TS]

01:03:15   those freaking dollar signs and oh my [TS]

01:03:17   god this program is just one big regular [TS]

01:03:19   expression and I've never seen very good [TS]

01:03:20   friends boring I do not understand why [TS]

01:03:22   regular expressions are so inscrutable [TS]

01:03:24   to me it's just this horrible looking [TS]

01:03:26   thing you know so your reputation you [TS]

01:03:30   know first impressions may mean a bit a [TS]

01:03:31   lot and the fact that Perl was the first [TS]

01:03:33   one to come in with very discretions [TS]

01:03:35   it's like boom you're labeled the bosal [TS]

01:03:36   bit is flipped you are the language that [TS]

01:03:37   nobody can read and yet had the shell [TS]

01:03:40   like syntax and everything now it's [TS]

01:03:43   interesting that this type of you know [TS]

01:03:45   prejudice against languages with weird [TS]

01:03:47   stuff is just to compare the end keyword [TS]

01:03:52   in Ruby where you know instead of having [TS]

01:03:54   curly braces curly braces your bag is or [TS]

01:03:56   non word characters and you have to hold [TS]

01:03:57   down shift to type them right but end is [TS]

01:04:01   a lot longer than curly braces isn't it [TS]

01:04:02   and the real programmers quote-unquote [TS]

01:04:04   from the olden days C C++ guys they had [TS]

01:04:06   curly braces still yeah [TS]

01:04:08   curly braces weren't a big deal to them [TS]

01:04:09   ah and again it seems like bad Huffman [TS]

01:04:12   coding to take probably the most [TS]

01:04:14   commonly typed keyword in your entire [TS]

01:04:16   language and in the case of Ruby and [TS]

01:04:18   make three characters long instead of [TS]

01:04:20   one even if you count the QWERTY coke is [TS]

01:04:23   to like hold down shift and hold down [TS]

01:04:24   the you know the the bracket key and is [TS]

01:04:27   still longer to type [TS]

01:04:28   so it seems like if you're going to be [TS]

01:04:30   like oh you know what's going to win is [TS]

01:04:32   aesthetics in terms of making me type [TS]

01:04:34   too much stuff going to win or or is [TS]

01:04:37   aesthetics in terms of non-word [TS]

01:04:38   character is going to win and pearl [TS]

01:04:40   basically didn't get dinged for having [TS]

01:04:42   curly braces and Ruby didn't really good [TS]

01:04:45   things for having the end keyword too [TS]

01:04:47   much but nowadays if you were to say [TS]

01:04:49   what looks cleaner they're going to say [TS]

01:04:50   Ruby looks cleaner even though it's got [TS]

01:04:52   these little end keywords littering up [TS]

01:04:53   the entire thing but it doesn't have the [TS]

01:04:55   curly braces you're like well I have [TS]

01:04:57   that end but I don't have to have the [TS]

01:04:58   opening curly you know so people [TS]

01:05:02   deciding what it is that makes something [TS]

01:05:03   ugly or not whether it's Dena word [TS]

01:05:05   characters or having to type some long [TS]

01:05:07   thing that tends to flip-flop based on [TS]

01:05:09   the context and the same people have a [TS]

01:05:11   different opinion when looking at [TS]

01:05:13   different languages at different times [TS]

01:05:15   so for for Perl you don't like it [TS]

01:05:20   because ugly and you make the jokes [TS]

01:05:21   about it being a read only and stuff [TS]

01:05:22   like that but there are other things [TS]

01:05:24   that give it a bad reputation but the [TS]

01:05:27   most people probably don't know about I [TS]

01:05:29   think my my description of why people [TS]

01:05:32   don't like Perl pretty much covers the [TS]

01:05:34   basis for anyone who it hasn't actually [TS]

01:05:35   done any programming in Perl where [TS]

01:05:38   they'll say I don't like it [TS]

01:05:39   it's ugly regular expressions are [TS]

01:05:41   unreadable the end more or less you have [TS]

01:05:44   any actual more actual objections coming [TS]

01:05:46   from someone who doesn't really write in [TS]

01:05:47   Perl against the Perl language yeah I [TS]

01:05:52   think I think it all really does come [TS]

01:05:53   down to just legibility how how it's [TS]

01:05:57   it's a joke people in the chatroom or [TS]

01:05:59   even talking about it that it's it's a [TS]

01:06:01   tough language and also I mean it are [TS]

01:06:03   there you know people will complain and [TS]

01:06:04   I'm not sure that this isn't the knock [TS]

01:06:06   against the language directly but there [TS]

01:06:08   are the where where are the really [TS]

01:06:11   awesome frameworks written in Perl that [TS]

01:06:13   people should be using where where does [TS]

01:06:16   Perl move into the the next generational [TS]

01:06:18   kind of thinking I mean sure it's great [TS]

01:06:20   if you want to you know write something [TS]

01:06:22   that will parse text and turn it into [TS]

01:06:24   HTML for you but what what are people [TS]

01:06:27   using Perl for in the real world why [TS]

01:06:29   doesn't it get the kind of attention [TS]

01:06:31   outside of those uber geeky sysadmin [TS]

01:06:34   type circles I feel like the Perl got [TS]

01:06:39   this reputation based on the things [TS]

01:06:40   we've already discussed [TS]

01:06:41   many years ago and that's when people [TS]

01:06:45   stopped looking at it right so the fact [TS]

01:06:48   that you don't know the answers to any [TS]

01:06:49   of those questions doesn't mean that [TS]

01:06:50   there aren't answers it just means that [TS]

01:06:53   the latyout you have removed pearl from [TS]

01:06:56   your mind in the past and haven't looked [TS]

01:06:57   at it since and neither of any other [TS]

01:06:59   people so it doesn't come up anymore and [TS]

01:07:00   you're just assumed there's nothing else [TS]

01:07:01   it seems like a dinosaur of a language [TS]

01:07:04   now I'm partially I did truth be told I [TS]

01:07:07   do know the value of pearl I can write [TS]

01:07:09   some pearl code although probably not [TS]

01:07:12   very much anymore I certainly do [TS]

01:07:14   appreciate it as a language I'm kind of [TS]

01:07:16   playing devil's advocate here and I'm [TS]

01:07:18   playing up the stereotypes the language [TS]

01:07:20   Imana because your representative oh [TS]

01:07:23   well yeah and I think so and that's [TS]

01:07:24   that's kind of what I want to hear your [TS]

01:07:26   take would you would you be saying this [TS]

01:07:28   do you think if you weren't right I mean [TS]

01:07:30   you you write Perl eight hours a day is [TS]

01:07:32   that I mean or yeah yeah that's that's [TS]

01:07:35   that's surprising so before I go and [TS]

01:07:38   tell you what's good about Perl I'm [TS]

01:07:39   gonna tell you the things that are bad [TS]

01:07:41   about it that I think are much more [TS]

01:07:42   significant than the things we just [TS]

01:07:44   discussed okay because I think Pro got [TS]

01:07:46   dismissed long before but it got [TS]

01:07:49   dismissed by the mass market long before [TS]

01:07:52   the mass market discovery was truly bad [TS]

01:07:54   about it all right so the things that [TS]

01:07:57   are actually you know because I think [TS]

01:07:58   that aesthetic stuff as evidenced by [TS]

01:08:00   objective-c like that that stuff you can [TS]

01:08:02   get over like regular expressions [TS]

01:08:03   everyone's gotten over already so [TS]

01:08:05   regular expressions even though you know [TS]

01:08:07   everyone will agree okay I get I [TS]

01:08:09   understand Regulus prices now I see why [TS]

01:08:10   they're useful and see why the line [TS]

01:08:12   noise and they're in every freaking [TS]

01:08:13   language so you can't pinpoint perl for [TS]

01:08:14   but still Perl gets the blame for being [TS]

01:08:16   I read all the other and the dollar [TS]

01:08:18   signs like the square brackets like if [TS]

01:08:20   there was some reason to keep using Perl [TS]

01:08:22   and it was really popular people get [TS]

01:08:23   over like you get over the square [TS]

01:08:24   brackets maybe not you but most people [TS]

01:08:26   basically you know grin and bear with [TS]

01:08:28   the square brackets because of the other [TS]

01:08:29   advantages and to just to respond to you [TS]

01:08:32   really quickly if if I was if I was [TS]

01:08:35   serious about writing an iOS app or Mac [TS]

01:08:38   OS 10 app in and today I would have no [TS]

01:08:40   problem dealing with it I probably would [TS]

01:08:43   eventually get to like it and there are [TS]

01:08:44   people who will say oh the objective-c [TS]

01:08:46   is beautiful maybe it would grow on me [TS]

01:08:49   but certainly if if the choice is taken [TS]

01:08:52   away if if somebody said oh you can use [TS]

01:08:54   Mac Ruby [TS]

01:08:55   and just write Ruby code and of course I [TS]

01:08:57   would pick that first because that's [TS]

01:08:59   where my comfort zone is and because I [TS]

01:09:01   like that I'm comfortable with that but [TS]

01:09:03   yeah I mean you deal with it but is that [TS]

01:09:06   what you're saying about pearly you're [TS]

01:09:07   not saying that so so what I'm sort of [TS]

01:09:08   saying is that those little things I [TS]

01:09:10   think would not have been enough to keep [TS]

01:09:11   people away what kept people away was [TS]

01:09:13   that it was the standard bearer for [TS]

01:09:15   things that freak people out about [TS]

01:09:16   syntax and aesthetics and people moved [TS]

01:09:18   on before they find the real problems [TS]

01:09:20   here are the things that are actually [TS]

01:09:20   problems with Perl the only people who [TS]

01:09:22   know that these are actual problems with [TS]

01:09:23   Perl the people who have seriously been [TS]

01:09:25   developing with Perl because a those [TS]

01:09:26   people have gotten over or never been [TS]

01:09:28   affected by whatever you know Perl is [TS]

01:09:30   ugly thing like if they knew a regular [TS]

01:09:33   expressions before or they or they just [TS]

01:09:34   got used to them came to like them they [TS]

01:09:36   dealt with the dollar signs or they [TS]

01:09:37   actually came to like them or whatever [TS]

01:09:39   those weren't the issues here the actual [TS]

01:09:40   issues of the Perl now the first big one [TS]

01:09:42   is that Perl is kind of like JavaScript [TS]

01:09:44   in that it doesn't do the things that [TS]

01:09:48   people wanted to do with respect to [TS]

01:09:50   object systems so it gives you this [TS]

01:09:52   little mini construction kit from which [TS]

01:09:54   you can build what more traditional [TS]

01:09:57   object system might look like and many [TS]

01:10:00   people did they took this was Pro 5 [TS]

01:10:01   which introduced these object oriented [TS]

01:10:03   mechanisms they took this little tool [TS]

01:10:04   kit and I said okay well I want objects [TS]

01:10:06   that look like this and they would write [TS]

01:10:07   a little the equivalent of like all the [TS]

01:10:09   but you know prototype and jQuery on the [TS]

01:10:11   stuff that they build their own little [TS]

01:10:12   object maker thing inside their [TS]

01:10:14   framework well everybody in Perl built [TS]

01:10:16   their own little object maker thing and [TS]

01:10:17   all of them were slightly different and [TS]

01:10:19   all them are slightly incompatible and [TS]

01:10:21   you know over time people came up with [TS]

01:10:23   new ones we're gonna do two objects like [TS]

01:10:24   this so I'm going to do objects like [TS]

01:10:25   that I'm gonna do them like this and [TS]

01:10:26   here's how you build a class and my [TS]

01:10:27   thing I'm going to do this and I'm gonna [TS]

01:10:28   make a you know a source filter and I'm [TS]

01:10:31   gonna add new keywords and I'm going to [TS]

01:10:32   do this syntax and I'm gonna make my [TS]

01:10:33   objects inside out you even know what [TS]

01:10:34   that is no one outside Perl poly knows [TS]

01:10:36   what inside out objects are but uh all [TS]

01:10:38   sorts of you know I can make my objects [TS]

01:10:40   out of a race because it's faster and [TS]

01:10:41   I'm gonna make you know all crazy sorts [TS]

01:10:44   of things you know the problem was that [TS]

01:10:46   that leaves you with a huge library of [TS]

01:10:48   code everyone ever and everyone's using [TS]

01:10:50   their own little object construction kit [TS]

01:10:52   and they're either not compatible with [TS]

01:10:54   each other or it's like well why do I [TS]

01:10:55   have to have 17 different object [TS]

01:10:57   construction kits in here in my in my [TS]

01:10:58   one application when I really just want [TS]

01:11:00   one this is something that should have [TS]

01:11:01   been built into the language now it's [TS]

01:11:03   bad that it wasn't because you get the [TS]

01:11:05   situation where there's a million [TS]

01:11:05   different object systems right but on [TS]

01:11:07   the other hand well I [TS]

01:11:08   I'll set it up for the part where I do [TS]

01:11:09   good stuff it's just that were the bed [TS]

01:11:11   there's not one way to do objects and [TS]

01:11:13   people did million of them is big Harry [TS]

01:11:15   messing continues to be a big hairy mess [TS]

01:11:16   to this day um the other thing is that [TS]

01:11:22   Perl I guess we have to start getting [TS]

01:11:25   into the good at this point because I [TS]

01:11:27   think that's probably probably the [TS]

01:11:28   biggest bad thing about Perl and I guess [TS]

01:11:30   the implementation doom the Perl was [TS]

01:11:31   written is a big giant C program by one [TS]

01:11:34   dude and that one dude rewrote it uh but [TS]

01:11:38   really that's not you know Ruby has the [TS]

01:11:40   same problem to some degree of like [TS]

01:11:41   being a big Harry C program under the [TS]

01:11:43   covers that has problems that's why [TS]

01:11:44   projects like JRuby and maglev and all [TS]

01:11:47   these other you know rubinius is that [TS]

01:11:50   are you pronouncing all the other VMs [TS]

01:11:51   when when your language is defined [TS]

01:11:53   basically by you know how does the Ruby [TS]

01:11:56   executable behave this Ruby C program [TS]

01:11:59   written by a couple of guys that defines [TS]

01:12:01   my language like it's not there's a [TS]

01:12:02   language spec there's no language [TS]

01:12:03   standard it's like we wrote this program [TS]

01:12:06   you feed its source code that we say is [TS]

01:12:08   Ruby source code and it executes it for [TS]

01:12:10   you your language can end up being [TS]

01:12:13   hamstrung by the interpreter and that's [TS]

01:12:15   true of Perl the summary slide because [TS]

01:12:16   any C program that's long lived get [TS]

01:12:18   scruffty or whatever in a certain point [TS]

01:12:19   you have trouble extending an advancing [TS]

01:12:21   language because the internals are [TS]

01:12:23   gross-looking and perl has been working [TS]

01:12:26   towards improving that and so is ruby [TS]

01:12:28   and so of all the other ones back [TS]

01:12:29   sometimes they say you know we're not [TS]

01:12:30   even going to deal with the real Ruby VM [TS]

01:12:32   we're gonna we're going to use a JVM and [TS]

01:12:33   write our own thing on top of it and [TS]

01:12:34   just you know you got that whole thing [TS]

01:12:36   going on but that's the other thing [TS]

01:12:37   that's that hamstrings languages like [TS]

01:12:39   Perl Ruby hmm the good thing about all [TS]

01:12:43   this bad stuff is that the fact that [TS]

01:12:46   there was no objects just insulting and [TS]

01:12:47   everyone built their own little optics [TS]

01:12:49   system it basically became like a [TS]

01:12:52   breeding ground or I'll I don't know [TS]

01:12:54   you'd call like a Genesis project for [TS]

01:12:57   object systems alright so the first dude [TS]

01:13:00   to write an object system and pearls [TS]

01:13:02   like to make it like C++ and then Java [TS]

01:13:04   comes out and let's make some sort of [TS]

01:13:05   like Java type thing on top of it and [TS]

01:13:07   then all these weird experiments that no [TS]

01:13:08   one even heard of with the inside out [TS]

01:13:09   stuff and trying to protect the [TS]

01:13:11   variables with closures because we don't [TS]

01:13:13   have real variable privacy and designed [TS]

01:13:15   by contracts and all sorts of crazy [TS]

01:13:17   approaches like everything you can [TS]

01:13:19   possibly imagine was tried and what [TS]

01:13:21   would happen is that the better one [TS]

01:13:22   would squish the old one so like this [TS]

01:13:24   would be you know I made a quadric [TS]

01:13:26   system no guy no I made a cooler one [TS]

01:13:27   everyone forget about that ol one [TS]

01:13:28   because it sucks and then I'll make him [TS]

01:13:30   cooler one and they were forget about [TS]

01:13:31   that one they try something else and I [TS]

01:13:32   say okay I'm we're gonna make method [TS]

01:13:34   makers and class generators and a whole [TS]

01:13:36   class of things that just let you make [TS]

01:13:38   accessor methods in 50 different ways [TS]

01:13:40   and we're going to try to you know layer [TS]

01:13:41   on a type system and we're going to do [TS]

01:13:43   tons and tons of experimentation which [TS]

01:13:45   you couldn't do if this the language [TS]

01:13:47   came with like this is how you do [TS]

01:13:49   objects which for the most part Ruby [TS]

01:13:50   comes with like here's how you do [TS]

01:13:51   objects in Ruby here's how you do [TS]

01:13:52   attributes getters and setters excuse me [TS]

01:13:55   Python was a little bit different in [TS]

01:13:56   that Python had like new objects and old [TS]

01:13:58   job jokes where they had one way to do [TS]

01:14:00   objects and people said well this is [TS]

01:14:01   great but there's some common things [TS]

01:14:02   that doesn't do so they had a new style [TS]

01:14:04   object and then they had Python 3 right [TS]

01:14:06   Perl 5 just start up with that little [TS]

01:14:08   core of you know an object construction [TS]

01:14:10   since we've got a simple thing for [TS]

01:14:11   inheritance is a simple thinker method [TS]

01:14:13   dispatch and a simple thing for you know [TS]

01:14:15   the Ruby equivalent of the proto Kedar [TS]

01:14:17   method missing in Ruby and just go nuts [TS]

01:14:19   and people did go nuts ah what has led [TS]

01:14:22   to is that I think the Perl has had and [TS]

01:14:26   continues to have the largest group of [TS]

01:14:28   developers doing quote-unquote advanced [TS]

01:14:30   stuff in a semi popular language if you [TS]

01:14:32   want to do interesting advanced language [TS]

01:14:34   type stuff you can do it on top of pearl [TS]

01:14:37   because pearl doesn't decide how they're [TS]

01:14:38   going to do it for you so for example [TS]

01:14:40   pearl is the only language that I know [TS]

01:14:41   of where as a community if you're in the [TS]

01:14:44   pearl community it's basically been [TS]

01:14:46   agreed upon that roles are awesome and [TS]

01:14:47   better than regular all now do you even [TS]

01:14:49   know what roles are roles with in which [TS]

01:14:52   context explain it roles traits you read [TS]

01:14:55   the paper on traits that roles as pearls [TS]

01:14:57   name for them it's a different way of [TS]

01:14:58   doing instead of doing inheritance of [TS]

01:15:01   delegations different is a different way [TS]

01:15:03   of factoring out common code instead of [TS]

01:15:06   factoring out code in terms of [TS]

01:15:07   inheritance or mixing classes or you can [TS]

01:15:09   you patching or whatever I mean this is [TS]

01:15:12   something that most people haven't even [TS]

01:15:13   heard of unless you're like deep into [TS]

01:15:15   the Pearl community but at this point [TS]

01:15:16   with so much scratching going on in the [TS]

01:15:18   Pearl community that you if you were [TS]

01:15:20   asked to someone who's deep in the [TS]

01:15:21   thrall community our role is good or bad [TS]

01:15:22   they would say good and everyone else [TS]

01:15:25   that haven't even heard of it and this [TS]

01:15:25   is true of tons of stuff like when ruby [TS]

01:15:27   was coming out and all the pearl people [TS]

01:15:29   are bitter because rubies being popular [TS]

01:15:30   and everything i don't know if people [TS]

01:15:31   know this but have you noticed a [TS]

01:15:33   similarity ruby it's a gemstone pearl to [TS]

01:15:35   kind of a shiny thing really [TS]

01:15:36   was basically inspired by pearl with [TS]

01:15:39   like the edges shape that's the people [TS]

01:15:42   don't like to think about that in that [TS]

01:15:44   relationship but it's there you know you [TS]

01:15:47   wonder about those dollar signs in Ruby [TS]

01:15:49   oh they're there people a little at sign [TS]

01:15:51   in front of it I know you don't use them [TS]

01:15:52   because they're in global and stuff but [TS]

01:15:53   they're there anyway we won't talk about [TS]

01:15:55   the lineage but they were like look at [TS]

01:15:58   look at Ruby we can do this awesome [TS]

01:15:59   stuff look this is method missing thing [TS]

01:16:01   and we can pass a block to a function [TS]

01:16:03   and it gets like you can call it back [TS]

01:16:05   and it's this awesome and the pearl [TS]

01:16:07   people roll in their eyes and be like oh [TS]

01:16:08   great so you discovered that isn't that [TS]

01:16:10   awesome [TS]

01:16:10   and we Anna this is stuff that's been in [TS]

01:16:12   Pearl is old hat and pearl like the [TS]

01:16:15   autoload and you know dealing with [TS]

01:16:17   closures and stuff that it's like that [TS]

01:16:19   was like a decade ago guys you know and [TS]

01:16:20   then it's the same way the list people [TS]

01:16:22   are and the small talk people are [TS]

01:16:23   rolling their eyes at the Pearl people [TS]

01:16:26   go [TS]