98: Landmines, Pitfalls, and Bottomless Pits


00:00:00   Happy new year and stuff.

00:00:01   And happy birthday, John Syracuse, of 40 years old.

00:00:04   How's it feel to be an old man, John?

00:00:06   It's not my birthday today.

00:00:07   It's the first time I've spoken to you since your birthday.

00:00:10   It's close enough.

00:00:10   Beginning of the year with a technicality.

00:00:12   [LAUGHTER]

00:00:15   So we have some follow up.

00:00:16   Let's talk about John's OS X app window layering policy.

00:00:20   Yeah, I should have done a little bit of research

00:00:22   of this, but I'll have you do the real time research for me.

00:00:25   So in our discussion in like episode a couple episodes ago about windows and window

00:00:32   management stuff like that one of the things that didn't come up that probably should have

00:00:36   Was the OS 10 window layering policy now when you get OS 10 if you've only ever used OS 10

00:00:43   You probably just accept this as the way things work because it's sort of like how Windows works as in capital W Microsoft Windows

00:00:50   You got a bunch of windows on the screen

00:00:52   I mean, if you click on a window,

00:00:53   that window comes to the front

00:00:55   and it comes to the, and then you click another window

00:00:57   and that window comes to the front of the other ones.

00:00:58   And you know, it changes,

00:01:00   the window layering changes in that way.

00:01:02   On OS X, if you click on the dock icon,

00:01:04   all windows from that application come to the front.

00:01:07   All right, and this is,

00:01:08   again, if you've only ever used OS X,

00:01:10   you're like, yeah, so what?

00:01:11   That's just how everything works.

00:01:12   And there are menu commands for hide others.

00:01:14   And you can option click on something

00:01:17   to hide the previous thing to show the new thing.

00:01:19   And there's all sorts of shortcuts like that

00:01:21   that people know.

00:01:22   Basically plain old unadorned click just brings the window to the front and the the doc click brings all the windows the app to

00:01:28   Fund now back in the olden days if my memory serves correctly

00:01:32   When you clicked on the window all the windows belonging to that application came to the front

00:01:37   so it was sort of the opposite of the behavior in OS 10 where a

00:01:42   special click in this case a click on a doc icon brings them all to the front but a plain old regular click just brings the

00:01:47   particular window

00:01:49   Now since I am an old person as we've already established

00:01:52   And I come from the old school Mac world when OS X came out

00:01:57   I didn't like the fact that when I clicked a single window only that window came to the front and because my

00:02:02   Window arranging habits wouldn't have been built up over years and years of using a regular Mac and classic Mac OS

00:02:08   I was used to the idea of being able to pull all the windows of an application forward by

00:02:14   snagging a corner of one of the windows and then they would all come to the front and sort of be like a two-layer policy

00:02:18   where I'd snag a corner of visible window and then within all the windows of that application which are now visible pick one that I

00:02:23   Wanted because they'd be tiled according to you know, whatever

00:02:25   And so there's a whole bunch of utilities that came out for OS X

00:02:29   in the early days of OS X that lets you

00:02:32   switch this policy to make it so regular click brings all the windows to the front and a modifier click does the other behavior and

00:02:39   I've used lots of those utilities over the years. I think the one I'm using now is

00:02:43   is, I'm still using ASM, which was supposed to give you an application switcher menu,

00:02:48   which is like a classic Mac OS thing in the upper right corner of the screen.

00:02:51   I think that part doesn't work anymore, or even if it does, I have it disabled.

00:02:54   I just have the, you know, they call it classic window setting set to on.

00:03:00   And shift key is the suppression key.

00:03:02   So if I click any Safari window, all the Safari windows come to the front.

00:03:06   And if I click any terminal window, all the terminal windows come to the front.

00:03:10   But if I shift click a window, only that window comes to the front.

00:03:15   And I'm not saying one of these policies is the right one or the wrong one, because I

00:03:19   think both behaviors are useful.

00:03:20   It's just a question of which one do you think should be the default.

00:03:24   And the defaults don't really matter that much either.

00:03:26   I suppose I could have got used to just going down to the dock icon and clicking, but I

00:03:29   was just so used to arranging my windows and using them as these big click areas to do

00:03:34   stuff, that this is one of the few sort of classic Mac OS policies that I still haven't

00:03:39   given up. I guess it's probably like a little bit of a system hack to do this

00:03:44   window layering. It's not a really big system hack. I think drag_thing also

00:03:47   either had or still has this feature and there may be other utilities that do it

00:03:51   and it may be like a global plist thing. I don't even know what this thing is

00:03:54   doing whether it's a system hack or not. But anyway, if my window management

00:03:59   sounded strange to you and you've only ever used OS X, that may be a piece of

00:04:02   information you're missing. And I would imagine that both of you have never done

00:04:07   this or use any utilities like this and would probably drive you crazy if you clicked on

00:04:10   a single window and they all came to the front from that app.

00:04:13   Yep.

00:04:14   Yeah, you should try it.

00:04:15   It's actually kind of neat.

00:04:16   I mean, you obviously have to adjust your habits because you're not losing the ability

00:04:20   to do the other thing.

00:04:21   You just have to, you know, shift click or option click or whatever modifier click you

00:04:24   decide to make it.

00:04:25   But it does change the way things work and it makes, I think it makes the way I manage

00:04:30   windows a little bit more viable.

00:04:32   Like I think it's the correct default for the way I manage windows.

00:04:37   not the correct default for yours, but a lot of people have emailed and tweeted at me since

00:04:41   that show to say they were intrigued by my theories and would like to subscribe to my

00:04:47   newsletter and so are trying out different window maps.

00:04:52   And I didn't have a chance to respond to most of the people who sent in emails and tweets

00:04:56   saying they wanted to try it, but what I felt like telling them is if you're going to try

00:05:00   it you may not know this, but here's the setting that I have had on my Mac since the dawn of

00:05:04   OS X that you probably don't have, and I think it's probably essential to the way I work.

00:05:09   The other thing I saw a lot of requests for was a screenshot of your Mac.

00:05:15   And I'm assuming people wanted perhaps like an expose screenshot so they could see the

00:05:20   11 gazillion windows that you have open.

00:05:23   And I don't want to necessarily formally request that because you would probably have to obscure

00:05:29   a bunch of things.

00:05:31   But should you decide that you would like to share that?

00:05:33   I'm sure the world at large would love to see it.

00:05:36   - Yeah, there were requests, but I can't,

00:05:37   I mean, I can't take screenshots of my screen

00:05:39   because all my stuff is on my screen

00:05:40   and I don't wanna go through blanking out the windows.

00:05:42   And in the end, it just looks like a bunch of windows.

00:05:44   Like there's nothing to see.

00:05:46   - To you, maybe.

00:05:47   - Right, to you, that's all it looks like.

00:05:49   - Then it's like, why don't you set a video, make a video?

00:05:51   It's like, well then again, in a video,

00:05:53   you'd be seeing all my stuff.

00:05:54   I don't show you all my stuff, all my email,

00:05:56   all my tabs that I have open and stuff like that.

00:05:59   But on the feedback,

00:06:00   I don't know how much you've been following the feedback,

00:06:02   but I tried to be vaguely scientific

00:06:04   with following the feedback.

00:06:06   And I have to say, of the feedback

00:06:07   that has come directly to me, mostly through tweets,

00:06:09   but also through email that's not to the list thing,

00:06:12   it has been overwhelmingly positive

00:06:15   in terms of people saying,

00:06:16   "Yes, that's exactly how I work."

00:06:17   All the old Mac users sent in those emails.

00:06:19   They said, "Yes, you're right, that's how I work too."

00:06:21   And then the curious people who are like,

00:06:23   "I'd never thought of working that way,

00:06:24   but it sounds interesting to me."

00:06:26   Very little negativity about it,

00:06:30   which is surprising considering how negative you two were.

00:06:32   And I keep coming back to the idea that,

00:06:34   how many windows was it in Safari?

00:06:37   19 or something?

00:06:38   Like that was astronomical.

00:06:40   Like that I might as well have said 10,000.

00:06:43   But the reaction you guys had to,

00:06:45   'cause 19 windows is just not that much.

00:06:47   And I thought, maybe I'm crazy, maybe 19 windows is a lot.

00:06:50   But then everyone's like, are you kidding me?

00:06:51   I have, always have tons of windows open.

00:06:54   It's like having a computer with like 32 gigs of RAM,

00:06:56   but you keep four windows open per app.

00:06:58   It's like, what?

00:06:59   Anyway, I don't wanna rehash the entire thing,

00:07:01   but it's probably better than whatever we have planned today.

00:07:04   - It's probably true.

00:07:05   - Maybe you've gotten different feedback than I have,

00:07:07   but I have been very surprised

00:07:09   that it has been overwhelmingly essentially on my side,

00:07:12   whether decisively on my side,

00:07:15   like, yes, that's exactly how I do things

00:07:16   and it's the one way you should do things,

00:07:17   or people saying, "That sounds interesting.

00:07:19   I'd like to try it."

00:07:20   - Okay, so the feedback I have seen,

00:07:22   the feedback I have seen, there has certainly been some,

00:07:25   and I shouldn't even say some,

00:07:26   a pretty decent amount of people saying,

00:07:29   yes, that's exactly what I do.

00:07:32   The John approach is exactly what I do.

00:07:36   But the overwhelming majority of feedback that I saw

00:07:40   was my goodness, that was hysterical.

00:07:43   That was my favorite episode of ATP so far.

00:07:45   So for all of you who said that, thank you.

00:07:47   That's very nice of you.

00:07:47   - Yeah, but you can't categorize that

00:07:49   because most of that was just like,

00:07:50   hey, I enjoy listening to the podcast,

00:07:51   which is like, great, thumbs up.

00:07:52   But it's not like they're not taking a side

00:07:55   position commenting on the substance of it. And yes, I did see a lot of it, but I didn't

00:07:58   categorize that. What I did was I favorited as a form of tracking. So all the ones that

00:08:03   were all the tweets that were sent to me about it. So if you go back through my favorites

00:08:05   and skip over the other stuff, it looks like it's not related. Like, I don't even know

00:08:08   if you can do this on stupid Twitter, but scroll back to like the week following the

00:08:12   show and just look at the huge amount of favorites that are in there that, and I favorited the

00:08:16   ones that were against as well. And you'll have a hard time finding a tweet anyway that

00:08:20   was against. And the email to the feedback forums we all saw on the email directly to

00:08:24   to me was basically 100% that people thought it was not crazy to have 19 windows open.

00:08:30   And by the way, I will add, and this is another thing that people seem to forget, like the

00:08:34   idea that I'm not closing windows, as I think I said on the show, as I think I actually

00:08:38   did in real time on the show when we were going through like, "Oh, I can close this

00:08:42   window now because I'm done researching like the date that these things are released or

00:08:45   whatever."

00:08:46   The windows close when I'm done with them.

00:08:47   It's not like I'm keeping them around like for the hell of it, right?

00:08:50   And so for example, I have two Safari windows open now.

00:08:53   Why do I have two Safari windows open?

00:08:54   Because I've been off work for like a week and I've been at home and everything is cleared

00:08:58   out.

00:08:59   And the only Safari windows open I have right now are stats windows that are sort of things

00:09:02   that I'm currently monitoring.

00:09:04   And even those will close when I'm not currently monitoring them anymore.

00:09:07   Like I'm still looking at the stats of my OS X review just to see as it slowly tails

00:09:11   off in the long tail how it's doing.

00:09:14   Anyway, and Chrome windows.

00:09:18   Two minimize, three non-minimize.

00:09:20   Minimize ones are, yeah.

00:09:22   Using, this is sort of like the Merlin man

00:09:25   using your inbox as a to-do list, which is a bad idea.

00:09:27   Using Safari Windows as a to-do list,

00:09:30   probably also a bad idea, but I think it works pretty well.

00:09:34   And the difference between your email inbox and Safari

00:09:37   is your email inbox is subject to anything

00:09:40   that anyone wants to send to you,

00:09:41   whereas your Safari Windows, you have to open yourself.

00:09:45   Oh, that was the other, before we get off this topic,

00:09:47   the other interesting thing,

00:09:48   Rupert did a post some time the week after saying

00:09:51   he'd had this tab open since October to remind him

00:09:53   to read his article and he finally got around to it

00:09:55   and then he posted a little link list thing

00:09:57   on Daring Fireball.

00:09:58   And then everyone jumped on him and said,

00:10:00   you're using the Syracuse window technique too.

00:10:02   'Cause he essentially had this window thing open in a tab,

00:10:06   like I'll get around to it someday and he did.

00:10:08   And I bet he read it and he posted it

00:10:09   and I bet he closed that window.

00:10:11   - I can't do it.

00:10:15   I'm not gonna let myself get roped into this again.

00:10:18   So instead, I'm gonna move on to another piece of follow up unless Marco, you have something

00:10:21   to add.

00:10:22   Nope.

00:10:23   All right.

00:10:24   How do you add to that?

00:10:25   Yeah, exactly.

00:10:26   So the next week's follow up we have, I brought up the question, I believe it was last episode.

00:10:31   Why would you run SSL on a site like caseylist.com that all it does is display content?

00:10:38   And many people wrote in with what in retrospect was a reasonably obvious answer that I certainly

00:10:44   didn't think of, which is you're, you could use SSL to prevent injection.

00:10:51   So say you're on an airplane and you're using one of the airplane wifi setups, they could

00:10:57   choose to inject ads into my website because they can't, there's no reason they couldn't.

00:11:04   Whereas if I was running SSL, there's nothing they could do to intercept that.

00:11:08   And there's also a bunch of like tinfoil hat conspiracy theories that go along with that.

00:11:12   But the most obvious one that I saw,

00:11:15   or the most reasonable one I saw,

00:11:16   was preventing like ad injection

00:11:19   or any other sort of man in the middle sort of scenario

00:11:22   with even something that's brochureware,

00:11:25   so to speak, like my site is.

00:11:26   - Yeah, what's even worse is some wireless carriers

00:11:30   are starting to inject ad tracking codes

00:11:32   or like actual ads into the pages themselves.

00:11:36   So it isn't just if you're on a plane occasionally,

00:11:38   it might just be like if you're an AT&T or Verizon customer.

00:11:41   Like we've seen certain things,

00:11:43   I don't know if they're widely deployed yet,

00:11:45   but we've seen reports of like them rolling out or testing

00:11:49   or like trying certain things with certain wireless carriers

00:11:51   like injecting ad tracking code into every HTML page

00:11:55   that's viewed over their data networks.

00:11:56   And that's really, really horrible on so many levels.

00:11:59   And so this could also help defend against that.

00:12:03   - Yeah, it's not tinfoil hat.

00:12:04   Like people send us screenshots that I didn't know

00:12:06   'cause I don't travel a lot,

00:12:07   but like that airline wifi,

00:12:09   like when you're on the plane, puts a, you know,

00:12:11   Southwest banner over every single page that you're on.

00:12:14   Like this is not speculative.

00:12:16   This is apparently a thing that happens

00:12:18   and not in like a secret kind of like Verizon secretly

00:12:20   putting in an HTTP header or a cookie or something

00:12:22   as in a giant banner for like, in case you didn't realize

00:12:25   that you're on a Southwest flight right now.

00:12:27   Terrible, super terrible.

00:12:29   The idea that if you use SSL, that no one can,

00:12:32   you know, one can see the traffic or man in the middle

00:12:35   you again with lots of unpatched, perhaps unknown vulnerabilities out there, I'm not

00:12:40   sure how secure that is, but I can tell you that in the corporate world it is not uncommon

00:12:47   for corporations to either do this and not tell anybody or do it and tell everybody or

00:12:53   try to do it until the employees revolt depending on what kind of company you're in, to basically

00:12:57   man in the middle every single employee of the company by putting in an SSL proxy, making

00:13:03   every computer in the company trusts the certificate and they're basically man in the middle

00:13:07   in all your SSL traffic.

00:13:09   So you can't do online banking from home unless you're okay with the IT department

00:13:15   at your work knowing all of your passwords and everything.

00:13:17   So SSL is not a panacea.

00:13:21   Excellent.

00:13:22   And then a final note which may bleed from follow up into an actual topic.

00:13:28   Marco, you have reverted to your normal comfortable ways and you hate new things again.

00:13:33   Can you tell us about that?

00:13:34   We are sponsored this week by Harry's.

00:13:36   Go to harrys.com and use promo code ATP to save $5 off your first purchase.

00:13:42   The holidays are over and here's the chance to start fresh and start making smarter decisions.

00:13:47   Overpaying for drugstore razor blades is a bad habit that you should definitely leave

00:13:50   behind this year.

00:13:51   Harry's offers high quality razors and blades for a fraction of the price of the big razor

00:13:56   brands.

00:13:57   Harry's was started by two guys who wanted a better product without paying an arm and

00:14:00   a leg.

00:14:01   no pun intended for those of you who shave your arms and legs.

00:14:04   They make their own blades from their own factory, an old blade factory in Germany that

00:14:07   they liked so much that they bought it.

00:14:09   These are high quality, high performing German blades crafted by shaving experts, giving

00:14:13   you a better shave that respects your face and your wallet.

00:14:17   Harry's offers factory direct pricing at a fraction of the big brands prices.

00:14:21   Harry's blades are about half the price of things like Gillette Fusion and stuff like

00:14:26   that.

00:14:27   Plus you don't have to wait around for the guy to come to unlock the anti-shoplifting

00:14:29   case at the drug store to buy them, that's a terrible experience.

00:14:32   They ship them directly to your door and shipping is free for any order above $10.

00:14:37   So the starter set is an amazing deal.

00:14:40   For $15 you get a razor, moisturizing shave cream or gel, your choice, and three razor

00:14:46   blades.

00:14:47   When you need more blades they're just $2 or less each.

00:14:50   And for example, an 8 pack is $15, a 16 pack is just $25.

00:14:55   So it's like, what is that like $1.50 each?

00:14:58   So I would say, so I've tried these before, I like them a lot, I would say they are comparable

00:15:02   to the Gillette Fusion non-proglide blades.

00:15:05   The best price I see today on Amazon for those Fusions is a 12 pack for about 40 bucks.

00:15:11   12 Harry's blades are 20 bucks.

00:15:13   So it's really half the price of Fusions.

00:15:16   I'm very impressed by the quality they achieve here and the economy just can't be beat.

00:15:21   They have great packaging, they have nice heavy handles, like the handles are all like

00:15:24   fancy nice metal stuff really classy designs like that you know like the stuff

00:15:28   the the like the the Gillette handles look like they're from those droid

00:15:33   commercials remember those I think I already made this joke but they they you

00:15:36   know they're like all like covered in like blue accents and like rubber and

00:15:40   plastic and it's all really weird Harry's razors and Harry's blades are

00:15:44   just classy they're these nice classy handles nice you know weighty metal stuff

00:15:48   it's just so much so much nicer with Harry's you get the convenience and ease

00:15:52   of ordering online, you get these high quality blades, a great handle and shaving cream,

00:15:56   and excellent customer service at half the price of the big brands.

00:16:00   Get started today with a set that includes a handle, three blades, and shaving cream

00:16:03   for just $15 shipped to your door.

00:16:07   Go to harrys.com and then you can also use promo code ATP to save $5 off your first purchase.

00:16:14   Really this is a fantastic deal.

00:16:15   Go to harrys.com, H-A-R-R-Y-S.com.

00:16:18   Use promo code ATP for $5 off your first purchase.

00:16:21   Thanks a lot to Harry's.

00:16:22   So Marco, tell us about why you hate new things again,

00:16:25   other than that being your natural state.

00:16:28   - So last week, I discussed that I had tried

00:16:32   a new programming language, sort of.

00:16:34   I had written the beginnings of a feed crawler

00:16:38   to replace overcast PHP feed crawler or to augment it.

00:16:42   I had written the beginnings of that in Node.

00:16:45   And I already knew enough JavaScript to get by,

00:16:48   so it wasn't entirely learning a new language,

00:16:50   but it was at least in a new context

00:16:51   using a new platform and stuff like that.

00:16:55   And first I'm certainly using JavaScript

00:16:57   outside of the browser.

00:16:58   I've been trying to make it work, really until today.

00:17:02   And this afternoon, I think I finally am giving up now.

00:17:05   The problem I was trying to solve, as I mentioned last week,

00:17:07   so I won't go too far into it,

00:17:09   is that Overcast's feed crawlers basically have to pull

00:17:14   about 250,000 feeds now.

00:17:16   And I like to pull them no less than once an hour each.

00:17:21   and the ones that are popular,

00:17:22   I like to pull every few minutes.

00:17:24   So we're talking about probably, I don't know,

00:17:26   a million feeds an hour, something like that,

00:17:28   or more than that maybe.

00:17:30   So it's a good number of feed fetches per hour.

00:17:34   And right now, I use 240 PHP processes

00:17:39   that are pulling things off of the Beanstalk queue.

00:17:41   It takes tons of CPU power, it takes tons of RAM.

00:17:45   And this is obviously not made for this,

00:17:47   whereas the node event loop kind of model

00:17:50   is way better suited for this kind of like

00:17:53   large parallel crawling of network things

00:17:56   and then occasionally doing some work on them.

00:17:57   Like it's way better for that.

00:17:59   It's so much better suited for that.

00:18:01   Anyway, so I tried Node and I've been playing with it

00:18:04   for the last week or so and I just can't get it

00:18:08   to work properly.

00:18:09   I have the crawler functioning perfectly fine

00:18:13   but I keep hitting either weird limits

00:18:15   that cause weird performance issues

00:18:17   or the more common problem is memory leaks

00:18:19   and that's the one that I've been able to solve

00:18:22   all the performance problems, all the weird little edge cases

00:18:24   all the weird exceptions thrown from odd places

00:18:27   that I can't quite figure out where they're coming from,

00:18:30   fixed all that, I still can't fix the memory leaks.

00:18:33   And so I could just post the script online

00:18:36   and ask people, "Hey, fix the memory leak for me."

00:18:39   But ultimately I don't want to depend on a platform

00:18:43   that seems so weird and hacky.

00:18:46   And what I found, last week I mentioned how

00:18:49   I didn't foresee myself rewriting the whole backend

00:18:52   or wanting to make a whole web app in Node

00:18:54   just because of the nature of web apps.

00:18:56   You make a database request and then you make a couple more

00:18:59   and then you put things together.

00:19:01   Doing all that in a pure asynchronous framework

00:19:05   is really clumsy and it leads to all sorts of spaghetti code

00:19:08   and callback hell and everything like that.

00:19:10   And so I, and not only that,

00:19:12   but I just don't like JavaScript.

00:19:13   I really don't respect it as a language.

00:19:15   I really don't like its crazy object system.

00:19:18   there's a whole lot about JavaScript

00:19:19   that I really don't like.

00:19:20   Granted, this is a little early for me

00:19:22   to judge a whole language like this,

00:19:24   but it certainly seems like Node and JavaScript,

00:19:28   that combo is really just as hacky as PHP in many ways.

00:19:33   And it seems like I'm taking a step sideways

00:19:36   rather than a step forward.

00:19:38   And I don't have a lot of faith in this combo

00:19:41   for the future of my programming needs and career.

00:19:46   So instead, tonight I started trying Go,

00:19:51   and I'm gonna see how that goes.

00:19:52   I literally have, I've written like 10 lines of code

00:19:54   in it so far, I haven't had a chance to do any more.

00:19:56   So maybe ask me next week how that's going, but,

00:19:59   and the reason I'm picking Go right now to try next,

00:20:03   it seems like the kind of thing that I would enjoy

00:20:07   based on their philosophies,

00:20:08   some of the decisions they've made.

00:20:10   I mean, obviously the language looks really weird to me

00:20:11   'cause it doesn't use C-style syntax for everything,

00:20:13   and you know, this is the first non-C syntax language

00:20:16   that I'm learning in a very, very long time.

00:20:18   I used to say that if I had to pick a new language today,

00:20:21   it would be Python.

00:20:23   And looking around the landscape today,

00:20:25   I think that would still be a reasonable choice,

00:20:28   but there's no question that Python is aging.

00:20:31   And there's all these new languages that are coming out

00:20:34   that do things differently,

00:20:35   that are more advanced in certain ways.

00:20:38   And I feel like I learn new languages so infrequently,

00:20:42   and the way I do it is I prefer to like really deeply master

00:20:46   a very small number of them,

00:20:47   rather than try a whole bunch of them

00:20:49   and have some familiarity with all of them.

00:20:51   Because of that, I'm afraid that Python

00:20:53   will fall out of favor sooner by possibly

00:20:57   as much as a decade than compared to something like Go,

00:21:01   or Node, or Rust, or any of these newer languages.

00:21:04   I could go that route, and I might still go that route,

00:21:07   I don't know, we'll see where this experiment ends.

00:21:09   But I think what I'm doing right now,

00:21:11   making this thing that has to crawl

00:21:12   a whole bunch of feeds in parallel,

00:21:13   and then read stuff out of the database

00:21:15   to know what to crawl and then write stuff

00:21:17   into some kind of queue to hand it off

00:21:19   to the rest of the app to do the rest of the processing,

00:21:21   I'm getting a pretty good feel.

00:21:24   I think this might be a good task to try

00:21:26   in three or four different languages

00:21:28   and just get some idea of what the language is like to use

00:21:33   on this kind of scale and how appropriate is it

00:21:35   for this kind of task.

00:21:36   Right now I'm gonna try this in Go.

00:21:38   I don't know if this is gonna be the last language

00:21:39   I use for this task.

00:21:40   I hope it is.

00:21:41   I like the way Go keeps the language itself

00:21:45   seemingly fairly simple.

00:21:47   It doesn't have things like generics

00:21:49   and a whole bunch of new things like that,

00:21:52   all these meta-programming type features.

00:21:54   It doesn't seem to have all those things.

00:21:56   I like that a lot.

00:21:57   I really prefer a language that can fit in my head

00:22:00   and a language that is as easy to read as it is to write.

00:22:05   And it seems like a lot of the new languages these days

00:22:08   are throwing that balance a little more

00:22:10   towards the other directions.

00:22:10   They're making all these really, really crazy

00:22:14   little features, little exceptions, little conveniences

00:22:16   to make the code look really cool when you're writing it

00:22:19   or to make it make for good conference slides

00:22:22   or a good Hello World example where like,

00:22:24   look at what you can do in these two lines of code

00:22:28   and it's all really dense and concise

00:22:29   and does cool things and abstract away

00:22:31   what's actually happening below the scenes.

00:22:34   And I don't like that style because it makes it very hard

00:22:36   to both learn and maintain that code.

00:22:40   That's not a style.

00:22:42   That's abstraction, that's programming.

00:22:44   I mean, why not just use toggle switches

00:22:46   then you'll know what's going on.

00:22:46   Why not push the electrons from the source

00:22:50   to the drain and the transistors?

00:22:51   I mean, like I kind of understand what you're getting at

00:22:54   in terms of constructs that may look unfamiliar,

00:22:57   but it's not like, it's not a choice of styles

00:22:59   of like crane technique and drunken monkey technique.

00:23:01   It's like, these are the languages that are trying to have,

00:23:06   You know, ways to express more with less typing.

00:23:11   And the general argument in favor of that is history has more or less shown that the

00:23:17   number of bugs per line of code written doesn't change too much.

00:23:21   So the only way to get fewer bugs is to reduce the number of lines of code you need to write

00:23:26   to solve a hidden problem.

00:23:27   Obviously you can go to extremes there where you're compressing things down to the point

00:23:32   where it's not understandable.

00:23:33   But I don't think Swift like Swift is not a good example of that

00:23:37   I don't think anything in the language makes it like this one line is incomprehensible

00:23:41   I think the the problem areas of Swift are more like the problem areas of C++ with like templates generics and

00:23:47   operator overloading

00:23:49   Giving you the ability to make incomprehensible

00:23:51   Mumbo jumbo, but that's the opposite

00:23:54   That's where there's more typing not less like when you when you see some giant declaration with a million generic types

00:24:00   And then you can't make heads or tails of it that is not concise that is verbose

00:24:04   And that's why you have problems figuring out what the hell's going on because you got to parse eight million tokens to figure it out

00:24:09   Whereas go not letting you do that type of thing you're never gonna see a crazy prototype like that. You know or even like

00:24:15   block syntax or

00:24:17   Pointers to functions and syntax and see where you have to like sort of be the compiler in your head and parse stuff out

00:24:22   Make the language simpler you won't see that and that that's something that you know for example JavaScript has that going for it

00:24:27   There's not much you can type in JavaScript

00:24:30   that is too complicated to look at

00:24:32   where you won't even understand programmer intent.

00:24:34   You may be surprised by what it actually does

00:24:36   because of weirdness, but you will get the intent

00:24:38   of the line of code, whereas in C++ and Swift

00:24:42   and a lot of other languages,

00:24:43   sometimes you can't even figure out what the intent is

00:24:45   without sort of parsing and lexing it yourself

00:24:48   in your head to figure out what it does.

00:24:50   - Right, exactly.

00:24:51   Well, and also, I like to be able to look at some code

00:24:54   that I'm reading and be able to roughly tell what it does

00:24:58   without having to jump around to too much other code.

00:25:00   And so if you have some crazy library

00:25:03   or some crazy standard,

00:25:04   you know like a lot of these new language features

00:25:06   that a lot of the more crazy dynamic-ish languages offer,

00:25:11   they're a lot like C macros,

00:25:12   where it's like you could define your own,

00:25:15   and you know same thing with operator loading

00:25:16   and generics, you could define like your own meta language

00:25:20   on top of this language for your own code.

00:25:22   And so if you're reading someone else's code written in this language, or you're

00:25:26   reading code you wrote a year ago in this language when you were being a little too

00:25:29   clever, it can be really hard to figure out what's going on or what causes certain behavior

00:25:33   you're seeing.

00:25:34   That's one of the reasons I don't like Rails, and one of the reasons I avoided back

00:25:37   forever ago why David and I decided to write Tumblr and PHP instead of Rails, was because

00:25:42   it had a lot of the mix-ins, a lot of the behavior caused by things that are hard to

00:25:47   find.

00:25:48   And I'm sure it isn't like that anymore, I don't know.

00:25:52   I literally looked at it once in 2006 for about a month.

00:25:56   So take all that with a grain of salt.

00:25:58   But generally I don't like having all that magic

00:26:02   that's hard to find and hard to follow

00:26:04   when you're reading the code

00:26:05   or when you're debugging the code.

00:26:06   That's why I like languages like C and like Objective-C

00:26:09   because most of that magic is not possible

00:26:13   or at least is very, very rarely used.

00:26:15   - Well, C, you said it in C, it's macros.

00:26:17   Macros make that a nightmare.

00:26:18   And looking at someone, I mean, to give a great example,

00:26:21   try looking at the Perl source code, not like, you know, Perl code, but the C program that

00:26:26   is the Perl compiler and, you know, executable.

00:26:30   It is so filled with macros, it is almost nonsensical.

00:26:33   And macro, people don't like macros with good reason, but if you take macros and take away

00:26:38   all of the evil sort of text processing crap about them, what falls out is Lisp, and people

00:26:43   love Lisp.

00:26:44   And that, this means, you know, when you say that if you look at a program, it looks like,

00:26:47   you know, some meta program you can't figure out, that's why people love Lisp, that you

00:26:50   you essentially define a language

00:26:52   to solve your specific problem

00:26:53   and then use that language to write your program in.

00:26:57   And so that's the whole idea of Lisp is that you will,

00:27:00   there is no syntax to speak of,

00:27:02   it's just, you know,

00:27:03   fingernail clippings all the way down,

00:27:05   and then you just sort of define your own vocabulary.

00:27:09   And if someone else was to look at that,

00:27:11   yes, they would have to say,

00:27:11   "I don't know what this does."

00:27:12   I mean, that's true of looking at any program.

00:27:14   It's kind of weird hearing you say that

00:27:15   because you're working with like vast libraries

00:27:18   millions of lines of code that you a didn't write and B usually don't even have access

00:27:22   to the source code too. And that's the majority of the code in your program. Like an overcast.

00:27:25   You know what I mean? The problem I have is that Marco, all I'm hearing you say is I want

00:27:31   to remain a C programmer for life. And that's okay if that's what you want to do. But like

00:27:37   you grumbling about generics, which I know is just like an off the cuff example, but

00:27:42   you grumbling about generics is nails on a chalkboard to me because I love generics.

00:27:49   Nobody loves generics, Casey.

00:27:50   I do.

00:27:51   And now I'm coming at this from C# where it's very…

00:27:59   Generics came to C# at a time when everything was extremely strongly typed.

00:28:04   Type inference wasn't a thing.

00:28:06   And you had to cast everything all the time.

00:28:11   And it was the most annoying thing in the world.

00:28:14   And to me, generics are being extremely deliberate about what you're trying to accomplish.

00:28:21   And I just, when you say, when you say that, oh, you don't, you don't feel like all the

00:28:27   code is where you expect it to be and you have to jump around in different files to

00:28:31   find it all.

00:28:32   All I'm hearing you say is I want to be a procedural C programmer for the rest of my

00:28:35   life and that's okay.

00:28:38   But gosh, that's so limiting, and I hope that that's,

00:28:41   I hope that's not what you mean,

00:28:43   even if that's what I'm hearing you say.

00:28:45   - No, I mean, that isn't what I mean.

00:28:47   However, you know, like the languages I know,

00:28:49   I've either, either they work this way

00:28:51   or I've been able to make them work this way.

00:28:53   What I, my goal is ease of reading the code

00:28:57   and simplicity, keeping things small, reducing cleverness.

00:29:02   I am not a very clever programmer.

00:29:05   I program things in pretty straightforward ways usually.

00:29:08   all of the increase of cleverness that is infecting modern language design,

00:29:14   it makes things look cool up front, but it makes it really hard to use over time,

00:29:19   or with a team, or when maintaining code, or when using third-party code.

00:29:24   It gets very, very difficult.

00:29:26   I feel like a lot of this is complexity for its own sake, or solving the wrong problems.

00:29:31   Well, but your problem here is not a language problem.

00:29:34   It's kind of a library problem.

00:29:36   It's mostly an implementation problem

00:29:39   because it's like you have a well-defined problem to solve.

00:29:41   I don't think the language matters at all.

00:29:42   All that matters is the libraries

00:29:44   and the sort of stability of the implementation

00:29:46   of that language and can it handle

00:29:48   because you're doing things at a fairly large scale

00:29:50   and you've got something that works,

00:29:51   but it's kind of around the creaky edges

00:29:53   of what PHP can handle and it's not particularly efficient

00:29:57   as you saw when you did the Node implementation.

00:29:59   It could be more efficient, but the Node is young

00:30:00   and it's flaky and has its own issues

00:30:02   And so what you're looking for is something that will work with less flakiness than Node

00:30:11   had, fewer resources than PHP did.

00:30:14   And so I think Go is a reasonable thing to be looking at.

00:30:16   And as I said on Twitter, and I wasn't actually joking, if you want to do this in Perl with

00:30:20   any event, which is a wrap around tons of event libraries, you could use any event wrap

00:30:25   around the libev library.

00:30:30   I think this would be fairly straightforward.

00:30:32   And so would your Perl solution use fewer resources than the PHP one?

00:30:39   Probably because it would use a real event library written in C.

00:30:42   Would it have fewer bugs than the Node one?

00:30:44   Probably because that library and that CPAN module are all way more mature than the Node

00:30:48   implementation of it.

00:30:50   But Go would definitely be faster.

00:30:52   But when you do it in Go, you're left with, "Okay, well, am I going to use an existing

00:30:57   event library?

00:30:58   Am I going to sort of write my own event library?"

00:30:59   because once you're sort of writing your own event library

00:31:01   and go, if you're not going to use libevent or libv or something

00:31:05   like that, then that's immediately worse.

00:31:08   It doesn't matter how good the language is.

00:31:10   No, don't try to re-implement your own event library

00:31:14   or directly with system calls into it.

00:31:16   Like someone did that already.

00:31:17   What you just want is a language that

00:31:19   exposes one of these mature libraries that

00:31:21   works really well in a way that's not buggy,

00:31:23   doesn't leak memory, that's fairly performative.

00:31:25   And so I would obviously try Perl first,

00:31:28   because I know there's a bunch of event library wrappers.

00:31:30   In fact, there's a wrapper that wraps

00:31:31   pretty much any event library called any event.

00:31:34   And so you could go through like,

00:31:35   let me try seven different event libraries

00:31:37   with the same Perl program.

00:31:38   And if they all suck, you're like, well, that didn't work.

00:31:40   You know, 'cause I haven't done event-driven programming

00:31:43   in Perl, anything more than like a trivial thing.

00:31:46   So I can't tell you whether it will actually work,

00:31:47   but I can tell you that it's old enough

00:31:49   and been around long enough that there's a million wrappers

00:31:51   for event libraries.

00:31:52   And maybe that would just help you narrow down

00:31:53   which event library you wanna use.

00:31:54   And then you could just write against that one in C,

00:31:56   which you already also talked about.

00:31:57   hey, let me go to libevent,

00:31:59   let me write it directly against it and see.

00:32:01   But I've also heard that libevent

00:32:03   is not the best event library if you're looking to do that.

00:32:05   So what Lauren Burchard was just saying

00:32:06   that he wrote an Objective-C wrap around libev

00:32:10   to do something similar.

00:32:12   - Yeah.

00:32:12   - I think that's what it's gonna come down to

00:32:14   is either the language has something like this built in,

00:32:17   a couple of people mentioned Erlang or whatever,

00:32:18   like has some sort of parallelization event loop type

00:32:21   of making efficient use of CPU

00:32:24   when a lot of things are gonna be in IO wait,

00:32:27   either has that built into the language

00:32:29   or it has a really good stable wrapper

00:32:30   around one of the other low-level libraries

00:32:32   that does this for you.

00:32:34   - Yeah, well, I mean, and it should be,

00:32:37   in case the implication here was not clear,

00:32:40   I'm not just looking for a solution to this one problem.

00:32:44   I'm also looking for a long-term replacement

00:32:46   to PHP in my toolkit.

00:32:47   - Yeah, but I don't think this is a great example for that,

00:32:52   because say you find something

00:32:54   that does a really good job on this,

00:32:55   it still doesn't say, okay,

00:32:56   now I'm going to write all of the stuff I used to write in PHP, I'm going to write in

00:32:59   Go. I don't think you would do that, but I think Co could be an appropriate choice for

00:33:03   this provided you get the event stuff nailed down. And by the same token, were you to get

00:33:08   a handy little solution to this in Perl with any event or something, doesn't mean you would

00:33:13   say, okay, now I'm going to rewrite all those PHP agents in Perl because that would, well,

00:33:17   I think it would still be a big upgrade, but anyway, you're probably not going to do it.

00:33:21   Well, in addition to Perl having many of the same problems that I just cited with PHP and

00:33:25   Python, it just would feel like a sideways step.

00:33:30   - I know, but I was suggesting it justice

00:33:32   because you were at the point now where you're like,

00:33:34   look, I wanna solve this problem without using

00:33:36   240 PHP processes that are inefficient

00:33:38   and use a lot of resources.

00:33:39   It's like an economic, it's like a single purpose problem,

00:33:41   like I have a problem, there's actual impact

00:33:43   to me implementing this better.

00:33:45   Node looked like it was gonna do it,

00:33:46   but it's a little flaky, try a few other things.

00:33:49   This could be one of the other things you try.

00:33:51   - The reason I'm able to do the things I do,

00:33:53   The reason I'm able as one person to run a web service with a few hundred thousand

00:33:58   users and an iOS app and be able to keep up with them semi-okay is because I don't spend

00:34:05   a lot of time experimenting with new languages and new systems and making things just for

00:34:10   fun.

00:34:11   Most of what I do is to serve the things I'm working on.

00:34:14   And so I don't want to go on an expedition trying to learn a bunch of new languages to

00:34:19   try to pick the best one for just this one task.

00:34:22   I want to be able to leverage this, to use this,

00:34:24   to basically build up my toolkit

00:34:26   and modernize this one very ancient part of it.

00:34:29   Because I know that PHP is,

00:34:31   look, I could keep using it for a long time,

00:34:34   it's gonna be around for a long time,

00:34:36   but I do keep running into things that it's bad at.

00:34:39   And I recognize that, as I said last episode,

00:34:43   I really don't have a lot of faith

00:34:45   in the quality of the direction it's going.

00:34:48   And there are lots of other languages

00:34:49   that I should be considering.

00:34:51   I actually heard from Russell Ivanovich, I forget how you say his last name, I tried

00:34:57   to remember it and tried to learn it and I forgot, I'm sorry Russell.

00:35:00   He's one of the guys in Shifty Jelly, one of my competitors in the podcast app space,

00:35:03   they make Pocket Casts, and he's the nicest guy in the world and he told me privately,

00:35:08   they crawl what sounded like a pretty impressive number with a pretty impressively low amount

00:35:13   of hardware and they do it all in Java.

00:35:16   I don't know anything about Java in the modern day, the last time I used Java was in Computer

00:35:20   Science 101 back in 2001.

00:35:25   Maybe people told me that I should be looking at C# for this.

00:35:28   And Casey, I'm curious to know what you think about that.

00:35:30   But there are lots of other languages I could be looking at right now.

00:35:33   I don't know.

00:35:34   Casey, if you were faced with this problem, what would you do?

00:35:38   I think the first thing I'd do is I would try to write it in Node.

00:35:45   And I thought you had said on Twitter that the issue that you're having with Node is

00:35:51   that getting the process to start again is where everything's going wrong.

00:35:58   Like the set timeout is what's breaking.

00:36:01   Is that, well, the set timeout is eventually leading to memory leaks.

00:36:04   Is that a fair statement?

00:36:05   Oh, it's immediately leading to memory leaks.

00:36:08   It's like every set timeout is, for some reason it seems to be that it's capturing the scope

00:36:13   of its calling scope and it's like retaining

00:36:16   its calling scope even though it's just like,

00:36:19   it's just calling a function.

00:36:21   Like it's not, it's like I don't see why it needs

00:36:23   to retain anything that's in the calling scope,

00:36:25   but for some reason it is.

00:36:26   And if you search around for node set timeout

00:36:30   or set interval memory leaks, you see a bunch

00:36:33   of other people hitting problems like this

00:36:35   and some of the fixes look like bugs to me.

00:36:39   Some of them are like, well if you set,

00:36:41   If you just call setTimeout, then you'll get a leak,

00:36:44   but if you assign it to a variable,

00:36:45   say var t equals setTimeout, then it doesn't leak.

00:36:49   There's a bunch of weird stuff going on

00:36:51   with the way this captures things.

00:36:53   Either it's a bug, or it doesn't make any sense, or both.

00:36:56   Either way, that is a big problem for me.

00:36:59   I don't wanna have to keep fighting issues like that

00:37:01   in a language I'm gonna invest much time into.

00:37:04   Also, again, what I said before is,

00:37:06   I don't like JavaScript, and I don't foresee

00:37:10   this being my long-term replacement for PHP,

00:37:12   so it feels like I'm kind of wasting time

00:37:14   doing a whole bunch in it.

00:37:16   - Yeah, I think the reason I brought that up is

00:37:19   if the only issue you're having with Node

00:37:22   boils down to just tickling that Node process

00:37:25   and getting it to do its thing,

00:37:26   then couldn't you fire that from PHP

00:37:28   and have Node do the crawling?

00:37:30   - Well, no, the whole idea here,

00:37:33   and when I asked on Twitter, am I doing this wrong,

00:37:37   or does setTimeout just not work without leaking memory?

00:37:40   and I got a bunch of responses from node programmers.

00:37:44   None of them use it.

00:37:46   All of them trigger recurring scheduled events

00:37:50   with external cron tasks that call into the node

00:37:53   with a web request or something.

00:37:55   - Yeah, that's basically what I'm trying to do.

00:37:56   - Yeah, or they use things like,

00:37:58   there's something called I think Node-Cron

00:37:59   or something like that, but if you look at the source,

00:38:01   it's using setTimeout internally,

00:38:03   so that's basically the only option.

00:38:06   All I need to do is I need to crawl,

00:38:10   for all these feeds, each of them has a TTL

00:38:12   that I calculate.

00:38:13   I calculate when the next one should run

00:38:16   and I say call me again with this ID in this many seconds.

00:38:21   That's it, that's all I have to do.

00:38:22   So they shouldn't be nesting, they're not stacking up.

00:38:26   I verified that, it's not like they're not being cleared

00:38:31   and so making more and more calls per second,

00:38:34   it's not doing that.

00:38:35   It's just something about the memory capture.

00:38:37   But again, that's honestly, I'm sure a Node expert

00:38:42   could look at this and possibly fix it.

00:38:44   It's more that I don't wanna keep investing in a language

00:38:47   that is clashing with me on such a fundamental level

00:38:50   and that I don't feel is serving my long-term goals.

00:38:54   - Yeah, and I really wanna defend Node

00:38:56   because I've not done a overwhelming amount

00:39:00   of Node programming, but the programming I've done in Node,

00:39:03   I really like.

00:39:04   I want to defend JavaScript because

00:39:07   although it is full of landmines and pitfalls

00:39:11   and bottomless pits,

00:39:12   it is actually to me anyway, fairly fun to write.

00:39:15   But if I were in your shoes,

00:39:18   I'd probably be coming to a similar conclusion.

00:39:22   And it certainly sounds to be

00:39:23   a pragmatic conclusion regardless.

00:39:26   To go back and answer your question,

00:39:27   well, what about like C#?

00:39:29   Well, that's challenging

00:39:32   because the right way to do it,

00:39:35   if you're gonna do it in C#,

00:39:36   is to run ASP.NET, IAS, the whole Microsoft stack.

00:39:41   And I know, right, and you have no interest in that.

00:39:44   And honestly, if I were in your shoes,

00:39:46   I wouldn't have any interest in that.

00:39:48   And you know what?

00:39:49   When I was doing for fun programming in my own time

00:39:51   that I was going to have to pay for,

00:39:55   did I use C# and ASP.NET?

00:39:57   Hell no, I didn't, because I didn't wanna stand all that up.

00:39:59   I didn't want to have to worry about all that.

00:40:02   So C# as a language, actually, I think would,

00:40:05   I think you would like C# a lot to be honest,

00:40:08   but the problem is you've got all the periphery to deal with

00:40:11   that I don't think you would enjoy.

00:40:13   Now, of course, you could take the approach of,

00:40:15   well, let me look into Xamarin/Mono,

00:40:17   and that might work.

00:40:20   To be honest, I'm now outside of my comfort zone

00:40:22   because I work in the Microsoft stack.

00:40:24   So I don't really know a lot about the Xamarin and Mono,

00:40:29   the way that would be deployed, but it's worth looking into.

00:40:33   I don't think C# is going anywhere anytime soon.

00:40:37   I don't know enough about Go to be able to say,

00:40:39   yes, that sounds like an excellent choice

00:40:41   of something that has long-term viability.

00:40:43   I think Node is certainly very trendy right now

00:40:47   in the same way that Python and Ruby have been in the past.

00:40:50   But to your point earlier,

00:40:52   are Python and Ruby going to remain trendy?

00:40:55   I don't know.

00:40:56   And is Node going to remain trendy?

00:40:59   know and although it seems a little weird to me to throw node out entirely because of set timeout

00:41:05   i can also understand how that's the straw that's breaking the camel's back so if i were your shoes

00:41:11   i honestly don't know what i would do i guess i would try go and see how it worked um but geez

00:41:17   it's a tough it's a tough call i'm not sure what the right answer is i was gonna say i think

00:41:21   tangling both of these things up with each other finding a new language to replace php that's going

00:41:25   gonna be worth your while long term and solving the specific problem is over

00:41:28   complicating it. I think those are two things that you should do and I don't

00:41:32   think they need to be combined. It's something, it's it'll be nice if you

00:41:35   combine them. I can understand the desire like oh if I could get them you know two

00:41:37   birds with one stone but the the needs are so different. I mean like on the one

00:41:42   hand for example the best bet for a new language for you to learn that you're

00:41:46   gonna have to use later is probably at this point Swift and not because you're

00:41:49   gonna use your place PHP but because Apple's gonna make you use it too.

00:41:53   Well, and I might learn that also but but because Swift is not open source

00:41:57   there's nothing about Swift that can go on a server yet and and so I

00:42:01   I'm gonna have to maintain these two languages like yeah, I know you still need something to replace PHP

00:42:07   But yeah, exactly like it's like Swift put that aside

00:42:09   You're probably gonna need to do that maybe look into it to see if it helps you here

00:42:13   Maybe does maybe doesn't probably won't then you got the problem of what do I need to replace PHP?

00:42:17   And then you've got the problem is what do I do short term to make this crawler take fewer resources?

00:42:21   Well, I would also point out, I tweet shared this last week during the break, last episode

00:42:29   of Core Intuition was really good, I'll have to look up the number, I'll put it in the

00:42:32   show notes, where Daniel Jowkut and Manton Reese were talking about Swift and like, how

00:42:38   safe is it to use Swift today?

00:42:41   Or how safe is it to invest a whole lot of time in Swift today?

00:42:46   And they rightly pointed out, like, we don't actually,

00:42:49   like Swift is not a sure thing yet.

00:42:51   It is a thing that is out there

00:42:53   that Apple has put out there.

00:42:54   They've also put out things like garbage collection

00:42:57   in Objective-C, things like the Java bridge

00:43:00   back forever ago, that ended up being axed

00:43:03   only a few years down the road

00:43:04   'cause they just weren't working out.

00:43:06   We don't know if Swift is actually gonna be here

00:43:07   for the long term and actually be the eventual replacement

00:43:10   for Objective-C yet.

00:43:11   All we know is that it seems like that's the goal right now.

00:43:14   But this is not the first time

00:43:16   something like that has come around.

00:43:18   Apple's certainly in a better position now

00:43:19   than they were when the other alternatives came around,

00:43:21   but it is not a guarantee that Swift will be the next thing

00:43:26   for Objective-C programmers.

00:43:29   All this is is we're trying something now,

00:43:32   and I would point out we seem to be

00:43:34   in a somewhat turbulent time at Apple.

00:43:36   In addition, I mean, God, looking at how strained

00:43:41   their engineering resources are,

00:43:43   it does seem like a terrible time

00:43:44   to have introduced you to language.

00:43:46   (laughs)

00:43:47   Like just for them, like not even just for us.

00:43:49   I mean, we'll deal with it, whatever they do, but--

00:43:52   - But I do think Swift is much stronger of a,

00:43:56   if you had to bet on one of them,

00:43:57   you just named a whole bunch of them.

00:43:58   The Java Bridge, Java Bridge was done

00:44:00   from a position of weakness,

00:44:01   'cause it was like maybe people only use

00:44:02   these crazy square brackets.

00:44:03   That is a super weak position,

00:44:04   and they were just trying to get people

00:44:05   to develop for the rest.

00:44:07   Garbage Collection was always kind of half-heartedly pushed.

00:44:10   It was like, "We're making Garbage Collection,

00:44:12   and maybe we'll dog food it here and you should make your apps work with it."

00:44:17   But then they couldn't even convince all Apple internal library people to use it for their

00:44:21   libraries and make them garbage collection safe.

00:44:24   It was never like…

00:44:26   The amount of publicity and the push behind and the specific team behind Swift is like

00:44:33   their team that has proven that they can get things done within Apple having changed their

00:44:38   whole compiler infrastructure over several years.

00:44:41   It was in a keynote, but you know, it was also in the keynote.

00:44:44   We're going to the standards bodies starting tomorrow, and we're going to make

00:44:49   FaceTime an open industry standard.

00:44:51   Yeah, but that was Stitch Steve Jobs saying random things on stage and people

00:44:58   going crazy behind the scenes.

00:44:59   Like this, this is of all of the sort of major technology based things.

00:45:05   I would say this is even stronger than like, by the way, you should build your

00:45:09   OS X apps using Project Builder.

00:45:11   Like this was more emphatic than Project Builder

00:45:14   'cause it took them a while to get,

00:45:15   in fact, I think it basically took them

00:45:17   until they had the X code name to say,

00:45:20   no, this is it, this is, you know,

00:45:22   we're telling you like we are completely taking over

00:45:25   the compiler infrastructure,

00:45:26   which they were from the beginning anyway,

00:45:27   but they were kind of timid about, you know,

00:45:28   especially coming off the whole

00:45:30   code warrior thing and everything.

00:45:32   My recollection anyway,

00:45:33   is that they were externally not shoving it in your face

00:45:37   that by the way, if you're gonna develop

00:45:38   applications for our platform, you're going to use our IDE and our compilers, because

00:45:43   they were in a transition period there and eventually said, no, you're going to use our

00:45:45   stuff.

00:45:46   And to emphasize that, it's called Xcode now instead of Project Builder, and you're just

00:45:49   going to have to deal with it.

00:45:51   Swift was very bold and very strongly backed in.

00:45:55   I would say that the thing you should be wary about using it now is they've said they're

00:46:00   going to just constantly break the syntax and there could be all sorts of weird things

00:46:04   having to do with source code compatibility.

00:46:06   the tools are very immature right now and the performance of the compiler sucks and

00:46:10   all this other stuff.

00:46:11   Yeah, yeah, there's plenty of reasons to stay away from it, but like this is just so much

00:46:14   stronger than the other things you've listed.

00:46:16   So even though those things have happened in the past and you had to be like, the problem

00:46:20   with Swift is the opportunity cost of not doing it seems much higher.

00:46:23   Like you could sort of say, all right, well, they're still supporting Objective-C, right?

00:46:27   So I don't have to do this Java thing.

00:46:28   We'll see how that shakes out.

00:46:29   And the garbage collection is like, well, I'll wait to see what happens.

00:46:32   You can do it with Swift too.

00:46:33   Let me wait to see what Apple actually implements in Swift.

00:46:36   But even as soon as Apple implements its first Swift only library or something, even then,

00:46:42   I still think you could potentially say, "All right, I'm all in on Swift," and they could

00:46:45   still change their mind.

00:46:46   So I think we have probably three years to be sure, but I think the degree of confidence

00:46:51   in Swift being a thing, whether it's good or not, the fact that Apple is going to stick

00:46:55   to it, it's pretty high at this point.

00:46:57   Yeah.

00:46:58   And plus, I don't know Apple's history with like MetroWorks and CodeWarrior and stuff

00:47:02   like that.

00:47:03   I came way later than that.

00:47:04   Certainly, it seems like a lot of the moves they've been making over the last five to

00:47:09   10 years, probably five-ish years, have been to set the things in motion to get Swift to

00:47:15   be a thing, you know, to work on LVM, to work on Clang, to work on all of these things that

00:47:22   make up the Swift toolchain.

00:47:24   It seems like a very deliberate multi-year process to get to where we are today.

00:47:28   And yeah, Apple will throw things away on a whim if they so desire, but geez, it seems

00:47:32   Seems like that's a lot of work to be thrown away just for fun.

00:47:36   And of course they have the big problem that they throw it away.

00:47:39   They just say, "Okay, well back to Objective-C.

00:47:42   Retreat to safety."

00:47:43   They need, as I've said many times, they need something.

00:47:48   You can't just stick with Objective-C forever.

00:47:52   Swift too soon, should they retreat and then advance again in a couple years in the future?

00:47:55   I think they're already behind and they need something like Swift.

00:47:57   And if it's not Swift, this will be a huge mistake for them because they will have wasted

00:48:00   years and tons of resources attempting the Swift transition and if it fails it's like

00:48:05   "uh, uh, what do we do now? C# I guess? I don't know." They have a problem.

00:48:10   We are also sponsored this week by Fracture. Remember Fracture? They print photos directly

00:48:14   on glass in vivid color. Go to fractureme.com. F-R-A-C-T-U-R-E-M-E dot com. I have Fracture's

00:48:23   hanging all over my office. They are awesome prints. I like them a lot. Other people have

00:48:28   compliment to them whenever they've seen them.

00:48:30   They're fantastic.

00:48:31   So they print photos directly on glass and then you can hang them up directly.

00:48:35   You don't have to frame them.

00:48:36   They are their own frame basically.

00:48:38   It's really, really nice.

00:48:39   The price I started at just $15 for a 5x5 inch print and I use that size.

00:48:44   I have a little row above my window in my office here.

00:48:47   I have a little row or the little square prints and I use them to print app icons of the apps

00:48:52   I've done.

00:48:53   It's kind of like this nice physical,

00:48:56   almost like a trophy row of like,

00:48:57   here's the things I've made.

00:48:59   Because in our world, you know,

00:49:00   you don't get a lot of like physical recognition

00:49:01   of things you make in software.

00:49:03   I really like that and people have,

00:49:05   people have taken that idea and ran with it.

00:49:06   I've heard of a lot of other people who are doing that too.

00:49:08   You can do that.

00:49:09   You can also print photos.

00:49:10   I have a couple of photos printed on the other wall

00:49:12   over here.

00:49:13   I have like, looks like it's probably like an 11 by 17 size.

00:49:16   It's a nice size.

00:49:18   Anyway, every fracture is handmade, checked for quality

00:49:21   by their small team in Gainesville, Florida.

00:49:23   It is the thinnest, lightest, and most elegant way

00:49:26   to display your favorite photo.

00:49:28   I can attest to that also.

00:49:30   You would think a big slab of glass would be heavy,

00:49:32   but the glass layer is actually very thin on the front,

00:49:36   and behind it is a little bit of,

00:49:37   it's almost like a foam board kind of thing

00:49:40   so you can mount a hanger or something.

00:49:42   So it actually isn't unsafely heavy.

00:49:46   'Cause I was also afraid, how big do I want a piece of glass

00:49:49   hanging out of my wall?

00:49:50   but it's nice, it's a very nice weight balance.

00:49:52   It does not seem crazy to hang this on your wall.

00:49:55   They also have desk stands, it's really great.

00:49:57   Anyway, you can get 20% off your first order from Fracture

00:50:00   by using coupon code ATP.

00:50:03   That'll also let them know that you came from our show

00:50:05   and that'll make them sponsor us more in the future,

00:50:07   so please do that.

00:50:08   Go to fractureme.com and use coupon code ATP for 20% off.

00:50:13   These are great, everything you need is in the box.

00:50:15   Great quality, I can't recommend them enough.

00:50:17   Thank you very much to Fracture for sponsoring our show.

00:50:20   - All right, any other thoughts on your adventure

00:50:24   into the wilderness that scares you?

00:50:26   - I mean, this will probably be an ongoing topic.

00:50:28   I mean, heck, maybe 2015 will be the year

00:50:30   of me learning too many programming languages

00:50:32   or just switching to Java.

00:50:33   I don't know.

00:50:35   - I doubt it'll be you switching to Java, but I'm with you.

00:50:37   - Probably not, but you never know.

00:50:39   - Fair enough.

00:50:40   All right, I would like to, time permitting,

00:50:42   talk about your new iPad, but before we do that,

00:50:46   Jon, why don't you tell us about some survey

00:50:48   that's been going on lately?

00:50:50   I didn't get the survey because I don't have any apps in any of the app stores, I assume.

00:50:54   I don't know if it was sent to everybody, but a lot of people got a survey from Apple

00:50:58   asking them questions about the app store, and people have been tweeting little pictures

00:51:02   of it.

00:51:03   I want to talk about the survey in general, but one specific part of the survey screenshotted

00:51:08   and sent to us by Joe Seger.

00:51:11   This is a question from Apple Survey.

00:51:13   It says, "Which are the top three most effective marketing channels in driving downloads of

00:51:17   your apps on the app store?"

00:51:19   So this is asking people, how do you

00:51:21   get people to download apps in the App Store?

00:51:22   There's tons of choices, not just one.

00:51:24   And there's a little red arrow in this picture

00:51:26   that shows the second choice in the list.

00:51:28   The first choice is in-app messaging.

00:51:30   And the other choice is like email, PR, community,

00:51:33   social media, television, print, all different ways

00:51:35   that you get people to come and download your app.

00:51:37   The second choice is push notifications.

00:51:41   And so this is great, because you're like, all right,

00:51:45   is this a trap?

00:51:46   Are they trying to send it to people?

00:51:48   And then if you check push notifications,

00:51:50   everybody checks push notifications,

00:51:51   gets a little email from Apple and says,

00:51:53   "You've indicated that the most effective marketing channel

00:51:55   "is push notifications.

00:51:56   "You may not be aware, but section 5.6 says

00:51:58   "that you can't use push notifications

00:52:00   "for marketing purposes and blah, blah, blah."

00:52:01   Or did the person who wrote this question have no idea

00:52:05   that that rule exists and is merely reflecting the reality

00:52:08   that push notifications are a common marketing channel

00:52:12   or some combination thereof?

00:52:13   Like, it's baffling to me.

00:52:16   talk about one hand not knowing what the other is doing.

00:52:18   You can't tell from the question whether it's, you know,

00:52:21   another situation where some department

00:52:23   doesn't understand another department.

00:52:25   Or it's, maybe they just like, want to just be honest

00:52:29   and just see how many people will check that as their answer.

00:52:32   I don't know, it confuses me greatly.

00:52:34   But Marco, did you get this survey?

00:52:36   - I did, and I honestly, I didn't even,

00:52:39   if that was in mine, I didn't even notice it.

00:52:41   I just blew right past it probably.

00:52:44   I honestly, I mean, it's pretty clear from so many things

00:52:48   that it seems like the only person at Apple

00:52:52   who even thinks that rule exists, maybe,

00:52:55   is the person who wrote that document,

00:52:57   which might have been Steve Jobs,

00:52:58   so he's not even there anymore.

00:52:59   I don't think, I mean, the rule against push notification

00:53:02   spam is sadly such a joke that I wish it was,

00:53:07   I mean, we'll go over this a million times,

00:53:10   I wish it was enforced, I really do.

00:53:11   I think everybody would be better off, especially Apple and its customers, would be better off

00:53:17   if that rule was enforced because the App Store and iOS is turning into such a spammy

00:53:22   flea market of garbage.

00:53:25   And it's annoying.

00:53:26   Your phone is full of ads now.

00:53:29   This is completely the opposite of what I think Apple would want to encourage and would

00:53:34   tolerate.

00:53:35   But now your phone is full of ads because of this, primarily because of this one rule

00:53:40   being flagrantly ignored.

00:53:42   It is literally a way to push ads to your phone

00:53:45   whenever somebody feels like it with no penalties.

00:53:48   Now, how often do you get these sorts of ads?

00:53:51   And I'm asking honestly, because I get this once a month,

00:53:55   maybe?

00:53:55   I do not receive these that often.

00:53:57   Now, they infuriate me when I do get them.

00:53:59   But it doesn't happen that often.

00:54:00   Does it happen that often for you?

00:54:02   Well, no.

00:54:02   It doesn't happen that often to a lot of nerds like us,

00:54:04   because we usually either don't use the kind of apps that show

00:54:08   them most often or we turn them off. But that is not representative of the population at

00:54:14   large. Like if you see, we talked about this before, like if you see like normal people

00:54:16   using their iOS devices and you know, have somebody, have like you know a family member

00:54:22   who uses an iOS device, have them show you their notification screen if they're willing

00:54:25   and see what's there. You'll see. They are extremely common in brand, big brand apps

00:54:33   and games, free to play games. You know, it's so, so common.

00:54:38   So speaking of common, this survey here, is this the first survey about the App Store

00:54:42   you've ever received, Marco?

00:54:43   Yes, and I got six of them.

00:54:46   And so this seems from the outside, looking again, just seeing the stories about this,

00:54:51   this is like a response from someone inside Apple to all of like the bad press that the

00:54:56   App Store has been getting lately with this current cycle of rejections and people complaining

00:55:01   and so on and so forth.

00:55:02   So I disagree entirely.

00:55:04   You think it's just a was that's what I was gonna ask is like, is this something they

00:55:06   do every year?

00:55:07   - No. - Why now?

00:55:09   - I think it's something that the App Store marketing team

00:55:12   decided to do on their own, basically.

00:55:14   I don't think this has anything to do

00:55:16   with the developer policies.

00:55:19   I don't think, you know, like we all posted on Twitter

00:55:21   like what we said in the final question,

00:55:23   because like is there any other feedback

00:55:24   you'd like to give Apple?

00:55:25   So of course, you know, all of us developers

00:55:27   unloaded on them with like,

00:55:28   well here's all the ways the App Store sucks.

00:55:29   And I don't think this is going anywhere.

00:55:33   I think this is going into a giant black hole

00:55:36   and I think the marketing team--

00:55:37   - I'm gonna ask him what's gonna happen from it.

00:55:38   I'm saying, why send the survey now?

00:55:41   Why send this survey now?

00:55:42   Is it just a complete coincidence

00:55:44   or is it because this is part of some like,

00:55:46   well, we're getting a lot of press,

00:55:47   so first thing we need to know is like, where do we stand?

00:55:49   Is it just a bunch of cranky people or whatever?

00:55:51   Let's just gather information.

00:55:52   Send out a big survey that just covers all bases

00:55:54   and let's just send it to everybody

00:55:56   and see what we get back.

00:55:57   Because just looking at a bunch of news stories

00:55:59   of cranky developers doesn't tell you anything

00:56:00   because there's thousands and thousands of developers

00:56:02   and like five of them are angry.

00:56:04   And so they're just gathering information.

00:56:05   Not like they're gonna take this information

00:56:07   and do anything with it, but I think this is a first,

00:56:08   it seems to me, this is a first step

00:56:10   and let's see where we really are.

00:56:12   Because I can imagine inside Apple,

00:56:14   the argument is, and always is,

00:56:16   that's just a bunch of cranky people,

00:56:18   that's just a website that doesn't like us,

00:56:19   that's just someone going for page rates.

00:56:21   It's not actually a big deal.

00:56:22   We have hundreds of thousands of developers,

00:56:24   99.99% of them love us and think we're awesome

00:56:26   and the app store is awesome and everything is great.

00:56:29   This is what I can imagine VP saying.

00:56:30   And we just have to manage these squeaky wheels

00:56:33   with good PR and stuff like that.

00:56:34   but realistically speaking, everybody loves us.

00:56:37   Our developer sat is awesome.

00:56:38   And just like, that's what they tell it.

00:56:40   You know what I mean?

00:56:41   And for all we know that could be true.

00:56:42   So the first step that someone could say is,

00:56:45   that's what you keep telling me,

00:56:46   but I don't like reading stories.

00:56:47   So step one, prove to me that's the case.

00:56:49   Survey all the developers, send back this thing.

00:56:51   Let's see what the survey results say.

00:56:53   And if they say like 99% love us and 1% hate us,

00:56:56   then I'll believe you.

00:56:58   But if not, then we'll have further discussions.

00:57:01   - I would believe that might be the case

00:57:04   if I didn't go through the survey.

00:57:06   But having gone through the survey,

00:57:08   it is pretty clear that this was written

00:57:10   by marketing people, not developer relations.

00:57:15   - Yep.

00:57:15   - And so, you did it, right, Casey?

00:57:18   - I don't remember if I got it,

00:57:19   but I certainly saw the survey,

00:57:21   'cause we have certainly seen pretty much

00:57:25   the entirety of the survey.

00:57:26   I thought it was only two or three pages, right?

00:57:27   - No, it was long.

00:57:28   It was probably 20 screens, yeah.

00:57:30   - Oh, then maybe I clearly have not seen it then,

00:57:33   but the pieces I saw just reeked of me,

00:57:36   reeked to me of marketing speak.

00:57:39   And I agree with you, Marco,

00:57:41   that this was marketing acting on its own,

00:57:43   just trying to figure out what the state of the world was.

00:57:45   I don't think this is any big conspiracy

00:57:47   or anything like that.

00:57:48   - Was that, so give me an example of some of the questions.

00:57:51   Were all the questions basically like,

00:57:52   how do you market your app?

00:57:54   - Yes.

00:57:54   - And how can we help you market your app better, basically?

00:57:57   - Basically, yeah.

00:57:58   Like it was not, I mean, I could be wrong,

00:58:01   but it really did seem like this was like

00:58:05   some App Store marketing team doing their own research

00:58:08   for their own department and it was not,

00:58:10   it didn't seem representative of the developer program

00:58:12   as a whole or the App Store as a whole

00:58:14   carrying what developers thought about the App Store

00:58:16   and it really did seem like it was what it said

00:58:20   and nothing more than that which is

00:58:21   a survey about how you market your apps.

00:58:23   Like that really seemed like that was it.

00:58:26   Was there anything in there about like findability

00:58:29   in the search and stuff like that?

00:58:31   - Very little.

00:58:32   - Oh, yeah.

00:58:33   A lot of it gets overshadowed, you're right,

00:58:34   by like the people posting the free response thing

00:58:38   where you get to type whatever you want

00:58:39   and everyone just dumping a pile of turds

00:58:41   on the Apple store stuff and not the other questions.

00:58:45   So if it's just the marketing department,

00:58:47   like I still question,

00:58:49   it's not like every individual department

00:58:51   can decide to email every single developer

00:58:53   whenever they feel like it,

00:58:54   or like a lots of, enough developers that, you know,

00:58:57   it seemed like all the big names got this, right?

00:59:01   That seems like something that is not,

00:59:04   that you need a higher level okay about.

00:59:06   And maybe it was just the marketing department

00:59:09   initiating this thing, but why would you give the okay?

00:59:11   For like, I'm sure every department wants to do this.

00:59:13   I'm sure, you know, everyone would love to email

00:59:15   all developers and ask them questions

00:59:16   about whatever their thing, developer relations

00:59:19   or the development tools team or the frameworks team

00:59:22   and send a how you like in this framework

00:59:24   that we just made, fill out the survey, but you can't.

00:59:26   Everyone can't email every single developer.

00:59:28   And Schiller's organization, I guess,

00:59:30   got the go ahead to send a 20 page thing

00:59:33   that's mostly about how you market your apps.

00:59:36   I don't know.

00:59:36   - Well, Schiller's organization

00:59:37   is the developer organization.

00:59:39   - But it's also marketing, right?

00:59:40   - The entire developer relations division at Apple

00:59:42   is under marketing, which is under Schiller,

00:59:45   which is part of the problem, honestly.

00:59:47   - But that's getting back to what I'm saying.

00:59:48   If you said this is just marketing

00:59:50   and not developer relations,

00:59:52   but it was all in the same department,

00:59:53   maybe the questions were just bad.

00:59:54   Maybe you felt like the questions should have been asking

00:59:56   you more about the stuff that you wrote about

00:59:58   in the summary thing at the end,

01:00:00   instead of just asking you how you advertise

01:00:03   your applications to people.

01:00:05   Was there questions about like,

01:00:06   how do you deal with the reviews on the site?

01:00:08   You should just post a full survey

01:00:09   so we can all look at the questions.

01:00:11   - Yeah, I'll go back.

01:00:12   I think I got like five or six of these links

01:00:14   and I didn't even check to see like what emails

01:00:16   they were going to,

01:00:17   but maybe I'll go back and screenshot every page.

01:00:19   But it's excessively boring.

01:00:21   Like it's really, it's extremely dull

01:00:24   and it is really mostly a marketing survey.

01:00:28   I don't think the purpose of this was what you're saying.

01:00:31   However, there was something interesting I think

01:00:36   posted a few days ago on December 30th

01:00:39   to the developer news feeds.

01:00:40   Here, I'm pasting the link in the chat here.

01:00:41   You gotta look at this.

01:00:43   I don't know if you guys caught this.

01:00:45   I was away on vacation so I didn't blog about it yet

01:00:49   but which might be the point.

01:00:51   If you look at this, so this is a quick thing,

01:00:54   I'll just read it, it's pretty short.

01:00:55   It's a quick thing posted to the Apple developer news feed,

01:00:58   posted on December 30th, titled,

01:01:00   "Getting Help with App Reviews and Rejections."

01:01:04   So here's the entire text of it.

01:01:06   iTunes Connect is now available after the holiday shutdown.

01:01:08   Please remember, if you need to appeal an app rejection

01:01:11   or request that the review of your app be extradited,

01:01:13   the fastest way to get help is to contact

01:01:15   the app review team through the Contact Us form.

01:01:18   To view app rejection details and ask for clarification,

01:01:20   Visit Resolution Center in iTunes Connect.

01:01:22   We look forward to seeing the innovative new app

01:01:24   you'll create in 2015.

01:01:26   - We look forward to seeing them and maybe rejecting them.

01:01:29   - Right, so this I think is much more interesting

01:01:33   than the marketing survey.

01:01:35   What do you think this angle is?

01:01:39   I mean, I think this is hilarious.

01:01:40   And so I think this might be, I mean, obviously,

01:01:44   you have to read a lot through the tea leaves here.

01:01:47   It might be a thinly veiled threat,

01:01:49   But if you read it as if it's a threat, it kind of works.

01:01:54   - It says the fastest way though.

01:01:56   It doesn't say running to the press never helps anything

01:02:00   or whatever the phrase was.

01:02:01   And then the guidelines thing,

01:02:03   it is not as passive aggressive or as aggressive aggressive

01:02:05   as those things were.

01:02:07   It reads more like a reminder to like,

01:02:09   if there are developers out there

01:02:10   who don't know about the resolution center, I don't know.

01:02:12   - It's very easy to read this as a threat,

01:02:14   but I think this might,

01:02:16   and maybe this is just me being optimistic

01:02:18   about this kind of stuff.

01:02:19   I think this might be the kind of implied mea culpa

01:02:24   on some of the recent rejection crap.

01:02:25   I think this might be like,

01:02:27   hey guys, don't worry, we're getting this under control.

01:02:30   I don't know.

01:02:32   Maybe again, maybe that's unreasonably optimistic.

01:02:34   What do you think?

01:02:35   - I read it the same way that this is them saying,

01:02:39   all right, all right, all right, everyone relax,

01:02:42   everyone relax, just let us know.

01:02:45   We'll fix you up, it'll be okay.

01:02:48   But man, does it frustrate me that

01:02:52   Apple's so institutionally crotchety maybe?

01:02:55   I don't know.

01:02:56   Like why can't they just say,

01:02:57   "Hey guys, we've seen that there's been

01:03:01   some questionable choices on our part,

01:03:04   we're gonna fix it."

01:03:05   Like, is that so terrible?

01:03:06   Is being vulnerable really that bad?

01:03:11   I know it'll never happen, but.

01:03:13   - Step one, admit no wrongdoing.

01:03:15   - Yeah.

01:03:16   I mean, that's not Apple's MO.

01:03:18   They have admitted wrongdoing before.

01:03:20   Even when they think they aren't wrong, like Antennagate,

01:03:22   everyone gets a free bumper,

01:03:23   even though we think it's not a problem or whatever.

01:03:26   But in general, this specific part of Apple, App Review,

01:03:30   does not admit wrongdoing.

01:03:32   In the whole, we'll reject your app,

01:03:35   and then you'll make a big fuss about it,

01:03:37   and then we'll accept it.

01:03:38   And then that cycle happens,

01:03:40   and there's never a part where Apple comes out

01:03:42   and sort of bears its soul and says,

01:03:46   "We've thought about this and we've..."

01:03:48   The admission of wrongdoing, I guess,

01:03:51   is okay, now your app is back in the store,

01:03:53   but it's like, this isn't a systemic problem.

01:03:56   This is a one-off case that just didn't happen to go right.

01:03:58   And it being in the press has nothing to do

01:04:00   with it getting fixed.

01:04:01   It's just one of those things that happens

01:04:03   and oh well, it got fixed and don't worry about it.

01:04:05   And it just happens repeatedly over and over again.

01:04:06   And there's never any sort of public acknowledgement

01:04:09   that this might be a thing and not just like,

01:04:11   "Well, those things just happen sometimes."

01:04:13   And that's what frustrates people so much

01:04:15   that that part of the organization is A,

01:04:17   so different than individual Apple employees,

01:04:19   which as we all know are human beings

01:04:21   and are actually forthcoming.

01:04:22   And B, it's not like the larger corporation

01:04:25   in terms of when they make design mistakes

01:04:27   or when they have large scale problems

01:04:31   like the labor difficulties in China,

01:04:34   the diversity within the organization,

01:04:35   things that Apple has fallen on its face about,

01:04:38   and they come back and say,

01:04:40   "We're not doing well enough on diversity."

01:04:42   Where Greenpeace yelled at them

01:04:43   and they thought it was unfair that they got yelled at,

01:04:44   but you know, we are gonna make that stuff better.

01:04:46   Before we were worse at it, now we're better.

01:04:47   Labor practices, we're gonna try to be more transparent.

01:04:50   We're gonna do it, you know,

01:04:51   all those are situations where Apple did something wrong

01:04:53   and it's publicly trying to do it better

01:04:55   by admitting that the past was bad,

01:04:57   the present is bad, and they're trying to get better.

01:04:59   But there's never anything like that

01:05:00   having to do with App Store review, at least not public.

01:05:02   - No, well, 'cause again, this is all under Schiller.

01:05:04   I mean, if you think about the kind of public persona

01:05:08   Schiller shows. I mean I don't know anything about the guy, you know, non-publicly, but

01:05:12   what he shows publicly, he is kind of like this, you know, terse, quiet guy who doesn't

01:05:18   appear to be ever having any fun. I mean even like, even in his presentation in the last

01:05:23   few years, is it just me or does he just kind of seem angry? Like it's, it doesn't,

01:05:29   you don't get, like if you look at this person knowing he's the one in charge of

01:05:32   this organization and knowing that he does have a lot of direct involvement with some

01:05:35   these decisions, it's no wonder that the attitude we get

01:05:39   is just a brick wall with occasional terse-ness coming out

01:05:42   and not really openness or friendliness,

01:05:45   because that appears to be the public persona

01:05:46   Phil Schiller shows.

01:05:48   - That's not Tim Cook at all though.

01:05:50   - No. - Like Tim Cook's persona,

01:05:51   and I think Tim Cook's persona has been infecting more

01:05:54   and more of the sort of higher level, entire corporation,

01:05:57   Apple stuff, it's just that this is a corner

01:05:58   of the corporation, so the entire corporation is diversity,

01:06:02   labor practices, finances, you know, the environment, that is big picture stuff, human resources,

01:06:09   like charity, all that stuff, that is big, big picture. Hopefully that will be filtering

01:06:15   down to the smaller thing. And of course, like the, you know, the whole management reshuffle

01:06:19   and collaboration is more important and unifying things under Johnny Ive, but it just that

01:06:24   that influence and that tone seems not to have made a Tapper view yet.

01:06:27   - No, I mean, I honestly, as long as Phil Schiller

01:06:31   is in charge of the division that App Review was under,

01:06:34   I don't foresee any major changes in this area.

01:06:37   Because I really do think it goes to him,

01:06:39   and I think he's the one who is in control to fix this,

01:06:44   and seems to believe that the way they're doing it

01:06:46   is the correct way to do it.

01:06:48   - Yeah, I don't know.

01:06:51   Part of the reason that we all love Apple

01:06:52   is because everything is so secretive and interesting,

01:06:56   and you never know what's going to come next.

01:06:58   But I don't know.

01:06:58   I feel like holding onto that apple

01:07:01   is perhaps not the right approach anymore.

01:07:04   They're not the underdog.

01:07:06   They're not the apple they once were,

01:07:09   and they're bigger than they once were.

01:07:10   And it's probably unfair for me to prescribe

01:07:13   what Apple should do from my chair here, the other coast,

01:07:17   but I'm not going to let that stop me.

01:07:20   It just seems like, can't we get a little more feedback?

01:07:23   And all I keep reflecting on,

01:07:24   and I'm not the first person to realize this,

01:07:26   is that when we all left WWDC this year,

01:07:29   we were all so amped up and so excited and so reinvigorated.

01:07:33   And then I feel like six months later, we're all grumpy again.

01:07:37   Maybe it's just because we are all grumpy people in general.

01:07:40   But I don't think so.

01:07:41   I think we really were excited about all this stuff

01:07:43   and how open they seem to be becoming

01:07:46   and how they seem to be listening to us.

01:07:49   And now, six months later, it's like, oh, we're

01:07:53   back in this same dull grind that we're always in.

01:07:57   And that's just not a fun place to be, it's just not.

01:08:01   And part of the reason that we're all so attracted

01:08:03   to this environment and attracted to writing apps

01:08:06   for this platform is because it's fun.

01:08:09   And God, are they working hard to suck the fun out of it.

01:08:12   - Yeah, I feel right now about Apple development

01:08:15   the way Phil Schiller sounds on stage

01:08:17   at the most recent keynotes.

01:08:19   - Completely unamused and bored.

01:08:21   - Yeah, just kind of going through the motions,

01:08:23   kind of almost angry.

01:08:26   The mood has shifted from the Craig Federighi

01:08:29   that we saw at WBCC showing us all the cool,

01:08:32   new technical stuff to the marketing hammer being dropped

01:08:37   and saying, "Nope, this is how things should be.

01:08:39   "This is not how things should be, period."

01:08:41   And back to old school.

01:08:42   I mean, look, Phil is old school Apple.

01:08:44   He was under jobs, he's been there for a very long time.

01:08:46   Like, he is, he represents that attitude at Apple.

01:08:50   and you look at the leadership,

01:08:52   Ben Thompson talked a lot about this,

01:08:53   a lot of the other leadership has changed.

01:08:55   He's one of the oldest SVPs there now,

01:08:57   or longest running at least.

01:08:58   And I really do think this is how this department is run,

01:09:03   this is how he thinks is the right way to do it, clearly,

01:09:07   otherwise he wouldn't be doing it this way.

01:09:08   I mean, he has enough power in the company,

01:09:09   he could change it if he wanted to,

01:09:10   so we know that this is how they think

01:09:12   they should be running the company,

01:09:13   or this division rather.

01:09:15   So obviously, this goes to Phil, this is all under Phil.

01:09:20   Phil is the guy who's responsible for this being this way

01:09:22   and the guy who could change it if he wanted to,

01:09:24   but he doesn't want to.

01:09:26   And maybe this, look, it seems to be working okay.

01:09:28   Again, like, you know, as you said,

01:09:29   who are we to say what they should do?

01:09:31   Obviously they're doing something right.

01:09:33   But certainly it's not right for developers.

01:09:36   It is right for Apple, probably, maybe.

01:09:38   Long-term it's questionable,

01:09:40   but it is right for them for now.

01:09:42   It benefits their users in certain ways, but not others.

01:09:45   But you know, overall it's probably a benefit.

01:09:47   But yeah, you're right.

01:09:48   I mean, the overall attitude is pretty negative

01:09:51   and it's pretty stifling.

01:09:52   And I think that ultimately is what is gonna cause

01:09:57   possible long-term problems for Apple.

01:09:59   They really do depend on developers

01:10:02   to push the boundaries forward with their platforms.

01:10:05   And not just the phone, but especially the iPad,

01:10:08   and probably also in the future, the watch.

01:10:11   They need us to make reasons

01:10:14   for people to buy these things.

01:10:15   The phone is an easy success

01:10:17   because it's a really good smartphone

01:10:19   and everybody buys a smartphone.

01:10:20   They're subsidized in so much of the world.

01:10:22   Everyone has decided they need one.

01:10:24   I mean, smartphones are this magical business

01:10:26   where everyone buys them

01:10:27   because they just provide so much utility

01:10:30   and everyone is willing to spend whatever it takes

01:10:33   as long as they can,

01:10:34   which is a lot of people these days

01:10:36   'cause they're so cheap.

01:10:37   They're willing to do it because smartphones are just,

01:10:40   so they're ubiquitous.

01:10:41   So the question isn't do I buy a smartphone?

01:10:44   The question is which smartphone do I buy?

01:10:46   and so they can compete well there.

01:10:47   If you look at the iPad, the iPad is like, it's optional.

01:10:51   It's an accessory for most people.

01:10:52   It's a luxury, it's an extravagance, it's a fun device.

01:10:57   It is usually not your primary computer,

01:10:59   and usually most people don't say, I need to have an iPad,

01:11:02   it's only a question of which, or rather,

01:11:04   I need to have a tablet, it's only a question

01:11:06   of which one do I buy.

01:11:07   No, it's just an extra.

01:11:09   The watch is gonna be that same thing.

01:11:11   Most people, I don't think, wear watches,

01:11:13   and certainly the ones who do wear watches today,

01:11:16   I don't think it's an obvious thing to say,

01:11:17   well, I have to get a smartwatch.

01:11:19   Like, I think the watch is gonna have

01:11:21   the exact same challenge that the iPad has

01:11:23   of it's going to have to justify its purchase.

01:11:25   It is coming from zero.

01:11:27   It is not gonna be like a phone

01:11:28   where they just have to pull people into the store

01:11:31   who are already buying their phone anyway.

01:11:33   The watch is gonna be like,

01:11:35   you have to tell me why I want this.

01:11:37   And so much of that rests on what developers do,

01:11:40   what apps are out there.

01:11:42   so many people end up buying these devices

01:11:45   because of one or a very small number of specific apps

01:11:49   that run on them.

01:11:50   And if developers keep getting marginalized

01:11:53   and restricted too severely,

01:11:56   it's very hard for us to push those platforms forward.

01:11:59   It's very, and it becomes less likely

01:12:02   that the next big thing is gonna be on iOS.

01:12:05   And how does that help Apple?

01:12:07   - Yeah, I agree.

01:12:08   And I think perhaps the most obvious

01:12:10   and specific example of this is watching everyone's reactions to WatchKit.

01:12:18   And a lot of popular developers, and I wish I could think of a specific person,

01:12:22   but I can't off the top of my head, but a lot of big developers have said,

01:12:25   "Yeah, it looks cool, but yeah, I'm going to wait and see how this shakes out

01:12:30   before I do anything real." And that is a different reaction than I remember

01:12:35   ever having seen before. Like when the iPad came out, if nothing else,

01:12:40   everyone said, "Holy crap, I'm going to make an iPad app

01:12:43   "so I can be a part of the gold rush."

01:12:45   Where now, I'm hearing a lot of really popular developers

01:12:49   say, "Well, we'll see how it goes."

01:12:52   And that's not where Apple wants to be.

01:12:55   - Right, and like what Apple has shown this fall

01:12:58   with all the iOS hate stuff and all the crazy rejections,

01:13:00   racing forward to be first to market

01:13:03   is not necessarily a good idea.

01:13:05   And that's, I think that feeds into this.

01:13:08   And now we're seeing WatchKit,

01:13:10   We know it's gonna be a new device.

01:13:11   It's very restrictive with what you can do upfront.

01:13:15   There are gonna be more capabilities added over time,

01:13:16   but all the crazy policies and rejections

01:13:19   that we've seen for iOS so far,

01:13:23   the watch is gonna have its own set of those.

01:13:24   It's gonna reset from zero.

01:13:26   It's gonna have an entirely new set

01:13:28   of weird decisions Apple has to make,

01:13:31   many of which the developer community will disagree with

01:13:34   and bloggers will get angry about.

01:13:36   We're gonna start over.

01:13:37   We're starting from scratch here.

01:13:38   And all the same people who caused all this stuff

01:13:40   with iOS rejection so far this fall,

01:13:43   they're all still making the decisions,

01:13:45   they're all still making the calls.

01:13:46   And so the same system's in place,

01:13:48   it's gonna have the same problems with this new platform.

01:13:51   The only question is, will the watch sell enough?

01:13:53   And so, we're all here because A,

01:13:58   most iOS developers, if not all iOS developers,

01:14:01   use iOS devices themselves.

01:14:04   These are the devices we choose to have.

01:14:05   So that makes us already right there

01:14:08   encouraged to develop for them.

01:14:10   And then secondarily, although it's a matter

01:14:12   more for your big company, there's so many of them out there

01:14:15   they sell so ridiculously well that it's just a good

01:14:19   business idea to target them in many cases,

01:14:21   or in most cases.

01:14:22   The watch we don't know yet.

01:14:24   The watch, we don't know if developers are gonna end up

01:14:27   loving them, or if it's gonna end up being like

01:14:29   what a lot of us say about the iPad, which is like,

01:14:31   "Eh, I don't really use it that much ever, you know,

01:14:33   "ever since the big phones came out or whatever."

01:14:35   We also don't know if they're gonna sell very well.

01:14:37   That's a big question mark right now.

01:14:39   They might sell like crazy.

01:14:41   They might be blockbusters,

01:14:42   and we might be looking back at this episode in six months

01:14:45   and laughing at how pessimistic we might have been

01:14:49   or how much we might have underestimated

01:14:50   how much they would sell.

01:14:52   Or they just might not sell that well for a while, if ever,

01:14:55   and we don't know.

01:14:57   And because of the attitude

01:15:01   that they have shown developers,

01:15:03   I mean, since the beginning of the App Store, really,

01:15:06   that's not a new thing,

01:15:06   especially because of the recent mood among the community

01:15:10   of all of this chilling effect coming

01:15:13   from all these rejections,

01:15:15   I think that makes us even less excited

01:15:18   to jump into this unknown, this big question mark.

01:15:21   So again, this is why I'm saying,

01:15:24   the timing of these things is terrible.

01:15:26   The timing of all these really frivolous

01:15:28   or weird capricious rejections is just awful

01:15:32   because this is when Apple needs all the enthusiasm

01:15:35   that they earned this past summer.

01:15:39   They need that enthusiasm now for all of us

01:15:41   to start building cool stuff for the watch

01:15:44   to increase the chances of them selling lots of watches.

01:15:47   And instead, they've totally burned so much of that

01:15:50   with these rejections, and again, for what?

01:15:53   For what was the benefit there?

01:15:56   - Well, when I think of what the pointy head boss

01:15:57   would say to all that, they would say,

01:15:59   "It's just these weird indie developer blogger things

01:16:02   "that are angry at us.

01:16:04   "Starbucks is gonna have a watch app.

01:16:05   Weight Watchers will have one, Nike will have one,

01:16:08   JetBlue will have one.

01:16:10   They just go through all these big name brands

01:16:11   and like, "Oh, my relationships

01:16:13   with those other C-level executives is awesome

01:16:15   and we drive our Lamborghinis down to the golf course

01:16:17   and have golf all the time.

01:16:17   They're totally making watch kit apps.

01:16:19   Who cares if the bunch of these hipster people in Portland

01:16:23   aren't gonna make a watch app right away?

01:16:24   They'll make one after the other apps are out.

01:16:26   We don't care as long as we can say

01:16:27   that there's a Walmart app on our watch

01:16:29   and that's all that matters.

01:16:30   I mean, you go past a Starbucks,

01:16:31   it'll bleep a little thing that'll give you a discount

01:16:34   and you can get a coffee.

01:16:35   Like that's the point you heard, boss, like dystopian scenario, the idea that, you know,

01:16:39   the people, the things that we care about, you know, argument would be like, yeah, but

01:16:43   these little guys tend to make the most interesting things.

01:16:46   You're not going to get a really super innovative app coming out of Starbucks or anything for

01:16:49   your watch.

01:16:50   We agree that Starbucks has to be there, right?

01:16:52   You need that on your watch.

01:16:53   You need like, you need a Twitter app, you need to whatever, like whatever.

01:16:56   You need the big names, but you also need this other community.

01:16:59   And from their perspective, it might be, well, the other community is annoying and they bother

01:17:02   and they say mean things on websites about us.

01:17:04   And Starbucks never does that.

01:17:06   And we're gonna have them and you better get on board.

01:17:08   And if you don't wanna have your app there on day one,

01:17:10   a million people writing applications,

01:17:13   all those people who make all those clone free to play

01:17:15   or rip off applications,

01:17:16   they're all gonna be at the watch on day one

01:17:18   'cause that's their whole freaking business.

01:17:19   They make a million clone copyright violating apps

01:17:23   until they get pulled from the store

01:17:24   and it's just the shotgun approach

01:17:26   and they're all gonna be all over the watch.

01:17:27   So we're gonna have huge numbers

01:17:29   that we can put up on slides and we show a big pie chart.

01:17:31   look how many apps the watch has already, you know,

01:17:33   because every app is created equal

01:17:35   when it comes to stats on slides, right?

01:17:37   And we have all these big names,

01:17:39   and let's put up the logos

01:17:40   of a bunch of Fortune 500 companies.

01:17:42   And the fact that Panic isn't on there

01:17:43   because Panic was afraid about putting a watch thing

01:17:46   'cause they wanted to take a wait and see attitude,

01:17:47   nobody in the audience cares,

01:17:49   and we at Apple don't care, and if you care, boo hoo.

01:17:51   - That's true, however, it's only a matter of time

01:17:56   before the next Instagram, or the next Dodge,

01:18:00   the next Crossy Road isn't on iOS.

01:18:03   - I know, that's the argument we would make,

01:18:04   is like, if you're expecting,

01:18:06   you don't know where the next innovation's coming from,

01:18:08   and it's probably not gonna come from Fortune 500 company,

01:18:10   it's probably gonna come from one of these little random,

01:18:12   that you never know where it's gonna come from.

01:18:14   Somebody you've never even heard of.

01:18:15   Who heard of the guy who made Flappy Bird?

01:18:17   Who heard of the people who made Crossy Road

01:18:19   until they made, you know, like, that's argument for,

01:18:22   I'm not saying this is Apple's attitude,

01:18:23   I'm saying these are the two endpoints on this continuum.

01:18:27   And I don't know which endpoint is which.

01:18:28   for all we know Apple is totally on board

01:18:30   with what we're saying.

01:18:31   They're like, you've got to, you know,

01:18:32   and they're having this internal debate.

01:18:33   Or there's somebody in power at Apple

01:18:35   who's on the pointy haired boss side or whatever.

01:18:37   We're like, again, with an information vacuum,

01:18:39   you can, if you're in a bad mood,

01:18:40   you imagine that pointy haired boss side.

01:18:42   And if you're a good mood,

01:18:43   you imagine all the good people at Apple

01:18:44   fighting the good fight and just

01:18:46   haven't quite gotten their acts together yet.

01:18:48   - Right, and as a quick little side note,

01:18:50   I'm really curious to see what happens

01:18:52   with WatchKit and games.

01:18:54   Because WatchKit is really not designed for games,

01:18:58   pretty clearly.

01:19:00   And so when they do the native SDK,

01:19:01   which they say later next year,

01:19:03   which people have been assuming that means WBC next year,

01:19:08   I actually think that might be too early.

01:19:10   I would guess next winter,

01:19:12   just like a year from this year's watch kit,

01:19:15   which came out in November,

01:19:16   I'm guessing maybe next November we get that.

01:19:20   And next spring, like spring 2016,

01:19:24   new watches come out that can use it.

01:19:26   So anyway, that's just a guess.

01:19:28   But we don't know yet, like,

01:19:31   it sure looks like all of Watch Kit so far

01:19:34   was designed not only to not enable games,

01:19:36   but policy-wise to prohibit most of them.

01:19:39   - Well, but it'll have the most important gaming feature.

01:19:41   The most important gaming feature of the watch

01:19:43   is to tell you when gems are 50% off for the next one.

01:19:46   - That's unfortunately, God, that is true.

01:19:49   - That is the most important gaming feature of the watch,

01:19:51   and it will be supported,

01:19:53   because that is the one thing you're able to do,

01:19:54   is send up a little notification with a button

01:19:56   and then you press the mix, you know,

01:19:58   and that's all they care about.

01:19:59   - God, games today are terrible.

01:20:01   But you know what's not terrible?

01:20:02   Our final sponsor, it is Squarespace.

01:20:06   They are back.

01:20:07   Go to squarespace.com and check it out.

01:20:09   They have recently, this past fall,

01:20:11   unveiled a ton of new features

01:20:13   and a giant redesign with Squarespace 7.

01:20:16   It's a new interface, 15 new templates,

01:20:18   and so much more than that.

01:20:20   It now integrates with Google Apps.

01:20:21   You can connect it to your Gmail,

01:20:23   Google Drive for iCloud storage,

01:20:25   Google Forms for surveys and much, much more.

01:20:28   They have now partnered with Getty Images,

01:20:29   so you can actually buy and use,

01:20:33   like I forget the number, it was like a few hundred thousand

01:20:35   or a couple million images, all from Getty Images

01:20:38   right there in Squarespace for just 10 bucks once.

01:20:40   You just pay 10 bucks an image

01:20:42   and you can embed it as your header, your template,

01:20:44   your background, in a blog post.

01:20:46   If you need a nice high quality legal stock photo,

01:20:50   you can get all that right there.

01:20:51   And honestly, I've bought stock photos before

01:20:53   for the magazine and Getty was always

01:20:55   my favorite place to get them.

01:20:57   You can take care of all your stock image needs

01:20:59   in the same place you manage your site

01:21:01   right from the Squarespace interface.

01:21:02   I saw a demo of this feature at the launch event.

01:21:05   It's fully integrated, it's beautiful, it's simple,

01:21:08   exactly what you'd expect from Squarespace.

01:21:10   And of course, Squarespace has their classic features.

01:21:12   They have all the beautiful designs

01:21:14   with simple yet powerful interfaces.

01:21:17   They have 24/7 support via live chat and email.

01:21:20   Their designs are all responsive

01:21:22   But now what's even cooler about the new design, if you shrink the browser window down, it

01:21:27   will actually show you, it will simulate an iPhone or an iPad sized screen on the right.

01:21:32   So you don't have to actually go test on an iPhone or try to get your browser all the

01:21:36   way down to 300 pixels wide.

01:21:38   You can just do it right there, you can preview it right there in the interface.

01:21:41   It's all what you see is what you get.

01:21:44   It's really impressive that they did all this in a web app.

01:21:47   Anyway, they also have commerce capabilities.

01:21:49   If you want to integrate a store with your website, you can do that at no additional

01:21:52   charge.

01:21:53   All of this starts at just $8 a month and if you buy a whole year up front you get a

01:21:58   free domain name with that as well.

01:22:00   So start a trial today, no credit card required.

01:22:03   It's a real free trial, you don't have to enter a credit card, you can just start doing

01:22:07   it and you can build a website, I believe it's a week.

01:22:11   It's a good trial.

01:22:13   Anyway, start a free trial today with no credit card required.

01:22:16   Start building your website today.

01:22:18   and you decide to sign up for Squarespace,

01:22:20   make sure to use the offer code ATP,

01:22:22   that is offer code ATP, to get 10% off your first purchase

01:22:26   and to show your support for our show.

01:22:27   Thank you very much to Squarespace

01:22:29   for sponsoring our show once again.

01:22:31   - So to end on a potentially happier note, I hope,

01:22:35   last week we had made mention of you having new thoughts

01:22:38   on the iPad and then we genuinely just didn't get a chance

01:22:42   to talk about it.

01:22:43   So would you like to talk about your new thoughts

01:22:46   on your new iPad?

01:22:48   Do you want me to talk this whole episode?

01:22:49   I mean, I can, but I feel kind of bad

01:22:51   monopolizing the whole show.

01:22:52   - Whatever, nothing else is going on.

01:22:53   - I'll interrupt you and tell you

01:22:55   why you're wrong about it, so go ahead.

01:22:56   - Perfect, okay.

01:22:57   (laughing)

01:22:59   I would ask nothing less.

01:23:00   All right, so I was very impressed

01:23:05   with the iPad Air 2's spec upgrade this year.

01:23:08   And we bought one as a gift for a family member,

01:23:12   and as I was playing with them in the store,

01:23:16   I was really, really won over by it.

01:23:18   because so for the last couple,

01:23:19   the last full size iPad I bought was the iPad 3.

01:23:22   I skipped the 4 and the Air 1.

01:23:24   And I bought both iPad minis,

01:23:29   the first terrible one and then the first Retina one.

01:23:33   The iPad 3 and the two iPad minis made me hate the iPad

01:23:38   because the iPad 3 was, I love the Retina screen so much,

01:23:43   but it was so heavy.

01:23:47   It also had weird performance characteristics

01:23:49   because it had boosted the GPUs

01:23:53   to deal with the extra pixels,

01:23:54   but it didn't boost the CPUs.

01:23:56   So any kind of CPU-bound graphics operation

01:23:59   or process was very slow on them.

01:24:03   So it was very weird for that.

01:24:04   It was also, the iPad 3 ran warm,

01:24:07   and it was a whole thing.

01:24:09   - I still use mine every day and love it, go on.

01:24:10   - Perfect, okay.

01:24:12   iPad Mini 1 comes out.

01:24:14   It instantly ruined the iPad 3 for me

01:24:16   because it's so much smaller and lighter.

01:24:19   It makes the iPad 3 seem like this giant boat.

01:24:22   It's such a massive difference.

01:24:24   But the screen on the iPad Mini 1 is so terrible

01:24:27   'cause it's non-retina.

01:24:28   It was just a miserable experience.

01:24:31   I would look at that and I would say,

01:24:34   man, this is the great form factor.

01:24:36   I love this form factor, I think,

01:24:37   but man, this screen is so bad.

01:24:39   And then I'd try to look at something on my iPad 3

01:24:42   and it was so big and heavy.

01:24:45   So it was like the worst of both worlds.

01:24:47   I thought the Retina Mini would solve this problem.

01:24:49   - It does.

01:24:50   - For you.

01:24:51   But you don't even call it that,

01:24:53   you call it the Retina Pad Mini, right?

01:24:54   - That's right.

01:24:55   - Right, so, sorry Steven.

01:24:58   I thought that would do it.

01:24:59   And what I found instead was that

01:25:02   the Retina Mini had two main issues for me.

01:25:05   Number one is that the screen is not as good

01:25:07   as the Air One screen, which Tiff has.

01:25:09   It is a lower end device in some ways.

01:25:13   and there are small ways, but it is noticeable

01:25:16   and the screen, the color isn't as good

01:25:19   and you can really tell.

01:25:20   The second thing is that all the people

01:25:23   who went through the progression of full size iPad

01:25:25   to iPad mini and then to a new phone this year

01:25:29   and a lot of them are saying, oh, I haven't touched iPad

01:25:32   since I got my iPhone 6 or 6 Plus

01:25:34   or something similar to that.

01:25:36   The iPad is never gonna be always with you

01:25:39   unless you have really giant pockets year round

01:25:42   but that's unlikely for most people or a purse maybe.

01:25:45   Even then, I know a lot of people with purses,

01:25:47   none of them carry an iPad in all the time.

01:25:50   The iPad is always gonna be a secondary device.

01:25:53   It's never gonna be always in your pocket

01:25:54   the way a phone is.

01:25:56   The things an iPad is better at,

01:25:58   or the things that I enjoy more on the iPad,

01:26:01   all need the full-size screen.

01:26:04   They all need the 9.7 inch screen,

01:26:06   or at least they're better on it.

01:26:08   What I found, so what I found having,

01:26:11   when I finally got the mini that had a decent enough screen,

01:26:14   what I found is that the things I would do on an iPad,

01:26:18   I wasn't enjoying them as much.

01:26:19   They weren't as good,

01:26:20   they weren't as much better than on the phone

01:26:23   because they all benefited from having larger screens.

01:26:27   And so this smaller one,

01:26:29   even though it was the same resolution,

01:26:31   it just wasn't as good,

01:26:33   it wasn't as much better than the phone.

01:26:34   The difference between the iPad and the phone got smaller,

01:26:37   at least the enjoyment of it for me.

01:26:40   Again, this is all for me.

01:26:41   This is all very much an opinion, not a fact piece here.

01:26:44   So, please bear with me.

01:26:46   Anyway, so this year I was so wowed by the iPad Air 2

01:26:51   in so many ways, most notably the size and weight,

01:26:56   but also just the screen is really, really nice.

01:26:59   It's, you know, they did some new stuff

01:27:00   with how the pixels are glued on or whatever,

01:27:02   and it's really, really nice.

01:27:04   The anti-reflective coating is minor, but also nice.

01:27:06   The speed is insane because it has that triple core chip

01:27:09   and the two gigs of RAM, so it's like,

01:27:11   this was a major upgrade to the iPad line.

01:27:14   The Air and Air 2 are both major upgrades.

01:27:16   I just skipped the Air 1.

01:27:18   So I decided, you know what, let me try it.

01:27:20   And let me also unload the notion

01:27:24   that I need to get every iPad for testing.

01:27:26   'Cause here I am, I've already skipped two generations,

01:27:29   the 4 and the Air 1.

01:27:31   And as a developer of an iPad app, it didn't matter at all.

01:27:36   Even when I had Instapaper,

01:27:39   and even when I had the magazine,

01:27:40   both of those were much more heavily used on the iPad

01:27:43   than Overcast was.

01:27:45   I always thought, you know,

01:27:47   someone's gonna write it and say,

01:27:48   you know, this works really badly on my iPad 3.

01:27:51   You know, what's up?

01:27:53   Or this crashes on the iPad 3.

01:27:54   And I always thought, I better save all these iPads

01:27:57   and get every model because that way,

01:27:59   if somebody does this, then I'll be able to really,

01:28:02   you know, get in there and fix it.

01:28:04   In practice, that has literally never happened.

01:28:06   Not once.

01:28:07   has, in the entire time, developing Instapaper,

01:28:11   the magazine in Overcast,

01:28:13   which has been since the iPad launch,

01:28:14   I was there on day one with Instapaper,

01:28:16   so that entire time, throughout every iPad,

01:28:20   I have never had a single bug report or complaint

01:28:23   about something that was specific to any one iPad model.

01:28:26   So I think that's a bunch of crap.

01:28:29   I think that's something that developers tell themselves,

01:28:33   myself included, to either paranoia,

01:28:37   to keep existing iPads or justification

01:28:39   to buy all the new ones.

01:28:41   So that I can tell you if you're a developer,

01:28:42   if you've ever wondered about that,

01:28:44   it is probably unnecessary.

01:28:45   If you have a very high-end 3D game,

01:28:49   that might be different because the GPUs do vary a lot.

01:28:52   Other than high-end game developers,

01:28:55   I would say the differences are small enough

01:28:56   that you don't really need to care,

01:28:57   you don't really need to have them.

01:28:59   And worse comes to worse,

01:29:00   if you really need something you can find a friend

01:29:01   who has an iPad 3 or buy one on eBay for cheap.

01:29:05   Anyway, so I decided now I'm gonna sell every iPad I have

01:29:09   that's not this one and just keep the Air 2,

01:29:12   which I can make myself to buy.

01:29:13   Getting back to that, so anyway, sorry.

01:29:15   Sorry for the long, selfish rant.

01:29:17   First of all, before I move on, is that wrong?

01:29:21   Do you guys disagree?

01:29:22   I assume you do, 'cause you have things

01:29:24   that I've just said were crap.

01:29:25   - I have an iPhone 6 now, as does all three of us do.

01:29:31   And I still reach for my iPad mini regularly.

01:29:36   And I actually, so I had an iPad one, an iPad three,

01:29:41   and now the iPad mini with Retina display.

01:29:44   And the iPad mini, I think is my favorite iPad so far,

01:29:49   in no small part for two reasons.

01:29:51   One, because it is so much more portable,

01:29:53   which sounds so stupid if you're a big iPad owner.

01:29:58   Like when the first mini came out and everyone was like,

01:30:00   "Oh, it's so much better because it's so much smaller."

01:30:02   I was like, "Are you people crazy?"

01:30:03   No, it really is so much better

01:30:04   'cause it's so much smaller.

01:30:06   And also because this is the first iPad I've ever had

01:30:09   with cellular, which is awesome.

01:30:12   And between the two, that changes everything for me.

01:30:15   And I take it with me, out with me a lot,

01:30:20   where I define out with me as,

01:30:22   like I throw it in the glove box of the car

01:30:24   or something like that.

01:30:25   Or maybe I'm at a meeting

01:30:27   and I don't wanna bring my computer,

01:30:28   but I just bring my iPad.

01:30:29   So if I need to look up something in an email or something like that,

01:30:32   or even take brief notes, I can do that. I use my iPad mini constantly.

01:30:36   I love reading. Well, you still have reading Twitter on it,

01:30:38   but speaking of apps that are old, uh, tweetbot is a little on the old side. Um,

01:30:43   it's still for iOS six, isn't it? Yep.

01:30:45   And now you can't make fun of me for fast text. So ha ha. But, um, sorry, Paul,

01:30:50   I still, uh,

01:30:51   love my iPad mini and I use it constantly.

01:30:56   And I know John that's all. I mean,

01:30:58   obviously you have a big iPad, but almost everything else is you would echo is that correct?

01:31:02   Well, so now I have the iPhone 6 right and the iPhone 6 has

01:31:07   Is better competition for my iPad 3 than my iPod touch was?

01:31:12   but the vast vast majority of the time when I've got both devices next to me I

01:31:16   Pick the iPad 3. I you know, it's like it's gone from maybe you know

01:31:21   99% to 98% of the time

01:31:24   So the iPhone 6 and I really think it is the bigger screen the iPhone 6 on the bigger screen

01:31:29   the reason I reach for it is not because the CPU is like just vastly faster than than the

01:31:33   iPad 3 because that's not what I tend to run into

01:31:36   Because I'm mostly just reading things and browsing the web or even just playing games

01:31:42   I just don't notice any speed difference of the silly games that I play

01:31:44   But because the screen is bigger

01:31:47   But the reason the iPad 3 this giant everything you said about the iPad 3 is totally true

01:31:52   It's just a massive battery slapped onto a retina screen.

01:31:55   The reason I keep picking that is because basically

01:31:58   when it's not like, oh, I need the text to be bigger

01:32:01   or I need to read more stuff.

01:32:03   It's like when I'm using it to do anything,

01:32:06   it's closer to being like a desktop.

01:32:08   I know I won't get the mobile site.

01:32:10   I won't get the little tiny site.

01:32:11   Like mobile sites frustrating me to no end.

01:32:13   I can load full-size web apps in it.

01:32:16   I can see big, and this doesn't make sense

01:32:18   given like the massive hardware advantage of the iPhone 6.

01:32:23   But I feel like if I need to do something on the website,

01:32:26   it probably won't work on this handheld thing.

01:32:28   I'll need a bigger screen to be able to do it.

01:32:31   And that's obviously silly because it's like,

01:32:33   if it's something CPU intensive

01:32:34   or some stupid poorly implemented

01:32:36   JavaScript scrolling ad banner crap,

01:32:38   like it's gonna be way worse on the iPad

01:32:40   than it is on the iPhone 6.

01:32:42   But I still find myself going to the iPad

01:32:44   because I feel like I'm a desktop person.

01:32:46   Like I want the real full web here.

01:32:49   Like I want the real full article.

01:32:51   And you know, if I'm looking at comics obviously

01:32:53   or anything having to do with images

01:32:55   or you were just looking for iPad Instagram apps,

01:32:57   like I've always had an iPad Instagram app.

01:33:00   That's how I prefer to go through Instagram

01:33:02   even though the pictures are, you know,

01:33:03   supposedly not high-res enough to make a difference.

01:33:05   Like they're not.

01:33:06   I like to see the pictures and the comments underneath them.

01:33:09   It's just, I just want a bigger screen.

01:33:11   And so that's why my current bigger screen,

01:33:14   the iPad 3 with its terribly unbalanced hardware and the now aging battery and the heat and

01:33:21   the weight and everything like that still beats out the iPhone 6 when I want to sort

01:33:26   of have that experience of like when you would when I was still with it, I still get print

01:33:30   magazines sit down and just read a magazine sit down and just read the computer equivalent

01:33:34   of a magazine. I always go for the iPad.

01:33:37   So that's actually I'm glad to hear that and that's actually kind of what I'm finding.

01:33:42   So I decided, let me give the iPad one last try before I write it off as just a device

01:33:48   that's not right for me.

01:33:50   So I got myself the mid-range Air 2 config and I figured if I'm going to give this a

01:33:55   fair shot, I want to give it a really fair shot.

01:33:56   I want to have no complaints about the hardware at all.

01:34:01   So the iPad 3, big, heavy, whatever.

01:34:04   iPad mini, I just thought it was too small for the screen for my tastes and didn't like

01:34:08   the screen quality.

01:34:10   The Air 2 is great.

01:34:11   And what I found is that, you know,

01:34:13   I have many of the same frustrations

01:34:15   that you just mentioned about, you know,

01:34:16   things like being served the desktop

01:34:18   or the mobile website on a phone,

01:34:20   and I know you can get third party browsers to switch it.

01:34:23   We all know that, so please don't write in about that.

01:34:24   - Well, you can even, you can switch it in Safari now.

01:34:27   - Oh yeah, right, yeah, it does,

01:34:28   that you pull down and yeah, yeah.

01:34:30   So we, that's all fine.

01:34:31   The fact is, there is still a lot of web stuff

01:34:35   that's out there that people need to do on a regular basis

01:34:37   that is either impossible

01:34:40   by somebody's stupid web programming,

01:34:42   or at least it's very clunky or very difficult

01:34:44   to do on a phone.

01:34:45   The screen is just too small for a lot of things,

01:34:50   or at least, as you said, John,

01:34:51   at least it's better on a bigger screen.

01:34:54   I've also had a miserable time ever trying

01:34:57   to get anything done on an iPad.

01:34:58   Like getting work done, I know a lot of people do it,

01:35:01   that's fine, but the kind of work I do

01:35:04   and the way I like to work,

01:35:05   it just does not work well on an iPad.

01:35:07   The iPad is a terrible work machine for me.

01:35:10   I've also found that if I'm gonna be playing a game,

01:35:13   I much prefer to play the game on the iPad.

01:35:15   I will save games for the iPad.

01:35:17   Like our friends, Nevan and Matt Comey made The Incident,

01:35:22   The Incident, no that's the old one, what's the new one?

01:35:23   - Space Age. - Space Age, yes.

01:35:25   - Yeah, I can't even, I didn't even know

01:35:26   Space Age ran on the phone.

01:35:27   - I think it does, 'cause I think it installed

01:35:30   on both places and I just deleted it off the phone

01:35:31   as soon as it installed.

01:35:32   Because I'm like, I wanna play this on the iPad.

01:35:34   Like this is a game, like I want to fully enjoy this

01:35:37   properly, I want this on an iPad.

01:35:39   I find myself, if I'm gonna be doing games,

01:35:43   and like our family thing,

01:35:44   we do a lot of games over the holidays.

01:35:46   So one of the reasons I bought this right before Christmas,

01:35:49   'cause I figured I'd be using it a lot, which was true.

01:35:52   I just really enjoy playing games on a full-size iPad.

01:35:55   And the Mini I thought was substantially worse for games,

01:35:59   just because so many iPad games,

01:36:01   they designed the interface before the Mini was out,

01:36:03   they still assume the big screen.

01:36:04   And again, I think if you're playing a game on it,

01:36:07   no question, the full-size one is better.

01:36:09   I mean, unless it'll make the difference

01:36:12   between whether you bring it with you or not

01:36:13   on a trip or something.

01:36:14   But I don't think the size difference

01:36:17   between the two is a major enough difference

01:36:21   that so many people would not bring an iPad Air,

01:36:26   but would bring an iPad Mini.

01:36:28   It's still the same class of things that need a small bag

01:36:32   or a very large jacket pocket.

01:36:33   Anyway, so I set up the new iPad.

01:36:38   I did a clean install, I didn't import any of my old iPad stuff.

01:36:43   I downloaded all the games that I had downloaded to the iPad and a couple new ones.

01:36:48   I didn't install anything to get any work done.

01:36:52   And most importantly, I didn't install a Twitter client because Tweetbot on the iPad

01:36:58   is, as you mentioned, very old.

01:37:01   It has not been updated for a very long time and it is just really, you know, it was fine

01:37:07   for the time it came out, but that was a very long time ago, and it's pretty outdated now.

01:37:10   Well, and it's functionally broken in a couple of ways.

01:37:13   For example, the new-ish Twitter animated GIFs, that's just infinitely going.

01:37:18   It infinitely opens that tweet screen.

01:37:23   And so it's getting to the point that I'm struggling to use it, even though I freaking

01:37:28   love Tweetbot.

01:37:29   I use Tweetbot on all my devices, but it's hard to use it on the iPad now.

01:37:34   - Forget about Tweetbot and old,

01:37:35   because I have the same problem with it.

01:37:37   Twitterific sometimes when you click on a Twit pick

01:37:40   or a pick that Twitter or whatever link,

01:37:42   it just shows the same tweet over and over again

01:37:43   and you just keep chasing the link, right?

01:37:46   Twitter itself, the mobile website,

01:37:47   when I give up and say open in Safari,

01:37:49   that doesn't load for me like 50% of the time.

01:37:51   - Oh, easily 80 to 90% for me, it's ridiculous.

01:37:54   - I don't understand it.

01:37:55   Sometimes you just get a spinner forever,

01:37:57   somebody just, not it won't load an animated GIF,

01:37:59   but like, I don't even know if it's an animated GIF

01:38:01   'cause all it will show me is the Chrome,

01:38:03   you know, like, and then maybe a spinner

01:38:05   or maybe it's just gray, maybe the page is, anyway,

01:38:07   that's, I don't understand how these super famous,

01:38:12   highly used sites have like a 50% failure rate

01:38:14   of just viewing the content

01:38:15   when you're not using the official Twitter app,

01:38:17   which I bet works great.

01:38:18   - You're still mad about Vine.

01:38:19   - Yeah, that too.

01:38:20   (laughing)

01:38:21   - So I set up the new iPad Air with,

01:38:25   the primary things I'm doing on it are looking at email,

01:38:30   not even responding to email,

01:38:31   just looking at email 'cause it's good for that,

01:38:33   and it's good for me going through the overcast

01:38:35   support email 'cause I don't respond to most of it.

01:38:37   Games and browsing.

01:38:40   Browsing is an important category.

01:38:41   So browsing, I don't just mean a web browser,

01:38:44   although that's part of it.

01:38:45   I mean anything that involves browsing a feed

01:38:48   mostly for consumption.

01:38:49   Yes, I know it's a cliche, it's only for consumption.

01:38:52   For what I'm saying, this actually works very well for me.

01:38:55   So Amazon, for instance, works very well on the iPad.

01:38:59   So that's shopping, Instagram, any kind of news browser,

01:39:03   any kind of newsstand publication.

01:39:06   Like there's this objc.io, btiffc.io,

01:39:10   we'll put that in the show notes.

01:39:11   I like that a lot.

01:39:12   I read that on the iPad, even though you can read it

01:39:14   on the iPhone, but it's better on the iPad, I think.

01:39:16   Anything that involves browsing code in general

01:39:18   is better on the bigger screen,

01:39:20   'cause usually it wraps too much on the iPhone screen.

01:39:22   - Yeah, that's why I can't read like, you know,

01:39:24   Reddit or Hacker News or anything.

01:39:25   Any sort of, because you know you're gonna follow a link

01:39:27   that's gonna have code in it.

01:39:28   And as soon as there's code, it's like, well, forget it.

01:39:30   I just cannot read this on the phone

01:39:31   because it's truncated, you got a two-finger swipe

01:39:33   to try to scroll.

01:39:34   It's like, what am I even doing?

01:39:35   Because it's fixed width.

01:39:36   You can't just arbitrarily rewrap it.

01:39:40   - Right, exactly.

01:39:41   Also, any kind of web forums like Hacker News,

01:39:44   any kind of old PHP BB kind of forum,

01:39:46   so many of those don't have very good responsive

01:39:49   or any responsive layouts.

01:39:51   So many of those are still very hard to browse on a phone

01:39:54   without having to either do it in landscape

01:39:56   and only have two lines on screen at once

01:39:57   or had these really tiny little text columns

01:40:01   that you could get like squint to see the text

01:40:03   'cause it doesn't resize properly.

01:40:05   So many things like that.

01:40:06   Like browsing the web in general,

01:40:08   if I have the option to use both of these devices

01:40:11   to browse the web, I'll prefer the iPad

01:40:13   because everything we've been saying.

01:40:15   So now that I've restricted the iPad conceptually

01:40:19   to like not to serve the exact same roles as my phone.

01:40:22   If I wanna browse Twitter and do stuff like that,

01:40:24   the phone is a better device for that for me,

01:40:26   mostly for software, but the phone is a better device

01:40:29   for that.

01:40:30   But for browsing, lounging, and playing games,

01:40:35   the iPad is very pleasant and better in a number of key ways.

01:40:39   And so that's how I'm reframing the use of it.

01:40:42   I think, as I said, like, you know,

01:40:43   I got rid of my hardware complaints.

01:40:45   I now have zero complaints about the hardware.

01:40:46   The iPad Air 2 hardware is amazing.

01:40:48   So I have no complaints about the hardware.

01:40:50   I'm gonna sell every other iPad I have

01:40:52   because I hate them all.

01:40:53   (laughs)

01:40:54   And they made me hate the iPad, damn it.

01:40:56   So I'm gonna get rid of all those

01:40:58   and just keep this one for a while and see how it goes.

01:41:03   Chances are it's not gonna stick as much as I want it to.

01:41:06   Chances are I just bought it 'cause it was shiny

01:41:07   and new and light and thin

01:41:09   and you'll be making fun of me in six months

01:41:12   when I say I forgot about it.

01:41:13   But right now I think I found a way

01:41:16   to make this fit better in my life

01:41:18   by not making it just be a bigger version

01:41:21   of everything on my phone

01:41:22   'cause some of the things are gonna be worse.

01:41:25   but instead reframing it as like,

01:41:26   this is the device that I keep next to the bed,

01:41:29   browsing at night, having fun,

01:41:31   playing a game or reading the news.

01:41:33   Like that, that I think is gonna be

01:41:36   a lot better for the iPad.

01:41:37   - So you really have no hard work complaints,

01:41:39   not even the one I'm about to say,

01:41:41   can you guess what it is?

01:41:42   - Are you upset about the mute switch?

01:41:44   - I am, but that's minor in the grand scheme of things.

01:41:46   I am annoyed they took that away,

01:41:47   'cause that's like why you got all this

01:41:49   freaking room for switches and it's really useful.

01:41:51   And anyway, yeah, my wife's got an attitude as well.

01:41:54   My complaint is the same complaint I had about the mini.

01:41:57   Well, one of the complaints I had about the mini.

01:41:59   - The bezel width?

01:42:00   - Yes, yes, why?

01:42:02   It's so upsetting to me because that's not there.

01:42:07   I understand why they make the bezel width smaller and smaller

01:42:11   on things like monitors and stuff.

01:42:12   'Cause it's like, what's the point of it or whatever.

01:42:14   But there was an actual point to the border

01:42:16   around the previous iPads.

01:42:17   It wasn't just there because that's as small

01:42:19   as they could make it.

01:42:21   And they needed a buffer.

01:42:21   Like, no, it's there because that's where you hold it.

01:42:23   and the thumb rejection stuff just driving nuts.

01:42:26   And maybe it's just me,

01:42:27   maybe I just can't get over the idea of like,

01:42:29   just go ahead, just put your thumb around,

01:42:30   don't worry, you'll never accidentally activate a button,

01:42:33   the thumb rejection will totally handle this for you,

01:42:35   I just can't get over it.

01:42:37   And so I constantly feel like I'm holding it by like,

01:42:39   I'm actually trying not to touch the screen with my thumb,

01:42:42   and it just, it feels more precarious.

01:42:44   It's like, why, why do I just make it wider?

01:42:47   And by the way, if you make it ever so slightly wider,

01:42:50   it doesn't have to be as big as it was in the iPad 3,

01:42:51   but it needs to be a thumb width, right?

01:42:53   If you make it wider, you can also fit more battery.

01:42:55   Just saying.

01:42:56   (laughing)

01:42:58   - Do you use a case on it by any chance?

01:43:00   - No, no, never.

01:43:01   - Cover?

01:43:02   - Yes.

01:43:03   That's another thing that I like is that,

01:43:04   if you wanna keep going into iPad Air complaints,

01:43:06   the Smart Cover, the one with the metal hinge,

01:43:08   which I'm sure had some kind of problems or whatever,

01:43:10   way better in terms of going off axis

01:43:12   when you open and close it, you know, like not staying--

01:43:15   - Oh, you're talking about the iPad 3 one,

01:43:16   the original one, yeah, yeah.

01:43:18   - Yeah, the original Smart Cover, which I still have,

01:43:21   there's probably some kind of durability problem with it

01:43:23   and maybe it scratches up people's iPads.

01:43:25   Like I'm not sure what the issues are,

01:43:26   but the one thing it did do is when you open and close it,

01:43:29   the edge of the iPad matches up with the,

01:43:31   like it doesn't go off at a different angle.

01:43:33   Whereas the mini version where it's a cloth hinge,

01:43:37   the cloth hinge one is off axis all the time.

01:43:39   That is just, if you're anal retentive,

01:43:41   that really bothers you.

01:43:42   Like mute switch, the bad cover,

01:43:45   the number three folds instead of four,

01:43:48   like those are all minor things,

01:43:49   but all of them are trumped by the little skinny edge,

01:43:53   which I just feel like doesn't need,

01:43:54   especially since it's so light and so thin.

01:43:55   Like I don't feel like, oh, don't we really need

01:43:57   to make it an extra two centimeters narrower?

01:43:59   No, you don't.

01:44:00   Let me, give me someplace to put my thumb.

01:44:02   - So for whatever, I got the full wraparound case this time.

01:44:05   This is my first time having one of those

01:44:06   because like they made it so incredibly thin and light

01:44:09   that like the extra bulk of the wraparound case

01:44:11   is so minimal and it does make it easier to hold

01:44:13   in certain ways or certain situations.

01:44:16   I never, the smart covers always seem like a good idea

01:44:18   in theory, in practice I always found them kind of annoying

01:44:22   in various ways.

01:44:23   The case is in some ways slightly less annoying.

01:44:26   That's all I can say.

01:44:28   It's not perfect, you know, it still has the problem

01:44:29   of like, oh you have this thing that flaps around

01:44:31   in the back sometimes and doesn't hold on very well.

01:44:33   But it at least fixes any alignment issues you have

01:44:35   because the case is always perfectly aligned.

01:44:37   - Yeah, I might try that case.

01:44:39   - Yeah, again, it's not great,

01:44:40   but I think it's a little bit better.

01:44:42   - For the in-house kind of magazine like iPad like mine is,

01:44:46   the awesome thing about the Smart Cover is,

01:44:48   because I don't have a lock code on it

01:44:49   'cause the thing never leaves my house.

01:44:51   When you open the cover, it's activated.

01:44:53   You know, there's no--

01:44:54   - Oh yeah, well the case does that too, obviously.

01:44:56   - Yeah, I know, so that's the handy thing.

01:44:57   And I also, of course, I leave mine face up

01:45:00   with the cover on it so that I can stack things

01:45:02   on top of the cover without fear of scraping anything.

01:45:05   - Yeah, but then you're gonna scratch the back.

01:45:06   - Yeah, there's nothing underneath.

01:45:07   I mean, it's actually sitting on top of like a,

01:45:09   it's sitting on top of its own case.

01:45:10   I have a slip case for it that I use

01:45:12   when I take it to WWDC.

01:45:13   - Oh yeah.

01:45:14   - For all the, I mean, this has come with me

01:45:15   every single WWDC I've been to,

01:45:17   And except for one small dent in the corner, which was my fault,

01:45:20   and I think I've discussed before, it's not beaten up.

01:45:23   It's in pretty good condition.

01:45:24   It's survived.

01:45:25   I've found, in my experience, full-size iPads

01:45:28   are surprisingly durable.

01:45:29   Maybe the Air will change that because it's so thin.

01:45:32   We haven't had any iPad Air bend gates.

01:45:34   That's what we need.

01:45:34   Someone to make a YouTube video, take an iPad Air,

01:45:36   and they put it over their knee, and they just

01:45:38   lean on it really hard.

01:45:39   And then it bends, and they tailed it up and go, huh?

01:45:41   See?

01:45:41   Totally a problem.

01:45:44   Marco, is your iPad cellular or Wi-Fi?

01:45:48   - I got cellular because I still do,

01:45:51   so and I think this might be my last cellular one

01:45:54   because I do think like, I wasn't sure like

01:45:56   will I end up bringing it on trips again like I used to?

01:45:58   I don't know.

01:45:59   And so far I've been bringing it on the last couple trips

01:46:03   I've taken so the various holiday trips,

01:46:05   but I haven't actually used the cellular function yet.

01:46:07   And I think if I don't use it again

01:46:09   in the next like six months,

01:46:10   I'm just gonna stop buying them with cellular.

01:46:13   Honestly, I think it'll be a few years

01:46:14   before I buy another one,

01:46:15   but I did always use it for carrier diversity.

01:46:18   I would always have the Verizon iPad and the AT&T iPhone.

01:46:21   And that way, wherever I was,

01:46:23   I could tether with either one.

01:46:25   So if I went on a trip,

01:46:26   I would never have to use terrible hotel wifi.

01:46:28   I could always tether with one of them.

01:46:30   And usually Verizon was a better one to do that on.

01:46:32   Usually the places I was going, Verizon had better coverage.

01:46:35   In the last year or two, that has been less of the case.

01:46:40   Verizon's coverage has gotten worse for me

01:46:42   in many places I go, and more often than not now,

01:46:45   I use the AT&T tethering because it just is faster

01:46:48   where I am, and that, first of all, is concerning.

01:46:51   (laughs)

01:46:52   The world is turning upside down,

01:46:54   but so it might just prove that I don't need a Verizon

01:46:57   at all anymore and I could dump them finally,

01:46:59   but we'll see.

01:47:00   - All right.

01:47:01   - And I do recommend, if you're the kind of person

01:47:04   that's gonna carry around an iPad with you in the world,

01:47:06   like not just leave it in your house all the time,

01:47:09   definitely get cellular.

01:47:10   It is very much worth it because if you're using it

01:47:14   by itself most of the time, tethering is still

01:47:16   a little bit annoying.

01:47:17   That being said, the new iOS 8 tethering

01:47:20   with how it detects your phone through continuity

01:47:22   or whatever, that might make it a little bit better,

01:47:24   that might close the gap a little bit, I don't know.

01:47:26   But I do recommend still, I think, getting cellular

01:47:29   if you're gonna carry it around.

01:47:30   But if it's gonna be in your house the whole time,

01:47:31   I don't think it's that important.

01:47:33   - Yeah, I couldn't agree more 'cause this is, again,

01:47:35   my third iPad for cellular and I wasn't sure if the,

01:47:38   What is it like $130 was really worth it?

01:47:41   I did the exact same thing you did

01:47:44   in that I got a Verizon iPad and I have AT&T for my phone.

01:47:49   I then got the, I don't know if this is still a thing or not

01:47:52   but you could, right around the time the iPad mini

01:47:57   with Retina came out, you could give T-Mobile 10 bucks

01:48:00   and they'll give you a SIM and you could,

01:48:04   they will give you 200 megs of data every month for free

01:48:07   on the hope that if you already have their SIM card

01:48:09   in your iPad, when you need to pay for data,

01:48:11   well, A, you'll be in a place that T-Mobile actually works

01:48:14   and B, that you will pay T-Mobile for that data.

01:48:18   And I find that for the amount of time I'm running about

01:48:23   with my iPad, 200 megs of data is actually usually enough.

01:48:27   And then if I'm traveling, I can either use T-Mobile

01:48:30   if I'm in a major metropolitan area or Verizon if I'm not

01:48:34   and get online with that.

01:48:36   And I gotta tell you, being at the beach

01:48:39   and being able to screw around on Twitter,

01:48:41   if I so desire, with my iPad, that's pretty cool.

01:48:44   So I agree with you that if you think

01:48:46   you're gonna be leaving the house a lot,

01:48:47   definitely spend the extra money to get a cellular iPad.

01:48:51   I really do think it's worth it.

01:48:53   - And that T-Mobile thing is still there.

01:48:54   I looked when I was activating mine.

01:48:56   I ended up just transferring the Verizon,

01:48:57   'cause if you, the new ones had the Apple SIM,

01:48:59   but if you sent it to Verizon, it locks to Verizon,

01:49:02   which is stupid.

01:49:03   I'm sure that was Verizon being a pain or something.

01:49:05   Anyway, so I just transferred the SIM from the old iPad.

01:49:09   But the Apple SIM does still offer that option.

01:49:13   So you don't even have to go get 10 bucks

01:49:15   and give them to a T-Mobile store.

01:49:17   You can bypass that step.

01:49:18   You can just buy new iPad Air 2 with cellular today

01:49:21   and just select T-Mobile from the startup screen

01:49:24   on the cellular plan thing.

01:49:26   And it does offer that 200 megs for everything.

01:49:29   - That's awesome, I didn't know that.

01:49:31   - Anyway, thanks a lot to our three sponsors this week.

01:49:33   Harry's, Fracture, and Squarespace,

01:49:36   and we will see you next week.

01:49:38   (upbeat music)

01:49:40   ♪ Now the show is over ♪

01:49:43   ♪ They didn't even mean to begin ♪

01:49:45   ♪ 'Cause it was accidental ♪

01:49:47   ♪ Accidental ♪

01:49:48   ♪ Oh it was accidental ♪

01:49:50   ♪ Accidental ♪

01:49:51   ♪ John didn't do any research ♪

01:49:53   ♪ Marco and Casey wouldn't let him ♪

01:49:56   ♪ 'Cause it was accidental ♪

01:49:57   ♪ Accidental ♪

01:49:59   ♪ Oh it was accidental ♪

01:50:00   ♪ Accidental ♪

01:50:01   And you can find the show notes at ATP.fm

01:50:07   And if you're into Twitter, you can follow them

01:50:11   @C-A-S-E-Y-L-I-S-S

01:50:15   So that's Casey, Lis, M-A-R-C-O-A-R-M

01:50:20   N-T-M-A-R-C-O-R-M-N-S-I-R-A-C

01:50:25   U-S-A-C-R-A-C-U-S-A

01:50:27   It's accidental

01:50:30   ♪ They didn't mean to accidentally ♪

01:50:35   ♪ Tech podcast so long ♪

01:50:39   - You were saying something about,

01:50:42   it was hard to see code on a tiny screen and stuff like that.

01:50:44   - Yep.

01:50:45   - This phenomenon, I don't know if it's new for Twitter.

01:50:48   Maybe it's not just Twitter, maybe it's lots of things,

01:50:51   but I find very often when I am doing stuff

01:50:54   on my phone or iPod touch,

01:50:57   and somebody does that thing where they post a screenshot

01:51:00   and either it is a screenshot trying to show

01:51:02   some piece of software or something,

01:51:03   or more commonly I find it is that insane thing

01:51:07   that makes no sense to me,

01:51:09   except for maybe as a way to get around tweet limits,

01:51:11   which I actually think this is about Twitter,

01:51:12   where they post a picture of text.

01:51:15   - Oh, God, it's so bad.

01:51:17   - It's like a picture of a web page,

01:51:20   like they screenshot their web browser

01:51:22   and then put that in a thing.

01:51:24   Sometimes it's a picture of a tweet,

01:51:26   which really boggles my mind,

01:51:27   'cause there's a mechanism for retweeting.

01:51:30   (laughing)

01:51:31   I guess maybe in the non-technical person's

01:51:35   like view of the world,

01:51:36   a screenshot is somehow proof in the same way

01:51:38   that a photograph was proof,

01:51:40   which really just makes zero sense.

01:51:42   But anyway, my problem is,

01:51:44   all right, so people do this thing.

01:51:45   And sometimes it's just a legitimate screenshot,

01:51:47   like showing some application or whatever.

01:51:49   And whatever I'm using,

01:51:50   whether it's a Twitter website or a Twitter client,

01:51:52   or if it's a Vine thing,

01:51:53   or if it's an imager link,

01:51:54   or like I don't even know what software I'm using,

01:51:56   but very frequently I find myself tapping something,

01:51:59   seeing a picture and I can't freaking read it,

01:52:01   no matter how much I zoom because it's so massively low,

01:52:04   like the resolution is not sufficient to resolve letters.

01:52:07   Like the letters are just a jumble of, you know,

01:52:09   it's JPEG compression, you know,

01:52:12   like if it's like some big indented comment or whatever,

01:52:16   and it's like, I know this is not the original image

01:52:19   because nobody would have posted this image

01:52:20   'cause it's illegible, they're trying to make a point.

01:52:22   And like, sometimes it's just the picture,

01:52:23   like, oh, look at this, read this text and become outraged

01:52:26   or whatever the hell they're trying to say, right?

01:52:27   and it is 100% illegible.

01:52:29   And that means something between me and them

01:52:32   is causing a massively compressive version

01:52:34   of this image to come in.

01:52:35   And probably it's Twitter doing it,

01:52:38   like try to say, oh, we'll serve the mobile version.

01:52:41   What I'm getting is that so many things,

01:52:43   so many web services seem to have the idea

01:52:45   that all pictures are photos

01:52:47   and no pictures are screenshots or contained text.

01:52:50   And in my experience, it's the opposite.

01:52:52   Almost all pictures are not photos

01:52:54   and are like screenshots or text or something.

01:52:56   And I want to be able to read them.

01:52:58   And these services,

01:52:59   like this is another reason I want to be in my iPad,

01:53:01   because at least in the iPad,

01:53:02   I have a fighting chance that they won't try to serve me

01:53:04   the super duper compressed tiny scaled version of the image.

01:53:08   And I find that incredibly frustrating.

01:53:10   It's like, I'm not allowed on the quote unquote,

01:53:11   real internet.

01:53:12   I have to be,

01:53:13   it's like being in a WAP browser again.

01:53:14   Like I have to be in the toy version of this.

01:53:17   You can't handle the full quote unquote photo.

01:53:20   Here's this totally mangled version that is useless to you,

01:53:22   but you can't read a damn thing on it.

01:53:24   It drives me up a wall.

01:53:26   - Yeah, I can't get over, what is it?

01:53:29   Tweet shotting or something like that?

01:53:31   - When I said, "Sh*t pic" the other day,

01:53:32   was that, that's like a thing?

01:53:34   - I have no idea, but basically where,

01:53:36   like John was saying, where you take a screenshot

01:53:39   of something and maybe if you're really cool,

01:53:42   you'll like highlight the line

01:53:44   that you wanna call attention to.

01:53:48   Like that's annoying, but I can get over it

01:53:51   if you can include a link to whatever page

01:53:53   you're trying to link to, but my favorite,

01:53:57   and by favorite I mean the thing I fricking hate,

01:54:00   is when they take a screenshot of this thing

01:54:02   and they don't provide a fricking link.

01:54:04   Oh God, it's so annoying.

01:54:06   - People are posting examples.

01:54:08   Like, you know, this one from MG Siegler

01:54:11   is obviously a screenshot of like Mobile Safari

01:54:13   because you can see they've highlighted the paragraph

01:54:14   or whatever.

01:54:16   And sometimes it's not like, you know,

01:54:17   the content may be good.

01:54:18   Like what people are trying to do with this?

01:54:20   And there's strategies beyond like the using screenshots

01:54:23   A lot of it is like, I can't fit this in a tweet.

01:54:25   I can put a link to it in a tweet,

01:54:27   but I think if I put a link to it, you won't follow it.

01:54:28   And so many Twitter clients inline images

01:54:30   that if I put the actual image,

01:54:32   you can read texts that I couldn't otherwise include

01:54:35   in the tweet.

01:54:35   It's like people are just doing what works

01:54:37   'cause people will quote unquote engage

01:54:40   with your tweet more if they can see the paragraph of text

01:54:44   that you're, you know.

01:54:45   I don't even use a Twitter client that,

01:54:47   I mean, Twitter does inline images,

01:54:50   but I have that feature turned off.

01:54:51   And for the longest time,

01:54:52   didn't inline images and also my experience with Twitter is very different.

01:54:54   I would rather just follow the link, but sometimes it's nice to be able to know exactly where

01:54:57   it is.

01:54:58   This is another thing with in-page anchors that either people don't know how to use or

01:55:02   they don't exist or both.

01:55:03   And so the best way people can communicate, there's an article and this part about it

01:55:07   I want, basically what they're doing is a link list kind of blog post where they're

01:55:11   running a link blog, they want to link you to something and they want to quote the passages

01:55:14   that they found relevant and comment on them.

01:55:16   And the way they do it is tweet on top 140 characters or less plus the link to the image

01:55:22   and the image has the part highlighted that they're interested in.

01:55:25   So it's kind of a mutant inverted form of blogging where you can't disperse the two

01:55:30   things.

01:55:31   Anyway, bottom line, if you're writing your mobile application, don't assume all photos

01:55:34   are text.

01:55:35   If you're going to want to be clever and you want to save bandwidth, figure out if their

01:55:37   photos are text or not.

01:55:38   If they're text, make sure that you don't scale them down so brutally that it becomes

01:55:42   complete gibberish.

01:55:43   All right.

01:55:44   I'm tired.

01:55:45   What are these titles?

01:55:46   SSL is not pancetta? Who said that?

01:55:49   I think we discovered that Boar's Head makes pancetta.

01:55:53   I don't know if that's going to be any good because it's not really an Italian brand, I don't think.

01:55:58   Anyway, we bought some, we're going to try it.

01:56:01   Well, I agree that SSL is not pancetta.

01:56:04   This is true.

01:56:06   Full of landmines, pitfalls, and bottomless pits is pretty decent, although I might have said that. It was either me or Marco.

01:56:12   So I think it was UK's talking about no.

01:56:14   Yeah, I think so.

01:56:15   How about how about get rid of how about get rid of the full of and just go with landmines pitfalls and bottomless pits

01:56:19   I could do that. I like that and then but put the Oxford comment

01:56:23   So landmines comma fit pit falls comma and bottomless pits

01:56:26   It makes me so happy to hear that you also appreciate an Oxford comma and this is that unanimous?

01:56:31   Did I hear Marco say the same? Oh, absolutely

01:56:33   Appreciation everybody agrees that the only people who don't agree. No, no, it's crazy. It's great

01:56:38   It's not like a style choice

01:56:40   like well

01:56:40   you go on with the other it is a

01:56:41   clarity choice and everyone like I don't understand why there's any argument because soon as an argument someone pulls out one of the crazy examples

01:56:47   And go see and I guess those people are like, oh well

01:56:49   I guess you'd have to use it there or don't write that sentence or some crazy thing. It's no forget it

01:56:54   I've never heard a convincing argument against I could not agree with you more friend of the show Steven Hackett

01:56:59   Swears that the Oxford comma is evil and I am glad that we all agree that he's wrong

01:57:03   So what does he say on you know, when people bring up the examples of like this sentence?

01:57:07   Changes the meaning of the sentence and it's totally crazy

01:57:09   And if you don't let me put a comma there, I cannot express the meaning the intended meaning of the sentence

01:57:13   What does he say then? I have no idea we could probably call him

01:57:17   I have no idea

01:57:19   See like what what drives me nuts about about the the absence of the Oxford comma when it's absent

01:57:24   It's like when I read and I don't know if everyone reads this way

01:57:27   Maybe it's just I'm a programmer. I don't know when I read I get tripped up if I hit what seems to be a parse error

01:57:34   Yes, and and so I write with this in mind

01:57:37   So I try to avoid giving people this feeling and it's hard, you know to know what with your own stuff

01:57:42   And it's it's good when somebody points out like oh, I this sentence that you wrote didn't make any sense to me at first

01:57:48   Cuz I thought I meant this and you know, so it's good to you know

01:57:50   Pay attention to that and reword things when you need to but like for me

01:57:54   It's like like I read in a stream and I don't want to have to read the whole sentence

01:57:58   To understand the beginning of it unless you know, you know, you can like push the claws on your stack and everything

01:58:04   but you know for the most part it's like

01:58:07   as you're reading you don't want to be tripped up

01:58:09   by something like the end of a list not happening

01:58:13   the way you thought it would,

01:58:13   or parallel structure errors are a great example

01:58:16   of this, stuff like that.

01:58:17   And I think the absence of the Harvard/serial comma

01:58:22   increases the likelihood of people tripping up

01:58:24   as they're reading that list of items

01:58:26   and mis-parsing it for a second

01:58:28   and having to go back and be like,

01:58:29   oh, wait a minute, oh, that's what they meant by that.

01:58:32   - I really don't understand how people could think

01:58:34   that not having the Oxford comma is an option.

01:58:38   Because I agree with Jon.

01:58:39   Like it dramatically changes the meaning of the sentence,

01:58:42   but whatever.

01:58:43   I'm so, it makes me genuinely happy

01:58:47   that we all agree on this.

01:58:48   - The only thing we all agree on.

01:58:50   (laughing)

01:58:51   - Well, that and iPads aren't a complete waste of money.

01:58:54   - Yeah.

01:58:55   Well, ask me to get in six months.

01:58:56   - That's true.

01:58:57   You gotta figure out this note issue.

01:59:00   I know you're gonna give up on it and you probably should,

01:59:02   but it makes me sad.

01:59:04   If I loved everything else about Node,

01:59:05   I would try to figure this out more.

01:59:07   - It just doesn't seem like a type of, I mean, it's young.

01:59:10   It's like it hasn't been tested in this way,

01:59:12   in the way that a lot of these older things have,

01:59:15   especially if it seems like the type of thing where you,

01:59:18   okay, so you run into this problem

01:59:19   and you ask the question and the answer is not,

01:59:22   oh, of course, everyone runs into that problem,

01:59:23   here's how you fix it.

01:59:24   The answer is, oh, of course, everyone's into that problem

01:59:26   and you're right, it's a problem.

01:59:27   Like that's bad because the beginner

01:59:29   should not immediately find the thing

01:59:31   that causes people who know to say,

01:59:35   yeah, no, that totally doesn't work.

01:59:36   I mean, what should really happen is you should run

01:59:38   into all the problems and everyone should be like,

01:59:39   yeah, that's what everyone runs into, here's what you do,

01:59:41   and then you run into another one.

01:59:42   Like, it should be the progression of you learning

01:59:45   a language, it shouldn't be, you know, three days in,

01:59:48   you immediately hit a roadblock that is a legitimate

01:59:50   roadblock and there's not a commonly known workaround.

01:59:53   - Yeah, and it's like, and like what,

01:59:56   you can always tell the warning signs from the community

01:59:59   that this might be the wrong thing for you.

02:00:02   Like if the questions you answer,

02:00:04   like so the question is,

02:00:06   why is setTimeout leaking memory?

02:00:09   If all of the answers are don't use setTimeout,

02:00:13   and there's nothing else that does the same thing,

02:00:15   then it's like okay, that's a red flag right there.

02:00:18   That means that something's not right here.

02:00:21   Some part of this is a bad fit.

02:00:23   Like this is not what I'm looking for.

02:00:25   - Yeah, I remember trying to look for a sleep call

02:00:27   in JavaScript early on, I was like, well, you know,

02:00:31   every language has some way to just, you know,

02:00:32   I was just doing it to like induce a race condition

02:00:35   or whatever.

02:00:36   It's not like I wanted setTimeout.

02:00:36   I wanted like just you do nothing for a while, please.

02:00:39   'Cause I wanted to have a race with some of the stuff

02:00:41   that was going on.

02:00:42   And it's like, how can a language not have a sleep call?

02:00:45   This is like Unix addling my brain,

02:00:47   assuming every language has access to the Unix API.

02:00:49   But yeah, without setTimeout, without a way for you to say,

02:00:54   don't do this now, but in a little bit,

02:00:57   in a time that I'm gonna specify in milliseconds, do this.

02:01:00   And if you can't do that,

02:01:01   I was trying to think when you were asking that question,

02:01:03   well, if I don't use setTimeout, then what's my alternative?

02:01:06   Maybe Node has an alternative, 'cause Node, you know.

02:01:08   - No, that is, Node implemented setTimeout

02:01:11   and setInterval itself, in its engine, to work this way.

02:01:16   And that is, if you look at,

02:01:17   they call it the timers module,

02:01:19   if you look at the Node timers module, that's it.

02:01:22   Those are the functions that you have

02:01:24   to schedule something in the future.

02:01:25   - And it's not just like a thing where you have to be

02:01:28   careful about what you reference inside the closure

02:01:30   and stuff like this, there's like no work around.

02:01:32   Like oh everyone knows when you do setTimeout

02:01:34   you gotta be careful not to have,

02:01:35   not to close over these references

02:01:36   or to like explicitly do something, you know,

02:01:38   to make it happy so you don't leak memory, there's nothing.

02:01:41   - I haven't looked too far into it.

02:01:42   I even tried, I'm like, you know, maybe,

02:01:45   maybe it is doing something way too,

02:01:48   literally the call is like setTimeout,

02:01:50   pull URL, CTL, and then like ID, that's it.

02:01:54   and the ID is an integer.

02:01:55   And I even tried parse int on it

02:01:57   just to make sure it sends an integer

02:01:58   and doesn't try to retain something crazy.

02:02:00   And I even tried making it a string eval thing

02:02:04   to set time out, but unfortunately no doesn't support that.

02:02:07   So, 'cause I was like, maybe that would force it

02:02:10   not to retain anything intelligently

02:02:12   'cause it doesn't know what I'm calling.

02:02:13   Nope, didn't help, can't be done.

02:02:15   - Yeah, this and the memory limit,

02:02:17   which also seemed to turn out to be,

02:02:18   no, actually that's the limit,

02:02:20   and it's the limit and it's low,

02:02:22   and apparently people aren't bothered by,

02:02:25   like it's not, I don't know.

02:02:27   It's like Chrome and emoji support.

02:02:29   Some things just can't be explained.

02:02:32   - Although isn't that coming?

02:02:33   - I'm sure it's coming, I'm sure.

02:02:35   Anytime now.

02:02:36   - Overall, I think I would say,

02:02:39   if I had to predict, and granted,

02:02:41   most of my predictions are comically wrong,

02:02:43   but if I had to predict the future of these languages,

02:02:47   I would say Python and Ruby will outlive Node

02:02:52   in common usage.

02:02:54   - But no, it's not a language.

02:02:54   JavaScript is a language.

02:02:55   And JavaScript is a language sucks.

02:02:57   And the only reason anyone cares about it all

02:02:59   is 'cause it's every freaking where.

02:03:00   We all have to deal with it.

02:03:01   And like, so that's that for JavaScript.

02:03:03   And Node is like, well, wouldn't it be great

02:03:05   if you could use the same thing

02:03:07   on the server-

02:03:16   node.js is not the one.

02:03:18   Or maybe it needs more time to bake or whatever.

02:03:20   But there's nothing about Node that says

02:03:22   Like, oh, maybe Node never works out,

02:03:23   but then someone else comes out with the server side.

02:03:25   There have been other server-side JavaScript engines.

02:03:27   There will be other ones in the future.

02:03:29   Until we can, unless we can get JavaScript

02:03:31   off of the browser, there will always be

02:03:35   a place for JavaScript on the server.

02:03:37   And whether, who implements it and who does a good job,

02:03:40   and if there are bugs and if it gets used

02:03:41   in large scale applications,

02:03:42   I think that will change over the years.

02:03:44   But until we can get rid of JavaScript

02:03:46   on the browser side, we're probably stuck

02:03:48   with some kind of JavaScript on the server side.

02:03:51   You know, I should point out that the current version of Node is 0.10.35, which, I mean,

02:03:59   obviously everyone's version numbers mean something different than everyone else's,

02:04:03   but we are far from...

02:04:04   Well, it looks to me like we are far from 1.0.

02:04:08   Although this is something that should be solved already.

02:04:10   Yeah, I mean, there's nothing technically about Node that says that it couldn't be made

02:04:13   to be better.

02:04:14   Like it's just young yet, and people obviously haven't stressed it to do the type of stuff

02:04:19   the market was doing or haven't found that that's where the limit is, it needs time to

02:04:24   mature and become battle tested.

02:04:26   >> Right, I mean, maybe I'm using the wrong tool for the job here, but it really seemed

02:04:30   like it was a good tool for this job.

02:04:32   >> Yeah, it really bums me out because I really wanted you to like it.

02:04:35   I don't even know why.

02:04:36   Like, it doesn't matter, but it just seemed like this is the sort of thing I would use

02:04:41   Node for, to your point.

02:04:43   And it seems like it's a lost cause.

02:04:47   - And it would work fine if you had 10,000 URLs to query,

02:04:50   but once you're up into 250,000,

02:04:53   then that's getting creaky.

02:04:54   - And it would work fine if I was willing

02:04:56   to restart the process every six hours

02:04:58   with only 10,000 URLs to crawl.

02:04:59   Like, it's a memory leak, like it leaks forever.

02:05:03   Like, it eventually gets too big, and yeah.

02:05:06   And when I'm crawling the full,

02:05:08   and I'm not even crawling all 250,000,

02:05:11   like I did, like my last test was I was just crawling

02:05:14   an eighth of them, so whatever that is,

02:05:15   like 40 or whatever that is.

02:05:17   And even doing that, it would pass a gig

02:05:21   within like 20 minutes.

02:05:22   It was really bad.

02:05:24   Like it's doing something.

02:05:25   And I tried, there's a heap dump thing.

02:05:28   So I tried taking heap dump profiles

02:05:29   and loading them into Chrome's developer thing

02:05:31   and looking at all the stacks.

02:05:33   - I saw them, it was like iTunes, everything was other.

02:05:35   - Yeah, exactly.

02:05:36   Well, and for the few objects it is tracking,

02:05:39   you could see some of them had really, really deep,

02:05:41   recursive set timeout calls.

02:05:43   So you can tell that's where the problem is.

02:05:45   The problem is setTimeout is retaining things recursively,

02:05:49   even though I'm not calling functions recursively,

02:05:51   but the function at the end of itself calls setTimeout

02:05:55   on itself for some point in the future.

02:05:58   And I even tried not doing that

02:06:00   and doing a worse solution using setInterval instead.

02:06:03   And I tried clearing the intervals, of course,

02:06:05   I tried all of that.

02:06:07   I could not get it to work.

02:06:08   I worked on this most of the afternoon today,

02:06:10   and I could not get it to not leak all over the place.

02:06:13   And it just, again, it just is not,

02:06:16   it is not a good enough fit in every other way

02:06:19   to what I want in a new language

02:06:21   to make it worth fighting on this point.

02:06:23   So, I mean, but Casey, I mean, you're getting what you want,

02:06:27   which is you're getting me to try a new language.

02:06:28   And now, because Node is not working out,

02:06:31   I'm trying even more new languages.

02:06:32   So really, this is awesome.

02:06:34   - Well, yes and no.

02:06:37   I think you're predisposed to hate

02:06:38   almost everything you're trying,

02:06:40   But to your credit, you are trying,

02:06:43   and that is making me happy.

02:06:45   - I wouldn't say I'm predisposed,

02:06:47   once I actually, I'm predisposed to hate things

02:06:49   I haven't tried before,

02:06:50   'cause I don't wanna have to try them.

02:06:52   Once I actually try a new language,

02:06:54   like now I feel like I've spent two weeks

02:06:58   or however long it's been getting pretty decent

02:07:01   at this one really complicated task in Node,

02:07:04   and now I feel like I'm throwing away all this knowledge.

02:07:06   I mean, granted, at least it was quick,

02:07:07   you know, at least I already knew the JavaScript syntax

02:07:09   and everything, like, you know,

02:07:11   Go is gonna take a little bit longer to learn

02:07:12   just because it's so much more different than what I know.

02:07:15   So I'm gonna be more upset if Go doesn't work out.

02:07:19   But once I try something, I want it to work

02:07:22   because I don't wanna learn something else.

02:07:24   That's just like, it's like natural human defensiveness.

02:07:26   Like you want, when something is new and unfamiliar,

02:07:29   most people's default reaction is to try to reject

02:07:33   its relevance to them so that they can continue

02:07:37   the way they've been doing things or the way they,

02:07:39   you know, the way they think things are,

02:07:42   your instinct is to reject new ideas

02:07:44   or dismiss them as soon as you can.

02:07:46   - There's a political joke here, but I'm gonna let it go.