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: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: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: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: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: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: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:57
◼
►
Harry's was started by two guys who wanted a better product without paying an arm and
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: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: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: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: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: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
◼
►
- 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: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: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: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:58
◼
►
And plus, I don't know Apple's history with like MetroWorks and CodeWarrior and stuff
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: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: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: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: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
◼
►
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
◼
►
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
◼
►
- 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
◼
►
- 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: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: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: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: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: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: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: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: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: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: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:58
◼
►
- Do you use a case on it by any chance?
01:43:00
◼
►
- No, no, never.
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: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
◼
►
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: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: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: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: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:31
◼
►
Anyway, bottom line, if you're writing your mobile application, don't assume all photos
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: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
◼
►
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:51
◼
►
- Well, that and iPads aren't a complete waste of money.
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.