15: The Bridges of Siracusa County


  [Music] [TS]

  the name of this show is hypercritical [TS]

  it's a weekly talkshow ruminating on [TS]

  exactly what is wrong in the world of [TS]

  Apple and related technologies and [TS]

  businesses john siracusa and i i'm dan [TS]

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

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

  companies like Apple right as we talked [TS]

  about here it's not just us [TS]

  yeah and the fact is John nothing is so [TS]

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

  that's what we say that's true and we [TS]

  would like to thank the Intuit small [TS]

  business blog and their mobile app as [TS]

  well as campaign monitors world view for [TS]

  making the show possible will tell you [TS]

  more about those as the show progresses [TS]

  so what are we complaining about today [TS]

  first day of you right you get a lot of [TS]

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

  too much today I turned a lot because I [TS]

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

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

  short now right got had to had some [TS]

  requests that the show be Whedon that [TS]

  not not cutting it short that's not the [TS]

  right thing but just make keeping track [TS]

  of time a person who asked that didn't [TS]

  even mention my show so he probably [TS]

  doesn't even listen I don't think he's [TS]

  aware of your show he probably looked at [TS]

  the runtime of it and said I can't [TS]

  listen it might have been short not that [TS]

  long not doing to our things I can use [TS]

  bond tacked on to the end or anything [TS]

  yeah I think you got of all the shows I [TS]

  think you are probably the most time [TS]

  sensitive there you go so I feel no [TS]

  compunction to try to cut it short all [TS]

  right don't cut it normal any shorter [TS]

  that I normally do don't do anything [TS]

  else don't don't change a thing okay so [TS]

  follow up time so we missed last week [TS]

  because I was on vacation you were on [TS]

  vacation we tried to schedule it before [TS]

  you had you had told me six or seven [TS]

  weeks earlier that you were going to be [TS]

  on vacation I put it on the calendar and [TS]

  then I didn't I didn't remember or [TS]

  something so it's it was not your fault [TS]

  that we didn't have a show it's probably [TS]

  mine but but the fact was you were not [TS]

  available at the regular time and I [TS]

  didn't realize that we had changed it so [TS]

  anyway so I'm going back to shows for [TS]

  some follow up stuff are two weeks but [TS]

  it's just one show so last time what [TS]

  we're talking about we're talking about [TS]

  objective-c and stuff like that and [TS]

  high-level language is low-level [TS]

  languages yeah [TS]

  I thought it was a shame that some of [TS]

  that stuff there was at least two or [TS]

  three good points that bled over into [TS]

  the after dark so I put in the show [TS]

  notes like this week the link to the [TS]

  after dark most of which is just typical [TS]

  after dark stuff but there are one or [TS]

  two good points in there about the [TS]

  objective-c stuff that I wish I had [TS]

  gotten into the regular show huh [TS]

  mostly having to do with how the people [TS]

  at Apple how the employees at Apple are [TS]

  probably not properly motivated to [TS]

  resolve the situation talked about in [TS]

  the previous show so I want to go into a [TS]

  now for time purposes but if you want a [TS]

  little bit more on that topic I suggest [TS]

  checking out the after dark which is [TS]

  that that's super hidden link but if you [TS]

  go to the show notes for the show you [TS]

  will find the link to it and I would [TS]

  also suggest subscribing to that because [TS]

  it's usually pretty funny it's not just [TS]

  all hypercritical after dark it's all [TS]

  sorts of shows a lot of cursing [TS]

  everybody who asks for cursing and [TS]

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

  profanity no holds barred there it's [TS]

  marked as explicit it's not part of the [TS]

  master feed it's like a little Easter [TS]

  egg you gotta go find it it'll find it [TS]

  so it's interesting that when I did the [TS]

  original series on the the Copeland 2010 [TS]

  stuff a whole bunch of articles like [TS]

  many years ago and I got a lot of [TS]

  responses eventually asking about Mac [TS]

  Ruby mm-hmm and which I I should also [TS]

  mention I erroneously referred to as [TS]

  JRuby I said I knew what you meant you [TS]

  knew what I meant and you were too [TS]

  polite to correct me I clearly know the [TS]

  difference I've used both I meant Mac [TS]

  Ruby thanks for the thousands of emails [TS]

  and Twitter comments about that I do [TS]

  know the difference and thank you for [TS]

  reminding me yeah so the Mac group [TS]

  people emailed a lot this was many years [TS]

  ago back when Mac Ruby was younger and [TS]

  their email enthusiasm kind of tapered [TS]

  off over time but then when I brought it [TS]

  up on the show they came back and they [TS]

  said hey what about Mac Ruby partly my [TS]

  fault for forgetting to talk about Mac [TS]

  Ruby because it is definitely we're [TS]

  talking about a well a show I talked [TS]

  about how bridges stink on you have a [TS]

  bridge to an API that's written for one [TS]

  language where you get to write to it in [TS]

  another language and bridge connects the [TS]

  two things together [TS]

  and I said I described lots of things [TS]

  that are bad about bridges and how you [TS]

  don't get to use the the cool features [TS]

  of the high-level language that you want [TS]

  to use because you're too busy doing [TS]

  things in terms of the lower-level [TS]

  language right so the nigra people then [TS]

  as now bring up the points that a lot of [TS]

  things I was asking for Mac would be [TS]

  deliver so there's links in the show [TS]

  notes to Mac repeat you should check it [TS]

  out but just some examples like you [TS]

  don't have to deal with you know making [TS]

  NS strings or whatever when you do in [TS]

  cocoa programming and Mac Ruby because [TS]

  the the bridge makes ruby strings into [TS]

  bridged over to NS mutable strings and [TS]

  the Ruby hashes are really NS mutable [TS]

  dictionaries under the covers and the [TS]

  Ruby objects are really Objective C [TS]

  objects so you're not just using like [TS]

  the skin of the language to call api's [TS]

  in some other language they've taken a [TS]

  lot of the native data structures and [TS]

  features and interesting tidbits in Ruby [TS]

  and found in Objective C equivalent and [TS]

  mapped it to that hmm now and also this [TS]

  is the other thing people like to bring [TS]

  up is hey this is an Apple project like [TS]

  Apple developers are working on it it's [TS]

  the people you know it's not just some [TS]

  random third party thing it's actually [TS]

  under the auspices of Apple in some [TS]

  fashion a lot of Apple's open-source [TS]

  stuff it's hard to tell what is you know [TS]

  just a project with some people at Apple [TS]

  wanted to do and it bosses let them do [TS]

  versus what is a strategic initiative [TS]

  that's poor important for the entire [TS]

  company and often a project will start [TS]

  in one way and transition to the other [TS]

  thing like LLVM probably started life as [TS]

  let's just you know hire this guy and [TS]

  check out this type of thing and then [TS]

  there was a you know an effort to [TS]

  convince the powers-that-be and [TS]

  eventually the entire company that hey [TS]

  we're going to transition our entire [TS]

  compiler strategy to this new thing and [TS]

  here's how we're going to do it and lo [TS]

  and behold here we are today and we're [TS]

  almost completely transitioned so Mac [TS]

  Ruby could be like that someday but the [TS]

  what I said about Mac Ruby many years [TS]

  ago still holds today and that I still [TS]

  don't think a bridge is the is the right [TS]

  answer [TS]

  cocoa is still designed for objective-c [TS]

  and even if you're mapping you know your [TS]

  types from the higher-level language to [TS]

  low-level one you're still dealing with [TS]

  you know an disputable strings under the [TS]

  covers and [TS]

  yeah no it's the API is made it's not a [TS]

  ruby API if you look at the API you [TS]

  would say well that reminds me of you [TS]

  know Rails or some other API that's [TS]

  idiomatic at like like the bills for the [TS]

  Ruby language you look at it and say [TS]

  well that that sure looks a lot like [TS]

  objective-c to me in this all sorts of [TS]

  api's but there's no reasonable way to [TS]

  bridge you just have to call these [TS]

  methods and with these name parameters [TS]

  that look like a projective seeing like [TS]

  man why do we need all this parameters [TS]

  why am i passing in a value that's going [TS]

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

  going to have the error written into it [TS]

  and all sorts of stuff like that it's [TS]

  sort of not the Ruby way but you still [TS]

  have to write to those languages there's [TS]

  the two layers of debugging problem or [TS]

  anytime you have sort of a bridge [TS]

  language you would like to debug it the [TS]

  Ruby level but the API and you're [TS]

  executing code is executing at the [TS]

  objective-c level and so if you're using [TS]

  gdb or LDB or something you're not [TS]

  debugging Ruby you're debugging lower [TS]

  level than that so then they have to [TS]

  write a higher level of debugger but [TS]

  sometimes you might want to look at the [TS]

  lower level stuff so you have two layers [TS]

  of debuggers to deal with and if your [TS]

  bugs in the bridge that's like the worst [TS]

  possible situation when there are bugs [TS]

  in the bridge itself and you're trying [TS]

  to debug with the problem is and there's [TS]

  the fact that to write a reasonable [TS]

  cocoa program you're not just writing to [TS]

  cocoa you're also doing your core [TS]

  graphics and core foundation and other [TS]

  API is to really are lower level and you [TS]

  can bridge them too but it's even bigger [TS]

  mismatch between what Ruby expects and [TS]

  what these you know native C API is like [TS]

  sounding Objective C it's just plain C [TS]

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

  that then the developers feel like [TS]

  they're being kept away from the power [TS]

  tools like oh I really want to use core [TS]

  graphics to do some drawings here but [TS]

  the Ruby language makes it discourages [TS]

  me from reaching down to do that or [TS]

  makes it more difficult and more [TS]

  cumbersome or doesn't feel like I'm I'm [TS]

  you know doing things the right way and [TS]

  there's also the the non-native problem [TS]

  you're like well I'm going to write a [TS]

  cocoa application well are you going to [TS]

  use like the native language for writing [TS]

  cocoa applications Objective C or you [TS]

  can use a bridge language because you [TS]

  need a crutch sure because you're a [TS]

  whimper because but you know it's at [TS]

  this macho this macho thing where there [TS]

  would be is divided between the [TS]

  old-school people like I'm writing a [TS]

  real native cocoa application and you're [TS]

  not because you're using this other [TS]

  thing [TS]

  and with all that said it's like would [TS]

  experienced objective-c developers see [TS]

  enough reason to switch like this [TS]

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

  programs today are comfortable with [TS]

  Objective C so there has to be something [TS]

  pretty significant to make them switch [TS]

  you have that a carrot as well as a [TS]

  stick now Apple could just force [TS]

  everyone to switch and so you know Mac [TS]

  Ruby is going to be the thing it's our [TS]

  new high-level language is slowly going [TS]

  to transition away from you know C based [TS]

  languages and and this is the path and [TS]

  you're gonna have to go to it that's the [TS]

  stick version but the carrot has to be [TS]

  hey awesome Objective C developers who [TS]

  have made our platform what it is here's [TS]

  the good things that await you if you [TS]

  stop writing your your code in this [TS]

  start writing it in that I think that's [TS]

  a tough sell [TS]

  because I mean it's hard enough for [TS]

  Apple to even get the real old-school [TS]

  Objective C guys to use the dot syntax [TS]

  for properties let alone to switch to [TS]

  like a high-level language into mints [TS]

  then there's you know there's a good [TS]

  reason to do that so I have to come down [TS]

  a similar position as I did many years [TS]

  ago on Mac Ruby is that I don't think [TS]

  bridges are the answer and I don't think [TS]

  my Mac Ruby is the answer certainly it's [TS]

  the best bridge I've seen and it has the [TS]

  most promise and if Apple wanted to make [TS]

  it work they could but I don't think [TS]

  it's the best solution I think it's kind [TS]

  of like a half measure and maybe that's [TS]

  something in favor of it in that if [TS]

  you're going to transition to something [TS]

  don't make this big giant leap I think I [TS]

  come down the other side I say that the [TS]

  big giant leap is the only way you're [TS]

  going to the only way you're gonna have [TS]

  a carrot big enough to get people to [TS]

  come over you know it's it to say this [TS]

  is totally different than what you [TS]

  expected it's awesome in ways that you [TS]

  haven't even imagined and it's so unlike [TS]

  what you've done before that it you [TS]

  won't end up making unfavorable [TS]

  comparisons to the objective-c that [TS]

  you're used to and then it'll be a [TS]

  gradual transition to whatever this [TS]

  thing is but as I said in the previous [TS]

  show I have no idea what that thing is [TS]

  so it's easy for me to say I'll just [TS]

  make it awesome and really radically [TS]

  different than what's out there now and [TS]

  everyone want to switch to it [TS]

  so that's Mac Ruby I I think it's it's a [TS]

  plausible contender Apple can make it [TS]

  work but that I so far don't see [TS]

  anything that makes me think Apple has [TS]

  blessed that as the next generation I [TS]

  think it's definitely in the interesting [TS]

  experiment phase and I haven't seen any [TS]

  moves from Apple that make me think [TS]

  otherwise what did you think about if if [TS]

  you remember [TS]

  when I guess I don't say when Mac os10 [TS]

  was gaining prominence as a really cool [TS]

  place to build apps but it was at that [TS]

  turning point when things were were [TS]

  really Apple was really really pushing [TS]

  to try and get as many people on board [TS]

  with developing Mac OS 10 applications [TS]

  in any capacity and if you remember and [TS]

  we talked about this a little bit you've [TS]

  touched on it again there was the the [TS]

  Java you could use jaw you could write [TS]

  absent Java right there inside of the [TS]

  you know the SDK you could just write in [TS]

  Java and they never really they made a [TS]

  big deal out of the fact that they had [TS]

  that and that you could do that but they [TS]

  never really really got in there and [TS]

  supported it they never really had fully [TS]

  fluid you know fleshed out documentation [TS]

  for it and then it they just kind of [TS]

  swept it under the rug and forgot about [TS]

  it [TS]

  and the people who were you know like [TS]

  the big nerd ranch guys you know and [TS]

  those books always said look if you're [TS]

  going to build apps in Mac OS 10 just [TS]

  bite the bullet learn objective-c don't [TS]

  do it in Java it's not as good and some [TS]

  of the first versions of the encoder [TS]

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

  should say Mac OS 10 apps that I built [TS]

  we actually had some parts of it that [TS]

  were in Java and it was true it just [TS]

  made more sense to just do in an [TS]

  objective-c [TS]

  don't you need apples involvement to [TS]

  rienne commitment to really make that [TS]

  successful to know that you're investing [TS]

  in something that's that's long-term as [TS]

  a developer at that time I wasn't coming [TS]

  from a position of strength with respect [TS]

  to languages they were like you know [TS]

  they had the capability to have a Java [TS]

  bridge Java was really popular back then [TS]

  and they were trying to figure out how [TS]

  do we get developers and if the Java was [TS]

  going to be the way that they did it [TS]

  someone an apple thought that that would [TS]

  be a good idea and that the powers to be [TS]

  said okay fine you know let's give that [TS]

  a try we're going to do the carbon thing [TS]

  we're going to do cocoa right and you [TS]

  want you think you can do a job a bridge [TS]

  we'll try that too just because they [TS]

  were hedging their bets they want to say [TS]

  you know we got to do everything we can [TS]

  to get people to develop this I don't [TS]

  think they knew what the result would be [TS]

  because they were coming from a ton of [TS]

  developers who wrote Mac toolbox [TS]

  applications right on power plant or [TS]

  whatever so they had to have Carbon for [TS]

  them like they [TS]

  learn that lesson so the Apple guys were [TS]

  saying it you know koko necks may be [TS]

  great but there's not that many necks [TS]

  developers in the world and we're not [TS]

  sure that we can convince our huge [TS]

  stable of experienced Mac developers to [TS]

  switch to this thing that you love so [TS]

  much [TS]

  so that was one bet and then someone [TS]

  else is saying well job is really [TS]

  popular and there's tons of java [TS]

  programmers in the world so let's try [TS]

  that let's see if we can get you know a [TS]

  you know hey you can write Mac OS 10 [TS]

  applications in Java and they'll be [TS]

  awesome so give that a try and you [TS]

  objective-c guys you're next people [TS]

  we're going to make them use your API [TS]

  but we're just going to use a different [TS]

  language that I want to learn Objective [TS]

  C so they had all these irons in the [TS]

  fire the fact that the Objective C [TS]

  proponents were inside the company and [TS]

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

  came to dominance probably helped but it [TS]

  also helps that you know people did the [TS]

  math may said well I might as well just [TS]

  learn this objective-c thing it's not [TS]

  two differents got some weird square [TS]

  brackets but it's mostly just C and most [TS]

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

  C++ to Objective C than to go from C C++ [TS]

  to Java and the final thing is the Java [TS]

  thing was a bridge and bridges stink it [TS]

  gets back to my whole you know bridge [TS]

  thing they don't want to do it's not [TS]

  like the real API it's not the real [TS]

  language do is it was a bridge and you [TS]

  know like you said when you look at the [TS]

  docs Doc's talked about Objective C [TS]

  because they were pre-existing things [TS]

  they didn't talk about Joplin it was [TS]

  just a big mess so the Java bridge fell [TS]

  by the wayside had to be supported for [TS]

  many many years just out of respect for [TS]

  the people who did sort of put some time [TS]

  into it but eventually they dropped it [TS]

  and you know carbon has gone by the [TS]

  wayside too like we went through the [TS]

  transition the bottom line is that they [TS]

  moved everybody into a cocoa and [TS]

  objective-c they found their winner in [TS]

  that in that competition but it is [TS]

  interesting that they had like they had [TS]

  basically a memory manage language it [TS]

  just didn't work out for reasons not [TS]

  really related language mostly related [TS]

  to the fact that it's a bridge and [TS]

  because they were using that language to [TS]

  write to an API that was made for [TS]

  Objective C I'm with you all right I've [TS]

  got one more so would you would you then [TS]

  go so far as to say John that the the [TS]

  concept of of a bridge is a bad concept [TS]

  and Java is proof of that or you [TS]

  wouldn't you go that far [TS]

  I think the concept I think bridges are [TS]

  bad in general [TS]

  doesn't mean you can't make it work if [TS]

  they like I said if they really wanted [TS]

  to and they use Mac Ruby as like their [TS]

  transition strategy and they slowly by [TS]

  steps chant you know develop the API [TS]

  until eventually you know many many [TS]

  years down live people people are [TS]

  literally writing Java applications and [TS]

  it's no longer bridge like they [TS]

  transitioned away from all the memory [TS]

  dangerous uses and stuff through a [TS]

  series of deprecations it could be done [TS]

  but that doesn't mean bridges aren't bad [TS]

  that just means that they may have [TS]

  advantages in terms of getting you from [TS]

  point A to point B through a series of [TS]

  steps but the I do not think they're [TS]

  they're good there are things hard about [TS]

  clean breaks as well you could kind of [TS]

  say that Objective C is not is not a [TS]

  bridge from C C++ but it was a nice [TS]

  transition because they share the same [TS]

  base language I don't know there's ever [TS]

  been a successful bridge stringent but I [TS]

  feel like it could be done but now I'm [TS]

  not I'm not a fan of bridges as we'll [TS]

  get to more when we get to the main [TS]

  topic imma do a quick aside here if you [TS]

  think we have time yeah I'm Ireland [TS]

  stuff from back to work last week sure [TS]

  this is a strange aside in the middle of [TS]

  show by programming languages but I want [TS]

  to be timely because if I keep it around [TS]

  for weeks it will make any sense so last [TS]

  week [TS]

  Rutland man who does the show back to [TS]

  work with you had a blog post about his [TS]

  ongoing struggles for over the book [TS]

  project he's working on and for people [TS]

  who don't know Merlin man is a [TS]

  Productivity expert if you want to put [TS]

  that in quotes I'm sure he would hate [TS]

  that description but I don't know how [TS]

  else to encapsulate what he does but he [TS]

  he writes and gives talks about [TS]

  productivity and related topics and last [TS]

  week he did this blog post that [TS]

  explained the problems he was having [TS]

  getting his current work project done to [TS]

  do a book and you needed to show about [TS]

  it and then after dark as well which are [TS]

  in the show notes and he had the the [TS]

  preview page open for his show where you [TS]

  get the people listeners get to put [TS]

  comments before the show airs and then [TS]

  you talked about the comments on the air [TS]

  and a couple of comments I didn't write [TS]

  any comments but I went through the [TS]

  comments before the show and I did click [TS]

  that little like button yeah on some of [TS]

  the ones that I thought were good [TS]

  mystery most of the ones most of the [TS]

  ones I liked or ones that were [TS]

  challenging questions where they would [TS]

  say the gist that most of them was hey [TS]

  Merlin man your [TS]

  you're this productivity expert but here [TS]

  you are not able to get this book done [TS]

  that's you know you're super late on and [TS]

  you kind of seem like you're bailing out [TS]

  on it how are we supposed to trust [TS]

  anything you say about productivity when [TS]

  in your real life you can't obviously [TS]

  can't be productive and there were [TS]

  several people asking that that's like [TS]

  the obvious question about this whole [TS]

  thing and you talked about it a lot on [TS]

  the show and the reason I click those [TS]

  like buttons was not that I agreed with [TS]

  the people who were saying it but it but [TS]

  that I wanted him to confront those [TS]

  points head-on you know because that's [TS]

  that's the the question that jumps right [TS]

  out at you immediately about this whole [TS]

  thing and and he did that for the most [TS]

  part he gave you no answer the questions [TS]

  head-on and gave answers that he thought [TS]

  people wanted to hear you know he wasn't [TS]

  shying away from it if anything he was [TS]

  trying to stay on topic [TS]

  I wouldn't he wouldn't let you move on [TS]

  to the next questions he want to feel [TS]

  like he addressed it entirely so that [TS]

  was good but the other reason I picked [TS]

  those those questions is that I felt [TS]

  like I knew what the answer was going to [TS]

  be like I wanted to hear him say you [TS]

  know I felt like if someone had told me [TS]

  defend Merlyn man I would have a [TS]

  vigorous defense for his his actions and [TS]

  and what he'd done with the book and [TS]

  everything I don't want to hear him say [TS]

  that too right he got out most of the [TS]

  points but one of them that he missed [TS]

  that I wanted to throw out there [TS]

  here's that but I would have sent if I [TS]

  was in his shoes and someone said the [TS]

  same thing to me here's what I would [TS]

  have said about that ah you know so I [TS]

  would have said that yeah the [TS]

  expectation is that if you some guy [TS]

  writing a book about productivity is [TS]

  going to be written by a Productivity [TS]

  expert that's going to be like somebody [TS]

  who's really good at being productive [TS]

  right and that's what all those [TS]

  questions were based on because people [TS]

  feel cheated and duped or whatever when [TS]

  they see the problems that he's having [TS]

  in real life but what I would say to [TS]

  that is that in reality a person writing [TS]

  a book about productivity is most likely [TS]

  someone who struggle with productivity [TS]

  himself and not just someone who [TS]

  struggle because lots of people struggle [TS]

  with productivity if you're writing a [TS]

  book about productivity you're probably [TS]

  someone who struggle with productivity [TS]

  and also someone's who's smart enough [TS]

  and self-aware enough to explore while [TS]

  you're struggling with it and come up [TS]

  with answers right that's the [TS]

  combination you need you need someone [TS]

  who having a problem with it and someone [TS]

  who's really smart [TS]

  who's going to think about why am I [TS]

  having a problem is what's the deal here [TS]

  if you've never had a problem with [TS]

  productivity and you're super productive [TS]

  and everything you will [TS]

  probably not have much deep insight into [TS]

  what helps make people productive [TS]

  because it would just be like I don't [TS]

  know I just sit down I do work like [TS]

  you're not gonna write a book about [TS]

  Prague - because you have no idea how it [TS]

  works you've never even given it any [TS]

  thought right it's like you had an [TS]

  interview with a Horace they do on the [TS]

  pipeline recently yeah and when he said [TS]

  was like basically mistakes or how we [TS]

  learn which is topic bit up we've talked [TS]

  about on the show before and so what [TS]

  Merlin's [TS]

  experience do basic science Merlin is [TS]

  still making mistakes which means that [TS]

  Merlin is still learning like if you [TS]

  think you know everything about [TS]

  productivity and you're just gonna make [TS]

  pronouncements from the mountaintop you [TS]

  basically stopped learning like you [TS]

  don't want to read that guy's book it's [TS]

  gonna be like I know everything there is [TS]

  to know about productivity I'm going to [TS]

  lay it out for you and here it is right [TS]

  because you think you've got it figured [TS]

  all all figured out right it's kind of [TS]

  similar to the stereotype you hear that [TS]

  like you know psychology majors in [TS]

  school are the people most likely to [TS]

  have psychological problems that that's [TS]

  just the way the world works if you're [TS]

  interested in the topic or have any [TS]

  insight into topics probably something [TS]

  you've dealt with yourself and you know [TS]

  struggle with and it's not just a [TS]

  struggling I guess that you have to be [TS]

  someone who has these problems and also [TS]

  someone who's super smart and self-aware [TS]

  that's how all you know great books and [TS]

  investigations into anything that has [TS]

  anything to do with like you know [TS]

  personality wise or psychological things [TS]

  or any sort of you know human type of [TS]

  endeavor not just like writing about [TS]

  math or something right right the people [TS]

  who have who have struggled with it and [TS]

  thought about it and come up with [TS]

  answers and who continue to do so who [TS]

  have the most insights and I wish she'd [TS]

  made that point in the showing since he [TS]

  didn't I'm making that point in the show [TS]

  so for all the people who are thinking [TS]

  they don't want to read a Productivity [TS]

  book by someone who can't finish a book [TS]

  that's exactly the one you do want to [TS]

  read because when it's done you will see [TS]

  that it has the you know the scars of [TS]

  experience have been built into that [TS]

  book that's a great point I mean I in a [TS]

  way you almost feel like a book like [TS]

  this I don't know maybe maybe this [TS]

  sounds weird but you almost want it to [TS]

  be hard you know what I'm saying [TS]

  yeah I mean this is like I said if it's [TS]

  easy if it's some dude who's like hasn't [TS]

  thought about productivity in ten years [TS]

  because he's been given the same talk at [TS]

  companies for ten years and he thought [TS]

  he figured it out ten years ago and he [TS]

  wrote in a little formula and he got a [TS]

  best-selling book and hasn't given a day [TS]

  of thought since then [TS]

  that's not useful you know you have to [TS]

  still be doing it you have to still be [TS]

  thinking about it to you know to have [TS]

  the insights to share with people [TS]

  because these these things change you [TS]

  know the environment changes technology [TS]

  changes all of our lives change you know [TS]

  you come to different points in your [TS]

  life you can you know relate to things [TS]

  differently when you're you know older [TS]

  and a father than when you're younger [TS]

  and stuff you have to always keep [TS]

  learning it always keep making mistakes [TS]

  let's make mistakes they'll be the name [TS]

  for a show yeah [TS]

  if only somebody would do that yeah all [TS]

  right are you ready for main topic yeah [TS]

  - thirty minutes yeah this is about what [TS]

  we do well let's do our first well thank [TS]

  our first sponsor it's the into its [TS]

  small business blog if you're in a small [TS]

  or medium size business not a large one [TS]

  it's probably not for you because they [TS]

  talk about things like starting a [TS]

  business running a business social media [TS]

  integrating it with marketing and that [TS]

  kind of thing so it really does appealed [TS]

  I think the people who run the small in [TS]

  the medium-sized businesses well you can [TS]

  go there you can go to blog intuit calm [TS]

  you can read articles about this they do [TS]

  interviews with you know up-and-coming [TS]

  business leaders they even interviewed [TS]

  me John did you read that one I don't [TS]

  think I did they interviewed me there [TS]

  and they do that they entered they do [TS]

  interviews and now they've gone mobile [TS]

  so there is an Intuit small business [TS]

  blog iOS app which is very handy of [TS]

  course it works for your iPhone your [TS]

  iPod Touch if you're like John siracusa [TS]

  it works for an iPad and you can read [TS]

  the blog articles you can do full-text [TS]

  searches you could do tons of stuff and [TS]

  it's a brand new app they really want [TS]

  you to go out there and kick the tires [TS]

  on this so you can download that just by [TS]

  searching for Intuit blog in the iTunes [TS]

  App Store or by going to blogged on [TS]

  Intuit calm it's well worth your time to [TS]

  check this out a lot of really valuable [TS]

  articles and they have told me that they [TS]

  are coming in with an Android version of [TS]

  the app as well so go check that out [TS]

  thanks to them very much for making this [TS]

  show possible now on to the topic the [TS]

  real main topic the Royal Wedding is [TS]

  that's not there is that thrill I think [TS]

  that'd be great thanks to Robert Hoglund [TS]

  in the chat room for that idea no that [TS]

  is not the main topic I was I was going [TS]

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

  for that I was what I did watch some of [TS]

  it [TS]

  sorry to disappoint you guys that have [TS]

  such a dim awareness that this thing is [TS]

  even taking place yeah but I would have [TS]

  nothing to say about it believe it or [TS]

  not today believe it or not it's sort of [TS]

  a continuation of the the Copeland 2010 [TS]

  show because at the end of that show we [TS]

  started to talk a little bit about [TS]

  programming languages and I thought that [TS]

  was a topic that was worth the whole [TS]

  show on its own [TS]

  some people complain last time that [TS]

  talking about programming stuff was too [TS]

  esoteric and like not in character for [TS]

  the show yeah but just just so happens [TS]

  that we picked less techy topics to [TS]

  begin with it's definitely in character [TS]

  for me it is you're you are a programmer [TS]

  that's what he does what I do for a [TS]

  living so I don't I don't feel like it's [TS]

  out of character so that this is gonna [TS]

  be part of the things that we talk about [TS]

  on the show is programming language type [TS]

  stuffing if you're not a developer and [TS]

  don't care about programming languages [TS]

  then maybe you can skip this week maybe [TS]

  I still think it would be interesting [TS]

  yeah but this is definitely what I'm [TS]

  saying is this is definitely not out of [TS]

  character for this for the show I don't [TS]

  think alright I don't I don't think so [TS]

  not at all as I said in the past show [TS]

  this is a topic that I wanted to write [TS]

  about for a long time but I could just [TS]

  never get to it mostly because it is [TS]

  kind of out of character for what I tend [TS]

  to write on ARS technica and elsewhere [TS]

  as I don't tend to write about [TS]

  programming language that's more of a [TS]

  thing you expect to see on either a [TS]

  personal developer blog which I don't [TS]

  really have one of or a developer [TS]

  oriented site which are static and [TS]

  Macworld and so on or not [TS]

  so I don't get to write about it but I [TS]

  would like to talk about it um so here [TS]

  we go so in a past show talked a little [TS]

  bit about how geeks tend to like a [TS]

  meritocracy I think it was in the show [TS]

  where I was talking about how they felt [TS]

  it was unfair that Windows 1 the desktop [TS]

  because it wasn't and undeserved victory [TS]

  because Mac operating system was better [TS]

  it was the show where we psychoanalyze [TS]

  gruber I forgot what episode that was [TS]

  but that tends to be the case the geeks [TS]

  think that the technically superior [TS]

  solution should win and and as we know [TS]

  it often doesn't I know in programming [TS]

  languages there are a weird case because [TS]

  there's something that only geeks care [TS]

  about but programming languages almost [TS]

  never become popular based on their [TS]

  merits because there are so many more [TS]

  important things than that so it's kind [TS]

  of a weird situation where [TS]

  this thing that only geeks care about [TS]

  it's never a meritocracy and that's why [TS]

  it's a source of lots that's one of the [TS]

  many reasons why it's a source of lots [TS]

  of tension in the geek community these [TS]

  arguments about which language is better [TS]

  than another and so on and so forth so [TS]

  here are some of the more important [TS]

  things that can make a programming [TS]

  language popular so when you have a you [TS]

  know what platform is this language the [TS]

  official language of that's a big thing [TS]

  that can help programming language [TS]

  obviously objective-c would probably be [TS]

  nowhere if it wasn't the official [TS]

  language of the Mac and iOS platforms [TS]

  the only reason a lot of people have [TS]

  especially but in iOS the only reason [TS]

  anyone has learned objective-c is [TS]

  because this wouldn't need to do if you [TS]

  want to write an iPhone app can use this [TS]

  language in more than one place is kind [TS]

  of the opposite like if I learn this can [TS]

  I only write for iOS or can I use it [TS]

  someplace else and this is part of [TS]

  what's made C and C++ ridiculously [TS]

  popular in the old days but so you could [TS]

  write C tons of places like it seemed [TS]

  like it at one point every single [TS]

  platform you see as it's you know native [TS]

  systems programming language and C++ [TS]

  differently and then later Java was like [TS]

  oh you learned Java but you can use it [TS]

  everywhere you can use it on all the web [TS]

  development and server side code and [TS]

  maybe client-side code to knows but you [TS]

  weren't just learning a language for one [TS]

  particular thing another thing can help [TS]

  languages like can I create a new kind [TS]

  of application with this language so if [TS]

  I learn this language that I never [TS]

  learned before can I write an [TS]

  application that I can't write in any of [TS]

  the languages that I know now or can't [TS]

  write easily a good example is that like [TS]

  CGI at the dawn of the web you could [TS]

  write a CGI program and see and people [TS]

  did but it was so clearly not not the [TS]

  thing to do so that was a lot of what [TS]

  gave pearls popularity and they're gonna [TS]

  say like you know CGI web it's great but [TS]

  seriously don't write a C program to [TS]

  parse HTTP headers and pillow stuff [TS]

  here's this other language and it does [TS]

  that stuff much easier and look how [TS]

  short this is I can give you a nice [TS]

  little CGI in like a little page of code [TS]

  and hey you don't need to compile it uh [TS]

  and that was a new kind of application [TS]

  that you couldn't write with you know a [TS]

  compiled thing or C or C both of us or [TS]

  was it was so cumbersome that you didn't [TS]

  want to basically another thing that can [TS]

  help languages it is [TS]

  can I try this hot new thing if I learn [TS]

  this language rails is a great example [TS]

  of that rails it was hot and they're [TS]

  like well I really want to try this [TS]

  Rails thing like I know how to write web [TS]

  apps I'm writing about for years but [TS]

  this looks like a cool new way to write [TS]

  web apps and I guess to try this rails [TS]

  things I haven't learned Ruby well okay [TS]

  I'll do that it was like you know call [TS]

  it a fad but it's not that's kind of [TS]

  route but you get the idea and the final [TS]

  thing I have my list here is is this one [TS]

  of only a few possible choices for doing [TS]

  this thing [TS]

  javascript is a good example of this if [TS]

  you want to write client-side web you [TS]

  know code for web applications [TS]

  your choices are basically JavaScript [TS]

  maybe Java for applets and maybe flash I [TS]

  guess but flash requires plugins and [TS]

  Java is this big bloated thing that [TS]

  nobody really like that's why no those [TS]

  took off so your choices are really [TS]

  limited if you want to write client-side [TS]

  web code you're basically be writing in [TS]

  JavaScript write or use or using a [TS]

  framework like CoffeeScript that turns [TS]

  it into JavaScript for you we'll talk [TS]

  about that okay so so the result is [TS]

  since most programming languages are not [TS]

  picked based on their merit so picked on [TS]

  these other tons much more important [TS]

  things the result of this is in my [TS]

  opinion most programming languages stink [TS]

  or in the best case they eventually [TS]

  stink that's the best case the worst [TS]

  that the normal case is that they stink [TS]

  from day one but you have to use them [TS]

  for one of those other reasons that's [TS]

  much more important and which is fine [TS]

  it's not saying you're miserable doing [TS]

  it over but the bottom line is that the [TS]

  language itself stinks and in the best [TS]

  case the day you start using a language [TS]

  it's actually awesome you really like it [TS]

  but then ten years down the line [TS]

  language advancement has moved on you're [TS]

  stuck using someone for one of those [TS]

  other reasons so that eventually this [TS]

  language comes to stink relative to [TS]

  everything else it's kind of like [TS]

  programming language the lifetime of a [TS]

  programming language gets tied to the [TS]

  API or platform lifetime right so you [TS]

  know the API or the platform will live [TS]

  for just decades sometimes but during [TS]

  that time the state of the art in [TS]

  languages it just has that you know [TS]

  advanced way past that and even just [TS]

  during the first few years it you know [TS]

  it doesn't ache long for people to see [TS]

  what it is about the language they're [TS]

  currently using it stinks when they look [TS]

  off to the side to see you know wow look [TS]

  at that cool thing they're doing over [TS]

  there well I can't use that because [TS]

  got a ride iOS applications that use [TS]

  objective-c or well I can't use that [TS]

  because I'm writing web applications and [TS]

  I gotta use JavaScript and numerous [TS]

  cases sometimes a language can suck for [TS]

  years and years even before it becomes [TS]

  popular so the javascript is a great [TS]

  example this JavaScript you know was [TS]

  introduced in that scape whatever was [TS]

  1.0 or ages ago javascript was [TS]

  introduced and it just sat there sort of [TS]

  unloved for years because I got a [TS]

  JavaScript I guess you can do some stuff [TS]

  to like you know validate forms or [TS]

  something but whatever right and it [TS]

  wasn't and it wasn't that great back [TS]

  then and then years and years later you [TS]

  know with better dom support and CSS and [TS]

  faster CPUs and better browsers and [TS]

  stuff suddenly javascript is hot it's [TS]

  like well now hey you know we've got we [TS]

  with all these advances in web engine [TS]

  technology and better CPUs and you know [TS]

  all these other things we can do with it [TS]

  dynamic HTML whatever buzzword doing [TS]

  bottom line is suddenly javascript [TS]

  became interesting but it still sucks [TS]

  this was still the same crappy language [TS]

  it was 50 years ago not 50 seems like 50 [TS]

  years ago Internet time is still the [TS]

  same credi language but now suddenly [TS]

  it's popular so it didn't even get a [TS]

  chance to be it was never good right and [TS]

  and then it sat there for years doing [TS]

  nothing until people even noticed it uh [TS]

  but now you know people need to get work [TS]

  done like they need to you need to use [TS]

  JavaScript so they want to transform the [TS]

  language into something that sucks less [TS]

  and this happened even before [TS]

  CoffeeScript or to talk about in a [TS]

  second this happened you know as soon as [TS]

  people started having to use JavaScript [TS]

  it's all right well I got to write [TS]

  JavaScript and dhtml is cool and I can [TS]

  do all these cool transformations and [TS]

  all most dynamic stuff or whatever but [TS]

  you know what I would like I would like [TS]

  keep it work like the language that I'm [TS]

  used to so I would like if it had a [TS]

  class-based inheritance instead of [TS]

  prototype based inheritance and I'd [TS]

  really like a nice way to define classes [TS]

  and methods and I really like to be able [TS]

  to subclass stuff and I really like to [TS]

  be able to define properties and do [TS]

  things without polluting the global [TS]

  namespace with variables and all these [TS]

  all the tricks that would learn like so [TS]

  that they very quickly started building [TS]

  this other language on top of JavaScript [TS]

  and they went by all sorts of different [TS]

  names and different API s and everyone [TS]

  who made any sort of library like use [TS]

  the library validating form so we're [TS]

  also going to define our own class an [TS]

  object system and here's how you define [TS]

  a class in our system and use that you [TS]

  define an object and here's how you doin [TS]

  heritance right and then you know seven [TS]

  different people did that so if you're [TS]

  using prototype they had one system and [TS]

  you know something else but but the way [TS]

  they did do was add the API [TS]

  people actually wanted to use because [TS]

  the Dom API the native Dom API who the [TS]

  w3c to find that or whoever define that [TS]

  it stinks it was just a huge verbose [TS]

  thing that nobody ever wanted to type [TS]

  and it was just you know inscrutable and [TS]

  had no convenience functions and it was [TS]

  just just bad so that you know people [TS]

  were wrapping the Dom ten different ways [TS]

  to Sunday you know like listen we know [TS]

  you're never going to use the Dom API [TS]

  but here's this nice little wrapper [TS]

  function to give that a try and jQuery [TS]

  is the big one they're like they did [TS]

  their own objects just something they [TS]

  did all solve the old stuff but in [TS]

  service of saying don't write to the Dom [TS]

  write to jQuery and we're going to [TS]

  define a really convenient API that you [TS]

  can use that it looks like magic and so [TS]

  now we're at the point today where [TS]

  people know jQuery but they don't know [TS]

  JavaScript right the someone did a [TS]

  presentation about that I think was like [TS]

  a jQuery problem or something I googled [TS]

  for it for a while and I couldn't find [TS]

  it but it's basically that you're [TS]

  raising your breed of programmers who [TS]

  thinks that jQuery is what their [TS]

  programming and have no idea this is [TS]

  this language into their called [TS]

  JavaScript that has its own rules and [TS]

  works in its own way now that's like the [TS]

  JavaScript is like the assembly code a [TS]

  CoffeeScript is another example take me [TS]

  to even farther and what's that other [TS]

  one that the cappuccino guys do [TS]

  objective J I think it's called where [TS]

  they're saying look the language is so [TS]

  irredeemably bad you're just gonna type [TS]

  text right we're gonna parse with our [TS]

  own little parser written in javascript [TS]

  turn into JavaScript for you and then [TS]

  execute that so that basically defining [TS]

  an entirely different language not just [TS]

  a new API not just a wrapper for other [TS]

  things but an entirely new language so [TS]

  bad is the underlying language is like [TS]

  don't even type in that language type [TS]

  essentially a big honking string and we [TS]

  will we will take your big honkin string [TS]

  and turn it into something all right and [TS]

  that gets at all that talks about [TS]

  bridges and everything like we know when [TS]

  you're stepping through the debugger and [TS]

  you know Firebug or whatever WebKit [TS]

  JavaScript debugger that's a JavaScript [TS]

  debugger that's not a coffee script [TS]

  debugger it's not a jQuery de barro god [TS]

  forbid you ever step into a jQuery [TS]

  function you'll know there be dragons [TS]

  you do not want to be into that code [TS]

  right if you have some sort of problem [TS]

  in the middle of jQuery you know even [TS]

  when it's not minima minified or [TS]

  anything like that they just highlight [TS]

  the problems of bridges and stop and [TS]

  CoffeeScript and objective J similar [TS]

  type things like you know you're not [TS]

  going to get Apple or Google or whoever [TS]

  to build a coffee script debugger into [TS]

  into their browser unless you really [TS]

  take over [TS]

  the world with your new language that [TS]

  you made up that eventually compiles [TS]

  into JavaScript [TS]

  Google is even worse but they do Java [TS]

  that compiles into JavaScript I don't I [TS]

  mean think about how they do bug that [TS]

  but that's that's Google's problem so [TS]

  the moral of story is that every [TS]

  existing popular language has something [TS]

  terrible about it or many make things [TS]

  terrible about it [TS]

  and it's usually really easy for [TS]

  developers to see what's wrong with this [TS]

  language not not the API is not what you [TS]

  can do with it you know people like [TS]

  these things but just like the language [TS]

  isolate the language itself and say is [TS]

  there anything bad about the language [TS]

  taken in isolation and there always is [TS]

  and it seems like as these languages [TS]

  have stagnated and been tied to these [TS]

  platforms and api's for years and years [TS]

  we've you know made little advances [TS]

  along the side lines and everything and [TS]

  you know academic circles research [TS]

  circles but even just trying things out [TS]

  for real with you know little niche [TS]

  languages and stuff like that we sort of [TS]

  collectively decided on what is good and [TS]

  then when we collectively decide on what [TS]

  is good we can look at the language and [TS]

  say well this thing doesn't have this [TS]

  good thing which we've all pretty much [TS]

  agreed takes a long time to agree on [TS]

  this takes you know sometimes years and [TS]

  years forever to agree that something is [TS]

  good but eventually most people agree so [TS]

  I have a little list of things that I [TS]

  think that collectively programmers have [TS]

  agreed are good things plus or minus [TS]

  applicability obviously everything I [TS]

  list someone is going to say well if [TS]

  you're writing a device driver all that [TS]

  stinks yeah obviously you pick the [TS]

  language appropriate for a context so [TS]

  I'm speaking mostly of the highest of [TS]

  the high levels because languages only [TS]

  get higher level over time not lower [TS]

  level so the lower level languages [TS]

  retain their roles in the levels of [TS]

  distraction where they work best but the [TS]

  top of the stack the highest level [TS]

  languages that people most commonly [TS]

  write and just keep getting higher level [TS]

  and that's the place where the actions [TS]

  that's the place where the most language [TS]

  advancement happens so some things we've [TS]

  decided to good the Commuter decided [TS]

  memory management is good because even [TS]

  though you know at the lower levels yes [TS]

  you do need to management you know [TS]

  someone's got a managed memory manually [TS]

  underneath there someone's got to do it [TS]

  even if you're just writing the VM for [TS]

  your JavaScript engine so I want us to [TS]

  deal with it but if you're writing an [TS]

  application you don't want to deal with [TS]

  that so if you have some language that [TS]

  doesn't have memory management it starts [TS]

  to look a little bit creaky especially [TS]

  if you're writing like an application [TS]

  where it's like dude clicks the button [TS]

  and then this [TS]

  happens you know I don't have to manage [TS]

  memory to connect the dude clicks the [TS]

  button and then something happens thing [TS]

  I'm not I'm not writing vice drivers I'm [TS]

  not writing a VM for a language right [TS]

  one of the deal Denari management native [TS]

  strings pretty much everyone has agreed [TS]

  that native strings are a good thing you [TS]

  know we don't want to add strings to see [TS]

  this is just a byte array and blah blah [TS]

  native unicode strings at this point if [TS]

  you don't iran who doesn't have native [TS]

  you don't screen strings some poor [TS]

  suckers got to make a library that does [TS]

  and then it's just a big hairy mess and [TS]

  you have two different competing [TS]

  libraries and you get you know what were [TS]

  they called in MFC the HIPAA yeah yeah [TS]

  why character strings and all sorts of [TS]

  you know it's just a big mess native [TS]

  native unicode strings have to be in the [TS]

  language because they're so darn useful [TS]

  i think we that most people have agreed [TS]

  at this point for high level languages [TS]

  native regular expressions are a good [TS]

  thing if not native regulus versions and [TS]

  at least a library that implements the [TS]

  native ones are nicer because then you [TS]

  don't have to take your regular [TS]

  expressions and say oh I don't like [TS]

  regular expressions I'm gonna you know [TS]

  they're in strings now it's just a [TS]

  string constant JavaScript does that to [TS]

  an extent but it's nice to have native [TS]

  regular expressions with the native [TS]

  syntax because they're so darn useful [TS]

  and so common I think you don't have to [TS]

  be calling through the library functions [TS]

  for them and you certainly don't want to [TS]

  have to load a third-party library to do [TS]

  with regular expressions native objects [TS]

  and classes not to get into the oo [TS]

  procedural debate functional programming [TS]

  a lot stuff but if you're going to have [TS]

  something that's sort of like objects [TS]

  and classes and you're you know that's [TS]

  going to be like the way you do [TS]

  modularization in your code make it part [TS]

  of the language don't make it so that [TS]

  everyone has to sort of roll their own [TS]

  thing in javascript or say hey we have [TS]

  our own object system you know we've got [TS]

  and we've got our own heritage systems [TS]

  but it's one that people have decided [TS]

  they don't want to use like prototype [TS]

  inheritance people may love it and think [TS]

  it's cool and everything but everyone [TS]

  who wants to program in java scripts [TS]

  like great so how do i make a class and [TS]

  that's kind of a shame for the people [TS]

  who love prototype based inheritance but [TS]

  the bottom line is that that's what [TS]

  people want and you know every single [TS]

  library bends over backwards to make [TS]

  something that at least looks a little [TS]

  bit like objects and classes even when [TS]

  under the covers it's not quite the same [TS]

  thing [TS]

  one I'll add on here that these are [TS]

  getting progressively more controversial [TS]

  I think is it named parameters [TS]

  positional parameters sucka they could [TS]

  probably all agree on that no one wants [TS]

  a function with 27 parameters that have [TS]

  to be exactly the right [TS]

  and you gotta pass nulls or zeros for [TS]

  the ones you don't include and stuff [TS]

  like that names parameters if you if [TS]

  your language doesn't have name [TS]

  parameters people will basically invent [TS]

  them you know for JavaScript passing in [TS]

  you know the little JavaScript object [TS]

  notation for you know name value pairs [TS]

  and stuff like that it's not name [TS]

  parameters and I really need to language [TS]

  but this is a data structure that looks [TS]

  just like name parameters that's what [TS]

  everybody uses but it means that order [TS]

  is not important and you don't have to [TS]

  remember what the seventh argument is [TS]

  well the 12th argument is and stuff like [TS]

  that people want names that's the [TS]

  parameter the code reads better [TS]

  Objective C has a half solution where [TS]

  it's like are we had name parameters but [TS]

  you still have to put them in order and [TS]

  if you don't need to put one you got to [TS]

  put a null for it and this it's a [TS]

  sea-based language you forgive it a lot [TS]

  but I think we can all agree things to [TS]

  have that name parameters succinct [TS]

  syntax for common operations that means [TS]

  no boilerplate it means as no matter how [TS]

  theoretically pure your language is now [TS]

  wants to deal with templates or like if [TS]

  you want to make a class put these 80 [TS]

  lines of codes in there and then put [TS]

  your one line of code that's specific to [TS]

  your thing and people don't want things [TS]

  to be verbose and wordy and just huge [TS]

  they want things to be tight and small [TS]

  because if they're not they're not tight [TS]

  and small like in JavaScript where you [TS]

  got to do these little anonymous [TS]

  function closures and everything to get [TS]

  variables inside of scope they will [TS]

  invent the syntax that is succinct to [TS]

  replace your crappy one you know it got [TS]

  thanks gamez ago drop it a CoffeeScript [TS]

  people were sick of typing the word [TS]

  function out what that's you know [TS]

  Huffman coding in the parlance of a [TS]

  Larry wallet people going to be typing [TS]

  the word function eight bazillion times [TS]

  don't spell it out function you know [TS]

  CoffeeScript goes with a little arrow [TS]

  because it's much faster to type it the [TS]

  things that are commonly used to be fast [TS]

  a type and small you know not giant [TS]

  words um have any other good ones here [TS]

  some sort of acknowledgment of [TS]

  concurrency I think we've all agreed is [TS]

  good because languages without any [TS]

  acknowledgement that concurrency exists [TS]

  you end up having problems with it like [TS]

  doesn't mean you have to be you know [TS]

  super concurrent like Erlang or whatever [TS]

  and your entire language is based around [TS]

  that but an acknowledgment that it [TS]

  exists and some native mechanism for [TS]

  dealing with it even is just like a [TS]

  couple primitive native I would say that [TS]

  if you have just have a couple [TS]

  primitives from mutexes and stuff like [TS]

  that then people have this kind of [TS]

  invent some sort of concurrency thing on [TS]

  top of it I mean even it's like implicit [TS]

  concurrency just some acknowledgement [TS]

  that it exists even if you don't even [TS]

  implement it [TS]

  have a language or you can say okay our [TS]

  language construct that looks like this [TS]

  may not have any actual concurrency but [TS]

  the implementation is free to do it [TS]

  concurrently because order is not [TS]

  guaranteed you know something like that [TS]

  I think we've all agreed is a good thing [TS]

  because languages that don't have that [TS]

  it's really hard to add concurrency [TS]

  after the fact so pick a language you [TS]

  can find some of these things that are [TS]

  missing from it often frustratingly so [TS]

  and the question is why if we all if [TS]

  you'll agree that these things are great [TS]

  and you know over the years we've [TS]

  decided this is what languages should be [TS]

  and we keep adding new things to this [TS]

  list why can't we just make a new [TS]

  language that does that well a language [TS]

  in isolation is pretty darn useless if [TS]

  you don't have anything to do with that [TS]

  language if you don't have an API to [TS]

  write foo you can't make programs for a [TS]

  particular platform you're kind of stuck [TS]

  which is a lot of the reason you see [TS]

  like the CoffeeScript and objective [TS]

  sayst J stuff they could invent those [TS]

  languages and I thought hey it's great a [TS]

  menu language called objective J and it [TS]

  looks like this and it's really fun to [TS]

  use they look great what can I do with [TS]

  that we said well you can write web [TS]

  applications feel like I can't require [TS]

  occasions my web browser doesn't have [TS]

  objective site so well we'll take your [TS]

  objective saying J and compile it into [TS]

  JavaScript and then suddenly you have a [TS]

  use for this cool new language [TS]

  CoffeeScript is similar to that or you [TS]

  know rails will make a new API since no [TS]

  one seems to be using Ruby now but we [TS]

  think it's really cool here's this great [TS]

  new framework and if you want to use a [TS]

  framework use the language ah nice [TS]

  questions why can't we just add these [TS]

  cool features to existing languages well [TS]

  it's not it's not easy to add features [TS]

  to languages because you've got that you [TS]

  know installed base and the people who [TS]

  are currently using the language just [TS]

  like what happened with trying to make a [TS]

  Akuma script for which is going to be [TS]

  the successor to JavaScript which is [TS]

  going to add all sorts of cool wizzy [TS]

  stuff that a lot of which is from that [TS]

  previous list add that to JavaScript but [TS]

  then is like you know it's an open [TS]

  standard and there's standards bodies [TS]

  and people with interests in keeping the [TS]

  language the way it is and then you [TS]

  can't get people to agree about what [TS]

  should be added and what shouldn't and [TS]

  then whole process kind of ground to a [TS]

  halt and is really difficult to add [TS]

  stuff to an existing language and even [TS]

  if you get everyone to agree it takes [TS]

  forever for them to be useful like if [TS]

  you made here's the new version of [TS]

  JavaScript and he's got these great new [TS]

  features in fact it's got half of jQuery [TS]

  built into it well you can't use that [TS]

  until some you know [TS]

  a huge percentage of the population has [TS]

  upgraded all their browsers to the [TS]

  browser that has the fancy new version [TS]

  of JavaScript in it and it takes years [TS]

  initialize to happen right look at how [TS]

  long it's taken for dotnet to be viable [TS]

  because you had all those pcs out there [TS]

  they couldn't run dotnet or didn't have [TS]

  dotnet installed and you didn't want [TS]

  your application to be the one that says [TS]

  oh here's my cool new application but [TS]

  first you got to download this 20 [TS]

  megabyte net runtime and then you know [TS]

  it's a it's a big hang-up where people [TS]

  don't want to download your application [TS]

  then you have all those machines in [TS]

  China they're still running Windows XP [TS]

  and it's just it's just a mess so it's [TS]

  really really difficult to add features [TS]

  to existing languages and even when you [TS]

  can you have to wait so long to use them [TS]

  the by the time you get to use them [TS]

  maybe you think that all the features [TS]

  you add you're too little and you think [TS]

  the a language is crappy again so we're [TS]

  basically forced to suffer through using [TS]

  crappy ancient languages you know as the [TS]

  rest of technology advances quickly you [TS]

  know and even within the browser stuff [TS]

  advances faster than languages like the [TS]

  CSS DOM and J and Java Sea is that built [TS]

  are rapidly advancing but the JavaScript [TS]

  language not so much like look how fast [TS]

  you know new versions of CSS are [TS]

  supported a new Dom methods and this Dom [TS]

  method is native now we're adding local [TS]

  database support and all sorts of cool [TS]

  stuff that you can write to the API is [TS]

  advanced quickly but the JavaScript [TS]

  language is just stuck I mean you know [TS]

  it there have been tweaks here and there [TS]

  and obviously the implementation it's [TS]

  way way faster but the language itself [TS]

  it's the same old crappy self that [TS]

  always was more or less and so here I we [TS]

  just wait with crossed fingers and we [TS]

  just hope that whatever the next hit [TS]

  platform or API is that it's going to [TS]

  use a better language right and that the [TS]

  that's not just wishful thinking it's [TS]

  happened before so like when the CGI [TS]

  stuff came along that sort of ushered in [TS]

  a new wave of you know dynamic languages [TS]

  with the PC had the Perl Python PHP you [TS]

  know you couldn't you couldn't make [TS]

  those viable to the C programmer say hey [TS]

  stop doing your systems programming in C [TS]

  and C++ [TS]

  try purl knit go no thanks but and see [TS]

  when CGI comes along and the P languages [TS]

  yeah oh as a new platform and with this [TS]

  new platform we're going to get to use [TS]

  better languages and since there's no [TS]

  incumbent to unseat and so we don't have [TS]

  to convince the C and C++ programmers to [TS]

  come over we'll just get these new guys [TS]

  hey new guys cool new language try this [TS]

  out write web applications [TS]

  and same thing with rails in Ruby Ruby [TS]

  was not going to be to take over the [TS]

  world you know it was not going to [TS]

  replace you know C++ or you can see [TS]

  sharp as the windows programming [TS]

  language but if they make this new thing [TS]

  with there's no incumbent then Ruby [TS]

  suddenly can become popular and cocoa [TS]

  with Objective C and so on and so forth [TS]

  [Music] [TS]

  and of course it helps when you have a [TS]

  language is controlled by a single [TS]

  vendor like c-sharp where C and C++ you [TS]

  know with it's standard versions that [TS]

  take a million years to come out doesn't [TS]

  change that quickly but c-sharp has [TS]

  changed really fast like it was [TS]

  introduced out of nowhere as kind of a [TS]

  Java cloning thing or whatever and then [TS]

  they've advanced now their versioning [TS]

  version their language like C sharp [TS]

  point 1.0 2.0 3.0 4.0 since a single [TS]

  vendor controls it they don't have to [TS]

  get the okay from anyone else they just [TS]

  stick you want to add a cool new feature [TS]

  to language or controlling we're going [TS]

  to add a new feature add a new feature [TS]

  Apple does something similar with [TS]

  Objective C maybe a little bit slower [TS]

  but they took it easy in the beginning [TS]

  because they're just getting your OB on [TS]

  board Objective C but then it's like [TS]

  guess what properties synthesized [TS]

  methods and the dot syntax and now fast [TS]

  enumeration and and blocks and you know [TS]

  I mean they're add except to C that's [TS]

  pretty crazy it's kind of more of a [TS]

  library thing but if you if you have a [TS]

  single vendor and control of a language [TS]

  it can advanced more rapidly than the [TS]

  standards-based languages but then you [TS]

  know it's the other side of that coin is [TS]

  that if it's not a standard base [TS]

  language people are afraid to use it [TS]

  because they're like I don't want to be [TS]

  under Apple's thumb I'm not going to do [TS]

  Objective C and I don't want to be under [TS]

  Microsoft's thumb so I'm not going to do [TS]

  she sharp and even if it's like an open [TS]

  standards de facto controlled by one [TS]

  person it's always a tension there [TS]

  between the development of the language [TS]

  and how fast is going to move on so now [TS]

  finally finally I think we can talk [TS]

  about Perl [TS]

  oh is this is this is the interesting [TS]

  part for me where you get to participate [TS]

  and express your disdain [TS]

  people love the rants when you go on the [TS]

  rants like that they love it last time [TS]

  so people tuned in for booed maybe we [TS]

  should do our spot you want to do the [TS]

  sponsor now or neck or after this yeah [TS]

  you should go for it [TS]

  world view we've talked about these guys [TS]

  before this is the totally addictive [TS]

  take on email reporting from campaign [TS]

  monitor basically and we have a lot of [TS]

  people I think in the audience ooh [TS]

  - newsletters they have their own [TS]

  business they have a small they do a [TS]

  website maybe they're a software [TS]

  developer they have clients so this is [TS]

  from campaign monitor when you send a [TS]

  newsletter they'll show you on a map in [TS]

  real time [TS]

  whenever somebody opens the newsletter [TS]

  because that's the thing you send out a [TS]

  newsletter you're like whoa who read it [TS]

  Oh 34 people read it who where are they [TS]

  what's going on [TS]

  now they actually show you this in real [TS]

  time on a map and it's very you're [TS]

  talking about things like JavaScript a [TS]

  lot of JavaScript here but it's all [TS]

  seamless it's gorgeous [TS]

  gonna check this out go to a campaign [TS]

  monitor comm slash world view whenever [TS]

  somebody opens your newsletter when they [TS]

  click on a link when they forward it to [TS]

  a buddy in in real time it shows up on [TS]

  this map are you looking at it right now [TS]

  it's very cool it also show you on [TS]

  Facebook when it's mentioned when it's [TS]

  mentioned on Twitter instantaneously and [TS]

  it's free for every email campaign you [TS]

  send and you can you can get started for [TS]

  free too so go check them out check [TS]

  these guys out campaign monitor comm [TS]

  slash worldview [TS]

  thanks very much those guys they're [TS]

  really smart for advertising that [TS]

  feature because I guarantee you that is [TS]

  the the feature that the people who who [TS]

  purchase the service are most excited [TS]

  about news you can just see people [TS]

  staring at that map you know because [TS]

  watching listening and you're gonna send [TS]

  out direct communication like this is [TS]

  what you want like if you just click the [TS]

  button and go home it's not exciting [TS]

  you're gonna sit there and stare at that [TS]

  map and like now now the world will see [TS]

  what I have to say and exactly that is a [TS]

  very smart feature very cool and that's [TS]

  just a demo so go go try this out anyway [TS]

  we got to talk about this Perl thing now [TS]

  you it has been revealed here not only [TS]

  to two things that are I think going to [TS]

  be shocking to most of the listening [TS]

  audience the first one is listen to [TS]

  other shows we've talked about it before [TS]

  two things are going to be shocking to [TS]

  listening on it's the first one is that [TS]

  you you your job you are a pearl [TS]

  programmer so that's shocked number one [TS]

  and shock number two is that at least [TS]

  this is the part that we're going to [TS]

  have to talk about my understanding is [TS]

  you can actually read the pearl after [TS]

  you've written it you can go back and [TS]

  read what you've written and understand [TS]

  it which is my understanding is that's [TS]

  not possible with pearl at all even in [TS]

  the best situation so I'd like for you [TS]

  to address both of those points [TS]

  please begin well at first I want to [TS]

  talk about something that you said on a [TS]

  past show about objective-c but I think [TS]

  it was on the previous show where you [TS]

  were talking about the square brackets [TS]

  in a coalition - and you can't stand I [TS]

  don't like this yeah so you've obviously [TS]

  done a little bit of objective-c [TS]

  development ah yeah and you like what [TS]

  the language can do for you you like [TS]

  yeah the resulting applications you know [TS]

  you like the platform you like iOS you [TS]

  like Mac OS 10 yeah [TS]

  but the language itself you don't like [TS]

  and you brought up the square brackets [TS]

  cuz you think they're ugly I don't like [TS]

  this I don't like the look of it I am a [TS]

  very uh I care a lot at least on on the [TS]

  computer I care a lot about how things [TS]

  look visually but you know I'm a [TS]

  stickler for fonts I've written a lot of [TS]

  articles on high vulajin sand what fonts [TS]

  I it's you know the editor that I use is [TS]

  almost secondary to the font that I'm [TS]

  using to do code in I mean I'm very the [TS]

  way that things look the way the [TS]

  language looks and this this again this [TS]

  is why I'm such a big fan of programming [TS]

  languages like Ruby because they look it [TS]

  looks great I mean even even the people [TS]

  who hate the Ruby most and I'm talking [TS]

  about anybody who prefers Python they're [TS]

  the biggest the biggest anti rubyists [TS]

  out there in the world even they admit [TS]

  the Ruby looks nice I mean they'll say [TS]

  python is better I'm you know we don't [TS]

  need to get into that on this show but [TS]

  even they'll admit that it is a nice [TS]

  looking a nice looking language for me [TS]

  that typing in in something that that [TS]

  you know creating code that looks nice [TS]

  I'd I'd try you know I love that so that [TS]

  matters to me there's a lot of people [TS]

  who are you know laughing saying oh who [TS]

  cares about that it's the power of the [TS]

  language that you want and and if that's [TS]

  the case then I think they get in line [TS]

  with you and then start writing right [TS]

  and Perl because you can do stuff in [TS]

  Perl it's just kind of crazy so the [TS]

  point I want to bring up about this is [TS]

  two things first that aesthetics and [TS]

  programming languages even though it's [TS]

  subjective I think you could probably [TS]

  identify some themes and I think one of [TS]

  the themes especially for the people who [TS]

  like Ruby [TS]

  is that none word characters are ugly [TS]

  and word characters are not right so [TS]

  anytime you get a non word characters [TS]

  anything that's not you know a through Z [TS]

  numbers or underscores maybe hyphens [TS]

  anytime you get anything that's not one [TS]

  of those characters it's it's noisy and [TS]

  it's ugly but you know basically any [TS]

  character you wouldn't see in prose or [TS]

  even stuff like commas sometimes with [TS]

  periods they don't like right so the [TS]

  square brackets they fall under your [TS]

  your unkind gaze because square brackets [TS]

  don't appear in regular prose almost [TS]

  ever and there's certainly not word [TS]

  characters and they're actually kind of [TS]

  like sharp pointy edges right am i [TS]

  understanding by the way as an aside is [TS]

  that you can use dot notation instead of [TS]

  brackets in objective-c [TS]

  and I was talk to the guy who wrote note [TS]

  C which is a great iOS app he told me [TS]

  this on the daily Edition earlier in the [TS]

  week I heard that but then you're [TS]

  falling into something that's [TS]

  non-standard you're like the one guy who [TS]

  does it that way which is not a really [TS]

  good topic I want to talk to you about [TS]

  perhaps on this show or another show [TS]

  about whether you adapt the language to [TS]

  your own particular style or whether you [TS]

  adapt your style to the language of [TS]

  choice or a third option as you adopt [TS]

  whatever the corporate style is for the [TS]

  project and or tasks that your team team [TS]

  rather that you're working on anyway [TS]

  there could be another topic well Apple [TS]

  has been pushing sort of pushing the dot [TS]

  syntax even within Apple there are [TS]

  people who still won't use it and I bet [TS]

  if you were to look at Apple's code [TS]

  they'd be big divisions like these are [TS]

  the dot people and these are the non dot [TS]

  people I think suspect the old-school [TS]

  guys don't like that syntax but apples [TS]

  been pushing it a lot like if you go to [TS]

  WC a lot of the sessions the official [TS]

  party line is we invented dot notation [TS]

  so you could use it it's not like we're [TS]

  going to invent it and nobody should use [TS]

  it you should use it and they will make [TS]

  a good show of saying we here at Apple I [TS]

  trying to use it too with our new you [TS]

  know stuff at the very least I want you [TS]

  to use the app property at synthesize [TS]

  and stuff like that like they're pushing [TS]

  that as a modernization of the language [TS]

  right um [TS]

  and partly because I think it does look [TS]

  nicer you know fewer non word characters [TS]

  right so the point I want to bring up [TS]

  about non word characters is the aside [TS]

  that I meant to get to last time about [TS]

  the Joint Strike Fighter [TS]

  I put a link in the show notes too to [TS]

  this the Joint Strike Fighter was a US [TS]

  government project to make a new [TS]

  airplane to replace several existing [TS]

  models of airplanes through several [TS]

  branches of the armed forces they wanted [TS]

  to replace a bunch of planes in the Navy [TS]

  the Air Force and the Marines with a [TS]

  single new plan that could be adapted to [TS]

  several different purposes that's [TS]

  actually an aside that's not the point [TS]

  of trying to get about making one plane [TS]

  to replace many different other ones but [TS]

  the main thing is they had a competition [TS]

  between defense contractors said you [TS]

  want to be the the company that makes a [TS]

  Joint Strike Fighter well you know [TS]

  here's some amount of money and bring us [TS]

  two prototypes and you know it was the [TS]

  competition between basically Boeing and [TS]

  Lockheed were the two big ones that were [TS]

  the only people who had the money and [TS]

  skills basically to compete so it was [TS]

  actually contract for the government [TS]

  that did they had more than one bidder [TS]

  but anyway uh they said you know bring [TS]

  us what you think is the best suited [TS]

  plane for this and then we as the [TS]

  government will take a look well you [TS]

  brought us and bring each one through a [TS]

  series of tests and decide which one [TS]

  we're going to spend you know bazillions [TS]

  of dollars on over the next decade two [TS]

  decades three decades to replace all our [TS]

  points and there was a PBS show I think [TS]

  it was a nova thing but anyways a link [TS]

  to in the show notes I don't know if you [TS]

  can actually watch the video it's a very [TS]

  old show so I think maybe you can get [TS]

  the video online but if not you could [TS]

  maybe see if it comes on TV again but it [TS]

  was a documentary showing the [TS]

  competition between Boeing and Lockheed [TS]

  which is excellent show if you have an [TS]

  hour of time you can find this thing you [TS]

  should watch it it's really awesome to [TS]

  watch the show but the boss fascinating [TS]

  aspect of it was that at a certain point [TS]

  in the program they started to talk [TS]

  about the difference between these two [TS]

  planes and it was something that would [TS]

  be on anyone's mind watching the show up [TS]

  to that point but not discuss then they [TS]

  came out and discussed it which was that [TS]

  Boeing's entry was uglier than la Keats [TS]

  the plane itself have you were to put [TS]

  them side-by-side like right note from [TS]

  the second you see it Lockheed looks [TS]

  cool like a little spaceship like [TS]

  something from Star Wars and Boeing's [TS]

  it's kind of you know homely looking [TS]

  it's got a big mouth for an air intake [TS]

  and it's kind of stub nosed and just it [TS]

  just looks uglier now this is a [TS]

  competition billions and billions of [TS]

  dollars are on the line [TS]

  the security of your entire nation the [TS]

  safety of your people there's going to [TS]

  be people flying these planes people [TS]

  repairing like the looks of these planes [TS]

  you would think could anything possibly [TS]

  be less important this is [TS]

  life-or-death situation things that [TS]

  matter are like performance cost safety [TS]

  you know effectiveness that the the [TS]

  performance of the actual plane itself [TS]

  the durability does looks have anything [TS]

  to do with it [TS]

  anything at all and as the people [TS]

  discuss very openly in the show they can [TS]

  say you know well looks of the plane [TS]

  really shouldn't matter but is it an old [TS]

  saying in aviation that if it looks [TS]

  right it'll fly right hmm now that's [TS]

  saying the origin of that saying is like [TS]

  that's just like a massive [TS]

  rationalization for the idea that people [TS]

  and men in particular are hardwired to [TS]

  like things that are attractive doesn't [TS]

  mean the plane has to look like you know [TS]

  the body of a woman although it often [TS]

  does but that people like beautiful [TS]

  things and you can they're rational mind [TS]

  can say to them all the other stuff [TS]

  about how everything else is more [TS]

  important and how this plane looks means [TS]

  absolutely nothing the bottom line is [TS]

  that the better-looking plane usually [TS]

  wins when there's a competition for you [TS]

  know which things going to get a [TS]

  contract and I'm not saying that's why [TS]

  the winner of the Lockheed won this this [TS]

  contract I don't think I'm spoiling [TS]

  anything to say that but Lockheed [TS]

  eventually did win because they had the [TS]

  better-looking plane right there are [TS]

  many other reasons that that they won [TS]

  the contract but the fact that looks was [TS]

  acknowledged to be a factor that [TS]

  basically saying we can't help but we're [TS]

  silly meatbags who love beautiful things [TS]

  and right or wrong looks are going to be [TS]

  a factor and we can rationalize and say [TS]

  even if we had never seen these points [TS]

  and adjust seeing the numbers and we [TS]

  just knew based on experience but the [TS]

  Lockheed makes great planes or whatever [TS]

  you know blah blah walkie was probably [TS]

  gonna win no matter what but the fact [TS]

  that looks are you know acknowledged to [TS]

  be an important factor in that thing [TS]

  there's no hope of aesthetics not being [TS]

  a factor in something like programming [TS]

  languages we're much less is at stake [TS]

  right I think this reveals you know I [TS]

  hope the people ever involved a [TS]

  self-aware enough to realize that this [TS]

  is this is a flaw in reasoning and they [TS]

  shouldn't go back to if it looks right [TS]

  it flies right it's the old saying that [TS]

  my Pappy says your Pappy was was [TS]

  excusing his stupid illogical behavior [TS]

  with a catchy saying like that's an [TS]

  acknowledgement of you being wrong [TS]

  acknowledgement of you being wrong [TS]

  you can't use that to support your [TS]

  argument no if it looks right it does [TS]

  not fly right things a lot of things [TS]

  that look awful [TS]

  fly great and a lot of things that look [TS]

  great do not fly at all it's not this [TS]

  thing makes no sense so to bring that [TS]

  back to programming languages yeah [TS]

  people pick a lot based on their [TS]

  aesthetics but you know it shouldn't be [TS]

  a factor even though it is luckily with [TS]

  programming languages there are so many [TS]

  other factors that even that dominate [TS]

  looks that you know we can't even get [TS]

  decent languages irregardless of [TS]

  irregardless is not a word sorry [TS]

  regardless of the looks of the language [TS]

  you can't we can't get a good one that [TS]

  has all the features you want because of [TS]

  other things that are involved but you [TS]

  know when we're left to you know have [TS]

  petty squabbles about which one of the [TS]

  crappy languages that were forced to use [TS]

  is better than the other we fall back on [TS]

  looks and the gang gets back to the [TS]

  fewer non-work characters the better so [TS]

  I don't like discussions about books of [TS]

  languages because I think it's mostly [TS]

  moot with programming language at least [TS]

  you can say all right maybe it has [TS]

  nothing to do with looks but a lot of [TS]

  these know our characters I need to hold [TS]

  down shift to use and they're not you [TS]

  know there have take my fingers off the [TS]

  HOME key so they're like actual rational [TS]

  regions where you can talk about curly [TS]

  braces are bad or square brackets are [TS]

  bad or any other character that I have [TS]

  to stop typing stop typing [TS]

  touch typing for and do a chord [TS]

  keystroke to get that's bad mmm so at [TS]

  least you have that little thing in that [TS]

  word but the aesthetics of languages [TS]

  even though you can find that common [TS]

  thread of non mark characters being ugly [TS]

  it really depends on what you're used to [TS]

  a lot to and where you're coming from [TS]

  so with Perl I would imagine the number [TS]

  of characters that are most offensive to [TS]

  everyone are things like the dollar sign [TS]

  which is and all the variables no one [TS]

  likes that the @ sign % that's you know [TS]

  the fact that every identifier has some [TS]

  sort of prefix on it people don't like [TS]

  that now if you're coming from shell [TS]

  programming that's not a big deal [TS]

  because in shell success is the same [TS]

  thing it's like that's where the syntax [TS]

  comes from reading you know basic stuff [TS]

  like that on it too but if you're coming [TS]

  from see where your identifiers are [TS]

  basically unadorned you see that as no [TS]

  eyes and you think it's ugly [TS]

  no so getting into Perl specifically [TS]

  it's got all the prefixes in the various [TS]

  people alike but another reason Pro [TS]

  comes in for the ugliness thing [TS]

  is that it was the first language to [TS]

  first language to really become popular [TS]

  that had made of regular expressions in [TS]

  it [TS]

  the programmers use obviously regular [TS]

  expressions were out there and you know [TS]

  command-line utilities like grep and [TS]

  stuff like that but this was the first [TS]

  time that a real programmer quote [TS]

  unquote was forced to see regular [TS]

  expressions because he was doing this [TS]

  program and see Recife sauce and some [TS]

  dude came along and said I'm writing a [TS]

  CGI application it's Perl and check this [TS]

  out and then it's the first time they [TS]

  see your deal with regular expressions [TS]

  and what they think is a real program [TS]

  and not just like some shell thing sis [TS]

  admin's do which is beneath them like [TS]

  what the hell is that now as we all know [TS]

  today regular expressions look like that [TS]

  for a reason it's a compact [TS]

  representation of something that would [TS]

  it would be much uglier and longer if [TS]

  you had to write your own you know state [TS]

  machine or you know okay what you write [TS]

  your own regular expression engine you'd [TS]

  basically end up either reinventing [TS]

  regular expressions yourself badly or [TS]

  writing a huge strings Betty spaghetti [TS]

  go to do a regular expressions to do so [TS]

  regular expressions look kind of like [TS]

  line noise but they're they look like [TS]

  that for a reason and they're useful and [TS]

  every language nowadays has them and [TS]

  recognizes that but Perl was the first [TS]

  so the impression of Perl is look at all [TS]

  those freaking dollar signs and oh my [TS]

  god this program is just one big regular [TS]

  expression and I've never seen very good [TS]

  friends boring I do not understand why [TS]

  regular expressions are so inscrutable [TS]

  to me it's just this horrible looking [TS]

  thing you know so your reputation you [TS]

  know first impressions may mean a bit a [TS]

  lot and the fact that Perl was the first [TS]

  one to come in with very discretions [TS]

  it's like boom you're labeled the bosal [TS]

  bit is flipped you are the language that [TS]

  nobody can read and yet had the shell [TS]

  like syntax and everything now it's [TS]

  interesting that this type of you know [TS]

  prejudice against languages with weird [TS]

  stuff is just to compare the end keyword [TS]

  in Ruby where you know instead of having [TS]

  curly braces curly braces your bag is or [TS]

  non word characters and you have to hold [TS]

  down shift to type them right but end is [TS]

  a lot longer than curly braces isn't it [TS]

  and the real programmers quote-unquote [TS]

  from the olden days C C++ guys they had [TS]

  curly braces still yeah [TS]

  curly braces weren't a big deal to them [TS]

  ah and again it seems like bad Huffman [TS]

  coding to take probably the most [TS]

  commonly typed keyword in your entire [TS]

  language and in the case of Ruby and [TS]

  make three characters long instead of [TS]

  one even if you count the QWERTY coke is [TS]

  to like hold down shift and hold down [TS]

  the you know the the bracket key and is [TS]

  still longer to type [TS]

  so it seems like if you're going to be [TS]

  like oh you know what's going to win is [TS]

  aesthetics in terms of making me type [TS]

  too much stuff going to win or or is [TS]

  aesthetics in terms of non-word [TS]

  character is going to win and pearl [TS]

  basically didn't get dinged for having [TS]

  curly braces and Ruby didn't really good [TS]

  things for having the end keyword too [TS]

  much but nowadays if you were to say [TS]

  what looks cleaner they're going to say [TS]

  Ruby looks cleaner even though it's got [TS]

  these little end keywords littering up [TS]

  the entire thing but it doesn't have the [TS]

  curly braces you're like well I have [TS]

  that end but I don't have to have the [TS]

  opening curly you know so people [TS]

  deciding what it is that makes something [TS]

  ugly or not whether it's Dena word [TS]

  characters or having to type some long [TS]

  thing that tends to flip-flop based on [TS]

  the context and the same people have a [TS]

  different opinion when looking at [TS]

  different languages at different times [TS]

  so for for Perl you don't like it [TS]

  because ugly and you make the jokes [TS]

  about it being a read only and stuff [TS]

  like that but there are other things [TS]

  that give it a bad reputation but the [TS]

  most people probably don't know about I [TS]

  think my my description of why people [TS]

  don't like Perl pretty much covers the [TS]

  basis for anyone who it hasn't actually [TS]

  done any programming in Perl where [TS]

  they'll say I don't like it [TS]

  it's ugly regular expressions are [TS]

  unreadable the end more or less you have [TS]

  any actual more actual objections coming [TS]

  from someone who doesn't really write in [TS]

  Perl against the Perl language yeah I [TS]

  think I think it all really does come [TS]

  down to just legibility how how it's [TS]

  it's a joke people in the chatroom or [TS]

  even talking about it that it's it's a [TS]

  tough language and also I mean it are [TS]

  there you know people will complain and [TS]

  I'm not sure that this isn't the knock [TS]

  against the language directly but there [TS]

  are the where where are the really [TS]

  awesome frameworks written in Perl that [TS]

  people should be using where where does [TS]

  Perl move into the the next generational [TS]

  kind of thinking I mean sure it's great [TS]

  if you want to you know write something [TS]

  that will parse text and turn it into [TS]

  HTML for you but what what are people [TS]

  using Perl for in the real world why [TS]

  doesn't it get the kind of attention [TS]

  outside of those uber geeky sysadmin [TS]

  type circles I feel like the Perl got [TS]

  this reputation based on the things [TS]

  we've already discussed [TS]

  many years ago and that's when people [TS]

  stopped looking at it right so the fact [TS]

  that you don't know the answers to any [TS]

  of those questions doesn't mean that [TS]

  there aren't answers it just means that [TS]

  the latyout you have removed pearl from [TS]

  your mind in the past and haven't looked [TS]

  at it since and neither of any other [TS]

  people so it doesn't come up anymore and [TS]

  you're just assumed there's nothing else [TS]

  it seems like a dinosaur of a language [TS]

  now I'm partially I did truth be told I [TS]

  do know the value of pearl I can write [TS]

  some pearl code although probably not [TS]

  very much anymore I certainly do [TS]

  appreciate it as a language I'm kind of [TS]

  playing devil's advocate here and I'm [TS]

  playing up the stereotypes the language [TS]

  Imana because your representative oh [TS]

  well yeah and I think so and that's [TS]

  that's kind of what I want to hear your [TS]

  take would you would you be saying this [TS]

  do you think if you weren't right I mean [TS]

  you you write Perl eight hours a day is [TS]

  that I mean or yeah yeah that's that's [TS]

  that's surprising so before I go and [TS]

  tell you what's good about Perl I'm [TS]

  gonna tell you the things that are bad [TS]

  about it that I think are much more [TS]

  significant than the things we just [TS]

  discussed okay because I think Pro got [TS]

  dismissed long before but it got [TS]

  dismissed by the mass market long before [TS]

  the mass market discovery was truly bad [TS]

  about it all right so the things that [TS]

  are actually you know because I think [TS]

  that aesthetic stuff as evidenced by [TS]

  objective-c like that that stuff you can [TS]

  get over like regular expressions [TS]

  everyone's gotten over already so [TS]

  regular expressions even though you know [TS]

  everyone will agree okay I get I [TS]

  understand Regulus prices now I see why [TS]

  they're useful and see why the line [TS]

  noise and they're in every freaking [TS]

  language so you can't pinpoint perl for [TS]

  but still Perl gets the blame for being [TS]

  I read all the other and the dollar [TS]

  signs like the square brackets like if [TS]

  there was some reason to keep using Perl [TS]

  and it was really popular people get [TS]

  over like you get over the square [TS]

  brackets maybe not you but most people [TS]

  basically you know grin and bear with [TS]

  the square brackets because of the other [TS]

  advantages and to just to respond to you [TS]

  really quickly if if I was if I was [TS]

  serious about writing an iOS app or Mac [TS]

  OS 10 app in and today I would have no [TS]

  problem dealing with it I probably would [TS]

  eventually get to like it and there are [TS]

  people who will say oh the objective-c [TS]

  is beautiful maybe it would grow on me [TS]

  but certainly if if the choice is taken [TS]

  away if if somebody said oh you can use [TS]

  Mac Ruby [TS]

  and just write Ruby code and of course I [TS]

  would pick that first because that's [TS]

  where my comfort zone is and because I [TS]

  like that I'm comfortable with that but [TS]

  yeah I mean you deal with it but is that [TS]

  what you're saying about pearly you're [TS]

  not saying that so so what I'm sort of [TS]

  saying is that those little things I [TS]

  think would not have been enough to keep [TS]

  people away what kept people away was [TS]

  that it was the standard bearer for [TS]

  things that freak people out about [TS]

  syntax and aesthetics and people moved [TS]

  on before they find the real problems [TS]

  here are the things that are actually [TS]

  problems with Perl the only people who [TS]

  know that these are actual problems with [TS]

  Perl the people who have seriously been [TS]

  developing with Perl because a those [TS]

  people have gotten over or never been [TS]

  affected by whatever you know Perl is [TS]

  ugly thing like if they knew a regular [TS]

  expressions before or they or they just [TS]

  got used to them came to like them they [TS]

  dealt with the dollar signs or they [TS]

  actually came to like them or whatever [TS]

  those weren't the issues here the actual [TS]

  issues of the Perl now the first big one [TS]

  is that Perl is kind of like JavaScript [TS]

  in that it doesn't do the things that [TS]

  people wanted to do with respect to [TS]

  object systems so it gives you this [TS]

  little mini construction kit from which [TS]

  you can build what more traditional [TS]

  object system might look like and many [TS]

  people did they took this was Pro 5 [TS]

  which introduced these object oriented [TS]

  mechanisms they took this little tool [TS]

  kit and I said okay well I want objects [TS]

  that look like this and they would write [TS]

  a little the equivalent of like all the [TS]

  but you know prototype and jQuery on the [TS]

  stuff that they build their own little [TS]

  object maker thing inside their [TS]

  framework well everybody in Perl built [TS]

  their own little object maker thing and [TS]

  all of them were slightly different and [TS]

  all them are slightly incompatible and [TS]

  you know over time people came up with [TS]

  new ones we're gonna do two objects like [TS]

  this so I'm going to do objects like [TS]

  that I'm gonna do them like this and [TS]

  here's how you build a class and my [TS]

  thing I'm going to do this and I'm gonna [TS]

  make a you know a source filter and I'm [TS]

  gonna add new keywords and I'm going to [TS]

  do this syntax and I'm gonna make my [TS]

  objects inside out you even know what [TS]

  that is no one outside Perl poly knows [TS]

  what inside out objects are but uh all [TS]

  sorts of you know I can make my objects [TS]

  out of a race because it's faster and [TS]

  I'm gonna make you know all crazy sorts [TS]

  of things you know the problem was that [TS]

  that leaves you with a huge library of [TS]

  code everyone ever and everyone's using [TS]

  their own little object construction kit [TS]

  and they're either not compatible with [TS]

  each other or it's like well why do I [TS]

  have to have 17 different object [TS]

  construction kits in here in my in my [TS]

  one application when I really just want [TS]

  one this is something that should have [TS]

  been built into the language now it's [TS]

  bad that it wasn't because you get the [TS]

  situation where there's a million [TS]

  different object systems right but on [TS]

  the other hand well I [TS]

  I'll set it up for the part where I do [TS]

  good stuff it's just that were the bed [TS]

  there's not one way to do objects and [TS]

  people did million of them is big Harry [TS]

  messing continues to be a big hairy mess [TS]

  to this day um the other thing is that [TS]

  Perl I guess we have to start getting [TS]

  into the good at this point because I [TS]

  think that's probably probably the [TS]

  biggest bad thing about Perl and I guess [TS]

  the implementation doom the Perl was [TS]

  written is a big giant C program by one [TS]

  dude and that one dude rewrote it uh but [TS]

  really that's not you know Ruby has the [TS]

  same problem to some degree of like [TS]

  being a big Harry C program under the [TS]

  covers that has problems that's why [TS]

  projects like JRuby and maglev and all [TS]

  these other you know rubinius is that [TS]

  are you pronouncing all the other VMs [TS]

  when when your language is defined [TS]

  basically by you know how does the Ruby [TS]

  executable behave this Ruby C program [TS]

  written by a couple of guys that defines [TS]

  my language like it's not there's a [TS]

  language spec there's no language [TS]

  standard it's like we wrote this program [TS]

  you feed its source code that we say is [TS]

  Ruby source code and it executes it for [TS]

  you your language can end up being [TS]

  hamstrung by the interpreter and that's [TS]

  true of Perl the summary slide because [TS]

  any C program that's long lived get [TS]

  scruffty or whatever in a certain point [TS]

  you have trouble extending an advancing [TS]

  language because the internals are [TS]

  gross-looking and perl has been working [TS]

  towards improving that and so is ruby [TS]

  and so of all the other ones back [TS]

  sometimes they say you know we're not [TS]

  even going to deal with the real Ruby VM [TS]

  we're gonna we're going to use a JVM and [TS]

  write our own thing on top of it and [TS]

  just you know you got that whole thing [TS]

  going on but that's the other thing [TS]

  that's that hamstrings languages like [TS]

  Perl Ruby hmm the good thing about all [TS]

  this bad stuff is that the fact that [TS]

  there was no objects just insulting and [TS]

  everyone built their own little optics [TS]

  system it basically became like a [TS]

  breeding ground or I'll I don't know [TS]

  you'd call like a Genesis project for [TS]

  object systems alright so the first dude [TS]

  to write an object system and pearls [TS]

  like to make it like C++ and then Java [TS]

  comes out and let's make some sort of [TS]

  like Java type thing on top of it and [TS]

  then all these weird experiments that no [TS]

  one even heard of with the inside out [TS]

  stuff and trying to protect the [TS]

  variables with closures because we don't [TS]

  have real variable privacy and designed [TS]

  by contracts and all sorts of crazy [TS]

  approaches like everything you can [TS]

  possibly imagine was tried and what [TS]

  would happen is that the better one [TS]

  would squish the old one so like this [TS]

  would be you know I made a quadric [TS]

  system no guy no I made a cooler one [TS]

  everyone forget about that ol one [TS]

  because it sucks and then I'll make him [TS]

  cooler one and they were forget about [TS]

  that one they try something else and I [TS]

  say okay I'm we're gonna make method [TS]

  makers and class generators and a whole [TS]

  class of things that just let you make [TS]

  accessor methods in 50 different ways [TS]

  and we're going to try to you know layer [TS]

  on a type system and we're going to do [TS]

  tons and tons of experimentation which [TS]

  you couldn't do if this the language [TS]

  came with like this is how you do [TS]

  objects which for the most part Ruby [TS]

  comes with like here's how you do [TS]

  objects in Ruby here's how you do [TS]

  attributes getters and setters excuse me [TS]

  Python was a little bit different in [TS]

  that Python had like new objects and old [TS]

  job jokes where they had one way to do [TS]

  objects and people said well this is [TS]

  great but there's some common things [TS]

  that doesn't do so they had a new style [TS]

  object and then they had Python 3 right [TS]

  Perl 5 just start up with that little [TS]

  core of you know an object construction [TS]

  since we've got a simple thing for [TS]

  inheritance is a simple thinker method [TS]

  dispatch and a simple thing for you know [TS]

  the Ruby equivalent of the proto Kedar [TS]

  method missing in Ruby and just go nuts [TS]

  and people did go nuts ah what has led [TS]

  to is that I think the Perl has had and [TS]

  continues to have the largest group of [TS]

  developers doing quote-unquote advanced [TS]

  stuff in a semi popular language if you [TS]

  want to do interesting advanced language [TS]

  type stuff you can do it on top of pearl [TS]

  because pearl doesn't decide how they're [TS]

  going to do it for you so for example [TS]

  pearl is the only language that I know [TS]

  of where as a community if you're in the [TS]

  pearl community it's basically been [TS]

  agreed upon that roles are awesome and [TS]

  better than regular all now do you even [TS]

  know what roles are roles with in which [TS]

  context explain it roles traits you read [TS]

  the paper on traits that roles as pearls [TS]

  name for them it's a different way of [TS]

  doing instead of doing inheritance of [TS]

  delegations different is a different way [TS]

  of factoring out common code instead of [TS]

  factoring out code in terms of [TS]

  inheritance or mixing classes or you can [TS]

  you patching or whatever I mean this is [TS]

  something that most people haven't even [TS]

  heard of unless you're like deep into [TS]

  the Pearl community but at this point [TS]

  with so much scratching going on in the [TS]

  Pearl community that you if you were [TS]

  asked to someone who's deep in the [TS]

  thrall community our role is good or bad [TS]

  they would say good and everyone else [TS]

  that haven't even heard of it and this [TS]

  is true of tons of stuff like when ruby [TS]

  was coming out and all the pearl people [TS]

  are bitter because rubies being popular [TS]

  and everything i don't know if people [TS]

  know this but have you noticed a [TS]

  similarity ruby it's a gemstone pearl to [TS]

  kind of a shiny thing really [TS]

  was basically inspired by pearl with [TS]

  like the edges shape that's the people [TS]

  don't like to think about that in that [TS]

  relationship but it's there you know you [TS]

  wonder about those dollar signs in Ruby [TS]

  oh they're there people a little at sign [TS]

  in front of it I know you don't use them [TS]

  because they're in global and stuff but [TS]

  they're there anyway we won't talk about [TS]

  the lineage but they were like look at [TS]

  look at Ruby we can do this awesome [TS]

  stuff look this is method missing thing [TS]

  and we can pass a block to a function [TS]

  and it gets like you can call it back [TS]

  and it's this awesome and the pearl [TS]

  people roll in their eyes and be like oh [TS]

  great so you discovered that isn't that [TS]

  awesome [TS]

  and we Anna this is stuff that's been in [TS]

  Pearl is old hat and pearl like the [TS]

  autoload and you know dealing with [TS]

  closures and stuff that it's like that [TS]

  was like a decade ago guys you know and [TS]

  then it's the same way the list people [TS]

  are and the small talk people are [TS]

  rolling their eyes at the Pearl people [TS]

  go [TS]