0:00:00[Music]
0:00:02the name of this show is hypercritical
0:00:04it's a weekly talkshow ruminating on
0:00:07exactly what is wrong in the world of
0:00:08Apple and related technologies and
0:00:10businesses john siracusa and i i'm dan
0:00:13benjamin we'll talk about how things go
0:00:17well and sometimes don't go so well for
0:00:19companies like Apple right as we talked
0:00:21about here it's not just us
0:00:23yeah and the fact is John nothing is so
0:00:26perfect that you can't complain about it
0:00:28that's what we say that's true and we
0:00:30would like to thank the Intuit small
0:00:32business blog and their mobile app as
0:00:35well as campaign monitors world view for
0:00:38making the show possible will tell you
0:00:39more about those as the show progresses
0:00:41so what are we complaining about today
0:00:42first day of you right you get a lot of
0:00:45you you know the whole show is a few not
0:00:48too much today I turned a lot because I
0:00:50know we have a lot of stuff to get do I
0:00:51mean you're trying to keep the show
0:00:52short now right got had to had some
0:00:55requests that the show be Whedon that
0:00:58not not cutting it short that's not the
0:01:00right thing but just make keeping track
0:01:02of time a person who asked that didn't
0:01:04even mention my show so he probably
0:01:06doesn't even listen I don't think he's
0:01:08aware of your show he probably looked at
0:01:09the runtime of it and said I can't
0:01:11listen it might have been short not that
0:01:13long not doing to our things I can use
0:01:15bond tacked on to the end or anything
0:01:16yeah I think you got of all the shows I
0:01:19think you are probably the most time
0:01:20sensitive there you go so I feel no
0:01:24compunction to try to cut it short all
0:01:26right don't cut it normal any shorter
0:01:28that I normally do don't do anything
0:01:29else don't don't change a thing okay so
0:01:32follow up time so we missed last week
0:01:35because I was on vacation you were on
0:01:37vacation we tried to schedule it before
0:01:39you had you had told me six or seven
0:01:42weeks earlier that you were going to be
0:01:44on vacation I put it on the calendar and
0:01:46then I didn't I didn't remember or
0:01:48something so it's it was not your fault
0:01:49that we didn't have a show it's probably
0:01:50mine but but the fact was you were not
0:01:53available at the regular time and I
0:01:56didn't realize that we had changed it so
0:01:59anyway so I'm going back to shows for
0:02:01some follow up stuff are two weeks but
0:02:03it's just one show so last time what
0:02:07we're talking about we're talking about
0:02:07objective-c and stuff like that and
0:02:09high-level language is low-level
0:02:12languages yeah
0:02:13I thought it was a shame that some of
0:02:14that stuff there was at least two or
0:02:16three good points that bled over into
0:02:18the after dark so I put in the show
0:02:20notes like this week the link to the
0:02:22after dark most of which is just typical
0:02:23after dark stuff but there are one or
0:02:26two good points in there about the
0:02:28objective-c stuff that I wish I had
0:02:30gotten into the regular show huh
0:02:32mostly having to do with how the people
0:02:35at Apple how the employees at Apple are
0:02:37probably not properly motivated to
0:02:40resolve the situation talked about in
0:02:42the previous show so I want to go into a
0:02:44now for time purposes but if you want a
0:02:45little bit more on that topic I suggest
0:02:47checking out the after dark which is
0:02:49that that's super hidden link but if you
0:02:50go to the show notes for the show you
0:02:51will find the link to it and I would
0:02:53also suggest subscribing to that because
0:02:55it's usually pretty funny it's not just
0:02:57all hypercritical after dark it's all
0:02:58sorts of shows a lot of cursing
0:03:01everybody who asks for cursing and
0:03:03doesn't understand why we edit out the
0:03:05profanity no holds barred there it's
0:03:09marked as explicit it's not part of the
0:03:11master feed it's like a little Easter
0:03:13egg you gotta go find it it'll find it
0:03:16so it's interesting that when I did the
0:03:19original series on the the Copeland 2010
0:03:23stuff a whole bunch of articles like
0:03:26many years ago and I got a lot of
0:03:28responses eventually asking about Mac
0:03:31Ruby mm-hmm and which I I should also
0:03:34mention I erroneously referred to as
0:03:37JRuby I said I knew what you meant you
0:03:39knew what I meant and you were too
0:03:40polite to correct me I clearly know the
0:03:42difference I've used both I meant Mac
0:03:44Ruby thanks for the thousands of emails
0:03:46and Twitter comments about that I do
0:03:49know the difference and thank you for
0:03:51reminding me yeah so the Mac group
0:03:55people emailed a lot this was many years
0:03:57ago back when Mac Ruby was younger and
0:03:59their email enthusiasm kind of tapered
0:04:02off over time but then when I brought it
0:04:05up on the show they came back and they
0:04:07said hey what about Mac Ruby partly my
0:04:09fault for forgetting to talk about Mac
0:04:12Ruby because it is definitely we're
0:04:13talking about a well a show I talked
0:04:14about how bridges stink on you have a
0:04:18bridge to an API that's written for one
0:04:21language where you get to write to it in
0:04:22another language and bridge connects the
0:04:24two things together
0:04:26and I said I described lots of things
0:04:28that are bad about bridges and how you
0:04:30don't get to use the the cool features
0:04:32of the high-level language that you want
0:04:34to use because you're too busy doing
0:04:35things in terms of the lower-level
0:04:36language right so the nigra people then
0:04:39as now bring up the points that a lot of
0:04:42things I was asking for Mac would be
0:04:43deliver so there's links in the show
0:04:45notes to Mac repeat you should check it
0:04:46out but just some examples like you
0:04:49don't have to deal with you know making
0:04:51NS strings or whatever when you do in
0:04:53cocoa programming and Mac Ruby because
0:04:55the the bridge makes ruby strings into
0:04:58bridged over to NS mutable strings and
0:05:00the Ruby hashes are really NS mutable
0:05:03dictionaries under the covers and the
0:05:04Ruby objects are really Objective C
0:05:06objects so you're not just using like
0:05:09the skin of the language to call api's
0:05:11in some other language they've taken a
0:05:13lot of the native data structures and
0:05:17features and interesting tidbits in Ruby
0:05:20and found in Objective C equivalent and
0:05:22mapped it to that hmm now and also this
0:05:29is the other thing people like to bring
0:05:30up is hey this is an Apple project like
0:05:32Apple developers are working on it it's
0:05:36the people you know it's not just some
0:05:38random third party thing it's actually
0:05:39under the auspices of Apple in some
0:05:41fashion a lot of Apple's open-source
0:05:43stuff it's hard to tell what is you know
0:05:47just a project with some people at Apple
0:05:48wanted to do and it bosses let them do
0:05:49versus what is a strategic initiative
0:05:52that's poor important for the entire
0:05:53company and often a project will start
0:05:55in one way and transition to the other
0:05:58thing like LLVM probably started life as
0:06:01let's just you know hire this guy and
0:06:03check out this type of thing and then
0:06:04there was a you know an effort to
0:06:06convince the powers-that-be and
0:06:08eventually the entire company that hey
0:06:10we're going to transition our entire
0:06:11compiler strategy to this new thing and
0:06:13here's how we're going to do it and lo
0:06:14and behold here we are today and we're
0:06:15almost completely transitioned so Mac
0:06:17Ruby could be like that someday but the
0:06:19what I said about Mac Ruby many years
0:06:22ago still holds today and that I still
0:06:25don't think a bridge is the is the right
0:06:27answer
0:06:28cocoa is still designed for objective-c
0:06:30and even if you're mapping you know your
0:06:32types from the higher-level language to
0:06:34low-level one you're still dealing with
0:06:36you know an disputable strings under the
0:06:38covers and
0:06:39yeah no it's the API is made it's not a
0:06:43ruby API if you look at the API you
0:06:44would say well that reminds me of you
0:06:45know Rails or some other API that's
0:06:48idiomatic at like like the bills for the
0:06:51Ruby language you look at it and say
0:06:53well that that sure looks a lot like
0:06:54objective-c to me in this all sorts of
0:06:57api's but there's no reasonable way to
0:06:58bridge you just have to call these
0:07:00methods and with these name parameters
0:07:03that look like a projective seeing like
0:07:04man why do we need all this parameters
0:07:05why am i passing in a value that's going
0:07:07to be a read/write attribute that's
0:07:09going to have the error written into it
0:07:10and all sorts of stuff like that it's
0:07:12sort of not the Ruby way but you still
0:07:14have to write to those languages there's
0:07:17the two layers of debugging problem or
0:07:18anytime you have sort of a bridge
0:07:19language you would like to debug it the
0:07:21Ruby level but the API and you're
0:07:24executing code is executing at the
0:07:26objective-c level and so if you're using
0:07:27gdb or LDB or something you're not
0:07:30debugging Ruby you're debugging lower
0:07:32level than that so then they have to
0:07:33write a higher level of debugger but
0:07:36sometimes you might want to look at the
0:07:37lower level stuff so you have two layers
0:07:38of debuggers to deal with and if your
0:07:41bugs in the bridge that's like the worst
0:07:42possible situation when there are bugs
0:07:43in the bridge itself and you're trying
0:07:45to debug with the problem is and there's
0:07:48the fact that to write a reasonable
0:07:50cocoa program you're not just writing to
0:07:52cocoa you're also doing your core
0:07:53graphics and core foundation and other
0:07:55API is to really are lower level and you
0:07:58can bridge them too but it's even bigger
0:07:59mismatch between what Ruby expects and
0:08:01what these you know native C API is like
0:08:05sounding Objective C it's just plain C
0:08:08and if you try to keep that paper over
0:08:11that then the developers feel like
0:08:14they're being kept away from the power
0:08:16tools like oh I really want to use core
0:08:17graphics to do some drawings here but
0:08:19the Ruby language makes it discourages
0:08:22me from reaching down to do that or
0:08:24makes it more difficult and more
0:08:25cumbersome or doesn't feel like I'm I'm
0:08:26you know doing things the right way and
0:08:29there's also the the non-native problem
0:08:32you're like well I'm going to write a
0:08:33cocoa application well are you going to
0:08:35use like the native language for writing
0:08:37cocoa applications Objective C or you
0:08:39can use a bridge language because you
0:08:40need a crutch sure because you're a
0:08:41whimper because but you know it's at
0:08:43this macho this macho thing where there
0:08:46would be is divided between the
0:08:47old-school people like I'm writing a
0:08:49real native cocoa application and you're
0:08:51not because you're using this other
0:08:52thing
0:08:53and with all that said it's like would
0:08:56experienced objective-c developers see
0:08:59enough reason to switch like this
0:09:00obviously if you're the best objective-c
0:09:02programs today are comfortable with
0:09:04Objective C so there has to be something
0:09:07pretty significant to make them switch
0:09:08you have that a carrot as well as a
0:09:09stick now Apple could just force
0:09:11everyone to switch and so you know Mac
0:09:12Ruby is going to be the thing it's our
0:09:14new high-level language is slowly going
0:09:15to transition away from you know C based
0:09:17languages and and this is the path and
0:09:19you're gonna have to go to it that's the
0:09:21stick version but the carrot has to be
0:09:23hey awesome Objective C developers who
0:09:25have made our platform what it is here's
0:09:28the good things that await you if you
0:09:29stop writing your your code in this
0:09:32start writing it in that I think that's
0:09:33a tough sell
0:09:34because I mean it's hard enough for
0:09:35Apple to even get the real old-school
0:09:38Objective C guys to use the dot syntax
0:09:39for properties let alone to switch to
0:09:42like a high-level language into mints
0:09:44then there's you know there's a good
0:09:45reason to do that so I have to come down
0:09:49a similar position as I did many years
0:09:51ago on Mac Ruby is that I don't think
0:09:53bridges are the answer and I don't think
0:09:54my Mac Ruby is the answer certainly it's
0:09:56the best bridge I've seen and it has the
0:09:58most promise and if Apple wanted to make
0:09:59it work they could but I don't think
0:10:01it's the best solution I think it's kind
0:10:03of like a half measure and maybe that's
0:10:05something in favor of it in that if
0:10:07you're going to transition to something
0:10:08don't make this big giant leap I think I
0:10:12come down the other side I say that the
0:10:13big giant leap is the only way you're
0:10:15going to the only way you're gonna have
0:10:17a carrot big enough to get people to
0:10:18come over you know it's it to say this
0:10:21is totally different than what you
0:10:22expected it's awesome in ways that you
0:10:24haven't even imagined and it's so unlike
0:10:26what you've done before that it you
0:10:28won't end up making unfavorable
0:10:30comparisons to the objective-c that
0:10:31you're used to and then it'll be a
0:10:33gradual transition to whatever this
0:10:34thing is but as I said in the previous
0:10:35show I have no idea what that thing is
0:10:37so it's easy for me to say I'll just
0:10:39make it awesome and really radically
0:10:41different than what's out there now and
0:10:42everyone want to switch to it
0:10:44so that's Mac Ruby I I think it's it's a
0:10:48plausible contender Apple can make it
0:10:51work but that I so far don't see
0:10:53anything that makes me think Apple has
0:10:55blessed that as the next generation I
0:10:57think it's definitely in the interesting
0:10:59experiment phase and I haven't seen any
0:11:02moves from Apple that make me think
0:11:03otherwise what did you think about if if
0:11:05you remember
0:11:06when I guess I don't say when Mac os10
0:11:09was gaining prominence as a really cool
0:11:12place to build apps but it was at that
0:11:14turning point when things were were
0:11:17really Apple was really really pushing
0:11:19to try and get as many people on board
0:11:21with developing Mac OS 10 applications
0:11:24in any capacity and if you remember and
0:11:26we talked about this a little bit you've
0:11:27touched on it again there was the the
0:11:30Java you could use jaw you could write
0:11:31absent Java right there inside of the
0:11:34you know the SDK you could just write in
0:11:37Java and they never really they made a
0:11:41big deal out of the fact that they had
0:11:43that and that you could do that but they
0:11:45never really really got in there and
0:11:48supported it they never really had fully
0:11:50fluid you know fleshed out documentation
0:11:52for it and then it they just kind of
0:11:54swept it under the rug and forgot about
0:11:55it
0:11:56and the people who were you know like
0:11:59the big nerd ranch guys you know and
0:12:02those books always said look if you're
0:12:03going to build apps in Mac OS 10 just
0:12:05bite the bullet learn objective-c don't
0:12:07do it in Java it's not as good and some
0:12:11of the first versions of the encoder
0:12:12which is one of the few cocoa apps or I
0:12:15should say Mac OS 10 apps that I built
0:12:16we actually had some parts of it that
0:12:18were in Java and it was true it just
0:12:21made more sense to just do in an
0:12:22objective-c
0:12:23don't you need apples involvement to
0:12:26rienne commitment to really make that
0:12:29successful to know that you're investing
0:12:32in something that's that's long-term as
0:12:33a developer at that time I wasn't coming
0:12:37from a position of strength with respect
0:12:39to languages they were like you know
0:12:42they had the capability to have a Java
0:12:45bridge Java was really popular back then
0:12:47and they were trying to figure out how
0:12:48do we get developers and if the Java was
0:12:50going to be the way that they did it
0:12:51someone an apple thought that that would
0:12:54be a good idea and that the powers to be
0:12:56said okay fine you know let's give that
0:12:58a try we're going to do the carbon thing
0:12:59we're going to do cocoa right and you
0:13:01want you think you can do a job a bridge
0:13:03we'll try that too just because they
0:13:05were hedging their bets they want to say
0:13:07you know we got to do everything we can
0:13:08to get people to develop this I don't
0:13:09think they knew what the result would be
0:13:11because they were coming from a ton of
0:13:13developers who wrote Mac toolbox
0:13:15applications right on power plant or
0:13:17whatever so they had to have Carbon for
0:13:18them like they
0:13:19learn that lesson so the Apple guys were
0:13:22saying it you know koko necks may be
0:13:24great but there's not that many necks
0:13:25developers in the world and we're not
0:13:27sure that we can convince our huge
0:13:29stable of experienced Mac developers to
0:13:32switch to this thing that you love so
0:13:33much
0:13:33so that was one bet and then someone
0:13:35else is saying well job is really
0:13:36popular and there's tons of java
0:13:38programmers in the world so let's try
0:13:40that let's see if we can get you know a
0:13:42you know hey you can write Mac OS 10
0:13:44applications in Java and they'll be
0:13:46awesome so give that a try and you
0:13:48objective-c guys you're next people
0:13:49we're going to make them use your API
0:13:51but we're just going to use a different
0:13:52language that I want to learn Objective
0:13:53C so they had all these irons in the
0:13:55fire the fact that the Objective C
0:13:58proponents were inside the company and
0:14:00there were a lot of them and they slowly
0:14:03came to dominance probably helped but it
0:14:04also helps that you know people did the
0:14:06math may said well I might as well just
0:14:09learn this objective-c thing it's not
0:14:10two differents got some weird square
0:14:11brackets but it's mostly just C and most
0:14:14of them were more inclined to go from C
0:14:16C++ to Objective C than to go from C C++
0:14:18to Java and the final thing is the Java
0:14:22thing was a bridge and bridges stink it
0:14:24gets back to my whole you know bridge
0:14:25thing they don't want to do it's not
0:14:27like the real API it's not the real
0:14:30language do is it was a bridge and you
0:14:31know like you said when you look at the
0:14:33docs Doc's talked about Objective C
0:14:35because they were pre-existing things
0:14:36they didn't talk about Joplin it was
0:14:37just a big mess so the Java bridge fell
0:14:40by the wayside had to be supported for
0:14:42many many years just out of respect for
0:14:44the people who did sort of put some time
0:14:46into it but eventually they dropped it
0:14:47and you know carbon has gone by the
0:14:49wayside too like we went through the
0:14:51transition the bottom line is that they
0:14:52moved everybody into a cocoa and
0:14:54objective-c they found their winner in
0:14:56that in that competition but it is
0:14:59interesting that they had like they had
0:15:00basically a memory manage language it
0:15:02just didn't work out for reasons not
0:15:04really related language mostly related
0:15:05to the fact that it's a bridge and
0:15:06because they were using that language to
0:15:08write to an API that was made for
0:15:09Objective C I'm with you all right I've
0:15:16got one more so would you would you then
0:15:18go so far as to say John that the the
0:15:22concept of of a bridge is a bad concept
0:15:26and Java is proof of that or you
0:15:28wouldn't you go that far
0:15:29I think the concept I think bridges are
0:15:31bad in general
0:15:32doesn't mean you can't make it work if
0:15:33they like I said if they really wanted
0:15:35to and they use Mac Ruby as like their
0:15:38transition strategy and they slowly by
0:15:39steps chant you know develop the API
0:15:43until eventually you know many many
0:15:44years down live people people are
0:15:45literally writing Java applications and
0:15:47it's no longer bridge like they
0:15:48transitioned away from all the memory
0:15:50dangerous uses and stuff through a
0:15:52series of deprecations it could be done
0:15:54but that doesn't mean bridges aren't bad
0:15:56that just means that they may have
0:15:58advantages in terms of getting you from
0:15:59point A to point B through a series of
0:16:02steps but the I do not think they're
0:16:04they're good there are things hard about
0:16:07clean breaks as well you could kind of
0:16:11say that Objective C is not is not a
0:16:13bridge from C C++ but it was a nice
0:16:15transition because they share the same
0:16:17base language I don't know there's ever
0:16:20been a successful bridge stringent but I
0:16:22feel like it could be done but now I'm
0:16:23not I'm not a fan of bridges as we'll
0:16:26get to more when we get to the main
0:16:27topic imma do a quick aside here if you
0:16:30think we have time yeah I'm Ireland
0:16:32stuff from back to work last week sure
0:16:34this is a strange aside in the middle of
0:16:37show by programming languages but I want
0:16:38to be timely because if I keep it around
0:16:40for weeks it will make any sense so last
0:16:44week
0:16:45Rutland man who does the show back to
0:16:47work with you had a blog post about his
0:16:50ongoing struggles for over the book
0:16:52project he's working on and for people
0:16:54who don't know Merlin man is a
0:16:55Productivity expert if you want to put
0:16:57that in quotes I'm sure he would hate
0:16:58that description but I don't know how
0:17:00else to encapsulate what he does but he
0:17:01he writes and gives talks about
0:17:04productivity and related topics and last
0:17:08week he did this blog post that
0:17:10explained the problems he was having
0:17:12getting his current work project done to
0:17:14do a book and you needed to show about
0:17:16it and then after dark as well which are
0:17:18in the show notes and he had the the
0:17:21preview page open for his show where you
0:17:23get the people listeners get to put
0:17:25comments before the show airs and then
0:17:26you talked about the comments on the air
0:17:28and a couple of comments I didn't write
0:17:30any comments but I went through the
0:17:31comments before the show and I did click
0:17:33that little like button yeah on some of
0:17:35the ones that I thought were good
0:17:36mystery most of the ones most of the
0:17:38ones I liked or ones that were
0:17:41challenging questions where they would
0:17:42say the gist that most of them was hey
0:17:45Merlin man your
0:17:46you're this productivity expert but here
0:17:48you are not able to get this book done
0:17:50that's you know you're super late on and
0:17:52you kind of seem like you're bailing out
0:17:53on it how are we supposed to trust
0:17:56anything you say about productivity when
0:17:57in your real life you can't obviously
0:17:59can't be productive and there were
0:18:01several people asking that that's like
0:18:03the obvious question about this whole
0:18:05thing and you talked about it a lot on
0:18:07the show and the reason I click those
0:18:10like buttons was not that I agreed with
0:18:13the people who were saying it but it but
0:18:14that I wanted him to confront those
0:18:16points head-on you know because that's
0:18:17that's the the question that jumps right
0:18:19out at you immediately about this whole
0:18:21thing and and he did that for the most
0:18:24part he gave you no answer the questions
0:18:27head-on and gave answers that he thought
0:18:30people wanted to hear you know he wasn't
0:18:32shying away from it if anything he was
0:18:33trying to stay on topic
0:18:35I wouldn't he wouldn't let you move on
0:18:38to the next questions he want to feel
0:18:39like he addressed it entirely so that
0:18:41was good but the other reason I picked
0:18:43those those questions is that I felt
0:18:46like I knew what the answer was going to
0:18:47be like I wanted to hear him say you
0:18:48know I felt like if someone had told me
0:18:50defend Merlyn man I would have a
0:18:52vigorous defense for his his actions and
0:18:55and what he'd done with the book and
0:18:56everything I don't want to hear him say
0:18:58that too right he got out most of the
0:19:00points but one of them that he missed
0:19:01that I wanted to throw out there
0:19:03here's that but I would have sent if I
0:19:05was in his shoes and someone said the
0:19:06same thing to me here's what I would
0:19:07have said about that ah you know so I
0:19:10would have said that yeah the
0:19:11expectation is that if you some guy
0:19:13writing a book about productivity is
0:19:15going to be written by a Productivity
0:19:16expert that's going to be like somebody
0:19:18who's really good at being productive
0:19:19right and that's what all those
0:19:22questions were based on because people
0:19:23feel cheated and duped or whatever when
0:19:25they see the problems that he's having
0:19:26in real life but what I would say to
0:19:29that is that in reality a person writing
0:19:31a book about productivity is most likely
0:19:33someone who struggle with productivity
0:19:35himself and not just someone who
0:19:37struggle because lots of people struggle
0:19:38with productivity if you're writing a
0:19:39book about productivity you're probably
0:19:40someone who struggle with productivity
0:19:41and also someone's who's smart enough
0:19:44and self-aware enough to explore while
0:19:46you're struggling with it and come up
0:19:48with answers right that's the
0:19:49combination you need you need someone
0:19:50who having a problem with it and someone
0:19:52who's really smart
0:19:53who's going to think about why am I
0:19:54having a problem is what's the deal here
0:19:56if you've never had a problem with
0:19:57productivity and you're super productive
0:19:59and everything you will
0:20:00probably not have much deep insight into
0:20:01what helps make people productive
0:20:03because it would just be like I don't
0:20:05know I just sit down I do work like
0:20:06you're not gonna write a book about
0:20:07Prague - because you have no idea how it
0:20:09works you've never even given it any
0:20:10thought right it's like you had an
0:20:12interview with a Horace they do on the
0:20:14pipeline recently yeah and when he said
0:20:16was like basically mistakes or how we
0:20:18learn which is topic bit up we've talked
0:20:20about on the show before and so what
0:20:22Merlin's
0:20:23experience do basic science Merlin is
0:20:25still making mistakes which means that
0:20:27Merlin is still learning like if you
0:20:29think you know everything about
0:20:30productivity and you're just gonna make
0:20:31pronouncements from the mountaintop you
0:20:33basically stopped learning like you
0:20:35don't want to read that guy's book it's
0:20:36gonna be like I know everything there is
0:20:38to know about productivity I'm going to
0:20:39lay it out for you and here it is right
0:20:40because you think you've got it figured
0:20:42all all figured out right it's kind of
0:20:45similar to the stereotype you hear that
0:20:46like you know psychology majors in
0:20:48school are the people most likely to
0:20:49have psychological problems that that's
0:20:51just the way the world works if you're
0:20:52interested in the topic or have any
0:20:55insight into topics probably something
0:20:57you've dealt with yourself and you know
0:20:58struggle with and it's not just a
0:20:59struggling I guess that you have to be
0:21:00someone who has these problems and also
0:21:03someone who's super smart and self-aware
0:21:04that's how all you know great books and
0:21:06investigations into anything that has
0:21:08anything to do with like you know
0:21:11personality wise or psychological things
0:21:13or any sort of you know human type of
0:21:17endeavor not just like writing about
0:21:19math or something right right the people
0:21:20who have who have struggled with it and
0:21:22thought about it and come up with
0:21:23answers and who continue to do so who
0:21:25have the most insights and I wish she'd
0:21:27made that point in the showing since he
0:21:28didn't I'm making that point in the show
0:21:30so for all the people who are thinking
0:21:31they don't want to read a Productivity
0:21:33book by someone who can't finish a book
0:21:34that's exactly the one you do want to
0:21:36read because when it's done you will see
0:21:39that it has the you know the scars of
0:21:41experience have been built into that
0:21:44book that's a great point I mean I in a
0:21:47way you almost feel like a book like
0:21:50this I don't know maybe maybe this
0:21:52sounds weird but you almost want it to
0:21:54be hard you know what I'm saying
0:21:58yeah I mean this is like I said if it's
0:22:01easy if it's some dude who's like hasn't
0:22:02thought about productivity in ten years
0:22:04because he's been given the same talk at
0:22:06companies for ten years and he thought
0:22:07he figured it out ten years ago and he
0:22:09wrote in a little formula and he got a
0:22:10best-selling book and hasn't given a day
0:22:12of thought since then
0:22:13that's not useful you know you have to
0:22:15still be doing it you have to still be
0:22:16thinking about it to you know to have
0:22:19the insights to share with people
0:22:20because these these things change you
0:22:22know the environment changes technology
0:22:24changes all of our lives change you know
0:22:26you come to different points in your
0:22:27life you can you know relate to things
0:22:29differently when you're you know older
0:22:30and a father than when you're younger
0:22:31and stuff you have to always keep
0:22:32learning it always keep making mistakes
0:22:38let's make mistakes they'll be the name
0:22:40for a show yeah
0:22:41if only somebody would do that yeah all
0:22:46right are you ready for main topic yeah
0:22:48- thirty minutes yeah this is about what
0:22:51we do well let's do our first well thank
0:22:52our first sponsor it's the into its
0:22:54small business blog if you're in a small
0:22:55or medium size business not a large one
0:22:57it's probably not for you because they
0:22:59talk about things like starting a
0:23:02business running a business social media
0:23:04integrating it with marketing and that
0:23:06kind of thing so it really does appealed
0:23:09I think the people who run the small in
0:23:11the medium-sized businesses well you can
0:23:13go there you can go to blog intuit calm
0:23:16you can read articles about this they do
0:23:17interviews with you know up-and-coming
0:23:19business leaders they even interviewed
0:23:21me John did you read that one I don't
0:23:24think I did they interviewed me there
0:23:26and they do that they entered they do
0:23:27interviews and now they've gone mobile
0:23:29so there is an Intuit small business
0:23:31blog iOS app which is very handy of
0:23:35course it works for your iPhone your
0:23:36iPod Touch if you're like John siracusa
0:23:39it works for an iPad and you can read
0:23:41the blog articles you can do full-text
0:23:43searches you could do tons of stuff and
0:23:45it's a brand new app they really want
0:23:46you to go out there and kick the tires
0:23:47on this so you can download that just by
0:23:50searching for Intuit blog in the iTunes
0:23:52App Store or by going to blogged on
0:23:53Intuit calm it's well worth your time to
0:23:56check this out a lot of really valuable
0:23:58articles and they have told me that they
0:24:01are coming in with an Android version of
0:24:02the app as well so go check that out
0:24:04thanks to them very much for making this
0:24:07show possible now on to the topic the
0:24:11real main topic the Royal Wedding is
0:24:15that's not there is that thrill I think
0:24:17that'd be great thanks to Robert Hoglund
0:24:20in the chat room for that idea no that
0:24:22is not the main topic I was I was going
0:24:24to say I'm probably pretty well prepared
0:24:25for that I was what I did watch some of
0:24:27it
0:24:27sorry to disappoint you guys that have
0:24:29such a dim awareness that this thing is
0:24:31even taking place yeah but I would have
0:24:33nothing to say about it believe it or
0:24:34not today believe it or not it's sort of
0:24:38a continuation of the the Copeland 2010
0:24:41show because at the end of that show we
0:24:43started to talk a little bit about
0:24:44programming languages and I thought that
0:24:46was a topic that was worth the whole
0:24:50show on its own
0:24:51some people complain last time that
0:24:52talking about programming stuff was too
0:24:54esoteric and like not in character for
0:24:56the show yeah but just just so happens
0:25:00that we picked less techy topics to
0:25:01begin with it's definitely in character
0:25:03for me it is you're you are a programmer
0:25:05that's what he does what I do for a
0:25:07living so I don't I don't feel like it's
0:25:08out of character so that this is gonna
0:25:09be part of the things that we talk about
0:25:11on the show is programming language type
0:25:13stuffing if you're not a developer and
0:25:14don't care about programming languages
0:25:16then maybe you can skip this week maybe
0:25:18I still think it would be interesting
0:25:19yeah but this is definitely what I'm
0:25:22saying is this is definitely not out of
0:25:23character for this for the show I don't
0:25:25think alright I don't I don't think so
0:25:28not at all as I said in the past show
0:25:30this is a topic that I wanted to write
0:25:32about for a long time but I could just
0:25:33never get to it mostly because it is
0:25:35kind of out of character for what I tend
0:25:37to write on ARS technica and elsewhere
0:25:39as I don't tend to write about
0:25:40programming language that's more of a
0:25:41thing you expect to see on either a
0:25:43personal developer blog which I don't
0:25:46really have one of or a developer
0:25:49oriented site which are static and
0:25:50Macworld and so on or not
0:25:52so I don't get to write about it but I
0:25:53would like to talk about it um so here
0:25:57we go so in a past show talked a little
0:26:00bit about how geeks tend to like a
0:26:02meritocracy I think it was in the show
0:26:03where I was talking about how they felt
0:26:05it was unfair that Windows 1 the desktop
0:26:07because it wasn't and undeserved victory
0:26:09because Mac operating system was better
0:26:11it was the show where we psychoanalyze
0:26:13gruber I forgot what episode that was
0:26:16but that tends to be the case the geeks
0:26:19think that the technically superior
0:26:21solution should win and and as we know
0:26:24it often doesn't I know in programming
0:26:26languages there are a weird case because
0:26:29there's something that only geeks care
0:26:32about but programming languages almost
0:26:34never become popular based on their
0:26:35merits because there are so many more
0:26:37important things than that so it's kind
0:26:40of a weird situation where
0:26:41this thing that only geeks care about
0:26:43it's never a meritocracy and that's why
0:26:46it's a source of lots that's one of the
0:26:48many reasons why it's a source of lots
0:26:49of tension in the geek community these
0:26:51arguments about which language is better
0:26:54than another and so on and so forth so
0:26:57here are some of the more important
0:26:58things that can make a programming
0:26:59language popular so when you have a you
0:27:03know what platform is this language the
0:27:06official language of that's a big thing
0:27:09that can help programming language
0:27:10obviously objective-c would probably be
0:27:12nowhere if it wasn't the official
0:27:14language of the Mac and iOS platforms
0:27:16the only reason a lot of people have
0:27:18especially but in iOS the only reason
0:27:20anyone has learned objective-c is
0:27:21because this wouldn't need to do if you
0:27:23want to write an iPhone app can use this
0:27:28language in more than one place is kind
0:27:29of the opposite like if I learn this can
0:27:31I only write for iOS or can I use it
0:27:33someplace else and this is part of
0:27:35what's made C and C++ ridiculously
0:27:38popular in the old days but so you could
0:27:39write C tons of places like it seemed
0:27:42like it at one point every single
0:27:43platform you see as it's you know native
0:27:45systems programming language and C++
0:27:47differently and then later Java was like
0:27:48oh you learned Java but you can use it
0:27:50everywhere you can use it on all the web
0:27:51development and server side code and
0:27:53maybe client-side code to knows but you
0:27:57weren't just learning a language for one
0:27:58particular thing another thing can help
0:28:00languages like can I create a new kind
0:28:03of application with this language so if
0:28:06I learn this language that I never
0:28:07learned before can I write an
0:28:09application that I can't write in any of
0:28:11the languages that I know now or can't
0:28:14write easily a good example is that like
0:28:16CGI at the dawn of the web you could
0:28:19write a CGI program and see and people
0:28:21did but it was so clearly not not the
0:28:24thing to do so that was a lot of what
0:28:25gave pearls popularity and they're gonna
0:28:27say like you know CGI web it's great but
0:28:29seriously don't write a C program to
0:28:31parse HTTP headers and pillow stuff
0:28:34here's this other language and it does
0:28:35that stuff much easier and look how
0:28:36short this is I can give you a nice
0:28:37little CGI in like a little page of code
0:28:40and hey you don't need to compile it uh
0:28:42and that was a new kind of application
0:28:44that you couldn't write with you know a
0:28:46compiled thing or C or C both of us or
0:28:48was it was so cumbersome that you didn't
0:28:51want to basically another thing that can
0:28:53help languages it is
0:28:55can I try this hot new thing if I learn
0:28:57this language rails is a great example
0:28:59of that rails it was hot and they're
0:29:01like well I really want to try this
0:29:02Rails thing like I know how to write web
0:29:04apps I'm writing about for years but
0:29:05this looks like a cool new way to write
0:29:06web apps and I guess to try this rails
0:29:09things I haven't learned Ruby well okay
0:29:10I'll do that it was like you know call
0:29:13it a fad but it's not that's kind of
0:29:15route but you get the idea and the final
0:29:20thing I have my list here is is this one
0:29:22of only a few possible choices for doing
0:29:24this thing
0:29:25javascript is a good example of this if
0:29:27you want to write client-side web you
0:29:30know code for web applications
0:29:32your choices are basically JavaScript
0:29:35maybe Java for applets and maybe flash I
0:29:38guess but flash requires plugins and
0:29:40Java is this big bloated thing that
0:29:42nobody really like that's why no those
0:29:43took off so your choices are really
0:29:45limited if you want to write client-side
0:29:47web code you're basically be writing in
0:29:49JavaScript write or use or using a
0:29:51framework like CoffeeScript that turns
0:29:53it into JavaScript for you we'll talk
0:29:55about that okay so so the result is
0:29:58since most programming languages are not
0:30:00picked based on their merit so picked on
0:30:02these other tons much more important
0:30:04things the result of this is in my
0:30:06opinion most programming languages stink
0:30:07or in the best case they eventually
0:30:10stink that's the best case the worst
0:30:12that the normal case is that they stink
0:30:13from day one but you have to use them
0:30:15for one of those other reasons that's
0:30:17much more important and which is fine
0:30:19it's not saying you're miserable doing
0:30:20it over but the bottom line is that the
0:30:21language itself stinks and in the best
0:30:23case the day you start using a language
0:30:25it's actually awesome you really like it
0:30:26but then ten years down the line
0:30:29language advancement has moved on you're
0:30:31stuck using someone for one of those
0:30:32other reasons so that eventually this
0:30:34language comes to stink relative to
0:30:35everything else it's kind of like
0:30:38programming language the lifetime of a
0:30:40programming language gets tied to the
0:30:41API or platform lifetime right so you
0:30:46know the API or the platform will live
0:30:50for just decades sometimes but during
0:30:52that time the state of the art in
0:30:54languages it just has that you know
0:30:55advanced way past that and even just
0:30:57during the first few years it you know
0:30:59it doesn't ache long for people to see
0:31:00what it is about the language they're
0:31:02currently using it stinks when they look
0:31:04off to the side to see you know wow look
0:31:06at that cool thing they're doing over
0:31:07there well I can't use that because
0:31:08got a ride iOS applications that use
0:31:10objective-c or well I can't use that
0:31:11because I'm writing web applications and
0:31:13I gotta use JavaScript and numerous
0:31:17cases sometimes a language can suck for
0:31:18years and years even before it becomes
0:31:20popular so the javascript is a great
0:31:22example this JavaScript you know was
0:31:24introduced in that scape whatever was
0:31:251.0 or ages ago javascript was
0:31:27introduced and it just sat there sort of
0:31:31unloved for years because I got a
0:31:33JavaScript I guess you can do some stuff
0:31:35to like you know validate forms or
0:31:37something but whatever right and it
0:31:39wasn't and it wasn't that great back
0:31:42then and then years and years later you
0:31:44know with better dom support and CSS and
0:31:46faster CPUs and better browsers and
0:31:48stuff suddenly javascript is hot it's
0:31:50like well now hey you know we've got we
0:31:52with all these advances in web engine
0:31:53technology and better CPUs and you know
0:31:56all these other things we can do with it
0:31:57dynamic HTML whatever buzzword doing
0:31:59bottom line is suddenly javascript
0:32:01became interesting but it still sucks
0:32:03this was still the same crappy language
0:32:05it was 50 years ago not 50 seems like 50
0:32:07years ago Internet time is still the
0:32:09same credi language but now suddenly
0:32:10it's popular so it didn't even get a
0:32:12chance to be it was never good right and
0:32:14and then it sat there for years doing
0:32:16nothing until people even noticed it uh
0:32:18but now you know people need to get work
0:32:20done like they need to you need to use
0:32:23JavaScript so they want to transform the
0:32:25language into something that sucks less
0:32:26and this happened even before
0:32:28CoffeeScript or to talk about in a
0:32:29second this happened you know as soon as
0:32:31people started having to use JavaScript
0:32:33it's all right well I got to write
0:32:35JavaScript and dhtml is cool and I can
0:32:37do all these cool transformations and
0:32:38all most dynamic stuff or whatever but
0:32:39you know what I would like I would like
0:32:41keep it work like the language that I'm
0:32:42used to so I would like if it had a
0:32:44class-based inheritance instead of
0:32:45prototype based inheritance and I'd
0:32:47really like a nice way to define classes
0:32:48and methods and I really like to be able
0:32:50to subclass stuff and I really like to
0:32:52be able to define properties and do
0:32:54things without polluting the global
0:32:55namespace with variables and all these
0:32:57all the tricks that would learn like so
0:32:59that they very quickly started building
0:33:00this other language on top of JavaScript
0:33:01and they went by all sorts of different
0:33:04names and different API s and everyone
0:33:05who made any sort of library like use
0:33:07the library validating form so we're
0:33:08also going to define our own class an
0:33:09object system and here's how you define
0:33:11a class in our system and use that you
0:33:12define an object and here's how you doin
0:33:13heritance right and then you know seven
0:33:15different people did that so if you're
0:33:16using prototype they had one system and
0:33:17you know something else but but the way
0:33:21they did do was add the API
0:33:22people actually wanted to use because
0:33:23the Dom API the native Dom API who the
0:33:25w3c to find that or whoever define that
0:33:27it stinks it was just a huge verbose
0:33:29thing that nobody ever wanted to type
0:33:31and it was just you know inscrutable and
0:33:33had no convenience functions and it was
0:33:35just just bad so that you know people
0:33:38were wrapping the Dom ten different ways
0:33:40to Sunday you know like listen we know
0:33:42you're never going to use the Dom API
0:33:43but here's this nice little wrapper
0:33:44function to give that a try and jQuery
0:33:47is the big one they're like they did
0:33:49their own objects just something they
0:33:50did all solve the old stuff but in
0:33:51service of saying don't write to the Dom
0:33:53write to jQuery and we're going to
0:33:55define a really convenient API that you
0:33:57can use that it looks like magic and so
0:33:59now we're at the point today where
0:34:00people know jQuery but they don't know
0:34:02JavaScript right the someone did a
0:34:04presentation about that I think was like
0:34:05a jQuery problem or something I googled
0:34:07for it for a while and I couldn't find
0:34:08it but it's basically that you're
0:34:09raising your breed of programmers who
0:34:12thinks that jQuery is what their
0:34:14programming and have no idea this is
0:34:16this language into their called
0:34:17JavaScript that has its own rules and
0:34:18works in its own way now that's like the
0:34:20JavaScript is like the assembly code a
0:34:22CoffeeScript is another example take me
0:34:25to even farther and what's that other
0:34:26one that the cappuccino guys do
0:34:27objective J I think it's called where
0:34:30they're saying look the language is so
0:34:32irredeemably bad you're just gonna type
0:34:34text right we're gonna parse with our
0:34:37own little parser written in javascript
0:34:38turn into JavaScript for you and then
0:34:40execute that so that basically defining
0:34:42an entirely different language not just
0:34:44a new API not just a wrapper for other
0:34:46things but an entirely new language so
0:34:48bad is the underlying language is like
0:34:49don't even type in that language type
0:34:52essentially a big honking string and we
0:34:54will we will take your big honkin string
0:34:56and turn it into something all right and
0:35:00that gets at all that talks about
0:35:02bridges and everything like we know when
0:35:04you're stepping through the debugger and
0:35:05you know Firebug or whatever WebKit
0:35:07JavaScript debugger that's a JavaScript
0:35:09debugger that's not a coffee script
0:35:10debugger it's not a jQuery de barro god
0:35:11forbid you ever step into a jQuery
0:35:13function you'll know there be dragons
0:35:15you do not want to be into that code
0:35:16right if you have some sort of problem
0:35:18in the middle of jQuery you know even
0:35:20when it's not minima minified or
0:35:21anything like that they just highlight
0:35:23the problems of bridges and stop and
0:35:25CoffeeScript and objective J similar
0:35:27type things like you know you're not
0:35:28going to get Apple or Google or whoever
0:35:30to build a coffee script debugger into
0:35:32into their browser unless you really
0:35:35take over
0:35:36the world with your new language that
0:35:37you made up that eventually compiles
0:35:38into JavaScript
0:35:40Google is even worse but they do Java
0:35:42that compiles into JavaScript I don't I
0:35:44mean think about how they do bug that
0:35:46but that's that's Google's problem so
0:35:51the moral of story is that every
0:35:54existing popular language has something
0:35:56terrible about it or many make things
0:35:58terrible about it
0:35:59and it's usually really easy for
0:36:02developers to see what's wrong with this
0:36:03language not not the API is not what you
0:36:05can do with it you know people like
0:36:06these things but just like the language
0:36:08isolate the language itself and say is
0:36:10there anything bad about the language
0:36:12taken in isolation and there always is
0:36:15and it seems like as these languages
0:36:18have stagnated and been tied to these
0:36:19platforms and api's for years and years
0:36:21we've you know made little advances
0:36:24along the side lines and everything and
0:36:25you know academic circles research
0:36:28circles but even just trying things out
0:36:29for real with you know little niche
0:36:31languages and stuff like that we sort of
0:36:33collectively decided on what is good and
0:36:36then when we collectively decide on what
0:36:38is good we can look at the language and
0:36:39say well this thing doesn't have this
0:36:40good thing which we've all pretty much
0:36:41agreed takes a long time to agree on
0:36:43this takes you know sometimes years and
0:36:44years forever to agree that something is
0:36:45good but eventually most people agree so
0:36:47I have a little list of things that I
0:36:49think that collectively programmers have
0:36:51agreed are good things plus or minus
0:36:54applicability obviously everything I
0:36:56list someone is going to say well if
0:36:57you're writing a device driver all that
0:36:58stinks yeah obviously you pick the
0:37:01language appropriate for a context so
0:37:02I'm speaking mostly of the highest of
0:37:05the high levels because languages only
0:37:06get higher level over time not lower
0:37:07level so the lower level languages
0:37:08retain their roles in the levels of
0:37:11distraction where they work best but the
0:37:13top of the stack the highest level
0:37:15languages that people most commonly
0:37:16write and just keep getting higher level
0:37:18and that's the place where the actions
0:37:19that's the place where the most language
0:37:21advancement happens so some things we've
0:37:24decided to good the Commuter decided
0:37:25memory management is good because even
0:37:27though you know at the lower levels yes
0:37:29you do need to management you know
0:37:30someone's got a managed memory manually
0:37:32underneath there someone's got to do it
0:37:34even if you're just writing the VM for
0:37:35your JavaScript engine so I want us to
0:37:36deal with it but if you're writing an
0:37:38application you don't want to deal with
0:37:39that so if you have some language that
0:37:41doesn't have memory management it starts
0:37:44to look a little bit creaky especially
0:37:46if you're writing like an application
0:37:47where it's like dude clicks the button
0:37:48and then this
0:37:49happens you know I don't have to manage
0:37:51memory to connect the dude clicks the
0:37:53button and then something happens thing
0:37:54I'm not I'm not writing vice drivers I'm
0:37:56not writing a VM for a language right
0:37:59one of the deal Denari management native
0:38:01strings pretty much everyone has agreed
0:38:02that native strings are a good thing you
0:38:04know we don't want to add strings to see
0:38:06this is just a byte array and blah blah
0:38:07native unicode strings at this point if
0:38:10you don't iran who doesn't have native
0:38:11you don't screen strings some poor
0:38:13suckers got to make a library that does
0:38:14and then it's just a big hairy mess and
0:38:16you have two different competing
0:38:17libraries and you get you know what were
0:38:20they called in MFC the HIPAA yeah yeah
0:38:22why character strings and all sorts of
0:38:24you know it's just a big mess native
0:38:26native unicode strings have to be in the
0:38:28language because they're so darn useful
0:38:29i think we that most people have agreed
0:38:32at this point for high level languages
0:38:34native regular expressions are a good
0:38:37thing if not native regulus versions and
0:38:40at least a library that implements the
0:38:41native ones are nicer because then you
0:38:42don't have to take your regular
0:38:43expressions and say oh I don't like
0:38:44regular expressions I'm gonna you know
0:38:46they're in strings now it's just a
0:38:47string constant JavaScript does that to
0:38:49an extent but it's nice to have native
0:38:52regular expressions with the native
0:38:53syntax because they're so darn useful
0:38:55and so common I think you don't have to
0:38:57be calling through the library functions
0:38:58for them and you certainly don't want to
0:38:59have to load a third-party library to do
0:39:01with regular expressions native objects
0:39:04and classes not to get into the oo
0:39:07procedural debate functional programming
0:39:10a lot stuff but if you're going to have
0:39:12something that's sort of like objects
0:39:13and classes and you're you know that's
0:39:14going to be like the way you do
0:39:16modularization in your code make it part
0:39:18of the language don't make it so that
0:39:19everyone has to sort of roll their own
0:39:20thing in javascript or say hey we have
0:39:22our own object system you know we've got
0:39:24and we've got our own heritage systems
0:39:25but it's one that people have decided
0:39:27they don't want to use like prototype
0:39:29inheritance people may love it and think
0:39:30it's cool and everything but everyone
0:39:32who wants to program in java scripts
0:39:33like great so how do i make a class and
0:39:35that's kind of a shame for the people
0:39:36who love prototype based inheritance but
0:39:38the bottom line is that that's what
0:39:40people want and you know every single
0:39:42library bends over backwards to make
0:39:43something that at least looks a little
0:39:45bit like objects and classes even when
0:39:47under the covers it's not quite the same
0:39:48thing
0:39:50one I'll add on here that these are
0:39:53getting progressively more controversial
0:39:55I think is it named parameters
0:39:57positional parameters sucka they could
0:39:59probably all agree on that no one wants
0:40:00a function with 27 parameters that have
0:40:02to be exactly the right
0:40:03and you gotta pass nulls or zeros for
0:40:05the ones you don't include and stuff
0:40:05like that names parameters if you if
0:40:08your language doesn't have name
0:40:09parameters people will basically invent
0:40:10them you know for JavaScript passing in
0:40:13you know the little JavaScript object
0:40:16notation for you know name value pairs
0:40:18and stuff like that it's not name
0:40:19parameters and I really need to language
0:40:20but this is a data structure that looks
0:40:22just like name parameters that's what
0:40:23everybody uses but it means that order
0:40:26is not important and you don't have to
0:40:27remember what the seventh argument is
0:40:29well the 12th argument is and stuff like
0:40:31that people want names that's the
0:40:33parameter the code reads better
0:40:34Objective C has a half solution where
0:40:36it's like are we had name parameters but
0:40:37you still have to put them in order and
0:40:38if you don't need to put one you got to
0:40:40put a null for it and this it's a
0:40:42sea-based language you forgive it a lot
0:40:43but I think we can all agree things to
0:40:45have that name parameters succinct
0:40:48syntax for common operations that means
0:40:50no boilerplate it means as no matter how
0:40:53theoretically pure your language is now
0:40:55wants to deal with templates or like if
0:40:57you want to make a class put these 80
0:40:58lines of codes in there and then put
0:41:00your one line of code that's specific to
0:41:02your thing and people don't want things
0:41:04to be verbose and wordy and just huge
0:41:06they want things to be tight and small
0:41:08because if they're not they're not tight
0:41:10and small like in JavaScript where you
0:41:11got to do these little anonymous
0:41:12function closures and everything to get
0:41:14variables inside of scope they will
0:41:15invent the syntax that is succinct to
0:41:17replace your crappy one you know it got
0:41:20thanks gamez ago drop it a CoffeeScript
0:41:21people were sick of typing the word
0:41:22function out what that's you know
0:41:24Huffman coding in the parlance of a
0:41:26Larry wallet people going to be typing
0:41:27the word function eight bazillion times
0:41:29don't spell it out function you know
0:41:30CoffeeScript goes with a little arrow
0:41:31because it's much faster to type it the
0:41:34things that are commonly used to be fast
0:41:36a type and small you know not giant
0:41:39words um have any other good ones here
0:41:43some sort of acknowledgment of
0:41:45concurrency I think we've all agreed is
0:41:47good because languages without any
0:41:48acknowledgement that concurrency exists
0:41:50you end up having problems with it like
0:41:52doesn't mean you have to be you know
0:41:53super concurrent like Erlang or whatever
0:41:55and your entire language is based around
0:41:56that but an acknowledgment that it
0:41:58exists and some native mechanism for
0:42:01dealing with it even is just like a
0:42:03couple primitive native I would say that
0:42:05if you have just have a couple
0:42:06primitives from mutexes and stuff like
0:42:08that then people have this kind of
0:42:09invent some sort of concurrency thing on
0:42:11top of it I mean even it's like implicit
0:42:13concurrency just some acknowledgement
0:42:14that it exists even if you don't even
0:42:16implement it
0:42:16have a language or you can say okay our
0:42:18language construct that looks like this
0:42:20may not have any actual concurrency but
0:42:24the implementation is free to do it
0:42:26concurrently because order is not
0:42:27guaranteed you know something like that
0:42:29I think we've all agreed is a good thing
0:42:30because languages that don't have that
0:42:32it's really hard to add concurrency
0:42:33after the fact so pick a language you
0:42:37can find some of these things that are
0:42:38missing from it often frustratingly so
0:42:41and the question is why if we all if
0:42:43you'll agree that these things are great
0:42:44and you know over the years we've
0:42:46decided this is what languages should be
0:42:48and we keep adding new things to this
0:42:50list why can't we just make a new
0:42:52language that does that well a language
0:42:54in isolation is pretty darn useless if
0:42:56you don't have anything to do with that
0:42:57language if you don't have an API to
0:42:58write foo you can't make programs for a
0:43:01particular platform you're kind of stuck
0:43:03which is a lot of the reason you see
0:43:04like the CoffeeScript and objective
0:43:06sayst J stuff they could invent those
0:43:08languages and I thought hey it's great a
0:43:09menu language called objective J and it
0:43:13looks like this and it's really fun to
0:43:14use they look great what can I do with
0:43:16that we said well you can write web
0:43:17applications feel like I can't require
0:43:19occasions my web browser doesn't have
0:43:20objective site so well we'll take your
0:43:21objective saying J and compile it into
0:43:23JavaScript and then suddenly you have a
0:43:25use for this cool new language
0:43:26CoffeeScript is similar to that or you
0:43:28know rails will make a new API since no
0:43:30one seems to be using Ruby now but we
0:43:32think it's really cool here's this great
0:43:34new framework and if you want to use a
0:43:36framework use the language ah nice
0:43:39questions why can't we just add these
0:43:40cool features to existing languages well
0:43:42it's not it's not easy to add features
0:43:44to languages because you've got that you
0:43:47know installed base and the people who
0:43:50are currently using the language just
0:43:51like what happened with trying to make a
0:43:52Akuma script for which is going to be
0:43:54the successor to JavaScript which is
0:43:55going to add all sorts of cool wizzy
0:43:57stuff that a lot of which is from that
0:43:59previous list add that to JavaScript but
0:44:02then is like you know it's an open
0:44:04standard and there's standards bodies
0:44:05and people with interests in keeping the
0:44:07language the way it is and then you
0:44:08can't get people to agree about what
0:44:10should be added and what shouldn't and
0:44:11then whole process kind of ground to a
0:44:12halt and is really difficult to add
0:44:15stuff to an existing language and even
0:44:17if you get everyone to agree it takes
0:44:19forever for them to be useful like if
0:44:21you made here's the new version of
0:44:22JavaScript and he's got these great new
0:44:24features in fact it's got half of jQuery
0:44:25built into it well you can't use that
0:44:28until some you know
0:44:30a huge percentage of the population has
0:44:32upgraded all their browsers to the
0:44:34browser that has the fancy new version
0:44:36of JavaScript in it and it takes years
0:44:39initialize to happen right look at how
0:44:40long it's taken for dotnet to be viable
0:44:44because you had all those pcs out there
0:44:46they couldn't run dotnet or didn't have
0:44:48dotnet installed and you didn't want
0:44:50your application to be the one that says
0:44:51oh here's my cool new application but
0:44:53first you got to download this 20
0:44:54megabyte net runtime and then you know
0:44:55it's a it's a big hang-up where people
0:44:58don't want to download your application
0:44:59then you have all those machines in
0:45:00China they're still running Windows XP
0:45:01and it's just it's just a mess so it's
0:45:04really really difficult to add features
0:45:07to existing languages and even when you
0:45:09can you have to wait so long to use them
0:45:10the by the time you get to use them
0:45:12maybe you think that all the features
0:45:14you add you're too little and you think
0:45:16the a language is crappy again so we're
0:45:18basically forced to suffer through using
0:45:20crappy ancient languages you know as the
0:45:23rest of technology advances quickly you
0:45:25know and even within the browser stuff
0:45:27advances faster than languages like the
0:45:28CSS DOM and J and Java Sea is that built
0:45:32are rapidly advancing but the JavaScript
0:45:34language not so much like look how fast
0:45:36you know new versions of CSS are
0:45:38supported a new Dom methods and this Dom
0:45:39method is native now we're adding local
0:45:40database support and all sorts of cool
0:45:43stuff that you can write to the API is
0:45:45advanced quickly but the JavaScript
0:45:46language is just stuck I mean you know
0:45:49it there have been tweaks here and there
0:45:50and obviously the implementation it's
0:45:52way way faster but the language itself
0:45:53it's the same old crappy self that
0:45:55always was more or less and so here I we
0:45:58just wait with crossed fingers and we
0:46:00just hope that whatever the next hit
0:46:02platform or API is that it's going to
0:46:04use a better language right and that the
0:46:07that's not just wishful thinking it's
0:46:08happened before so like when the CGI
0:46:10stuff came along that sort of ushered in
0:46:12a new wave of you know dynamic languages
0:46:14with the PC had the Perl Python PHP you
0:46:19know you couldn't you couldn't make
0:46:20those viable to the C programmer say hey
0:46:22stop doing your systems programming in C
0:46:24and C++
0:46:24try purl knit go no thanks but and see
0:46:28when CGI comes along and the P languages
0:46:30yeah oh as a new platform and with this
0:46:33new platform we're going to get to use
0:46:34better languages and since there's no
0:46:35incumbent to unseat and so we don't have
0:46:37to convince the C and C++ programmers to
0:46:39come over we'll just get these new guys
0:46:41hey new guys cool new language try this
0:46:42out write web applications
0:46:44and same thing with rails in Ruby Ruby
0:46:46was not going to be to take over the
0:46:48world you know it was not going to
0:46:49replace you know C++ or you can see
0:46:52sharp as the windows programming
0:46:54language but if they make this new thing
0:46:56with there's no incumbent then Ruby
0:46:57suddenly can become popular and cocoa
0:46:58with Objective C and so on and so forth
0:47:00[Music]
0:47:04and of course it helps when you have a
0:47:05language is controlled by a single
0:47:07vendor like c-sharp where C and C++ you
0:47:12know with it's standard versions that
0:47:14take a million years to come out doesn't
0:47:15change that quickly but c-sharp has
0:47:17changed really fast like it was
0:47:18introduced out of nowhere as kind of a
0:47:19Java cloning thing or whatever and then
0:47:22they've advanced now their versioning
0:47:23version their language like C sharp
0:47:25point 1.0 2.0 3.0 4.0 since a single
0:47:29vendor controls it they don't have to
0:47:30get the okay from anyone else they just
0:47:32stick you want to add a cool new feature
0:47:33to language or controlling we're going
0:47:34to add a new feature add a new feature
0:47:35Apple does something similar with
0:47:37Objective C maybe a little bit slower
0:47:39but they took it easy in the beginning
0:47:40because they're just getting your OB on
0:47:42board Objective C but then it's like
0:47:43guess what properties synthesized
0:47:45methods and the dot syntax and now fast
0:47:49enumeration and and blocks and you know
0:47:51I mean they're add except to C that's
0:47:52pretty crazy it's kind of more of a
0:47:54library thing but if you if you have a
0:47:57single vendor and control of a language
0:47:59it can advanced more rapidly than the
0:48:01standards-based languages but then you
0:48:02know it's the other side of that coin is
0:48:03that if it's not a standard base
0:48:04language people are afraid to use it
0:48:05because they're like I don't want to be
0:48:06under Apple's thumb I'm not going to do
0:48:08Objective C and I don't want to be under
0:48:10Microsoft's thumb so I'm not going to do
0:48:11she sharp and even if it's like an open
0:48:13standards de facto controlled by one
0:48:15person it's always a tension there
0:48:17between the development of the language
0:48:19and how fast is going to move on so now
0:48:25finally finally I think we can talk
0:48:28about Perl
0:48:28oh is this is this is the interesting
0:48:31part for me where you get to participate
0:48:33and express your disdain
0:48:35people love the rants when you go on the
0:48:37rants like that they love it last time
0:48:42so people tuned in for booed maybe we
0:48:44should do our spot you want to do the
0:48:45sponsor now or neck or after this yeah
0:48:47you should go for it
0:48:48world view we've talked about these guys
0:48:50before this is the totally addictive
0:48:52take on email reporting from campaign
0:48:54monitor basically and we have a lot of
0:48:55people I think in the audience ooh
0:48:57- newsletters they have their own
0:48:58business they have a small they do a
0:49:01website maybe they're a software
0:49:02developer they have clients so this is
0:49:05from campaign monitor when you send a
0:49:06newsletter they'll show you on a map in
0:49:08real time
0:49:09whenever somebody opens the newsletter
0:49:11because that's the thing you send out a
0:49:12newsletter you're like whoa who read it
0:49:14Oh 34 people read it who where are they
0:49:16what's going on
0:49:18now they actually show you this in real
0:49:21time on a map and it's very you're
0:49:23talking about things like JavaScript a
0:49:25lot of JavaScript here but it's all
0:49:28seamless it's gorgeous
0:49:29gonna check this out go to a campaign
0:49:31monitor comm slash world view whenever
0:49:34somebody opens your newsletter when they
0:49:36click on a link when they forward it to
0:49:37a buddy in in real time it shows up on
0:49:40this map are you looking at it right now
0:49:41it's very cool it also show you on
0:49:44Facebook when it's mentioned when it's
0:49:46mentioned on Twitter instantaneously and
0:49:48it's free for every email campaign you
0:49:51send and you can you can get started for
0:49:53free too so go check them out check
0:49:54these guys out campaign monitor comm
0:49:56slash worldview
0:49:58thanks very much those guys they're
0:50:01really smart for advertising that
0:50:02feature because I guarantee you that is
0:50:04the the feature that the people who who
0:50:06purchase the service are most excited
0:50:07about news you can just see people
0:50:09staring at that map you know because
0:50:10watching listening and you're gonna send
0:50:12out direct communication like this is
0:50:14what you want like if you just click the
0:50:16button and go home it's not exciting
0:50:17you're gonna sit there and stare at that
0:50:18map and like now now the world will see
0:50:21what I have to say and exactly that is a
0:50:24very smart feature very cool and that's
0:50:26just a demo so go go try this out anyway
0:50:28we got to talk about this Perl thing now
0:50:30you it has been revealed here not only
0:50:34to two things that are I think going to
0:50:36be shocking to most of the listening
0:50:38audience the first one is listen to
0:50:40other shows we've talked about it before
0:50:42two things are going to be shocking to
0:50:44listening on it's the first one is that
0:50:46you you your job you are a pearl
0:50:50programmer so that's shocked number one
0:50:52and shock number two is that at least
0:50:55this is the part that we're going to
0:50:56have to talk about my understanding is
0:50:58you can actually read the pearl after
0:51:01you've written it you can go back and
0:51:02read what you've written and understand
0:51:04it which is my understanding is that's
0:51:06not possible with pearl at all even in
0:51:08the best situation so I'd like for you
0:51:09to address both of those points
0:51:11please begin well at first I want to
0:51:14talk about something that you said on a
0:51:15past show about objective-c but I think
0:51:17it was on the previous show where you
0:51:19were talking about the square brackets
0:51:20in a coalition - and you can't stand I
0:51:23don't like this yeah so you've obviously
0:51:25done a little bit of objective-c
0:51:26development ah yeah and you like what
0:51:30the language can do for you you like
0:51:32yeah the resulting applications you know
0:51:34you like the platform you like iOS you
0:51:35like Mac OS 10 yeah
0:51:37but the language itself you don't like
0:51:40and you brought up the square brackets
0:51:42cuz you think they're ugly I don't like
0:51:45this I don't like the look of it I am a
0:51:47very uh I care a lot at least on on the
0:51:52computer I care a lot about how things
0:51:55look visually but you know I'm a
0:51:57stickler for fonts I've written a lot of
0:51:59articles on high vulajin sand what fonts
0:52:04I it's you know the editor that I use is
0:52:07almost secondary to the font that I'm
0:52:09using to do code in I mean I'm very the
0:52:12way that things look the way the
0:52:13language looks and this this again this
0:52:15is why I'm such a big fan of programming
0:52:18languages like Ruby because they look it
0:52:21looks great I mean even even the people
0:52:23who hate the Ruby most and I'm talking
0:52:25about anybody who prefers Python they're
0:52:28the biggest the biggest anti rubyists
0:52:30out there in the world even they admit
0:52:32the Ruby looks nice I mean they'll say
0:52:33python is better I'm you know we don't
0:52:35need to get into that on this show but
0:52:38even they'll admit that it is a nice
0:52:40looking a nice looking language for me
0:52:43that typing in in something that that
0:52:46you know creating code that looks nice
0:52:48I'd I'd try you know I love that so that
0:52:51matters to me there's a lot of people
0:52:53who are you know laughing saying oh who
0:52:55cares about that it's the power of the
0:52:57language that you want and and if that's
0:52:59the case then I think they get in line
0:53:02with you and then start writing right
0:53:04and Perl because you can do stuff in
0:53:06Perl it's just kind of crazy so the
0:53:09point I want to bring up about this is
0:53:11two things first that aesthetics and
0:53:13programming languages even though it's
0:53:15subjective I think you could probably
0:53:19identify some themes and I think one of
0:53:22the themes especially for the people who
0:53:24like Ruby
0:53:25is that none word characters are ugly
0:53:29and word characters are not right so
0:53:32anytime you get a non word characters
0:53:34anything that's not you know a through Z
0:53:35numbers or underscores maybe hyphens
0:53:37anytime you get anything that's not one
0:53:39of those characters it's it's noisy and
0:53:41it's ugly but you know basically any
0:53:42character you wouldn't see in prose or
0:53:44even stuff like commas sometimes with
0:53:46periods they don't like right so the
0:53:48square brackets they fall under your
0:53:49your unkind gaze because square brackets
0:53:53don't appear in regular prose almost
0:53:55ever and there's certainly not word
0:53:57characters and they're actually kind of
0:53:58like sharp pointy edges right am i
0:54:01understanding by the way as an aside is
0:54:02that you can use dot notation instead of
0:54:07brackets in objective-c
0:54:10and I was talk to the guy who wrote note
0:54:12C which is a great iOS app he told me
0:54:15this on the daily Edition earlier in the
0:54:17week I heard that but then you're
0:54:20falling into something that's
0:54:21non-standard you're like the one guy who
0:54:22does it that way which is not a really
0:54:25good topic I want to talk to you about
0:54:27perhaps on this show or another show
0:54:28about whether you adapt the language to
0:54:31your own particular style or whether you
0:54:33adapt your style to the language of
0:54:35choice or a third option as you adopt
0:54:38whatever the corporate style is for the
0:54:42project and or tasks that your team team
0:54:46rather that you're working on anyway
0:54:47there could be another topic well Apple
0:54:49has been pushing sort of pushing the dot
0:54:52syntax even within Apple there are
0:54:56people who still won't use it and I bet
0:54:57if you were to look at Apple's code
0:54:58they'd be big divisions like these are
0:54:59the dot people and these are the non dot
0:55:01people I think suspect the old-school
0:55:03guys don't like that syntax but apples
0:55:04been pushing it a lot like if you go to
0:55:06WC a lot of the sessions the official
0:55:08party line is we invented dot notation
0:55:11so you could use it it's not like we're
0:55:12going to invent it and nobody should use
0:55:13it you should use it and they will make
0:55:15a good show of saying we here at Apple I
0:55:17trying to use it too with our new you
0:55:19know stuff at the very least I want you
0:55:21to use the app property at synthesize
0:55:22and stuff like that like they're pushing
0:55:24that as a modernization of the language
0:55:26right um
0:55:27and partly because I think it does look
0:55:30nicer you know fewer non word characters
0:55:33right so the point I want to bring up
0:55:34about non word characters is the aside
0:55:36that I meant to get to last time about
0:55:37the Joint Strike Fighter
0:55:39I put a link in the show notes too to
0:55:40this the Joint Strike Fighter was a US
0:55:43government project to make a new
0:55:46airplane to replace several existing
0:55:49models of airplanes through several
0:55:51branches of the armed forces they wanted
0:55:53to replace a bunch of planes in the Navy
0:55:54the Air Force and the Marines with a
0:55:57single new plan that could be adapted to
0:55:58several different purposes that's
0:56:00actually an aside that's not the point
0:56:01of trying to get about making one plane
0:56:02to replace many different other ones but
0:56:04the main thing is they had a competition
0:56:05between defense contractors said you
0:56:07want to be the the company that makes a
0:56:08Joint Strike Fighter well you know
0:56:10here's some amount of money and bring us
0:56:13two prototypes and you know it was the
0:56:16competition between basically Boeing and
0:56:18Lockheed were the two big ones that were
0:56:19the only people who had the money and
0:56:21skills basically to compete so it was
0:56:24actually contract for the government
0:56:25that did they had more than one bidder
0:56:26but anyway uh they said you know bring
0:56:28us what you think is the best suited
0:56:30plane for this and then we as the
0:56:31government will take a look well you
0:56:32brought us and bring each one through a
0:56:33series of tests and decide which one
0:56:35we're going to spend you know bazillions
0:56:36of dollars on over the next decade two
0:56:38decades three decades to replace all our
0:56:40points and there was a PBS show I think
0:56:43it was a nova thing but anyways a link
0:56:45to in the show notes I don't know if you
0:56:46can actually watch the video it's a very
0:56:47old show so I think maybe you can get
0:56:49the video online but if not you could
0:56:51maybe see if it comes on TV again but it
0:56:54was a documentary showing the
0:56:56competition between Boeing and Lockheed
0:56:57which is excellent show if you have an
0:56:58hour of time you can find this thing you
0:57:00should watch it it's really awesome to
0:57:01watch the show but the boss fascinating
0:57:03aspect of it was that at a certain point
0:57:05in the program they started to talk
0:57:08about the difference between these two
0:57:10planes and it was something that would
0:57:12be on anyone's mind watching the show up
0:57:14to that point but not discuss then they
0:57:15came out and discussed it which was that
0:57:17Boeing's entry was uglier than la Keats
0:57:20the plane itself have you were to put
0:57:22them side-by-side like right note from
0:57:23the second you see it Lockheed looks
0:57:25cool like a little spaceship like
0:57:26something from Star Wars and Boeing's
0:57:27it's kind of you know homely looking
0:57:29it's got a big mouth for an air intake
0:57:31and it's kind of stub nosed and just it
0:57:34just looks uglier now this is a
0:57:37competition billions and billions of
0:57:40dollars are on the line
0:57:41the security of your entire nation the
0:57:43safety of your people there's going to
0:57:45be people flying these planes people
0:57:46repairing like the looks of these planes
0:57:49you would think could anything possibly
0:57:51be less important this is
0:57:52life-or-death situation things that
0:57:55matter are like performance cost safety
0:57:57you know effectiveness that the the
0:58:01performance of the actual plane itself
0:58:03the durability does looks have anything
0:58:07to do with it
0:58:07anything at all and as the people
0:58:09discuss very openly in the show they can
0:58:11say you know well looks of the plane
0:58:14really shouldn't matter but is it an old
0:58:15saying in aviation that if it looks
0:58:17right it'll fly right hmm now that's
0:58:19saying the origin of that saying is like
0:58:22that's just like a massive
0:58:23rationalization for the idea that people
0:58:25and men in particular are hardwired to
0:58:27like things that are attractive doesn't
0:58:29mean the plane has to look like you know
0:58:30the body of a woman although it often
0:58:32does but that people like beautiful
0:58:35things and you can they're rational mind
0:58:38can say to them all the other stuff
0:58:39about how everything else is more
0:58:41important and how this plane looks means
0:58:42absolutely nothing the bottom line is
0:58:44that the better-looking plane usually
0:58:46wins when there's a competition for you
0:58:48know which things going to get a
0:58:49contract and I'm not saying that's why
0:58:52the winner of the Lockheed won this this
0:58:55contract I don't think I'm spoiling
0:58:57anything to say that but Lockheed
0:59:00eventually did win because they had the
0:59:01better-looking plane right there are
0:59:03many other reasons that that they won
0:59:05the contract but the fact that looks was
0:59:08acknowledged to be a factor that
0:59:10basically saying we can't help but we're
0:59:12silly meatbags who love beautiful things
0:59:13and right or wrong looks are going to be
0:59:16a factor and we can rationalize and say
0:59:18even if we had never seen these points
0:59:20and adjust seeing the numbers and we
0:59:22just knew based on experience but the
0:59:23Lockheed makes great planes or whatever
0:59:25you know blah blah walkie was probably
0:59:26gonna win no matter what but the fact
0:59:28that looks are you know acknowledged to
0:59:31be an important factor in that thing
0:59:32there's no hope of aesthetics not being
0:59:36a factor in something like programming
0:59:37languages we're much less is at stake
0:59:39right I think this reveals you know I
0:59:42hope the people ever involved a
0:59:44self-aware enough to realize that this
0:59:46is this is a flaw in reasoning and they
0:59:48shouldn't go back to if it looks right
0:59:49it flies right it's the old saying that
0:59:50my Pappy says your Pappy was was
0:59:53excusing his stupid illogical behavior
0:59:56with a catchy saying like that's an
0:59:58acknowledgement of you being wrong
0:59:58acknowledgement of you being wrong
1:00:00you can't use that to support your
1:00:01argument no if it looks right it does
1:00:03not fly right things a lot of things
1:00:04that look awful
1:00:05fly great and a lot of things that look
1:00:06great do not fly at all it's not this
1:00:09thing makes no sense so to bring that
1:00:11back to programming languages yeah
1:00:14people pick a lot based on their
1:00:15aesthetics but you know it shouldn't be
1:00:20a factor even though it is luckily with
1:00:23programming languages there are so many
1:00:24other factors that even that dominate
1:00:26looks that you know we can't even get
1:00:27decent languages irregardless of
1:00:28irregardless is not a word sorry
1:00:30regardless of the looks of the language
1:00:32you can't we can't get a good one that
1:00:34has all the features you want because of
1:00:35other things that are involved but you
1:00:37know when we're left to you know have
1:00:39petty squabbles about which one of the
1:00:41crappy languages that were forced to use
1:00:43is better than the other we fall back on
1:00:45looks and the gang gets back to the
1:00:48fewer non-work characters the better so
1:00:50I don't like discussions about books of
1:00:52languages because I think it's mostly
1:00:54moot with programming language at least
1:00:57you can say all right maybe it has
1:00:59nothing to do with looks but a lot of
1:01:00these know our characters I need to hold
1:01:02down shift to use and they're not you
1:01:04know there have take my fingers off the
1:01:06HOME key so they're like actual rational
1:01:09regions where you can talk about curly
1:01:11braces are bad or square brackets are
1:01:14bad or any other character that I have
1:01:15to stop typing stop typing
1:01:17touch typing for and do a chord
1:01:19keystroke to get that's bad mmm so at
1:01:22least you have that little thing in that
1:01:23word but the aesthetics of languages
1:01:25even though you can find that common
1:01:26thread of non mark characters being ugly
1:01:28it really depends on what you're used to
1:01:30a lot to and where you're coming from
1:01:33so with Perl I would imagine the number
1:01:36of characters that are most offensive to
1:01:37everyone are things like the dollar sign
1:01:39which is and all the variables no one
1:01:40likes that the @ sign % that's you know
1:01:44the fact that every identifier has some
1:01:46sort of prefix on it people don't like
1:01:49that now if you're coming from shell
1:01:50programming that's not a big deal
1:01:51because in shell success is the same
1:01:52thing it's like that's where the syntax
1:01:53comes from reading you know basic stuff
1:01:55like that on it too but if you're coming
1:01:57from see where your identifiers are
1:01:59basically unadorned you see that as no
1:02:01eyes and you think it's ugly
1:02:02no so getting into Perl specifically
1:02:08it's got all the prefixes in the various
1:02:10people alike but another reason Pro
1:02:12comes in for the ugliness thing
1:02:13is that it was the first language to
1:02:15first language to really become popular
1:02:17that had made of regular expressions in
1:02:19it
1:02:20the programmers use obviously regular
1:02:21expressions were out there and you know
1:02:22command-line utilities like grep and
1:02:23stuff like that but this was the first
1:02:25time that a real programmer quote
1:02:27unquote was forced to see regular
1:02:29expressions because he was doing this
1:02:30program and see Recife sauce and some
1:02:31dude came along and said I'm writing a
1:02:33CGI application it's Perl and check this
1:02:34out and then it's the first time they
1:02:36see your deal with regular expressions
1:02:37and what they think is a real program
1:02:38and not just like some shell thing sis
1:02:40admin's do which is beneath them like
1:02:42what the hell is that now as we all know
1:02:44today regular expressions look like that
1:02:47for a reason it's a compact
1:02:48representation of something that would
1:02:49it would be much uglier and longer if
1:02:51you had to write your own you know state
1:02:53machine or you know okay what you write
1:02:56your own regular expression engine you'd
1:02:57basically end up either reinventing
1:02:59regular expressions yourself badly or
1:03:00writing a huge strings Betty spaghetti
1:03:02go to do a regular expressions to do so
1:03:04regular expressions look kind of like
1:03:06line noise but they're they look like
1:03:08that for a reason and they're useful and
1:03:10every language nowadays has them and
1:03:12recognizes that but Perl was the first
1:03:13so the impression of Perl is look at all
1:03:15those freaking dollar signs and oh my
1:03:17god this program is just one big regular
1:03:19expression and I've never seen very good
1:03:20friends boring I do not understand why
1:03:22regular expressions are so inscrutable
1:03:24to me it's just this horrible looking
1:03:26thing you know so your reputation you
1:03:30know first impressions may mean a bit a
1:03:31lot and the fact that Perl was the first
1:03:33one to come in with very discretions
1:03:35it's like boom you're labeled the bosal
1:03:36bit is flipped you are the language that
1:03:37nobody can read and yet had the shell
1:03:40like syntax and everything now it's
1:03:43interesting that this type of you know
1:03:45prejudice against languages with weird
1:03:47stuff is just to compare the end keyword
1:03:52in Ruby where you know instead of having
1:03:54curly braces curly braces your bag is or
1:03:56non word characters and you have to hold
1:03:57down shift to type them right but end is
1:04:01a lot longer than curly braces isn't it
1:04:02and the real programmers quote-unquote
1:04:04from the olden days C C++ guys they had
1:04:06curly braces still yeah
1:04:08curly braces weren't a big deal to them
1:04:09ah and again it seems like bad Huffman
1:04:12coding to take probably the most
1:04:14commonly typed keyword in your entire
1:04:16language and in the case of Ruby and
1:04:18make three characters long instead of
1:04:20one even if you count the QWERTY coke is
1:04:23to like hold down shift and hold down
1:04:24the you know the the bracket key and is
1:04:27still longer to type
1:04:28so it seems like if you're going to be
1:04:30like oh you know what's going to win is
1:04:32aesthetics in terms of making me type
1:04:34too much stuff going to win or or is
1:04:37aesthetics in terms of non-word
1:04:38character is going to win and pearl
1:04:40basically didn't get dinged for having
1:04:42curly braces and Ruby didn't really good
1:04:45things for having the end keyword too
1:04:47much but nowadays if you were to say
1:04:49what looks cleaner they're going to say
1:04:50Ruby looks cleaner even though it's got
1:04:52these little end keywords littering up
1:04:53the entire thing but it doesn't have the
1:04:55curly braces you're like well I have
1:04:57that end but I don't have to have the
1:04:58opening curly you know so people
1:05:02deciding what it is that makes something
1:05:03ugly or not whether it's Dena word
1:05:05characters or having to type some long
1:05:07thing that tends to flip-flop based on
1:05:09the context and the same people have a
1:05:11different opinion when looking at
1:05:13different languages at different times
1:05:15so for for Perl you don't like it
1:05:20because ugly and you make the jokes
1:05:21about it being a read only and stuff
1:05:22like that but there are other things
1:05:24that give it a bad reputation but the
1:05:27most people probably don't know about I
1:05:29think my my description of why people
1:05:32don't like Perl pretty much covers the
1:05:34basis for anyone who it hasn't actually
1:05:35done any programming in Perl where
1:05:38they'll say I don't like it
1:05:39it's ugly regular expressions are
1:05:41unreadable the end more or less you have
1:05:44any actual more actual objections coming
1:05:46from someone who doesn't really write in
1:05:47Perl against the Perl language yeah I
1:05:52think I think it all really does come
1:05:53down to just legibility how how it's
1:05:57it's a joke people in the chatroom or
1:05:59even talking about it that it's it's a
1:06:01tough language and also I mean it are
1:06:03there you know people will complain and
1:06:04I'm not sure that this isn't the knock
1:06:06against the language directly but there
1:06:08are the where where are the really
1:06:11awesome frameworks written in Perl that
1:06:13people should be using where where does
1:06:16Perl move into the the next generational
1:06:18kind of thinking I mean sure it's great
1:06:20if you want to you know write something
1:06:22that will parse text and turn it into
1:06:24HTML for you but what what are people
1:06:27using Perl for in the real world why
1:06:29doesn't it get the kind of attention
1:06:31outside of those uber geeky sysadmin
1:06:34type circles I feel like the Perl got
1:06:39this reputation based on the things
1:06:40we've already discussed
1:06:41many years ago and that's when people
1:06:45stopped looking at it right so the fact
1:06:48that you don't know the answers to any
1:06:49of those questions doesn't mean that
1:06:50there aren't answers it just means that
1:06:53the latyout you have removed pearl from
1:06:56your mind in the past and haven't looked
1:06:57at it since and neither of any other
1:06:59people so it doesn't come up anymore and
1:07:00you're just assumed there's nothing else
1:07:01it seems like a dinosaur of a language
1:07:04now I'm partially I did truth be told I
1:07:07do know the value of pearl I can write
1:07:09some pearl code although probably not
1:07:12very much anymore I certainly do
1:07:14appreciate it as a language I'm kind of
1:07:16playing devil's advocate here and I'm
1:07:18playing up the stereotypes the language
1:07:20Imana because your representative oh
1:07:23well yeah and I think so and that's
1:07:24that's kind of what I want to hear your
1:07:26take would you would you be saying this
1:07:28do you think if you weren't right I mean
1:07:30you you write Perl eight hours a day is
1:07:32that I mean or yeah yeah that's that's
1:07:35that's surprising so before I go and
1:07:38tell you what's good about Perl I'm
1:07:39gonna tell you the things that are bad
1:07:41about it that I think are much more
1:07:42significant than the things we just
1:07:44discussed okay because I think Pro got
1:07:46dismissed long before but it got
1:07:49dismissed by the mass market long before
1:07:52the mass market discovery was truly bad
1:07:54about it all right so the things that
1:07:57are actually you know because I think
1:07:58that aesthetic stuff as evidenced by
1:08:00objective-c like that that stuff you can
1:08:02get over like regular expressions
1:08:03everyone's gotten over already so
1:08:05regular expressions even though you know
1:08:07everyone will agree okay I get I
1:08:09understand Regulus prices now I see why
1:08:10they're useful and see why the line
1:08:12noise and they're in every freaking
1:08:13language so you can't pinpoint perl for
1:08:14but still Perl gets the blame for being
1:08:16I read all the other and the dollar
1:08:18signs like the square brackets like if
1:08:20there was some reason to keep using Perl
1:08:22and it was really popular people get
1:08:23over like you get over the square
1:08:24brackets maybe not you but most people
1:08:26basically you know grin and bear with
1:08:28the square brackets because of the other
1:08:29advantages and to just to respond to you
1:08:32really quickly if if I was if I was
1:08:35serious about writing an iOS app or Mac
1:08:38OS 10 app in and today I would have no
1:08:40problem dealing with it I probably would
1:08:43eventually get to like it and there are
1:08:44people who will say oh the objective-c
1:08:46is beautiful maybe it would grow on me
1:08:49but certainly if if the choice is taken
1:08:52away if if somebody said oh you can use
1:08:54Mac Ruby
1:08:55and just write Ruby code and of course I
1:08:57would pick that first because that's
1:08:59where my comfort zone is and because I
1:09:01like that I'm comfortable with that but
1:09:03yeah I mean you deal with it but is that
1:09:06what you're saying about pearly you're
1:09:07not saying that so so what I'm sort of
1:09:08saying is that those little things I
1:09:10think would not have been enough to keep
1:09:11people away what kept people away was
1:09:13that it was the standard bearer for
1:09:15things that freak people out about
1:09:16syntax and aesthetics and people moved
1:09:18on before they find the real problems
1:09:20here are the things that are actually
1:09:20problems with Perl the only people who
1:09:22know that these are actual problems with
1:09:23Perl the people who have seriously been
1:09:25developing with Perl because a those
1:09:26people have gotten over or never been
1:09:28affected by whatever you know Perl is
1:09:30ugly thing like if they knew a regular
1:09:33expressions before or they or they just
1:09:34got used to them came to like them they
1:09:36dealt with the dollar signs or they
1:09:37actually came to like them or whatever
1:09:39those weren't the issues here the actual
1:09:40issues of the Perl now the first big one
1:09:42is that Perl is kind of like JavaScript
1:09:44in that it doesn't do the things that
1:09:48people wanted to do with respect to
1:09:50object systems so it gives you this
1:09:52little mini construction kit from which
1:09:54you can build what more traditional
1:09:57object system might look like and many
1:10:00people did they took this was Pro 5
1:10:01which introduced these object oriented
1:10:03mechanisms they took this little tool
1:10:04kit and I said okay well I want objects
1:10:06that look like this and they would write
1:10:07a little the equivalent of like all the
1:10:09but you know prototype and jQuery on the
1:10:11stuff that they build their own little
1:10:12object maker thing inside their
1:10:14framework well everybody in Perl built
1:10:16their own little object maker thing and
1:10:17all of them were slightly different and
1:10:19all them are slightly incompatible and
1:10:21you know over time people came up with
1:10:23new ones we're gonna do two objects like
1:10:24this so I'm going to do objects like
1:10:25that I'm gonna do them like this and
1:10:26here's how you build a class and my
1:10:27thing I'm going to do this and I'm gonna
1:10:28make a you know a source filter and I'm
1:10:31gonna add new keywords and I'm going to
1:10:32do this syntax and I'm gonna make my
1:10:33objects inside out you even know what
1:10:34that is no one outside Perl poly knows
1:10:36what inside out objects are but uh all
1:10:38sorts of you know I can make my objects
1:10:40out of a race because it's faster and
1:10:41I'm gonna make you know all crazy sorts
1:10:44of things you know the problem was that
1:10:46that leaves you with a huge library of
1:10:48code everyone ever and everyone's using
1:10:50their own little object construction kit
1:10:52and they're either not compatible with
1:10:54each other or it's like well why do I
1:10:55have to have 17 different object
1:10:57construction kits in here in my in my
1:10:58one application when I really just want
1:11:00one this is something that should have
1:11:01been built into the language now it's
1:11:03bad that it wasn't because you get the
1:11:05situation where there's a million
1:11:05different object systems right but on
1:11:07the other hand well I
1:11:08I'll set it up for the part where I do
1:11:09good stuff it's just that were the bed
1:11:11there's not one way to do objects and
1:11:13people did million of them is big Harry
1:11:15messing continues to be a big hairy mess
1:11:16to this day um the other thing is that
1:11:22Perl I guess we have to start getting
1:11:25into the good at this point because I
1:11:27think that's probably probably the
1:11:28biggest bad thing about Perl and I guess
1:11:30the implementation doom the Perl was
1:11:31written is a big giant C program by one
1:11:34dude and that one dude rewrote it uh but
1:11:38really that's not you know Ruby has the
1:11:40same problem to some degree of like
1:11:41being a big Harry C program under the
1:11:43covers that has problems that's why
1:11:44projects like JRuby and maglev and all
1:11:47these other you know rubinius is that
1:11:50are you pronouncing all the other VMs
1:11:51when when your language is defined
1:11:53basically by you know how does the Ruby
1:11:56executable behave this Ruby C program
1:11:59written by a couple of guys that defines
1:12:01my language like it's not there's a
1:12:02language spec there's no language
1:12:03standard it's like we wrote this program
1:12:06you feed its source code that we say is
1:12:08Ruby source code and it executes it for
1:12:10you your language can end up being
1:12:13hamstrung by the interpreter and that's
1:12:15true of Perl the summary slide because
1:12:16any C program that's long lived get
1:12:18scruffty or whatever in a certain point
1:12:19you have trouble extending an advancing
1:12:21language because the internals are
1:12:23gross-looking and perl has been working
1:12:26towards improving that and so is ruby
1:12:28and so of all the other ones back
1:12:29sometimes they say you know we're not
1:12:30even going to deal with the real Ruby VM
1:12:32we're gonna we're going to use a JVM and
1:12:33write our own thing on top of it and
1:12:34just you know you got that whole thing
1:12:36going on but that's the other thing
1:12:37that's that hamstrings languages like
1:12:39Perl Ruby hmm the good thing about all
1:12:43this bad stuff is that the fact that
1:12:46there was no objects just insulting and
1:12:47everyone built their own little optics
1:12:49system it basically became like a
1:12:52breeding ground or I'll I don't know
1:12:54you'd call like a Genesis project for
1:12:57object systems alright so the first dude
1:13:00to write an object system and pearls
1:13:02like to make it like C++ and then Java
1:13:04comes out and let's make some sort of
1:13:05like Java type thing on top of it and
1:13:07then all these weird experiments that no
1:13:08one even heard of with the inside out
1:13:09stuff and trying to protect the
1:13:11variables with closures because we don't
1:13:13have real variable privacy and designed
1:13:15by contracts and all sorts of crazy
1:13:17approaches like everything you can
1:13:19possibly imagine was tried and what
1:13:21would happen is that the better one
1:13:22would squish the old one so like this
1:13:24would be you know I made a quadric
1:13:26system no guy no I made a cooler one
1:13:27everyone forget about that ol one
1:13:28because it sucks and then I'll make him
1:13:30cooler one and they were forget about
1:13:31that one they try something else and I
1:13:32say okay I'm we're gonna make method
1:13:34makers and class generators and a whole
1:13:36class of things that just let you make
1:13:38accessor methods in 50 different ways
1:13:40and we're going to try to you know layer
1:13:41on a type system and we're going to do
1:13:43tons and tons of experimentation which
1:13:45you couldn't do if this the language
1:13:47came with like this is how you do
1:13:49objects which for the most part Ruby
1:13:50comes with like here's how you do
1:13:51objects in Ruby here's how you do
1:13:52attributes getters and setters excuse me
1:13:55Python was a little bit different in
1:13:56that Python had like new objects and old
1:13:58job jokes where they had one way to do
1:14:00objects and people said well this is
1:14:01great but there's some common things
1:14:02that doesn't do so they had a new style
1:14:04object and then they had Python 3 right
1:14:06Perl 5 just start up with that little
1:14:08core of you know an object construction
1:14:10since we've got a simple thing for
1:14:11inheritance is a simple thinker method
1:14:13dispatch and a simple thing for you know
1:14:15the Ruby equivalent of the proto Kedar
1:14:17method missing in Ruby and just go nuts
1:14:19and people did go nuts ah what has led
1:14:22to is that I think the Perl has had and
1:14:26continues to have the largest group of
1:14:28developers doing quote-unquote advanced
1:14:30stuff in a semi popular language if you
1:14:32want to do interesting advanced language
1:14:34type stuff you can do it on top of pearl
1:14:37because pearl doesn't decide how they're
1:14:38going to do it for you so for example
1:14:40pearl is the only language that I know
1:14:41of where as a community if you're in the
1:14:44pearl community it's basically been
1:14:46agreed upon that roles are awesome and
1:14:47better than regular all now do you even
1:14:49know what roles are roles with in which
1:14:52context explain it roles traits you read
1:14:55the paper on traits that roles as pearls
1:14:57name for them it's a different way of
1:14:58doing instead of doing inheritance of
1:15:01delegations different is a different way
1:15:03of factoring out common code instead of
1:15:06factoring out code in terms of
1:15:07inheritance or mixing classes or you can
1:15:09you patching or whatever I mean this is
1:15:12something that most people haven't even
1:15:13heard of unless you're like deep into
1:15:15the Pearl community but at this point
1:15:16with so much scratching going on in the
1:15:18Pearl community that you if you were
1:15:20asked to someone who's deep in the
1:15:21thrall community our role is good or bad
1:15:22they would say good and everyone else
1:15:25that haven't even heard of it and this
1:15:25is true of tons of stuff like when ruby
1:15:27was coming out and all the pearl people
1:15:29are bitter because rubies being popular
1:15:30and everything i don't know if people
1:15:31know this but have you noticed a
1:15:33similarity ruby it's a gemstone pearl to
1:15:35kind of a shiny thing really
1:15:36was basically inspired by pearl with
1:15:39like the edges shape that's the people
1:15:42don't like to think about that in that
1:15:44relationship but it's there you know you
1:15:47wonder about those dollar signs in Ruby
1:15:49oh they're there people a little at sign
1:15:51in front of it I know you don't use them
1:15:52because they're in global and stuff but
1:15:53they're there anyway we won't talk about
1:15:55the lineage but they were like look at
1:15:58look at Ruby we can do this awesome
1:15:59stuff look this is method missing thing
1:16:01and we can pass a block to a function
1:16:03and it gets like you can call it back
1:16:05and it's this awesome and the pearl
1:16:07people roll in their eyes and be like oh
1:16:08great so you discovered that isn't that
1:16:10awesome
1:16:10and we Anna this is stuff that's been in
1:16:12Pearl is old hat and pearl like the
1:16:15autoload and you know dealing with
1:16:17closures and stuff that it's like that
1:16:19was like a decade ago guys you know and
1:16:20then it's the same way the list people
1:16:22are and the small talk people are
1:16:23rolling their eyes at the Pearl people
1:16:26go