Podcast Search

Hypercritical

15: The Bridges of Siracusa County

Select a time to play from there. The line being spoken is highlighted as the audio plays.

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