168: Coffee Stops Working
00:00:00
◼
►
Talk about TiVo next week.
00:00:03
◼
►
We're never talking about TiVo.
00:00:05
◼
►
So we're in the midst of talking about what to do about Shirts for this year.
00:00:10
◼
►
We've been talking about it, the three of us, for a couple of weeks now.
00:00:14
◼
►
And I really like it.
00:00:16
◼
►
Yeah, I really like it.
00:00:17
◼
►
And we haven't really come up with any brilliant ideas in terms of design.
00:00:21
◼
►
We don't want to just kind of phone it in and do a regurgitation of a prior design.
00:00:27
◼
►
design, but if there are listeners that would like shirts, we want to fulfill that need,
00:00:34
◼
►
so we're in the midst of a debate over what to do. And we were currently leaning towards,
00:00:39
◼
►
I think, not doing shirts this year, in part because Teespring isn't going to have them
00:00:44
◼
►
done and delivered before WWDC, which is typically when we try to get this thing done by. So
00:00:50
◼
►
we're not sure what to do.
00:00:51
◼
►
- Yeah, so because basically, and you know,
00:00:54
◼
►
WBC is a nice target date because a lot of fans are there,
00:00:58
◼
►
and people like buying shirts and showing off
00:01:02
◼
►
their geek shirts there, but the reality is
00:01:04
◼
►
the vast majority of purchasers of this shirt
00:01:07
◼
►
probably aren't going to WBC.
00:01:09
◼
►
We're talking like, you know, do people have
00:01:11
◼
►
t-shirt fatigue, are people tired of t-shirts,
00:01:13
◼
►
people have too many t-shirts, is there anything else
00:01:16
◼
►
we could sell, maybe a hoodie, maybe like mugs
00:01:18
◼
►
or other stuff that's not shirts.
00:01:20
◼
►
- Polo shirts.
00:01:21
◼
►
And my position is very strong that I think we should have
00:01:24
◼
►
an original design every time we do these things.
00:01:28
◼
►
I learned forever ago from Howard Stern, actually,
00:01:35
◼
►
who I learned a lot from, he had a thing,
00:01:37
◼
►
he was kind of criticizing somebody else,
00:01:40
◼
►
I think it might have been Rush Limbaugh,
00:01:41
◼
►
some other talk show host,
00:01:44
◼
►
for constantly nickel-and-diming the audience
00:01:46
◼
►
for just selling them all sorts of garbage
00:01:49
◼
►
with his name on it or something like that.
00:01:51
◼
►
And Howard said his position is always
00:01:54
◼
►
to basically ask the audience for money
00:01:56
◼
►
as infrequently as possible, to not sell.
00:01:58
◼
►
This is why you can't get Howard Stern's face
00:02:00
◼
►
on a bumper sticker.
00:02:02
◼
►
There's pretty much no official merchandise for the show.
00:02:06
◼
►
Very little, if any, I don't think I've ever even seen any.
00:02:09
◼
►
And he said when he moved to Sirius,
00:02:10
◼
►
that was a big ask, that was like,
00:02:12
◼
►
all right, I'm moving from free radio to a paid service.
00:02:15
◼
►
He's like, I'm gonna ask the audience now
00:02:17
◼
►
for the pretty big ask, come to me to this paid service. And he said he was already asking
00:02:22
◼
►
them for that then, he really didn't want to ask them for more money like in anything
00:02:26
◼
►
else. He really wanted to kind of like conserve the times he asked the audience for money,
00:02:30
◼
►
you know, as respect for the audience and so that when he does ask, it matters. And
00:02:35
◼
►
so I've kind of internalized that in a lot of stuff I do. And that's why I feel like
00:02:40
◼
►
with this show, I feel like for us to ask the listeners, "Hey, go buy this thing,"
00:02:44
◼
►
I want to make sure it's good,
00:02:46
◼
►
and I don't want to ask that question too often.
00:02:49
◼
►
And so that's why, for me, it's not enough to just say,
00:02:52
◼
►
let's just do the original shirt with the logo on it
00:02:56
◼
►
with Swift on the back, for instance,
00:02:57
◼
►
which is one of the ideas we had.
00:02:58
◼
►
Which would be fine, you know,
00:03:00
◼
►
'cause the original version had just C code in the back,
00:03:02
◼
►
we could put Swift in the back,
00:03:03
◼
►
and it would feel like phoning it in,
00:03:06
◼
►
and we don't want to do that to you, to the audience,
00:03:08
◼
►
because if we're gonna ask you to buy something,
00:03:10
◼
►
we want to make sure it's good,
00:03:12
◼
►
and that we are putting a lot of effort
00:03:14
◼
►
into our site as well.
00:03:16
◼
►
- Yeah, so in summary, we're not sure what to do
00:03:18
◼
►
and when we don't know what to do,
00:03:21
◼
►
we'll probably just punt and wait
00:03:22
◼
►
until somebody has a clever idea.
00:03:24
◼
►
- I do love that Lava, like in the chat,
00:03:26
◼
►
suggested making an ATP watch strap.
00:03:29
◼
►
- I do think that is brilliant.
00:03:30
◼
►
- That is fantastic.
00:03:31
◼
►
- For the Apple watches that the two of us aren't wearing.
00:03:34
◼
►
- Well, it could come in multiple versions.
00:03:36
◼
►
Mine could have a spring bar,
00:03:37
◼
►
so you could put on any watch,
00:03:38
◼
►
and John's could just be something
00:03:40
◼
►
that you hang on the wall or something.
00:03:42
◼
►
or it can come with the arm hair already torn out of your arm
00:03:45
◼
►
and attached to the strap.
00:03:46
◼
►
- Well, Jon, we could get custom DynaFlexes printed.
00:03:49
◼
►
- I don't know what that is.
00:03:50
◼
►
- I have no idea what that is.
00:03:52
◼
►
What are you talking about?
00:03:52
◼
►
- It's, they're the RSI, the little gyroscope spinny ball
00:03:55
◼
►
things that people use for RSI.
00:03:58
◼
►
They're actually really good.
00:03:59
◼
►
I did it for a while.
00:04:00
◼
►
You guys are useless.
00:04:03
◼
►
- All right, speaking of useless information,
00:04:05
◼
►
I have a very short story that I'd like to share.
00:04:07
◼
►
I apparently have a, what's the term for this?
00:04:11
◼
►
Somebody that has my exact same name but isn't me.
00:04:13
◼
►
- Doppelganger? - It's like a twin
00:04:14
◼
►
or doppelganger, but yeah, but he doesn't look like me.
00:04:17
◼
►
When I was trying to get myself onto the right timetable
00:04:21
◼
►
when I was in California on vacation,
00:04:23
◼
►
as everyone always is when they're in California,
00:04:26
◼
►
I probably was doing a vanity search or God knows what,
00:04:28
◼
►
and I somehow came up with the link I just put in the chat
00:04:32
◼
►
that says Casey Liss, a senior computer engineering major
00:04:35
◼
►
at the University of New Hampshire,
00:04:37
◼
►
presented his research on quote, "IoT security,
00:04:40
◼
►
ASIC implementation of the hash function Blake.
00:04:43
◼
►
And I was completely stupefied by this because I've seen plenty of cases and I've even seen
00:04:47
◼
►
a handful of lists, but to see the combination of casey lists was startling.
00:04:52
◼
►
And then furthermore, I found another page, this is how bored and desperate I was during
00:04:58
◼
►
my bout of insomnia.
00:04:59
◼
►
I found another page that had some mention of a guy, CoreyLis, C-O-R-E-Y, who supposedly
00:05:09
◼
►
looks like Justin Timberlake even though he really doesn't, who has a twin, Casey
00:05:12
◼
►
Liss. And this is doubly interesting because my dad's name is Corey. It's spelled differently,
00:05:17
◼
►
but yeah, very weird. And this totally weirded me out and I wanted to share with the group
00:05:22
◼
►
and we can cut this from the show.
00:05:23
◼
►
You know what would be amazing? I'm not going to cut this from the show because I think
00:05:26
◼
►
it would be amazing if it became like a thing that people did that whenever they wanted
00:05:32
◼
►
to give like a fake name to a newspaper reporter or something, instead of going for some like
00:05:36
◼
►
name that sounds like, you know, like some genital reference when it's said aloud that,
00:05:41
◼
►
you know, people have done before. Just start giving the name Casey Liss.
00:05:45
◼
►
And then wouldn't it be amazing to just have like all like Casey Liss's like just showing
00:05:50
◼
►
up everywhere?
00:05:51
◼
►
No, that'll ruin all my vanity searches, man. Come on.
00:05:53
◼
►
That's the best reason to do it.
00:05:56
◼
►
Yeah, yeah. So yeah, so that really weirded me out when I was in California. It was probably
00:06:01
◼
►
like three in the morning or something like this. And I found that I have a quasi doppelganger.
00:06:06
◼
►
I think there's a term for this. I don't think it's doppelganger because this is a doppelganger somebody that looks like you
00:06:10
◼
►
But isn't you yes, where's the oom lot? It's over the a I gotta get this right lest we have all the pedants
00:06:18
◼
►
That was for you. Yeah. We're all just one serial killer away from having our vanity searches ruined anyway
00:06:24
◼
►
Or pop star you're going through life and your name is Michael Bolton as in office space and you feel like you're fine
00:06:35
◼
►
It was a good name.
00:06:37
◼
►
Until that no talent ass clown ruined it. Oh god, did we did we get a reference trifecta?
00:06:43
◼
►
Yeah, I'm coming down to your level. It's one of the five movies I've seen.
00:06:48
◼
►
Goodness, all right, so we should
00:06:53
◼
►
probably do a little bit of follow-up.
00:06:56
◼
►
WWDC charge failures. We had a lot of discussion in the past episode about what would happen if you win the lottery
00:07:05
◼
►
and you have won the right to give Apple $1600 of your money, and then they attempt to charge
00:07:11
◼
►
your credit card and the credit card company says, "Yeah, screw you."
00:07:14
◼
►
Listener David Back wrote in and said, "I got an email on Saturday that they failed
00:07:17
◼
►
to charge my card for WWDC.
00:07:19
◼
►
I updated my info and they successfully charged it today.
00:07:21
◼
►
I even got a phone call from an Apple dev relations representative to make sure everything
00:07:25
◼
►
worked out."
00:07:26
◼
►
Additionally, Andrew wrote in, "My credit card got declined, not for billing info.
00:07:31
◼
►
Apple gave me three days to get it fixed."
00:07:34
◼
►
Yeah, so that's great. It sounds like they have taken this really bad, like, just kind
00:07:39
◼
►
of like, you know, really hurts to happen to you flaw from previous lottery systems
00:07:44
◼
►
from the last couple years, and they have fixed it. So that's great.
00:07:48
◼
►
Let's talk about Volvo's level 4 self-driving car.
00:07:51
◼
►
Yeah, this is the beginning of the, beginning middle of the autonomous driving trash-talking
00:07:58
◼
►
among car vendors. So Tesla gets a lot of the press for the self-driving cars, and Marco
00:08:03
◼
►
was talking about in the last show, how people were asking, "Oh, is this the one that drives
00:08:06
◼
►
itself and everything?"
00:08:07
◼
►
And so of course every car maker has some variant on this type of technology, either
00:08:11
◼
►
out now or coming out soon, and Volvo is hyping its self-driving stuff mostly on a safety
00:08:18
◼
►
basis, and they are trashing Tesla, saying that they have, you know, level 4, we talked
00:08:24
◼
►
about that on the past show, the SAE levels of autonomous cars going from 0 to 5, 5 being
00:08:29
◼
►
full automation, and Volvo's thing is supposedly level 4, so it's not only able to drive, it's
00:08:33
◼
►
itself down the road but it is capable of handling any situation they come across without human
00:08:37
◼
►
intervention. Something goes wrong the car can even safely stop itself at the side of the road and
00:08:41
◼
►
their senior technical leader of crash avoidance at Volvo says if you don't take over meaning like
00:08:48
◼
►
if you don't take over driving if you're falling asleep or you're watching a film then we will take
00:08:52
◼
►
responsibility we won't just turn autonomous mode off so that's you know tesla will do the
00:08:58
◼
►
marker controls what does it do like beeps at you or something and then eventually turns autonomous
00:09:02
◼
►
on its mode off, what does it do if you don't take the wheel?
00:09:04
◼
►
- It beeps like a quick error code, the beep, beep, beep,
00:09:06
◼
►
and then it's like the same code if it fails,
00:09:08
◼
►
so you're kind of used to hearing it in bad situations.
00:09:11
◼
►
And then it just, you know, I haven't actually let it go
00:09:14
◼
►
to see like what happens if I don't intervene.
00:09:16
◼
►
I probably won't ever try that,
00:09:18
◼
►
but I would imagine it just coasts.
00:09:20
◼
►
I don't think it like slows down
00:09:22
◼
►
or tries to pull over or anything, but I could be wrong.
00:09:24
◼
►
- Yeah, so anyway, that's what Volvus was saying there.
00:09:26
◼
►
They're claiming to have a level four system,
00:09:28
◼
►
which is called high automation,
00:09:29
◼
►
and this little diagram from the SAE folks,
00:09:32
◼
►
one below full automation, and they claim that,
00:09:34
◼
►
you know, don't worry about it, we will handle everything.
00:09:37
◼
►
We won't just handle like, oh, we'll do the driving
00:09:40
◼
►
when it's easy, but if we get confused,
00:09:41
◼
►
it's your turn to take over this,
00:09:42
◼
►
and even if you fall asleep, we'll handle it now.
00:09:45
◼
►
Does handling it mean, oh, if you fall asleep,
00:09:47
◼
►
we'll pull over to the side of the road?
00:09:48
◼
►
Because that can be extremely dangerous,
00:09:50
◼
►
depending on which road you're on.
00:09:52
◼
►
But anyway, the search for true artificial intelligence
00:09:57
◼
►
to drive your car continues.
00:09:58
◼
►
- And also, there's so many other things about this,
00:10:01
◼
►
about unintended automated driving,
00:10:04
◼
►
that are just really hard.
00:10:05
◼
►
As I'm driving around now town with this partially
00:10:10
◼
►
rudimentary, rudimentary, what's the word there?
00:10:14
◼
►
- Rudimentary.
00:10:15
◼
►
- But in an adjective form.
00:10:17
◼
►
- Oh, you got me.
00:10:18
◼
►
- Rudimentarily. (laughs)
00:10:21
◼
►
Anyway, whatever that word is, if it exists,
00:10:23
◼
►
as I'm driving around with a car
00:10:25
◼
►
with that level of automation,
00:10:27
◼
►
I see so many situations where like, wow,
00:10:31
◼
►
a self-driving car would have a really hard time
00:10:32
◼
►
with this thing I just did or this road that I'm on
00:10:35
◼
►
or this condition that I just passed.
00:10:36
◼
►
And even simple things like those systems
00:10:38
◼
►
that are automated for the highway, great.
00:10:40
◼
►
But what about highways that have traffic lights on them?
00:10:43
◼
►
Then if it's going to be that level of automation
00:10:47
◼
►
where it supposedly handles you stopping paying attention,
00:10:52
◼
►
it has to also do things like stop at traffic lights
00:10:55
◼
►
or follow a traffic cop's directions
00:10:58
◼
►
through construction zones or something.
00:11:00
◼
►
There's so many things like that
00:11:02
◼
►
where it's just a really hard problem.
00:11:05
◼
►
Things that are even often hard for humans
00:11:07
◼
►
to figure out what to do or where to put their car.
00:11:10
◼
►
And so it just shows once you start thinking about it
00:11:13
◼
►
and seeing in real life and seeing
00:11:15
◼
►
how limited these systems are today,
00:11:17
◼
►
I think it just goes to show quite how complex
00:11:20
◼
►
of a problem this is.
00:11:21
◼
►
Not that it's unsolvable necessarily,
00:11:23
◼
►
but that as we said last time,
00:11:25
◼
►
it just may not be as imminent
00:11:27
◼
►
as a lot of people are predicting.
00:11:29
◼
►
- A few people have written in to say,
00:11:31
◼
►
you know, you guys, you really are supposed
00:11:34
◼
►
to eject volumes on Windows as well as on OS X.
00:11:39
◼
►
I can tell you that I used Windows for a long, long, long time
00:11:42
◼
►
and all I ever did was pay attention to,
00:11:45
◼
►
and this was almost always with the USB key,
00:11:47
◼
►
pay attention to when the USB key
00:11:49
◼
►
stopped flashing its little LED
00:11:51
◼
►
and then I ripped it out, never thought twice.
00:11:53
◼
►
And I think I might have, may have had data loss like once.
00:11:57
◼
►
- Who knows how many files you corrupted?
00:11:59
◼
►
You have data loss that you noticed once.
00:12:01
◼
►
- Fair enough.
00:12:02
◼
►
- I didn't know that you were exposed to unmounted.
00:12:03
◼
►
I thought that was the actual Windows way.
00:12:05
◼
►
It was a way for the blinking light to stop.
00:12:07
◼
►
It must've been at some point, like in the DOS days, I guess
00:12:09
◼
►
'cause there's no unmounting your floppy disk in DOS.
00:12:11
◼
►
You just wait for the drive light to stop blinking
00:12:13
◼
►
and then you turn the little thing
00:12:15
◼
►
and yank out your five and a quarter.
00:12:17
◼
►
But anyway, if you're supposed to do it
00:12:21
◼
►
in monitor Windows too,
00:12:21
◼
►
I have also not seen people do that.
00:12:24
◼
►
They just wait for the blinking light to stop
00:12:26
◼
►
and yank it out, and that is crazy in a world of Bovard IO.
00:12:32
◼
►
- Fair enough.
00:12:33
◼
►
All right, well, any other follow-up?
00:12:36
◼
►
- Unless we wanna talk more about the bumper sounds.
00:12:38
◼
►
I mean, we should talk about that at some point.
00:12:40
◼
►
I don't know if it's follow-up anymore, though.
00:12:41
◼
►
- Oh, we have more to talk about?
00:12:43
◼
►
We're leaving the XP sounds 'cause they're perfect.
00:12:44
◼
►
All right, moving on.
00:12:45
◼
►
- We're sponsored tonight by Casper.
00:12:48
◼
►
Go to casper.com/ATP and use code ATP for $50 towards your Casper mattress.
00:12:54
◼
►
Casper is an obsessively engineered mattress at a shockingly fair price.
00:12:58
◼
►
They created this perfect mattress sold directly to consumers, eliminating commission-driven
00:13:02
◼
►
inflated prices.
00:13:03
◼
►
This award-winning mattress was developed in-house by Casper, has a sleek design, and
00:13:07
◼
►
is delivered in a remarkably small box you can get it up narrow stairs.
00:13:11
◼
►
And now, in addition to the mattress, Casper also offers an adaptive pillow and soft, breathable
00:13:17
◼
►
The mattress industry has forced consumers into paying notoriously high markups.
00:13:21
◼
►
Casper has revolutionized the industry by cutting the cost of dealing with resellers
00:13:24
◼
►
and showrooms and passing that savings directly to the consumers.
00:13:27
◼
►
Now an in-house team of engineers spent thousands of hours developing this Casper mattress.
00:13:31
◼
►
It combines springy latex and supportive memory foams for a sleep surface with just the right
00:13:36
◼
►
sink and just the right bounce.
00:13:38
◼
►
Plus the breathable design sleeps cool to help you regulate your temperature throughout
00:13:43
◼
►
This mattress comes in at a shockingly fair price.
00:13:46
◼
►
Earlier mattresses often cost well over $1500, but a Casper mattress costs just $500 for
00:13:51
◼
►
a twin, $750 for full, $850 for queen, and $950 for a king.
00:13:56
◼
►
And these are made in America.
00:13:58
◼
►
Casper also made buying mattresses online easy and completely risk free, with free delivery
00:14:03
◼
►
and free returns within a 100 night home trial.
00:14:07
◼
►
If you don't love it, they'll pick it up at your house and give you a full refund within
00:14:10
◼
►
a 100 nights.
00:14:12
◼
►
Casper understands the importance of truly sleeping on a mattress before you commit,
00:14:16
◼
►
especially considering you're going to spend a third of your life on it.
00:14:19
◼
►
Now we've heard from friends and listeners who all have great things to say about the
00:14:22
◼
►
Casper mattress, and Time Magazine named it one of the best inventions of 2015.
00:14:26
◼
►
It is now the most awarded mattress of the decade.
00:14:29
◼
►
So get yours today and try it for 100 nights in your own home with free delivery and free
00:14:34
◼
►
returns with home pickup, completely risk-free.
00:14:38
◼
►
go to casper.com/ATP and use code ATP for $50 towards your mattress. Thanks to Casper
00:14:45
◼
►
for sponsoring our show.
00:14:47
◼
►
So you released a new version of Overcast which has a much improved sync system or maybe?
00:14:55
◼
►
How was your day a few days ago?
00:14:57
◼
►
Well, I released two versions of Overcast in the last few days if that tells you roughly
00:15:01
◼
►
how good the first one was.
00:15:04
◼
►
fun. Yeah. I released a new version of Overcast that had noticeable improvements to syncing,
00:15:12
◼
►
and in particular the speed of syncing between multiple devices. And I kind of code named
00:15:17
◼
►
this Quicksync, even though I know lots of other things like Intel's thing. Like there's
00:15:21
◼
►
so many things in the tech industry called Quicksync. That's why I'm not really heavily
00:15:25
◼
►
branding it and I didn't capitalize it and I'm not really, it doesn't appear anywhere
00:15:29
◼
►
in the app, it just kind of is what I called it in blog posts. Basically what this is,
00:15:34
◼
►
is a weird, tricky sync system that combines push notifications and iCloud key value store
00:15:44
◼
►
to try to get fast syncing between multiple devices, most of which are Apple devices and
00:15:49
◼
►
one of which is my website. The technical details of it aren't that interesting, I
00:15:54
◼
►
I don't think.
00:15:55
◼
►
Every syncable object has a sync version number on it.
00:15:58
◼
►
And when you make a change, you increment the version number.
00:16:00
◼
►
And the server manages conflicts when they arise.
00:16:03
◼
►
When you make a change, you also append to an iCloud Key Value
00:16:07
◼
►
Store list the object you just changed,
00:16:09
◼
►
like its ID and then the version number that you just set on it.
00:16:13
◼
►
When the Key Value Store syncs across other devices that
00:16:16
◼
►
are running Overcast, they will, within usually a few seconds
00:16:19
◼
►
or so, they will get that notification from iCloud,
00:16:22
◼
►
which has a persistent connection to the phones.
00:16:24
◼
►
It'll get the information from cloud saying,
00:16:25
◼
►
hey, this dictionary just changed,
00:16:28
◼
►
and now you can look and you can say,
00:16:30
◼
►
this has version numbers on these objects
00:16:32
◼
►
that I don't know about yet.
00:16:33
◼
►
So then that triggers the device to go to my servers
00:16:36
◼
►
and fetch the new information.
00:16:38
◼
►
- Even in the background?
00:16:39
◼
►
- Well, if the app is running at all,
00:16:42
◼
►
it'll get the notifications.
00:16:43
◼
►
But if it's playing audio,
00:16:46
◼
►
it will get them 'cause it's running.
00:16:48
◼
►
But if it's suspended in the background
00:16:49
◼
►
when it's not playing audio,
00:16:50
◼
►
it won't get them until it wakes up again.
00:16:53
◼
►
So I made the system and I tightened up a few other timings of various things. Like
00:16:59
◼
►
when you activate the app, how often does it sync? Does it sync every time you activate
00:17:02
◼
►
it or does it have like a certain minimum every X minutes? And then certain things you
00:17:06
◼
►
do, like should I sync every time you pause or seek? And then if you're just playing
00:17:13
◼
►
audio, how often should I sync the playback position of that so that it syncs properly
00:17:18
◼
►
to the website and to your other devices if you have any other devices? It's just this
00:17:21
◼
►
kind of complex, fairly boring solution to a really tricky problem which is syncing things
00:17:29
◼
►
in both a way that's quick and efficient of data and power usage and server resources.
00:17:35
◼
►
It's kind of hard to get right. And the first version I launched, I didn't get it right.
00:17:40
◼
►
And so there was a sync loop issue which fortunately I could fix server side. But all day yesterday,
00:17:49
◼
►
my server started collapsing.
00:17:50
◼
►
Because this, in theory, creates more sync requests
00:17:54
◼
►
than before, I was expecting this.
00:17:56
◼
►
And so on the server, I actually,
00:17:59
◼
►
the server tells the app how frequently
00:18:02
◼
►
to sync certain things, and how long
00:18:04
◼
►
certain timeouts should be.
00:18:06
◼
►
So things like to coalesce, or how did Federico say that?
00:18:11
◼
►
- Timer koalasing.
00:18:12
◼
►
- Yes, so I do some of that.
00:18:14
◼
►
And so the server, using just like, you know,
00:18:17
◼
►
tweaking some variables on the server,
00:18:19
◼
►
I can slow down all the apps or speed them up.
00:18:21
◼
►
And so I long shod like a kind of like a middle setting
00:18:23
◼
►
that I thought would be good and a little bit conservative.
00:18:26
◼
►
And my servers were just collapsing.
00:18:29
◼
►
And I'm wondering what the heck is going on.
00:18:30
◼
►
So I start looking at the logs,
00:18:31
◼
►
I start adding more debug information,
00:18:33
◼
►
trying to optimize certain things.
00:18:35
◼
►
I immediately provision 50% more web servers,
00:18:39
◼
►
just more instances to get them out there.
00:18:41
◼
►
PHP 7 comes with a massive speed up and memory reduction.
00:18:44
◼
►
So in the midst of all this, I'm like,
00:18:46
◼
►
I was running it on one server before.
00:18:48
◼
►
I'm like, let me just deploy to the rest.
00:18:49
◼
►
I need any saves I can get right now.
00:18:51
◼
►
So I have great PHP in all of them.
00:18:53
◼
►
Doing all this crazy stuff, upgrading things,
00:18:55
◼
►
optimizing things, checking database queries,
00:18:57
◼
►
spreading out memcache, doing all my crazy scaling stuff.
00:18:59
◼
►
It was like the server day from hell.
00:19:03
◼
►
In my career, I've had many server days from hell.
00:19:07
◼
►
Very few of them though after I left Tumblr.
00:19:10
◼
►
Just because once I left Tumblr,
00:19:11
◼
►
I was dealing with things that were just much smaller scale.
00:19:14
◼
►
So Instapaper, I had some of those days,
00:19:17
◼
►
but the scale wasn't as big.
00:19:19
◼
►
And then with Overcast, I've had almost none
00:19:21
◼
►
of those server days from hell,
00:19:22
◼
►
because A, I've gotten better at doing server stuff,
00:19:26
◼
►
B, the server stuff has gotten more powerful,
00:19:28
◼
►
and C, Overcast isn't that big.
00:19:30
◼
►
As I get further from having server days
00:19:33
◼
►
from hell frequently, each one I have now
00:19:37
◼
►
is like I have no tolerance for it anymore.
00:19:39
◼
►
So like each server day from hell I have now,
00:19:42
◼
►
at the end of it, I'm just like,
00:19:42
◼
►
I'm just using iCloud from now on.
00:19:45
◼
►
I don't want to ever be doing this again.
00:19:48
◼
►
But I am still doing it for the next few days at least.
00:19:51
◼
►
I will see what happens.
00:19:53
◼
►
Anyway, so eventually, to make a very long story short,
00:19:56
◼
►
eventually I figured out under certain conditions after,
00:20:01
◼
►
basically there's a race condition checker,
00:20:03
◼
►
if between when you start a sync and when you end a sync,
00:20:08
◼
►
if you change that object locally,
00:20:11
◼
►
then you by definition have the most recent version,
00:20:13
◼
►
as long as that sync didn't span hours or days or whatever.
00:20:16
◼
►
But if it's like a immediate mode sync,
00:20:19
◼
►
if you modify it during sync operation
00:20:21
◼
►
and the server comes back saying,
00:20:22
◼
►
what you have is out of date,
00:20:24
◼
►
replace it with this stuff I got
00:20:25
◼
►
from some other iPad somewhere that's in your closet,
00:20:27
◼
►
then you know like no, what you have is correct.
00:20:30
◼
►
So there's a condition where the app
00:20:32
◼
►
can then tell the server,
00:20:33
◼
►
no matter what you think you have,
00:20:35
◼
►
replace it with what I have.
00:20:36
◼
►
I'm forcing you to accept mine.
00:20:38
◼
►
It's like a force overwrite kind of conflict resolution.
00:20:41
◼
►
There was a condition where the app was saying,
00:20:44
◼
►
no, force this, 'cause there was just a race condition.
00:20:46
◼
►
The server, under certain conditions,
00:20:48
◼
►
was incrementing its version number on the response back,
00:20:52
◼
►
which meant it put itself in a loop.
00:20:55
◼
►
The app would say, no, force it to have this.
00:20:58
◼
►
The server would say, okay,
00:20:59
◼
►
and then it would send back something saying,
00:21:01
◼
►
but the new version is this.
00:21:02
◼
►
And the app would say, okay, but I'm also changing it now,
00:21:05
◼
►
so the new version is this plus one.
00:21:07
◼
►
the server would say back, oh no, okay, thanks,
00:21:09
◼
►
but now it's this plus one.
00:21:11
◼
►
So it created this loop under that certain race condition
00:21:14
◼
►
response scenario in which also nothing was actually changed.
00:21:18
◼
►
This wouldn't have happened for almost anybody,
00:21:22
◼
►
and I had a beta test that had 500 people on it,
00:21:25
◼
►
and it never happened in the beta.
00:21:26
◼
►
- Should have let it run to see
00:21:27
◼
►
if you could have overflowed the int.
00:21:28
◼
►
How big was the number?
00:21:31
◼
►
- Big enough that I would have gotten in very big trouble
00:21:34
◼
►
if I would have let that happen,
00:21:36
◼
►
because I don't think I used a big int,
00:21:39
◼
►
I think I used a regular int,
00:21:40
◼
►
so it's at least 32 bits.
00:21:43
◼
►
And I was seeing revision numbers
00:21:45
◼
►
that were in like the 600s range.
00:21:48
◼
►
So it would have taken a while to get to 4.2 billion,
00:21:53
◼
►
that would be the,
00:21:54
◼
►
it was, if I unsigned it,
00:21:56
◼
►
you know, maybe two billion if I didn't,
00:21:58
◼
►
if I signed it.
00:21:59
◼
►
But anyway, so this was obviously a problem.
00:22:02
◼
►
Fortunately, that I was able to fix server side,
00:22:05
◼
►
but it took me most of the day to find that,
00:22:08
◼
►
to figure out what was causing certain clients
00:22:11
◼
►
to just hit the sync service over and over again
00:22:13
◼
►
with seemingly identical looking requests.
00:22:15
◼
►
So I resolved my day from hell for the most part.
00:22:19
◼
►
There was also, separately from that,
00:22:21
◼
►
a race condition sync bug,
00:22:23
◼
►
which causes episodes to basically come back
00:22:25
◼
►
from the dead sometimes.
00:22:26
◼
►
Like if you played it on an iPad
00:22:29
◼
►
and then went and finished on your phone,
00:22:31
◼
►
next time you launch the iPad app,
00:22:32
◼
►
the iPad would tell the server,
00:22:34
◼
►
"Hey, I have this version of this thing that I'm playing."
00:22:36
◼
►
And it also can cause some weird issues,
00:22:39
◼
►
so I submitted an expletive request,
00:22:40
◼
►
which I'd hardly ever do.
00:22:42
◼
►
So basically, it was a day and a half from hell,
00:22:47
◼
►
and now my hands are all sore from RSI stuff,
00:22:51
◼
►
from the server day from hell, and yeah.
00:22:53
◼
►
I'm looking forward to just talking for the next hour,
00:22:58
◼
►
instead of, well, not the whole hour,
00:22:59
◼
►
you guys are gonna talk for most of the rest of it.
00:23:02
◼
►
- This is the part where we tell Marco
00:23:03
◼
►
about unit tests again, I think, Casey.
00:23:05
◼
►
- I think you're right.
00:23:06
◼
►
- This is not our regular schedule.
00:23:08
◼
►
See, what you do is, for every weird case you can think of
00:23:11
◼
►
involving every weird device,
00:23:12
◼
►
you simulate those scenarios in a series of tests,
00:23:15
◼
►
and every time you come up with a new scenario
00:23:16
◼
►
that you're worried about as you drift off to sleep,
00:23:18
◼
►
you're like, "I'm gonna write a test for that
00:23:19
◼
►
and see if it works," and then you run those tests
00:23:21
◼
►
to make sure you haven't broken anything.
00:23:22
◼
►
That's every time you revise the sync system,
00:23:26
◼
►
and then you feel better when you do a release,
00:23:28
◼
►
and you're still not gonna find all the bugs,
00:23:29
◼
►
but every time you find one of them,
00:23:31
◼
►
Part of fixing the bug is not just fixing it on your server
00:23:33
◼
►
and fixing it on your client and releasing new versions,
00:23:34
◼
►
but writing a failing test case to isolate the bug
00:23:37
◼
►
and then fixing the bug and see that it fixes your tests.
00:23:39
◼
►
And then every time you run those tests,
00:23:41
◼
►
you feel a little bit better
00:23:42
◼
►
about the changes you're making.
00:23:44
◼
►
- Did I cover everything?
00:23:45
◼
►
- Yeah, I think so.
00:23:46
◼
►
- All right, so John and Casey, you guys can come over
00:23:49
◼
►
and you can write a bunch of tests for me
00:23:50
◼
►
to show me how good they are.
00:23:52
◼
►
I won't pay you, you're doing it for exposure.
00:23:55
◼
►
(John laughs)
00:23:56
◼
►
- Of course, of course.
00:23:56
◼
►
- And then if I like it, maybe I'll hire you in the future.
00:24:00
◼
►
- I see how it is.
00:24:01
◼
►
For what it's worth, so at the new gig,
00:24:05
◼
►
we're implementing the company's app all over again.
00:24:09
◼
►
We're re-implementing our app.
00:24:11
◼
►
And the guy I'm working with, who Marco knows actually,
00:24:15
◼
►
Jamie, he has not really done unit testing before,
00:24:18
◼
►
but has been really, really open to it
00:24:20
◼
►
and really interested in doing it on this project.
00:24:22
◼
►
'Cause we're trying to do everything
00:24:24
◼
►
as right as we possibly can.
00:24:25
◼
►
And over the last just 48 hours,
00:24:28
◼
►
He said to me at least three or four different times,
00:24:30
◼
►
"Oh my God, I'm so glad I wrote a unit test
00:24:32
◼
►
because I just exposed a bug
00:24:33
◼
►
I didn't even know was there."
00:24:35
◼
►
Just saying.
00:24:36
◼
►
They're your friend, kids.
00:24:37
◼
►
They're your friend.
00:24:38
◼
►
- Yeah, sync systems are a pain,
00:24:39
◼
►
especially in client server things are a pain.
00:24:42
◼
►
And you know, this is like sort of designing for testability.
00:24:45
◼
►
If you know you're gonna have a system like that,
00:24:46
◼
►
that's a pain.
00:24:47
◼
►
You're like, "How am I gonna write tests against this?
00:24:49
◼
►
I need a server, I need a client.
00:24:50
◼
►
They're separate code bases.
00:24:51
◼
►
They're running in separate places."
00:24:52
◼
►
Like it encourages you to make both ends
00:24:56
◼
►
of your sync system work disembodied,
00:25:00
◼
►
like have them to be divorced
00:25:01
◼
►
from both the client and the server.
00:25:02
◼
►
So you can actually test them.
00:25:04
◼
►
And then the only thing the client and the server
00:25:05
◼
►
are providing is like little homes and transport mechanisms.
00:25:09
◼
►
Then you can test the transport mechanisms independently.
00:25:11
◼
►
And then once you have those pieces
00:25:13
◼
►
and you're confident that those tests show
00:25:14
◼
►
that they work the way that they work,
00:25:16
◼
►
then you can write your series of scenarios
00:25:18
◼
►
with just a bunch of, you know, test data and fixtures.
00:25:20
◼
►
And, you know, at the beginning of your test,
00:25:21
◼
►
you make a whole bunch of theoretical devices
00:25:23
◼
►
in different states,
00:25:25
◼
►
and then you make them collide with each other
00:25:26
◼
►
in different ways and you can do fuzz testing
00:25:28
◼
►
and randomize them and have them, you know,
00:25:30
◼
►
be turned on and turned off at random intervals
00:25:32
◼
►
to make sure everything resolves and, you know, anyway.
00:25:36
◼
►
Yeah, they are super annoying to code
00:25:38
◼
►
and super annoying to test.
00:25:39
◼
►
But if you code with that in mind from the beginning,
00:25:42
◼
►
you can save yourself a lot of headaches.
00:25:45
◼
►
I remember the worst one I think I ever called doing
00:25:47
◼
►
was involved a whole mess of stored procedure code
00:25:51
◼
►
in the database, which is particularly easy
00:25:54
◼
►
to divorce from the database itself,
00:25:57
◼
►
and you can't really mock it.
00:25:58
◼
►
Well, you can mock it the other sense of the word.
00:26:00
◼
►
But anyway, so you had to make a new database instance
00:26:07
◼
►
for your testing purposes, fill it with crap data,
00:26:09
◼
►
and then run the stored procedures
00:26:11
◼
►
because I couldn't figure out how to get that logic out
00:26:13
◼
►
And it had to be-- anyway.
00:26:16
◼
►
That's the worst and the best project
00:26:18
◼
►
that I can recall working on that way,
00:26:19
◼
►
and the worst in that it was the hardest to make it testable
00:26:22
◼
►
and the best in that it was this Byzantine system came up,
00:26:26
◼
►
it was come up with by some business person
00:26:28
◼
►
with a very complicated Excel spreadsheet.
00:26:30
◼
►
And there's no way in hell I would have any confidence
00:26:32
◼
►
that I was correctly implementing this crazy specification
00:26:37
◼
►
if it wasn't for tons and tons and tons of unit tests.
00:26:41
◼
►
I mean, that's the only way I could have even known
00:26:43
◼
►
when I was done, 'cause it was just nonsensical.
00:26:46
◼
►
But it's like, well, this thing does what you say
00:26:48
◼
►
in every obscure scenario.
00:26:49
◼
►
And if there's a corner case that isn't covered
00:26:52
◼
►
by your stupid specification, I'll ask you about it,
00:26:54
◼
►
and whatever you say, I'll implement,
00:26:55
◼
►
and they'll say, look, this does everything, enjoy.
00:26:59
◼
►
I hope that Margot's sync system
00:27:00
◼
►
is considerably less complicated than that BS thing
00:27:03
◼
►
that I still think about sometimes.
00:27:05
◼
►
- You still get the night sweats about.
00:27:07
◼
►
- It is a fairly simple system, it really is.
00:27:09
◼
►
It just, like, most of the bugs in sync
00:27:12
◼
►
have been on the app side, not on the server side.
00:27:16
◼
►
This was really, I think this might have been
00:27:17
◼
►
the first server-side sync bug that I've ever had
00:27:20
◼
►
that was like meaningful.
00:27:21
◼
►
Well, it's a combination. I mean, it's like, which side is the bug on?
00:27:25
◼
►
Who's behaving badly? You could say the server was confused because it was
00:27:27
◼
►
sending back the wrong version or whatever. But it's like, you know,
00:27:29
◼
►
it doesn't really matter which side it's on.
00:27:31
◼
►
You're all on the same team here. You're just trying to,
00:27:32
◼
►
you're just trying to get the things to not have infinite loops.
00:27:35
◼
►
Like that's step one, you know, coalesce to a, to some version.
00:27:39
◼
►
Have those, those are the worst tests to make like performance tests and like
00:27:43
◼
►
average number of syncs tests to try to catch out of bounds errors,
00:27:47
◼
►
where you just throw an order of magnitude. You're like, look,
00:27:49
◼
►
I'm gonna run this whole set of unit tests
00:27:51
◼
►
and it should run somewhere in the thousands of requests
00:27:55
◼
►
across the virtual wire.
00:27:57
◼
►
If it runs 10,000 or 100,000,
00:27:59
◼
►
maybe throw off test failure and say,
00:28:01
◼
►
hey, I've seen an order of magnitude change
00:28:03
◼
►
in the amount of traffic, maybe something is wrong.
00:28:05
◼
►
That's those type of like heuristics,
00:28:07
◼
►
especially when it's just your own tests
00:28:08
◼
►
where you're just like, you know,
00:28:09
◼
►
'cause what you saw was a crazy increase in traffic,
00:28:12
◼
►
but it could have been legit.
00:28:13
◼
►
Like you don't know what's out there on the world,
00:28:16
◼
►
how many units,
00:28:17
◼
►
and maybe everyone just updated all at the same time
00:28:19
◼
►
or whatever, but in your unit tests,
00:28:22
◼
►
if you had triggered that loop,
00:28:23
◼
►
you would have seen the number of requests
00:28:25
◼
►
going back and forth be much higher than it was before.
00:28:27
◼
►
And then if you had some alert in that,
00:28:28
◼
►
you'd be like, all right, well,
00:28:30
◼
►
none of my tests caught this bug,
00:28:31
◼
►
but this is really doing way more sinking traffic
00:28:34
◼
►
than I think it should, and I have to figure what that is.
00:28:37
◼
►
- And for what it's worth,
00:28:38
◼
►
protocol-oriented design in Swift
00:28:39
◼
►
makes a lot of this much easier, just saying.
00:28:42
◼
►
- Great, you can write all my Swift code too.
00:28:45
◼
►
- That's fine.
00:28:46
◼
►
So when you were doing all these fixes,
00:28:48
◼
►
You said a lot of it was server-side.
00:28:51
◼
►
Would you just deploy that crap live everywhere
00:28:53
◼
►
and just pray that everything was good?
00:28:55
◼
►
Like how do you handle deployments in general
00:28:59
◼
►
and then also in these like red alert,
00:29:00
◼
►
all hands on deck sort of situations?
00:29:03
◼
►
- Well, I had to go through code review first
00:29:05
◼
►
and then QA had to take a look.
00:29:08
◼
►
Then he had to get sign-offs for management.
00:29:10
◼
►
- Yeah, he has to go through legal, you know.
00:29:12
◼
►
Yeah, well, first I run my arsenal of unit tests
00:29:18
◼
►
and integration tests, whatever that means.
00:29:21
◼
►
I don't honestly know what that means.
00:29:23
◼
►
I then have a stand up in the parking lot.
00:29:27
◼
►
- Oh god, would you stop and answer the damn question?
00:29:31
◼
►
- Yeah, so I use Git to manage my web server source code,
00:29:37
◼
►
and when I, you know, I have local development environment
00:29:44
◼
►
on my Mac, so I test things locally here,
00:29:48
◼
►
relatively informally.
00:29:50
◼
►
And then I'm careful.
00:29:53
◼
►
I know this sounds terrible.
00:29:54
◼
►
I apologize to everybody who's yelling at me right now
00:29:57
◼
►
through their car speakers or whatever.
00:30:00
◼
►
And then I go to one of the servers
00:30:03
◼
►
that is kind of like, maintains the master checkout.
00:30:06
◼
►
And I do a get pull on there.
00:30:09
◼
►
And then I have a deploy script from there
00:30:12
◼
►
that r-syncs up the files to all the other servers
00:30:15
◼
►
that matter.
00:30:16
◼
►
and that script runs a few additional checks
00:30:18
◼
►
to make sure things like I didn't commit
00:30:20
◼
►
a PHP syntax error, it will refuse
00:30:22
◼
►
to push anything like that, but it's fairly,
00:30:26
◼
►
for the most part, fairly rudimentary
00:30:29
◼
►
pre-flight checks there, and then it syncs it,
00:30:32
◼
►
and I watch logs and I watch stats afterwards
00:30:35
◼
►
to see is anything reporting errors,
00:30:37
◼
►
is anything jumping up in load weirdly,
00:30:40
◼
►
or having way more of anything that I'm measuring
00:30:43
◼
►
or way less than anything I'm measuring,
00:30:44
◼
►
I measure things like cache hit rates
00:30:46
◼
►
and all sorts of database performance, database lag,
00:30:49
◼
►
stuff like that.
00:30:50
◼
►
- Are you pulling servers out of the pool
00:30:52
◼
►
as you update them?
00:30:53
◼
►
- No, that's not how PHP works.
00:30:55
◼
►
You literally just replace the files live.
00:30:57
◼
►
- I know, but you're not replacing
00:30:58
◼
►
all the files at once, though.
00:31:00
◼
►
- No, it doesn't matter.
00:31:02
◼
►
- Well, it kinda does.
00:31:03
◼
►
I think it kinda does.
00:31:04
◼
►
- No, I know what you're saying.
00:31:06
◼
►
In practice, it doesn't matter, really.
00:31:09
◼
►
For the kind of things I'm doing,
00:31:10
◼
►
for the speed at which these things are happening,
00:31:13
◼
►
the way PHP manages it,
00:31:14
◼
►
and the error rate likely to happen from somebody getting a partially updated checkout, it's
00:31:20
◼
►
enough to usually cause one crash a year.
00:31:25
◼
►
Well, at your normal traffic rates, yes, but at 10,000 requests a second, the number of
00:31:31
◼
►
requests that come in between the time the first file r-syncs to a server and the last
00:31:34
◼
►
file r-syncs to a server could be a big number.
00:31:36
◼
►
Oh, yeah. Well, that's why. I mean, yeah, 10,000 requests a second, that's when you
00:31:40
◼
►
develop better systems, but my normal traffic level
00:31:43
◼
►
is like 100.
00:31:45
◼
►
- I know, but you were at 10,000 requests a second.
00:31:48
◼
►
- Yes. - That's where you were at.
00:31:49
◼
►
- Well, those weren't actually getting
00:31:50
◼
►
to the application servers.
00:31:51
◼
►
The application servers kept falling over.
00:31:52
◼
►
- Oh, those are just being, oh, those are just being,
00:31:54
◼
►
all right, well, anyway.
00:31:55
◼
►
- Yeah, application servers were getting about 500 of them.
00:31:58
◼
►
- Isn't that the good thing about a truly disastrous
00:32:01
◼
►
scenario is like, well, it's so broken now,
00:32:03
◼
►
I can't possibly make it worse.
00:32:05
◼
►
- Yeah, basically, it's like, it's so broken now,
00:32:07
◼
►
least of my concerns is somebody hitting a web server, actually getting a response,
00:32:12
◼
►
and having that response be wrong because of these two files at RadiSync.
00:32:16
◼
►
Or, you know, a 500 or something because, you know, it's a half-updated source code
00:32:19
◼
►
or whatever.
00:32:20
◼
►
Well, that actually never happens. Like, the files are seemingly updated atomically, or
00:32:25
◼
►
maybe PHP is just smart about when it, like, re-picks them up from its compiled cache,
00:32:28
◼
►
I don't know.
00:32:29
◼
►
You can write a unit test for this with a bunch of sleep calls somewhere and induce
00:32:32
◼
►
this failure mode and see what happens.
00:32:35
◼
►
Add it to your list.
00:32:36
◼
►
And then hell will freeze over.
00:32:37
◼
►
- Yeah, no, I mean, this is the kind of thing,
00:32:39
◼
►
like, I am fully aware that the proper ways
00:32:43
◼
►
to do these things are not the way I'm doing them
00:32:46
◼
►
for much of this stuff.
00:32:47
◼
►
You know, the stuff that matters,
00:32:49
◼
►
I think I'm pretty solid on.
00:32:50
◼
►
Things like security, privacy, like that stuff,
00:32:53
◼
►
I'm pretty sure I'm doing correctly, you know,
00:32:56
◼
►
as much as I possibly can.
00:32:58
◼
►
But things like this, it's more kind of like
00:33:01
◼
►
the advanced software development,
00:33:05
◼
►
proper methodology kind of stuff.
00:33:08
◼
►
I do play Fast and Loose with, I know that.
00:33:10
◼
►
Part of that is because I never learned any other way.
00:33:13
◼
►
And I do regret never having worked in like a big
00:33:17
◼
►
software development organization that was well run.
00:33:19
◼
►
I never had that experience.
00:33:21
◼
►
I only worked in small places where
00:33:23
◼
►
there were either just very few developers
00:33:25
◼
►
or I was like the only one.
00:33:26
◼
►
And so it's, I never learned the more fancy systems
00:33:31
◼
►
from anyone else's work environment.
00:33:34
◼
►
and I do regret that career-wise on some level.
00:33:38
◼
►
- There's a whole other set of pathologies
00:33:39
◼
►
associated with those.
00:33:40
◼
►
Don't believe those are actually,
00:33:42
◼
►
I mean, it's just a different set of problems
00:33:43
◼
►
that come with those.
00:33:44
◼
►
- Right, right.
00:33:45
◼
►
- As Casey and I can.
00:33:46
◼
►
- Yeah, so that's the main reason
00:33:48
◼
►
I don't do some of the more formalized,
00:33:50
◼
►
honestly burdensome stuff,
00:33:54
◼
►
is because I don't know how,
00:33:56
◼
►
and because I've never done it.
00:33:57
◼
►
And then the secondary reason is because
00:33:59
◼
►
I just don't see the need or the justification
00:34:03
◼
►
the time as a one person, basically part time project that it's hard for me to justify
00:34:12
◼
►
spending a whole bunch of time in overhead and extra money on some of this stuff because
00:34:17
◼
►
it's like I can't afford the time overhead for that. And look, I know there's going
00:34:22
◼
►
to be a lot of people who say, "Well, if you can't afford to do it right, you shouldn't
00:34:25
◼
►
do it at all." And well, would you rather overcast not exist? These are the kinds of
00:34:31
◼
►
decisions that I face, and so, you know,
00:34:34
◼
►
it's, you do what you can, and, you know,
00:34:38
◼
►
when you're working for yourself on your own
00:34:41
◼
►
with a project that has fairly slim margins
00:34:43
◼
►
and you can't really hire anybody else,
00:34:45
◼
►
like, you know, you gotta make cuts somewhere,
00:34:47
◼
►
and either the product doesn't ship or doesn't progress,
00:34:51
◼
►
or, you know, maybe you don't write every unit test,
00:34:53
◼
►
or any, but, you know.
00:34:55
◼
►
- Or any unit test, yeah.
00:34:57
◼
►
I mean, the good thing is, like, that the app,
00:34:59
◼
►
I'm assuming, since I was using it during the time
00:35:02
◼
►
and didn't notice any of this,
00:35:03
◼
►
the app is resilient to the server being wonky
00:35:05
◼
►
for the most part.
00:35:06
◼
►
You're not gonna see a bunch of,
00:35:07
◼
►
you know, just the failures behind the scenes to sync
00:35:10
◼
►
or whatever are not stopping you
00:35:12
◼
►
from listening to your podcast.
00:35:14
◼
►
So in some respects, you have a grace period
00:35:17
◼
►
and protection against users.
00:35:19
◼
►
You know, it's not as if your server starts throwing errors
00:35:21
◼
►
and all of a sudden every single person
00:35:22
◼
►
who's using Overcast can't listen to their podcast anymore.
00:35:24
◼
►
Just not how it manifests, right?
00:35:26
◼
►
- In fact, you won't even see an error message
00:35:28
◼
►
unless you manually initiate async.
00:35:31
◼
►
Like if you do the pull to refresh and that sync fails,
00:35:34
◼
►
you'll see a box.
00:35:35
◼
►
But if a routine sync in the background fails,
00:35:37
◼
►
you won't even know.
00:35:38
◼
►
- Right, so I bet for most people,
00:35:41
◼
►
even though this was a busy, stressful day for you,
00:35:44
◼
►
they had no idea any of this was going on
00:35:45
◼
►
unless they followed the Overcast Twitter account,
00:35:47
◼
►
because as far as they're concerned,
00:35:48
◼
►
I mean, maybe if they were using multiple devices,
00:35:50
◼
►
they would have noticed that it didn't sync or something
00:35:52
◼
►
and gotten a little bit of a frowny face
00:35:53
◼
►
about your sync system,
00:35:54
◼
►
but as long as once you fixed it, it got in sync again,
00:35:57
◼
►
and they didn't have to do anything about it,
00:35:58
◼
►
you still got one leg up on the stubborn inability
00:36:01
◼
►
to sync stuff that we all complain about in iCloud
00:36:03
◼
►
or messages or whatever where there's nothing you can do
00:36:07
◼
►
and it never fixes itself automatically.
00:36:09
◼
►
- Right, I mean, I've built all my sync stuff
00:36:13
◼
►
to fully work in offline and failure scenarios
00:36:16
◼
►
and to do the right thing as far as I know.
00:36:20
◼
►
We'll see if I ever test it, but as far as I know,
00:36:23
◼
►
it does the right thing.
00:36:24
◼
►
'Cause this all comes when I made Instapaper,
00:36:26
◼
►
that was designed for offline use.
00:36:28
◼
►
So the whole thing was designed to be,
00:36:30
◼
►
to have a bunch of changes happen while offline
00:36:33
◼
►
and then sync later at some point and have it be correct.
00:36:37
◼
►
And so I took that same ethos to Overcast
00:36:40
◼
►
where like any state of connections coming up and down
00:36:43
◼
►
and doing stuff offline, doing stuff online,
00:36:45
◼
►
it should always do the right thing
00:36:47
◼
►
when it gets a chance to connect again.
00:36:49
◼
►
And so you're right, I mean most people
00:36:52
◼
►
who are on Twitter and stuff,
00:36:53
◼
►
I got almost no support email about the server problems,
00:36:57
◼
►
and I got only a very small handful of tweets,
00:37:00
◼
►
most of which were people saying,
00:37:01
◼
►
why is it, like, it's being slow to load
00:37:04
◼
►
this directory category, or this, you know,
00:37:07
◼
►
it was being slow to load something
00:37:09
◼
►
that's dynamically fetched.
00:37:10
◼
►
For the most part, this, I mean,
00:37:12
◼
►
that's part of the reason why I like,
00:37:14
◼
►
why I'm able to do overcast server stuff
00:37:16
◼
►
without massive stress weighing on me all the time,
00:37:20
◼
►
because honestly, I don't have
00:37:22
◼
►
the capacity for that anymore.
00:37:24
◼
►
I'm able to do overcast level of it
00:37:26
◼
►
because if the entire service goes down,
00:37:29
◼
►
you know, worst case scenario, everything goes down.
00:37:32
◼
►
Pingdom lights up all of my devices with alerts.
00:37:34
◼
►
If for some reason that stays down for like two hours,
00:37:38
◼
►
most of my customers won't even know.
00:37:40
◼
►
And that's kind of freeing in a way.
00:37:43
◼
►
Not that I let that happen,
00:37:44
◼
►
but that I don't have to be in constant fear
00:37:47
◼
►
of that happening.
00:37:48
◼
►
- That's an interesting point.
00:37:49
◼
►
By the way, speaking of RSI that you were talking about,
00:37:52
◼
►
for a little RSI tip from a long time sufferer.
00:37:57
◼
►
Many things contribute to RSI,
00:37:58
◼
►
we've talked about in the past.
00:37:59
◼
►
One of the really big contributors, surprisingly,
00:38:01
◼
►
which people don't think about, is stress.
00:38:05
◼
►
As in, I'm not sure how much typing you did, Marco,
00:38:08
◼
►
on that day, but I would wager
00:38:09
◼
►
that it's probably not much more typing
00:38:11
◼
►
than you did on a really productive coding day.
00:38:13
◼
►
But if you are doing that typing frantically while stressed,
00:38:18
◼
►
it makes a big difference in terms of how much inflammation
00:38:21
◼
►
and problems you get. So because you'll be typing harder, because you'll be more prone to, you know,
00:38:26
◼
►
whatever stress hormones are going through your system, more prone to inflammation,
00:38:29
◼
►
working under pressure when you are stressed is a huge contributor to, in addition to the typical
00:38:36
◼
►
things we talk about, like how many keystrokes did you type, how long have you been using the
00:38:40
◼
►
computer, how many breaks have you been taking? Yes, all those happen when you're stressed,
00:38:42
◼
►
you tend to not take breaks, everything like that, but merely the act of being stressed,
00:38:46
◼
►
depending on your type of RSI, can be a huge contributing factor. And I've always
00:38:51
◼
►
been aware of that in the years since my worst flare-ups that like sometimes you just have
00:38:56
◼
►
to chill out like you can continue to work productively and take breaks but while you're
00:39:00
◼
►
working if you find yourself like tensing up and all that you know just all the muscles
00:39:04
◼
►
in your body tensing that is terrible for most kinds of RSI.
00:39:07
◼
►
Yeah I mean and that was totally the case yesterday and today and I usually don't feel
00:39:13
◼
►
that and that's I think you're right I mean that's that's obviously very related to things
00:39:17
◼
►
like back pain, very, very related.
00:39:20
◼
►
And so I've certainly seen that before.
00:39:23
◼
►
Also, I'm pretty sure I'm getting sick.
00:39:24
◼
►
And whenever I'm getting sick, the day or two beforehand,
00:39:28
◼
►
coffee stops working and I start getting RSI pain.
00:39:31
◼
►
- Coffee stops working?
00:39:33
◼
►
- Yeah. - What does that mean?
00:39:34
◼
►
- It means I no longer get the energy boost,
00:39:36
◼
►
the awakeness boost from the caffeine.
00:39:39
◼
►
- Yeah, but you can quit any time, don't worry.
00:39:42
◼
►
When you had mentioned earlier that you were thinking about,
00:39:47
◼
►
you said it kind of jokingly, but you said you were thinking about switching entirely
00:39:50
◼
►
to iCloud. I haven't kept up with some of the more late-breaking changes to iCloud in
00:39:57
◼
►
the last year or two. I know that there's some amount of support for getting to user
00:40:02
◼
►
data from the web. Have you looked deeply or even slightly deeply into that to see,
00:40:07
◼
►
like, could you still do the Overcast Web app with just iCloud?
00:40:10
◼
►
- I know about as much about it as what you just said.
00:40:14
◼
►
Which is, I know there's some,
00:40:17
◼
►
they call it like a JavaScript interface,
00:40:19
◼
►
but basically it's web request you could do
00:40:21
◼
►
from a server too, I think.
00:40:23
◼
►
So there are ways that you can use CloudKit
00:40:26
◼
►
from something that's not an Apple device.
00:40:30
◼
►
I don't know anything more about it than that,
00:40:31
◼
►
and obviously if I decided to do something like this,
00:40:34
◼
►
the first thing I would do would be to look into that
00:40:36
◼
►
and see what I'm dealing with here.
00:40:38
◼
►
- You can't trade your personal stress
00:40:39
◼
►
for the impotent rage of Apple's bugs that you can't fix,
00:40:42
◼
►
and that you can't get them to take seriously.
00:40:45
◼
►
- Right, but whenever you outsource some amount
00:40:50
◼
►
of your app's functionality
00:40:53
◼
►
to some kind of third-party service like that,
00:40:56
◼
►
when things break, it's not usually your fault.
00:41:00
◼
►
It is your problem,
00:41:02
◼
►
but there's often nothing you can do about it.
00:41:04
◼
►
Oftentimes, the solution is just,
00:41:07
◼
►
well, I guess we have to wait a few days
00:41:09
◼
►
for this to get better, or we have to wait an hour
00:41:11
◼
►
for this thing to be up again, or whatever.
00:41:14
◼
►
If it becomes longer than that,
00:41:16
◼
►
if it's like we have to wait a few years
00:41:17
◼
►
for this to get better,
00:41:18
◼
►
that becomes a bigger problem for you.
00:41:20
◼
►
Then that's kind of on you,
00:41:22
◼
►
that you should move to something else.
00:41:24
◼
►
But something like,
00:41:26
◼
►
I mentioned I'm hosted at Linode.
00:41:29
◼
►
I don't manage their switches,
00:41:31
◼
►
and if they have a network outage for five minutes,
00:41:34
◼
►
there's nothing I can do about it.
00:41:35
◼
►
So it's kind of freeing in that way,
00:41:37
◼
►
because it's like, well, I just have to sit back
00:41:39
◼
►
and wait for this to get fixed,
00:41:40
◼
►
and maybe if it goes on for a while,
00:41:42
◼
►
I might file a ticket just to make sure
00:41:44
◼
►
they really know about it, but in every instance,
00:41:46
◼
►
they already did know about it,
00:41:47
◼
►
and it gets fixed a few minutes later.
00:41:49
◼
►
So it's not that big of a problem.
00:41:52
◼
►
Like, this is like, it's like the web hosting continuum.
00:41:55
◼
►
As you can move up the hierarchy
00:41:58
◼
►
of web hosting abstractions, and each one you go up,
00:42:01
◼
►
you get more things that are taken out of your hands.
00:42:04
◼
►
And again, they are still your problem.
00:42:07
◼
►
But, you know, it's, 'cause if your customers
00:42:10
◼
►
have your app stop working, your server stop working,
00:42:12
◼
►
they don't care if your web host
00:42:15
◼
►
is having a temporary switch outage.
00:42:17
◼
►
They will go to you and they will say,
00:42:18
◼
►
you are down, you are broken.
00:42:20
◼
►
One star, useless, I want all my money back,
00:42:22
◼
►
plus damages, et cetera.
00:42:24
◼
►
You know, and the more you go up the stack,
00:42:25
◼
►
you are saving yourself work,
00:42:26
◼
►
but you're also adding more and more things
00:42:28
◼
►
to the giant list of things that are out of your control.
00:42:33
◼
►
And again, it's a balance.
00:42:34
◼
►
for the most part, that is freeing when you do that.
00:42:37
◼
►
But it does become a problem if the service you're on
00:42:41
◼
►
just starts to suck.
00:42:43
◼
►
It's not just a temporary outage,
00:42:45
◼
►
but if things just take a turn or quality slips
00:42:48
◼
►
or they decide to get acquired and shut down
00:42:51
◼
►
the service that you were using or something like that,
00:42:53
◼
►
like that becomes your problem.
00:42:55
◼
►
And I try to minimize ways in which things like that
00:42:57
◼
►
can be a problem for me by doing things like,
00:43:00
◼
►
you know, I'm just using standard Linux to host my stuff
00:43:03
◼
►
and it's running on VPSs,
00:43:05
◼
►
but I'm not doing anything fancy with the VPSs,
00:43:06
◼
►
and I could go to any other VPS or dedicated server host
00:43:10
◼
►
and run the exact same stack
00:43:12
◼
►
and with the exact same servers and no changes really,
00:43:14
◼
►
just like moving servers over,
00:43:15
◼
►
which is not that big of a deal.
00:43:17
◼
►
I keep things in such a way that I try to abstract away
00:43:20
◼
►
as much as I can so I don't have to worry about
00:43:22
◼
►
the basics of things like power, connectivity,
00:43:25
◼
►
failed disks, stuff like that,
00:43:27
◼
►
but I'm not gonna go all the way to a service
00:43:29
◼
►
like App Engine or Heroku or even Amazon Web Services.
00:43:33
◼
►
honestly, where things are so abstracted away
00:43:37
◼
►
that it's hard to replace for core functionality.
00:43:40
◼
►
I do use S3 for storing file uploads and stuff,
00:43:43
◼
►
but that's easier to swap out if it sucks
00:43:46
◼
►
than oh, my entire app is written
00:43:48
◼
►
based on the assumptions of these handful of services
00:43:50
◼
►
that I can't actually replicate anywhere else
00:43:52
◼
►
but this provider.
00:43:54
◼
►
- I feel like those companies you listed
00:43:55
◼
►
would all be at least more superficially responsive
00:43:58
◼
►
to your concerns than Apple, because all those things like,
00:44:01
◼
►
"Oh, I was using this web service, I'm using Heroku and my thing is broken."
00:44:06
◼
►
There's some person you can contact who will get back to you about whatever your problem
00:44:12
◼
►
Maybe they won't solve it immediately or whatever, but historically speaking, I think Apple has
00:44:15
◼
►
not been up to the standards of the other sort of infrastructure service provider things
00:44:21
◼
►
in terms of, "Oh yeah, no, there's totally a support mechanism and a place where you
00:44:26
◼
►
can report problems and expect a speedy response and report bugs and issues and get them resolved."
00:44:31
◼
►
with Apple, I mean, I'm just thinking of like all the poor
00:44:34
◼
►
Game Center developers and like, I mean, surely they are
00:44:38
◼
►
trying every possible mechanism to complain to Apple about
00:44:41
◼
►
their issues with the Game Center that are causing their
00:44:42
◼
►
applications to hang or do weird things or have bugs.
00:44:45
◼
►
And not only are they not getting like a ticket reply
00:44:49
◼
►
in five minutes and a response in 24 hours or whatever,
00:44:51
◼
►
but like these are just problems that are festering for
00:44:53
◼
►
years on end and I have no idea if there's any official
00:44:56
◼
►
channel contact going back and forth between them.
00:44:59
◼
►
But anyway, Apple's got a lot--
00:45:00
◼
►
I was measuring, not so much that you
00:45:02
◼
►
wouldn't want to use one of these services,
00:45:04
◼
►
but that Apple specifically, like CloudKit and iCloud,
00:45:07
◼
►
no matter how good they may be, it just
00:45:09
◼
►
doesn't seem like Apple set up to be the type of service
00:45:13
◼
►
provider like Amazon's web services or Heroku
00:45:16
◼
►
or whatever, where those are entire businesses that
00:45:18
◼
►
are about like, you're a developer.
00:45:19
◼
►
We provide a service.
00:45:20
◼
►
You can use our services.
00:45:21
◼
►
And if you have problems with them, here's what you do.
00:45:23
◼
►
And you can file bugs and track those bugs with the system.
00:45:26
◼
►
Then again, none of them are perfect.
00:45:27
◼
►
And they all have problems.
00:45:28
◼
►
and all the trade-offs you just talked about,
00:45:29
◼
►
but Apple just seems so far from having even the basic
00:45:34
◼
►
sort of like table stakes to be a reliable third-party
00:45:40
◼
►
web services provider like Microsoft Azure or whatever.
00:45:44
◼
►
Even though they may have the tech stuff,
00:45:45
◼
►
I feel like they don't have the, I don't know,
00:45:48
◼
►
whatever you call it,
00:45:49
◼
►
the surrounding infrastructure behind the tech,
00:45:52
◼
►
the people, the service, the tracking, the transparency,
00:45:55
◼
►
all the things that you would want
00:45:56
◼
►
in any service like that.
00:45:57
◼
►
- Yeah, I mean, the reason that I would consider iCloud,
00:46:01
◼
►
first of all, like, iCloud is an umbrella term
00:46:04
◼
►
that covers lots of different things,
00:46:06
◼
►
and the things that are under it
00:46:07
◼
►
oftentimes are not related
00:46:09
◼
►
and have vastly different reliabilities and reputations
00:46:13
◼
►
and kinda general suitabilities for certain tasks.
00:46:17
◼
►
CloudKit, which is what I would be moving to if I did that,
00:46:21
◼
►
I don't know of a lot of big users of it,
00:46:26
◼
►
But the bit I've heard so far is that
00:46:31
◼
►
it is somewhat limited, but what it does,
00:46:33
◼
►
it does very well and it tends to work.
00:46:35
◼
►
And I don't think a lot of people that I know
00:46:37
◼
►
are having trouble with CloudKit the way they did
00:46:39
◼
►
with things like iCloud Core Data Sync,
00:46:41
◼
►
which was always a disaster, or even things like
00:46:43
◼
►
the Key Value Store where it sometimes get messed up
00:46:45
◼
►
a little bit or something like that.
00:46:45
◼
►
But for the most part, people think CloudKit
00:46:50
◼
►
is pretty good for what it does as far as I know.
00:46:53
◼
►
- Yeah, it's one of the better technologies they released.
00:46:55
◼
►
but the question is, nothing is perfect,
00:46:57
◼
►
the question is if something goes wrong with CloudKit
00:46:59
◼
►
or you're suspicious or you think like
00:47:00
◼
►
you don't have visibility into something
00:47:02
◼
►
and you can't tell whether it's your problem
00:47:04
◼
►
or their problem or it's down for a while
00:47:06
◼
►
or your requests are slow,
00:47:07
◼
►
do you have any hope of getting that resolved?
00:47:09
◼
►
Or is it just like, well, I just sit here
00:47:11
◼
►
and wait impotently and either it improves or it doesn't?
00:47:13
◼
►
- Right, and there's all sorts of little things
00:47:15
◼
►
that would be problematic with CloudKit as well.
00:47:18
◼
►
I mean, you're totally right that like,
00:47:21
◼
►
generally speaking, the kind of relationship
00:47:23
◼
►
that Apple has with the public and with developers is in many ways completely the opposite kind
00:47:29
◼
►
of approach and attitude and openness than what you'd want from your web services provider.
00:47:35
◼
►
You know, that's, it's, like, especially as a developer, it is really, like, you want
00:47:39
◼
►
companies that are transparent and that are constantly iterating and making things better
00:47:44
◼
►
and that have totally 100% solid reputations for web services and things like that and
00:47:50
◼
►
Apple just isn't those things, that's not the way they operate. CloudKit would also
00:47:53
◼
►
bring the second problem of tying your Overcast data to your device's currently logged in
00:48:00
◼
►
iCloud account, which is not always a safe assumption to make. So I mean, even in my
00:48:05
◼
►
house, like we have, TIFF's iPad Pro has the best speakers of any iOS device in the house,
00:48:11
◼
►
because the iPad Pro speakers are awesome. So we have this iPad Pro signed into my Overcast
00:48:17
◼
►
account. And in every other way, it's Tiff's iPad, but it's handed to my Overcast account
00:48:22
◼
►
because we use it frequently as a kitchen or table speaker to play podcasts out loud
00:48:27
◼
►
together. If I moved to CloudKit, then we'd have to either sign that entire iPad out of
00:48:33
◼
►
iCloud so that it would have, so it could have my account instead of her account, even
00:48:37
◼
►
though it has all of her apps and her email, like everything else is hers on that iPad,
00:48:41
◼
►
or buy a second iPad, which is probably the solution Apple wants us to do, or switch to
00:48:46
◼
►
you're listening to her Overcast account
00:48:47
◼
►
for anything we listen to out loud,
00:48:49
◼
►
which is kind of a clunky solution.
00:48:51
◼
►
So, you know, there's problems with tying it to iCloud.
00:48:55
◼
►
There's also the major advantage,
00:48:57
◼
►
the whole reason I would consider using CloudKit
00:49:00
◼
►
is that right now I'm kind of using
00:49:02
◼
►
iCloud Key Value Store as a kludge.
00:49:05
◼
►
Is that the right pronunciation of kludge?
00:49:07
◼
►
- I believe so. - Is it kludge or kludge?
00:49:08
◼
►
I think it's kludge, anyway.
00:49:09
◼
►
Right now I'm using this kludge of Key Value Store
00:49:12
◼
►
along with a server-side sync
00:49:14
◼
►
and occasional push notifications to try to trigger
00:49:17
◼
►
a somewhat real-time connection kind of thing
00:49:22
◼
►
to sync things quickly to each other.
00:49:25
◼
►
Another way to do that would be to have
00:49:27
◼
►
a persistent connection whenever the app is running,
00:49:29
◼
►
kind of like a chat where you just have an open socket
00:49:32
◼
►
and you can make very fast things,
00:49:34
◼
►
the server can tell you as soon as it gets things.
00:49:36
◼
►
The main reasons I don't do that are,
00:49:39
◼
►
A, I'm not set up for it server-side,
00:49:41
◼
►
and I could become set up for it server-side,
00:49:43
◼
►
but it's another infrastructure thing
00:49:45
◼
►
I'd have to set up and maintain
00:49:46
◼
►
and learn all of the ways it fails.
00:49:49
◼
►
And B, the bigger reason is that I'm a little concerned
00:49:52
◼
►
about battery usage on the device.
00:49:55
◼
►
Apple maintains one of those connections
00:49:57
◼
►
for the entire device, that's what iCloud uses,
00:49:59
◼
►
that's what push notifications use.
00:50:01
◼
►
There's already a persistent connection to the device
00:50:05
◼
►
that Apple's maintaining for me.
00:50:06
◼
►
So if I move to an iCloud-based sync solution,
00:50:10
◼
►
I would be using the connection that's already there.
00:50:13
◼
►
So the battery penalty would be either minimal
00:50:16
◼
►
or non-existent compared to any other sync solution.
00:50:19
◼
►
- Do you know that for a fact,
00:50:20
◼
►
that CloudKit uses an open connection?
00:50:23
◼
►
I thought it would do it on demand.
00:50:25
◼
►
I mean sure, OS managed coalescing of requests,
00:50:28
◼
►
only opening the connection, do whatever,
00:50:29
◼
►
but is it a constantly open one?
00:50:31
◼
►
I thought that was maybe only for push notifications
00:50:33
◼
►
and not for CloudKit.
00:50:35
◼
►
- You know, that's a detail
00:50:36
◼
►
that I just don't know the answer to yet.
00:50:37
◼
►
- I mean, Apple doesn't talk about it, I don't think.
00:50:39
◼
►
- Right, and there are silent push notifications
00:50:42
◼
►
with the content available flag that you can
00:50:45
◼
►
and that I do send to the app whenever there's a new episode.
00:50:48
◼
►
When Notificash shows a notification,
00:50:50
◼
►
that wasn't a message only push.
00:50:52
◼
►
That was a silent content available push
00:50:55
◼
►
that woke up the app to tell it,
00:50:56
◼
►
here's a new episode to download.
00:50:59
◼
►
The app receives that notification from the server,
00:51:01
◼
►
checks locally with its preferences
00:51:03
◼
►
on whether to send that to you
00:51:04
◼
►
while it's also enqueuing it to download
00:51:06
◼
►
and things like that,
00:51:07
◼
►
and then shows you a local notification.
00:51:09
◼
►
So I could use those every time the server gets changed,
00:51:12
◼
►
send a content available notification to all the other devices on that account. I could
00:51:16
◼
►
do that, but those notifications are throttled and are not guaranteed to be delivered. And
00:51:22
◼
►
the answer to how many content available push notifications can one device receive reliably
00:51:27
◼
►
in, you know, say an hour or a day, that information I don't think is widely available and is
00:51:33
◼
►
probably not worth relying upon anyway. So there's all these like little tricks and
00:51:38
◼
►
and limitations that iOS does for power management
00:51:41
◼
►
and for keeping apps kind of from making sync loops
00:51:44
◼
►
and taking over the whole phone,
00:51:45
◼
►
I have to work around all those,
00:51:46
◼
►
whereas CloudKit and iCloud stuff,
00:51:48
◼
►
I believe has special privileges
00:51:50
◼
►
and is able to operate in, I think,
00:51:53
◼
►
more special ways, I think.
00:51:54
◼
►
I have to double check on that.
00:51:56
◼
►
But that would be the main driving factor to use it
00:51:59
◼
►
over any other kind of system.
00:52:01
◼
►
So if it could actually do that well and reliably,
00:52:05
◼
►
then it might be worth tolerating Apple's
00:52:07
◼
►
potential weirdness in being your service provider.
00:52:10
◼
►
- Or you use Microsoft Azure and not worry about
00:52:12
◼
►
this whole iCloud business.
00:52:13
◼
►
You wouldn't get the advantage of the privileged
00:52:15
◼
►
background demon doing your bidding for you,
00:52:17
◼
►
but seems like it would basically be more similar
00:52:20
◼
►
to what you have now.
00:52:21
◼
►
It's your own backend, you make it however you want,
00:52:22
◼
►
you got your own account system,
00:52:24
◼
►
do whatever you want with it,
00:52:25
◼
►
and hopefully Microsoft would be more responsive
00:52:27
◼
►
because they're hungry.
00:52:29
◼
►
- But see, that's the thing,
00:52:30
◼
►
that's really not that much different from what I have now.
00:52:32
◼
►
I'm already right now running instances
00:52:35
◼
►
of cloud computing resources with code that I write
00:52:39
◼
►
doing almost everything and managing almost everything.
00:52:42
◼
►
And the stuff that something like Azure would give me,
00:52:45
◼
►
things like account management and push notifications,
00:52:49
◼
►
like that stuff's all easy to me.
00:52:51
◼
►
Those are all solved problems with a couple hundred lines
00:52:55
◼
►
of code that I wrote years ago and that still work.
00:52:58
◼
►
Those are all totally solved problems.
00:53:00
◼
►
That's not where the difficulty lies, really.
00:53:03
◼
►
The difficulty is in the stuff that with any of these providers you have to write.
00:53:09
◼
►
Even with CloudKit.
00:53:10
◼
►
CloudKit, like iCloud Core Data tried to do the crazy thing of like just give us access
00:53:15
◼
►
to your local database and we're just going to make it sync.
00:53:18
◼
►
I'm just going to make that work.
00:53:20
◼
►
That could never work.
00:53:21
◼
►
Like things are more complicated than that.
00:53:23
◼
►
It's not that Apple did a bad job of implementing that.
00:53:27
◼
►
It's that the entire idea was deeply flawed from the start.
00:53:29
◼
►
That was never going to work well.
00:53:32
◼
►
the reason why people like it so much better
00:53:35
◼
►
is because design in such a way that it is kind of
00:53:39
◼
►
like a web service that you interact with
00:53:41
◼
►
that notifies you on changes and then you,
00:53:43
◼
►
locally in the app, do things like resolving conflicts.
00:53:46
◼
►
- Yeah, you can still make your own infinite loop.
00:53:48
◼
►
- Yeah, exactly, so like you're still writing
00:53:50
◼
►
the hard stuff, you're just not running the servers.
00:53:53
◼
►
But like you're still writing all the tricky,
00:53:56
◼
►
complex sync logic in the app.
00:53:59
◼
►
And that's true of any of these services
00:54:01
◼
►
because sync is just hard, and there really isn't
00:54:05
◼
►
a generalized sync library that just works for everybody.
00:54:09
◼
►
If there was, sync wouldn't be hard.
00:54:11
◼
►
- If you used iCloud and CloudKit,
00:54:14
◼
►
chance, I would imagine there's some chance
00:54:16
◼
►
that you would actually not have noticed
00:54:18
◼
►
this infinite loop bug for a long time.
00:54:20
◼
►
- It's very possible.
00:54:21
◼
►
- Surely they have the server capacity,
00:54:24
◼
►
like the surge server capacity to sort of eat that,
00:54:27
◼
►
and maybe someone would have contacted you,
00:54:30
◼
►
or maybe your usage would have been throttled
00:54:32
◼
►
or you would have gone into those weird asterisks
00:54:34
◼
►
where they're like, you have a certain number of,
00:54:36
◼
►
amount of data to number of requests
00:54:38
◼
►
and if you exceed that, like, call us
00:54:40
◼
►
or whatever, you know, we'll call you
00:54:42
◼
►
or, you know, when you're not,
00:54:44
◼
►
when they're not your servers,
00:54:45
◼
►
you notice this because you're like,
00:54:47
◼
►
whoa, my servers are dying,
00:54:48
◼
►
but Apple's probably wouldn't die,
00:54:49
◼
►
but things would probably get slower
00:54:51
◼
►
and it would be like this sort of general malaise
00:54:54
◼
►
over overcast syncing, you'd be like,
00:54:55
◼
►
I wonder what's going on here.
00:54:56
◼
►
And I don't even, you wouldn't have access to probably like,
00:54:59
◼
►
Let me query the table to see what the max version number is.
00:55:01
◼
►
Oh, 600, that seems big, you know.
00:55:04
◼
►
So maybe you're on the right system after all.
00:55:09
◼
►
Maybe this is the best of all possible worlds for you.
00:55:12
◼
►
- We are sponsored this week by Audible.
00:55:15
◼
►
Go to audible.com for more than 250,000 audiobooks
00:55:19
◼
►
and spoken word audio products.
00:55:20
◼
►
Get a free 30 day trial today at audible.com/ATP.
00:55:25
◼
►
If you wanna listen to it, Audible has it.
00:55:26
◼
►
You can listen to audiobooks from virtually every genre, anytime, anywhere, on phones,
00:55:32
◼
►
tablets, computers, iPods if you still have an iPod, even if you happen to have a Kindle
00:55:36
◼
►
that has a headphone jack, a lot of the older models do, those can also play audiobooks
00:55:40
◼
►
from Audible.
00:55:42
◼
►
Audiobooks are great for flights, long road trips, even your daily commute.
00:55:45
◼
►
You might think you don't have time to read books, I think that a lot, but you'd be surprised
00:55:50
◼
►
how many audiobooks you can hear each year, even if you only listen to and from work every
00:55:54
◼
►
day, because that all adds up.
00:55:56
◼
►
bring books to life. Many of them are read by the authors themselves, adding an extra
00:56:00
◼
►
dimension to the text. You can take risks and try new authors and dramas without regret,
00:56:05
◼
►
because Audible offers their "Great Listen" guarantee. If you start an audiobook and don't
00:56:10
◼
►
like it, you can exchange it for another one for free. There's no risk. So you can see
00:56:14
◼
►
and listen for yourself. When you begin your free 30-day trial, you get your first audiobook
00:56:19
◼
►
for free. And there's no stress or obligation. You can cancel your membership at any time.
00:56:25
◼
►
with more than 250,000 audiobooks
00:56:27
◼
►
and spoken word audio products,
00:56:29
◼
►
you will find what you're looking for with Audible.
00:56:31
◼
►
Get a free 30-day trial today
00:56:33
◼
►
by signing up at audible.com/atp.
00:56:37
◼
►
That's audible.com/atp.
00:56:40
◼
►
Thanks to Audible for sponsoring our show.
00:56:43
◼
►
- So we should talk quickly about Quitter,
00:56:47
◼
►
which is your new Mac app.
00:56:50
◼
►
And we don't have to say too much about it
00:56:51
◼
►
'cause I presume you're gonna save a lot of this
00:56:53
◼
►
from under the radar,
00:56:54
◼
►
but I feel like we should at least mention it
00:56:56
◼
►
and hopefully you had at least a couple of things to say
00:56:59
◼
►
or at least recap what it is.
00:57:01
◼
►
- Yeah, so basically a few months back
00:57:03
◼
►
I wrote this blog post called Automatic Social Discipline
00:57:06
◼
►
and my idea was I've been struggling
00:57:09
◼
►
over the last few years to try to balance
00:57:11
◼
►
the time I spend on Twitter and other social-like
00:57:16
◼
►
distractions from the time I spend working.
00:57:19
◼
►
And because of the nature of what I do
00:57:22
◼
►
and the way I've chosen to go about my career
00:57:25
◼
►
and how to promote my stuff,
00:57:27
◼
►
I do kind of have to use Twitter and social tools
00:57:31
◼
►
on a semi-regular basis.
00:57:34
◼
►
And even if it's something simple,
00:57:36
◼
►
like when we start the live broadcast,
00:57:38
◼
►
I tweet from the ATP account,
00:57:40
◼
►
we're live now and we give a link.
00:57:42
◼
►
And when I make new blog posts,
00:57:44
◼
►
I also tweet about them to promote them
00:57:47
◼
►
because that's where a lot of traffic comes from these days.
00:57:49
◼
►
I have tried at various times
00:57:51
◼
►
to just not have Twitter apps installed at all on my desktop.
00:57:55
◼
►
It ends up just not working.
00:57:58
◼
►
Like I try only using it on my phone,
00:58:00
◼
►
or only using it on a laptop that I keep off to the side
00:58:04
◼
►
that isn't my main computer.
00:58:05
◼
►
I've tried all sorts of stupid things like that,
00:58:07
◼
►
and they never stick, because the reality is
00:58:11
◼
►
I do have to use Twitter on a semi-regular basis
00:58:14
◼
►
for my job, as well as for enjoyment in life.
00:58:18
◼
►
far the most efficient way for me to use Twitter is using Tweetbot on the Mac, by far. Like
00:58:25
◼
►
I'm so fast that I can go through so much, it's the Mac so everything's kind of like
00:58:29
◼
►
this multitasking quick environment, it's very, I'm very efficient with that. So if
00:58:33
◼
►
I'm going to be using Twitter for work, it should be on the Mac and it should be on my
00:58:37
◼
►
primary Mac, that's just how it works for me most efficiently. So the question is how
00:58:41
◼
►
do I manage that without spending so much time on Twitter all the time, not ever getting
00:58:46
◼
►
any work done? And the answer of course is self control. But I don't have enough of that
00:58:51
◼
►
when it comes to this, so we have to start building hacks and tools. Like, for it to
00:58:55
◼
►
solve many people's self control issues with other things, like this is what we do, right?
00:58:59
◼
►
We try to hack around, we try to build self control replacement tools, or at least assistance
00:59:03
◼
►
tools. And I started seeing this as a problem with Twitter because I use the app called
00:59:09
◼
►
Rescue Time, which is basically a like app time tracking app. It sits in your menu bar
00:59:15
◼
►
It uses a web service which is a little bit creepy,
00:59:17
◼
►
I'm a little wary about that,
00:59:20
◼
►
but it sits in your menu bar
00:59:21
◼
►
and it watches what apps you're using and it times it.
00:59:24
◼
►
And it categorizes things into like work
00:59:26
◼
►
versus entertainment versus whatever.
00:59:28
◼
►
And then every week it emails you a report saying,
00:59:32
◼
►
this week you worked on your computers for X hours
00:59:36
◼
►
and you spent six hours in Xcode, five hours in Logic,
00:59:40
◼
►
four hours in Adobe Audition.
00:59:41
◼
►
And then like every week I was also seeing
00:59:44
◼
►
four hours in Tweetbot. And it's like, "Ooh, that's a lot of time spent in Tweetbot."
00:59:50
◼
►
It started to add up over about a year. I'm like, "You know, this is really not comfortable.
00:59:55
◼
►
Like, I need to do something about this." Because I kept feeling like I wanted to work
01:00:00
◼
►
better and use my time more effectively and get more done. And every week I could be getting
01:00:04
◼
►
these emails saying, "Hey, you're using Twitter. You used Twitter for six hours this
01:00:08
◼
►
week. Oh my God." And then Slack came around and made the problem even worse because now
01:00:13
◼
►
Slack is even worse for blending work and distraction
01:00:18
◼
►
because it's made for work communication.
01:00:22
◼
►
And it's so easy to just become a constant drain
01:00:26
◼
►
of your attention and just constant peppering
01:00:29
◼
►
all day of little tiny distractions.
01:00:31
◼
►
Anyway, I started seeing Slack bubble up in the list as well
01:00:35
◼
►
and then all of a sudden I'm spending like six hours a day
01:00:37
◼
►
on Slack and Twitter combined, or not a day,
01:00:40
◼
►
six hours a week on Slack and Twitter
01:00:43
◼
►
And it just, it started becoming so many hours,
01:00:45
◼
►
I'm just like, my God, this is like,
01:00:47
◼
►
this is eating into all of my productivity,
01:00:49
◼
►
six hours, eight hours.
01:00:50
◼
►
This is terrible, I have to do something about this.
01:00:53
◼
►
As I said, a few months ago, I wrote this post
01:00:55
◼
►
called Automatic Social Disciplines.
01:00:56
◼
►
What I did was I basically just wrote an Apple script
01:00:59
◼
►
and I scheduled it with Launch D.
01:01:01
◼
►
Every 10 minutes, it would run and it would just check,
01:01:05
◼
►
is Tweetbot the active app right this second?
01:01:08
◼
►
If not, quit the app.
01:01:09
◼
►
And same thing with Slack.
01:01:10
◼
►
If Slack is the active app right now, keep it,
01:01:13
◼
►
otherwise, kill it.
01:01:14
◼
►
And that ended up being way too aggressive for Slack,
01:01:17
◼
►
because I do use Slack, oftentimes, for work purposes.
01:01:20
◼
►
In fact, the majority of the time I'm using Slack,
01:01:22
◼
►
it's for work purposes, actually.
01:01:23
◼
►
So, that, like, I couldn't have Slack be just quit
01:01:28
◼
►
constantly, like, 'cause the way this would work, too,
01:01:30
◼
►
it's like, it was just checking every 10 minutes
01:01:32
◼
►
and saying, are you active right now, if not, quit.
01:01:35
◼
►
So, oftentimes, you'd be, you know, click on Slack,
01:01:38
◼
►
type something, switch to another window,
01:01:40
◼
►
and two seconds later, Slack disappears.
01:01:43
◼
►
Like, okay, this is kind of unfortunate.
01:01:46
◼
►
Same thing with Twitter and everything.
01:01:49
◼
►
It was just, it was a little bit too dumb of a solution.
01:01:52
◼
►
Recently, I started making a Mac app called Quitter.
01:01:57
◼
►
And it sits in the menu bar,
01:01:59
◼
►
and because a native app has a way better way to do this,
01:02:02
◼
►
rather than just like constantly polling
01:02:04
◼
►
to see like what's the active app right now?
01:02:07
◼
►
you can actually observe the current workspace.
01:02:11
◼
►
And there's no polling involved.
01:02:14
◼
►
You get notified when the active window
01:02:16
◼
►
or the active application changes.
01:02:19
◼
►
And so now I'm able to do things way more efficiently
01:02:22
◼
►
and way smarter, where now I can have it watch for changes
01:02:26
◼
►
and for the list of apps that you want to quit
01:02:29
◼
►
after certain time intervals, it can quit them
01:02:32
◼
►
not every 10 minutes checking to see if they're running
01:02:34
◼
►
and then quitting them immediately,
01:02:35
◼
►
but it can start the timer when you click away from the app.
01:02:40
◼
►
And then after a certain amount of time
01:02:41
◼
►
where you don't click back to the app,
01:02:43
◼
►
then it can fire the timer and quit them.
01:02:45
◼
►
Or else you build the option to hide them for Slack,
01:02:48
◼
►
'cause for me that's more efficient
01:02:49
◼
►
for the amount I use Slack.
01:02:51
◼
►
So basically the Mac app version of this is way better.
01:02:54
◼
►
It also isn't an Apple script that has to have
01:02:57
◼
►
a launch D command line process to register and register it.
01:03:01
◼
►
So it's also a lot more friendly for other people to use
01:03:04
◼
►
and for me to distribute as a thing people use.
01:03:07
◼
►
Now the effect of running this app
01:03:09
◼
►
is that it really does work.
01:03:11
◼
►
For me, because I've been measuring this with RescueTime,
01:03:14
◼
►
I've been using first that script
01:03:16
◼
►
and then a few weeks ago switching to this app,
01:03:18
◼
►
been using this for a while now,
01:03:19
◼
►
and I have seen a reliable drop in my usage hours
01:03:24
◼
►
as reported by RescueTime of these social apps
01:03:27
◼
►
that I keep forcibly quitting.
01:03:29
◼
►
It also has the interesting effect where
01:03:32
◼
►
It just makes Twitter just seem unreliable.
01:03:35
◼
►
The effect is basically it seems like Tweetbot
01:03:38
◼
►
just crashes every few minutes.
01:03:40
◼
►
So it kind of keeps it a little bit in check for me.
01:03:43
◼
►
It's not this thing that's always there.
01:03:44
◼
►
Like there's not always a new thing I could be looking at.
01:03:47
◼
►
Also critically, I set it so that these apps
01:03:50
◼
►
are not in my dock, they're not running.
01:03:52
◼
►
So that when they get force quit, they're just gone.
01:03:54
◼
►
They're out of sight, out of mind.
01:03:56
◼
►
Like you have to then explicitly think,
01:03:59
◼
►
oh, I want to go check Twitter now.
01:04:01
◼
►
And so what I'm able to do, not only has the total amount
01:04:05
◼
►
of time spent in these apps dropped noticeably,
01:04:07
◼
►
probably by at least 50%, if I can guess,
01:04:10
◼
►
but I'm also finding that I'm now much more often
01:04:14
◼
►
having long, productive spans.
01:04:16
◼
►
'Cause that was where these apps really hurt,
01:04:19
◼
►
is in that constant peppering of new stuff coming in
01:04:23
◼
►
every minute, every 30 seconds, or something new to look at,
01:04:25
◼
►
and you're constantly context switching back and forth,
01:04:28
◼
►
both technically and mentally, or context switching.
01:04:31
◼
►
And that to me is just, it just destroys
01:04:35
◼
►
any kind of meaningful productivity I'm having
01:04:37
◼
►
on things like coding or editing a podcast or writing.
01:04:40
◼
►
These things that just like, I was having such a hard time
01:04:44
◼
►
staying focused on my work when these things
01:04:46
◼
►
just kept coming in on like a background window.
01:04:48
◼
►
It's just, oh, it's off to the side.
01:04:49
◼
►
Look, oh, there's something new to read.
01:04:50
◼
►
New app reply, new site things,
01:04:52
◼
►
somebody being funny, whatever.
01:04:54
◼
►
Now these apps are so frequently just removed from view
01:04:58
◼
►
that I'm able to have these long productive spans
01:05:02
◼
►
where I can code for three hours straight,
01:05:05
◼
►
four hours straight.
01:05:06
◼
►
I can write an entire blog post
01:05:08
◼
►
and then open up Twitter after I publish it
01:05:11
◼
►
to go promote it.
01:05:12
◼
►
It just, it really has changed the way I work a lot
01:05:16
◼
►
and it also gave me an excuse to learn
01:05:19
◼
►
how to write stuff for the Mac
01:05:20
◼
►
'cause I really, I've had a few little apps for myself
01:05:25
◼
►
or toy apps or like, you know, kind of half-butted apps
01:05:29
◼
►
that were not at all releasable.
01:05:31
◼
►
But for the most part, I really don't know
01:05:32
◼
►
how to make Mac software.
01:05:34
◼
►
At least I don't know how to make good Mac software,
01:05:35
◼
►
I should say.
01:05:37
◼
►
And so this was kind of a nice intro.
01:05:39
◼
►
I've been wanting to learn it for a while,
01:05:41
◼
►
and this was kind of a nice intro to start that.
01:05:45
◼
►
It's not in the App Store, 'cause it can't be.
01:05:46
◼
►
It can't be Sandbox, 'cause Sandbox apps
01:05:48
◼
►
can't quit other apps.
01:05:49
◼
►
And it's fine, I'm just distributing it.
01:05:51
◼
►
It's free, it's just a zip file.
01:05:52
◼
►
You download it on my website.
01:05:53
◼
►
It's kind of amazing to distribute software this way
01:05:55
◼
►
for somebody who's only ever really professionally
01:05:57
◼
►
worked in the app store.
01:05:59
◼
►
When we talked about this a few weeks back on the show,
01:06:01
◼
►
I got the impression that pretty much nobody wanted this
01:06:05
◼
►
except me, which is not unusual for things I make,
01:06:09
◼
►
I make all sorts of crazy stuff for myself
01:06:10
◼
►
that nobody else would ever want.
01:06:13
◼
►
This, I really thought was one of those things,
01:06:15
◼
►
but it ends up I released it,
01:06:17
◼
►
and it's gotten over 25,000 downloads,
01:06:20
◼
►
and it's free.
01:06:21
◼
►
I'm not making anything off of it, at least not yet.
01:06:23
◼
►
who knows if I ever will, but a lot of people
01:06:26
◼
►
at least want to try this, and that's pretty cool.
01:06:29
◼
►
I don't think it'll ever become anything big.
01:06:31
◼
►
I mean, if I wanted to give it all my time,
01:06:34
◼
►
maybe I could basically make it rescue time replacement
01:06:37
◼
►
or something like that, but I don't think it's worth
01:06:39
◼
►
quite that much, but it is really cool
01:06:42
◼
►
to just kind of see the other side,
01:06:45
◼
►
to see what it's like having a Mac app,
01:06:47
◼
►
to see what Mac programming is like to a very small extent,
01:06:50
◼
►
and to distribute apps directly, that's kind of cool.
01:06:52
◼
►
And I just am really happy that it works,
01:06:55
◼
►
that I've actually solved this problem I had.
01:06:58
◼
►
And I'm not perfect yet by any means,
01:07:00
◼
►
but this is by far the most effective method
01:07:04
◼
►
that I've come up with yet for maintaining
01:07:07
◼
►
a healthy balance of distracting apps
01:07:09
◼
►
versus getting work done.
01:07:12
◼
►
- I think the app has two big things going for it.
01:07:13
◼
►
One, free, everyone loves free, right?
01:07:15
◼
►
And second, it's got the same thing going for it
01:07:17
◼
►
that self-help books have.
01:07:19
◼
►
Everyone just somebody feels the thing
01:07:20
◼
►
you're talking about, but it's like, boy, I wish I could be more productive and I was less distracted
01:07:24
◼
►
or whatever. And it's like you said, well, why don't you just not be distracted? Well, you know,
01:07:28
◼
►
people will need, people want tools to help them with that. They say like, I've been trying to do
01:07:32
◼
►
it with just sort of willpower alone or trying to change my habit or turn over relief and it hasn't
01:07:36
◼
►
been working. Is there something I can do? Is there some system I can employ or better yet,
01:07:42
◼
►
product I can buy or better yet still, product I can get for free that will help me along this.
01:07:47
◼
►
And so, yeah, who doesn't like it?
01:07:50
◼
►
Who wouldn't download this app?
01:07:52
◼
►
If people know you and they know you write software
01:07:54
◼
►
and everybody has that feeling
01:07:55
◼
►
that they're not particularly productive
01:07:57
◼
►
and you offer a download for free, click on it.
01:07:59
◼
►
There you go, you got it.
01:08:01
◼
►
That offers a way to potentially help you be more productive.
01:08:04
◼
►
I bet a lot of people can try it.
01:08:05
◼
►
How many people find it useful and stick with it?
01:08:08
◼
►
I don't know if you have any statistics on that,
01:08:10
◼
►
but that is like a lot of self-help things.
01:08:13
◼
►
Some systems work for some people,
01:08:15
◼
►
sometimes they don't work for other people, so who knows?
01:08:17
◼
►
Since it's free, I don't think you really care one way or the other, but yeah, I feel
01:08:21
◼
►
like the only way you could really turn this into a serious endeavor is to basically be
01:08:25
◼
►
a better rescue time.
01:08:28
◼
►
And before you do that, you should probably talk to the rescue time people to ask how
01:08:32
◼
►
their business is going before you go and try to take it all, because it could be that
01:08:35
◼
►
if you totally replace rescue time in the market, you would still make no money because
01:08:39
◼
►
it's not a big market, but who knows?
01:08:41
◼
►
Yeah, I mean, the money thing is an interesting question.
01:08:43
◼
►
I don't know what it's like to sell Mac software. I'm still not doing that. So I
01:08:49
◼
►
don't know what the market is. I'm sure like any kind of software, it probably depends
01:08:54
◼
►
a lot on what exactly you're selling. I have no idea. Rescue Time I haven't actually
01:08:58
◼
►
paid for. Their business model is I think some kind of like premium service or something.
01:09:04
◼
►
I don't know. I've been using it for years and never give them a dime. So whatever their
01:09:08
◼
►
business model is does not include me in it. So maybe that's a problem. I don't know.
01:09:12
◼
►
I'm not going to know what the money market is like
01:09:16
◼
►
on Mac stuff unless I actually try it.
01:09:18
◼
►
And I don't know if I'm ready to do that yet
01:09:21
◼
►
or what I would do that with necessarily,
01:09:24
◼
►
but I do think it's interesting to consider.
01:09:26
◼
►
I don't know.
01:09:27
◼
►
And for whatever it's worth,
01:09:28
◼
►
I don't have analytics running in the app,
01:09:31
◼
►
but the app does include Sparkle
01:09:33
◼
►
to check my server for updates,
01:09:35
◼
►
which is the thing you have to worry about.
01:09:37
◼
►
How does your app update itself
01:09:38
◼
►
when you're outside of the Mac App Store?
01:09:40
◼
►
And so I have, I checked while you were talking there
01:09:43
◼
►
at this moment, I was listening also, don't worry,
01:09:45
◼
►
but I checked as you were talking,
01:09:47
◼
►
and at this moment I have 27,000 downloads of the zip file
01:09:51
◼
►
and 2,500 IPs that have been checking
01:09:55
◼
►
the auto update XML file.
01:09:57
◼
►
So roughly a 10% rate of people who are actually
01:10:01
◼
►
running this app after downloading it,
01:10:03
◼
►
which I think is actually pretty good.
01:10:06
◼
►
I mean, that's roughly in line with what I would expect.
01:10:09
◼
►
- Especially since you don't have one of those little
01:10:10
◼
►
disk images that opens that shows your app icon
01:10:13
◼
►
and an arrow drawn on the window background
01:10:15
◼
►
showing you dragging into a send link to slash applications.
01:10:19
◼
►
I mean, you laugh at that, but like,
01:10:21
◼
►
one of the advantages of the Mac App Store
01:10:22
◼
►
is that you press a button in the Mac App Store,
01:10:24
◼
►
and in theory, an application appears
01:10:26
◼
►
in your application folder, right?
01:10:28
◼
►
There's no other process, whereas--
01:10:30
◼
►
- But then that's also mitigated,
01:10:32
◼
►
that's mitigated by the problem of like,
01:10:34
◼
►
A, all right, I clicked this app, I bought it,
01:10:36
◼
►
now where is it?
01:10:38
◼
►
How do I launch it?
01:10:39
◼
►
You know, if people can find launch, what do you call it?
01:10:41
◼
►
Launch, what is the thing called?
01:10:43
◼
►
- Launchpad. - Launchpad.
01:10:44
◼
►
Yeah, it's in your dock by default for regular people
01:10:46
◼
►
and if they just download it, it'll be all sparkly
01:10:49
◼
►
and they should be able to find it.
01:10:50
◼
►
But like, what you're doing is, best case scenario
01:10:52
◼
►
with the default settings, they click your zip file
01:10:54
◼
►
in Safari, it automatically unzips it.
01:10:56
◼
►
And what they end up is your application icon
01:10:59
◼
►
in their downloads folder.
01:11:00
◼
►
If they even know how to get to your downloads folder,
01:11:02
◼
►
it's a very good chance that if they can even find
01:11:04
◼
►
your application icon, they'll just double click it
01:11:07
◼
►
and run it from your downloads folder,
01:11:08
◼
►
which will probably work fine for your application
01:11:10
◼
►
unless you have specific code that says,
01:11:11
◼
►
"Hey, it looks like you've launched me
01:11:12
◼
►
"from the downloads folder.
01:11:13
◼
►
"Would you like me to quit and put myself
01:11:15
◼
►
"into the application folder and relaunch myself?"
01:11:18
◼
►
- Because you can't figure out how to install apps?
01:11:19
◼
►
- No, there's actually an open source thing
01:11:21
◼
►
that's like move to application folder.
01:11:23
◼
►
Like you've probably seen a lot of apps that offer this.
01:11:25
◼
►
- Yeah, yeah, yeah, I know, but this is all,
01:11:26
◼
►
these are all problems that are not part
01:11:30
◼
►
of the Mac App Store experience.
01:11:31
◼
►
Like you said, the auto-optating with Sparkled,
01:11:33
◼
►
handled by the Mac App Store,
01:11:35
◼
►
And the general problem of how do I quote unquote install
01:11:39
◼
►
a Mac application, obviously anyone who knows anything
01:11:41
◼
►
about Macs, this is not a problem at all.
01:11:43
◼
►
But if you ever want to go to a broader market,
01:11:45
◼
►
which may not be like people who read your blog
01:11:48
◼
►
and your Twitter feed and download your applications
01:11:50
◼
►
'cause they know you, all those people probably know
01:11:52
◼
►
how to install applications.
01:11:53
◼
►
But I can tell you in the general public,
01:11:54
◼
►
anything that involves even an auto expanding zip file
01:11:58
◼
►
or a disk image or where do you put the application
01:12:00
◼
►
and stuff like that, it is, boy, it is still one of the areas
01:12:04
◼
►
that I think is underestimated,
01:12:08
◼
►
people don't talk about it much these days,
01:12:10
◼
►
but it's one of the huge advantages that iOS
01:12:13
◼
►
and phone apps and app stores have in general
01:12:15
◼
►
is like, see app I want, put finger on screen,
01:12:19
◼
►
now I have app, tap, tap, like that's it.
01:12:22
◼
►
There is no mounting and unmounting,
01:12:24
◼
►
speaking of Casey, you can't use BK's disk images.
01:12:28
◼
►
There are no zip files, there are no expanding,
01:12:29
◼
►
there's no dragging things to folders,
01:12:31
◼
►
there's none of that stuff.
01:12:33
◼
►
The Mac App Store is not as bad as zip files or DMGs,
01:12:36
◼
►
but it's still not as good as the iOS App Store.
01:12:38
◼
►
And that simple part, that simple aspect of like,
01:12:40
◼
►
how can we get more people to download and use more apps?
01:12:45
◼
►
It's like you gotta get rid of the part
01:12:46
◼
►
where they have to quote unquote install it at all.
01:12:50
◼
►
- Yeah, agreed.
01:12:50
◼
►
I mean, the whole system, especially with DMGs,
01:12:52
◼
►
I mean, that's like, the idea,
01:12:55
◼
►
just the idea of a disk image is,
01:12:58
◼
►
it's such like a geeky abstraction
01:13:00
◼
►
that is very confusing and tedious to manage for people.
01:13:03
◼
►
Like it's how that ever became the standard, I have no idea.
01:13:07
◼
►
- Disk images are awesome technologically speaking.
01:13:10
◼
►
They were, especially they were awesome
01:13:11
◼
►
in the classic Mac OS days because you, you know,
01:13:13
◼
►
I mean like for a tech savvy people,
01:13:15
◼
►
disk images are an amazing convenience and a great thing,
01:13:18
◼
►
but as a way, as the way to distribute software
01:13:21
◼
►
is one of two major ways.
01:13:22
◼
►
Like in the OS X era, it's like you've got your zip file
01:13:25
◼
►
that expands to an app bundle is one way.
01:13:27
◼
►
And then you've got your disk image and it's the other way.
01:13:29
◼
►
And then the Mac app store is off to the side there.
01:13:31
◼
►
And both of those systems have problems for novice users.
01:13:36
◼
►
- Yeah, totally.
01:13:37
◼
►
- Does this make you think any differently
01:13:39
◼
►
about some of those tools that you've developed for yourself
01:13:42
◼
►
that are native Mac apps?
01:13:44
◼
►
Does it make you think differently
01:13:45
◼
►
about perhaps releasing them for real?
01:13:47
◼
►
- It does, yeah.
01:13:48
◼
►
But I also, I saw with Quitter,
01:13:51
◼
►
this is a very, very simple app.
01:13:54
◼
►
And even just getting it up to a minimum level of quality
01:13:58
◼
►
that I would want to actually release it to the public,
01:14:01
◼
►
was probably more work than it deserves,
01:14:06
◼
►
like logically business-wise.
01:14:08
◼
►
This was a distraction for me for the most part.
01:14:11
◼
►
It might become a business someday, but it isn't today.
01:14:14
◼
►
- Should've just used Quitter to quit Xcode
01:14:15
◼
►
when it wasn't the front-most app.
01:14:17
◼
►
Stop distracting you from your important
01:14:18
◼
►
Slack and Twitter work.
01:14:22
◼
►
Oh my goodness.
01:14:24
◼
►
- Quitter is totally a distraction.
01:14:25
◼
►
- I mean one of the things is,
01:14:26
◼
►
like a few hours after I released Quitter,
01:14:30
◼
►
there were a few kind of embarrassing
01:14:32
◼
►
little shortcomings and bugs.
01:14:34
◼
►
One of the biggest things was in the app,
01:14:37
◼
►
I never explained the idea of quitting
01:14:40
◼
►
after X minutes of what.
01:14:43
◼
►
And a lot of people who downloaded it,
01:14:45
◼
►
who didn't read the post very closely,
01:14:47
◼
►
said, "Well, I told her to quit after a half hour.
01:14:49
◼
►
"It didn't quit, what happened?"
01:14:50
◼
►
- Your app is broken, one star useless.
01:14:53
◼
►
- Right, and so there was this completely
01:14:56
◼
►
embarrassing oversight where in the app,
01:14:58
◼
►
it never said anything about quitting after what?
01:15:01
◼
►
Like, so, and the answer is quitting after inactivity,
01:15:03
◼
►
which is defined as not being the foreground application.
01:15:06
◼
►
- Yeah, yeah, I wouldn't guess
01:15:08
◼
►
that that's what inactivity means.
01:15:10
◼
►
I would guess inactivity means like the app
01:15:11
◼
►
isn't doing everything, like, hey, quit my mail app,
01:15:13
◼
►
but it was totally downloading mail in the background.
01:15:15
◼
►
- Well, nobody downloads mail anymore,
01:15:16
◼
►
but like some people have said, like, why,
01:15:18
◼
►
like it quit iTunes when it was playing music.
01:15:21
◼
►
It's like, okay, well, that's, yeah, that's interesting.
01:15:23
◼
►
But, you know, so the app had a number of like,
01:15:26
◼
►
and the other major shortcoming is
01:15:28
◼
►
The app itself, it didn't have an about screen
01:15:31
◼
►
or anything really to tell you like,
01:15:33
◼
►
if you just forgot about where you got this app
01:15:36
◼
►
and a few months later you just saw this app
01:15:38
◼
►
and you launched it, you'd have no idea where it came from,
01:15:42
◼
►
how to get more information about it,
01:15:45
◼
►
like who made it, because there was no information
01:15:49
◼
►
in the app about the app.
01:15:52
◼
►
And so the combination of a couple of those minor,
01:15:54
◼
►
oh and you could also enter negative times, that was fun.
01:15:57
◼
►
So a couple of like, you know, just minor polish flaws,
01:16:02
◼
►
basically, like, you know, areas in which I did not make
01:16:04
◼
►
a releaseable quality app, but released anyway,
01:16:07
◼
►
I wanted to issue a quick update.
01:16:09
◼
►
So I fixed all the problems, tested it with all sorts
01:16:13
◼
►
of unit tests and integration tests and parking lot tests,
01:16:16
◼
►
and then I just put the new zip file on my server
01:16:20
◼
►
and regenerated the sparkle manifest,
01:16:22
◼
►
which I have a script to do in one command,
01:16:25
◼
►
and it was released immediately to everyone.
01:16:29
◼
►
- Neat, huh?
01:16:30
◼
►
- Nobody had to approve it.
01:16:32
◼
►
It didn't have to sit around and wait for days.
01:16:35
◼
►
I knew that in the really worst case scenario,
01:16:37
◼
►
if I really botched things in this update,
01:16:39
◼
►
I could just issue another one.
01:16:41
◼
►
It was kind of amazing.
01:16:45
◼
►
And of course, like every Mac programmer is like,
01:16:48
◼
►
ugh, these stupid iOS fools.
01:16:51
◼
►
They don't know what they're missing, and yeah.
01:16:52
◼
►
Now I know what I'm missing,
01:16:54
◼
►
And so it's kind of intoxicating.
01:16:57
◼
►
And I can see where it could be dangerous,
01:16:59
◼
►
but the appeal to me of just distributing apps
01:17:03
◼
►
directly to people without this giant middleman
01:17:07
◼
►
that is really opinionated and picky and slow
01:17:09
◼
►
is very appealing on a number of levels.
01:17:13
◼
►
I think the experience of doing this,
01:17:15
◼
►
first of all, I have seen,
01:17:17
◼
►
I've seen just enough of what it's like
01:17:20
◼
►
to develop a Mac app, like with AppKit and everything,
01:17:21
◼
►
I've seen just enough of it to know
01:17:23
◼
►
it would take me a long time to become an expert at it
01:17:26
◼
►
and that it's not easy and that there's lots of things
01:17:28
◼
►
to think about and consider.
01:17:29
◼
►
It also showed me that it's possible
01:17:31
◼
►
and that there is some kind of market here.
01:17:33
◼
►
I don't know how big the market is
01:17:35
◼
►
for all the other stuff I'd wanna make,
01:17:36
◼
►
but there is a market there.
01:17:37
◼
►
And the idea of direct access to your customers
01:17:41
◼
►
is so refreshing and foreign to me.
01:17:45
◼
►
I am definitely going to be more likely
01:17:47
◼
►
to try to make more Mac apps in the future.
01:17:50
◼
►
And who knows what, if anything,
01:17:52
◼
►
will actually come out of that feeling to the public,
01:17:55
◼
►
you know, eventually, but I'm certainly interested.
01:17:58
◼
►
I'm much more likely to try it now than I was before.
01:18:01
◼
►
- Wait 'til you learn you can charge $99 for 'em.
01:18:04
◼
►
- Yeah, but then you have to answer support email.
01:18:08
◼
►
- That's a good question, I don't know.
01:18:11
◼
►
- You gotta think outside the box.
01:18:12
◼
►
$99, no support.
01:18:14
◼
►
If anyone could pull it off, it's Marco.
01:18:17
◼
►
- Our final sponsor tonight is Hover.
01:18:19
◼
►
Hover's the best way to buy and manage domain names.
01:18:21
◼
►
Go to hover.com and use promo code eggeverything
01:18:25
◼
►
for 10% off your first purchase.
01:18:27
◼
►
When you have a great idea, you want a great domain name
01:18:29
◼
►
that's catchy and memorable,
01:18:31
◼
►
Hover gives you exactly what you need
01:18:32
◼
►
to find the perfect domain for your idea
01:18:34
◼
►
so you can get started actually working on it.
01:18:36
◼
►
Hover gives you easy to use powerful tools
01:18:38
◼
►
to buy and manage domains.
01:18:39
◼
►
Anybody can do it at any skill level.
01:18:42
◼
►
And if you need a hand, their support team is always ready.
01:18:44
◼
►
In fact, they have, if you wanna use it, you can call them.
01:18:47
◼
►
They have a no-wait, no-hold, no-transfer phone support line
01:18:51
◼
►
so that when you call, an actual human being
01:18:54
◼
►
picks up the phone, no menus, none of that,
01:18:56
◼
►
an actual human being picks up the phone
01:18:58
◼
►
and that person can help you.
01:19:00
◼
►
There's no transferring you to five different departments,
01:19:02
◼
►
no going through robot menus, you just call them
01:19:04
◼
►
and a person picks up, the way things used to be
01:19:06
◼
►
at every business, Hover is like that today.
01:19:10
◼
►
So in less than five minutes, you can find the domain name
01:19:12
◼
►
you want, you can get it up and running,
01:19:14
◼
►
all you have to do is search for a few keywords
01:19:16
◼
►
and Hover will show you the best available options
01:19:18
◼
►
across all of the many, many domain name ending options
01:19:24
◼
►
So there's .com, .net, all the old ones,
01:19:26
◼
►
and there's all the new ones like .diamonds, .plumbing.
01:19:28
◼
►
There's so many domain names now.
01:19:30
◼
►
Hover can search all of them for you.
01:19:31
◼
►
Now if you've ever registered a domain name anywhere else,
01:19:34
◼
►
you know that at other places
01:19:35
◼
►
this can be an unpleasant experience.
01:19:37
◼
►
You might be confused,
01:19:38
◼
►
you might feel like you're getting ripped off
01:19:39
◼
►
or having the wool pull over your eyes.
01:19:41
◼
►
You might have these weird upsells
01:19:43
◼
►
that you didn't really think you needed
01:19:44
◼
►
but they're charging you extra for.
01:19:45
◼
►
Hover does not believe in this stuff
01:19:47
◼
►
and Hover is very well designed, very easy to use.
01:19:50
◼
►
They don't do heavy handed upselling
01:19:51
◼
►
of weird packages and privacy things.
01:19:54
◼
►
No, they give you what you need at the base price.
01:19:57
◼
►
They even offer something called Valley Transfer Service,
01:19:59
◼
►
which is really cool.
01:20:00
◼
►
If you have names somewhere else
01:20:02
◼
►
that you want to migrate to Hover,
01:20:04
◼
►
you can do it yourself, it's fine.
01:20:05
◼
►
It's a little bit tedious and error prone though.
01:20:07
◼
►
So if you want, you can give them the login
01:20:09
◼
►
to your old domain name registrar
01:20:11
◼
►
and they will do the move for you for free,
01:20:13
◼
►
for any number of domains.
01:20:15
◼
►
So check it out, they have email, they have forwarding,
01:20:17
◼
►
and they have all sorts of stuff you could use,
01:20:19
◼
►
go to hover.com, check this out for yourself,
01:20:21
◼
►
use promo code eggeverything, one word, that's eggeverything,
01:20:25
◼
►
which I believe is a canonical bagel flavor,
01:20:28
◼
►
for 10% off your first purchase.
01:20:30
◼
►
Thank you very much to Hover for sponsoring our show.
01:20:33
◼
►
- So did you guys hear that Apple's doomed?
01:20:36
◼
►
- Doomed, I tell you.
01:20:37
◼
►
- Oh, they're fine, they're gonna be fine,
01:20:39
◼
►
they're gonna keep generating tons of money, who cares?
01:20:42
◼
►
Wall Street cares.
01:20:43
◼
►
I totally get why Wall Street cares
01:20:45
◼
►
about Apple's financial performance,
01:20:47
◼
►
'cause that's their job.
01:20:48
◼
►
It's Wall Street's job to care about
01:20:50
◼
►
quarterly earnings and stuff.
01:20:51
◼
►
As an Apple user, and even as an Apple developer,
01:20:54
◼
►
I honestly don't care.
01:20:56
◼
►
It's worth hearing in broad strokes,
01:20:58
◼
►
oh, the iPad's down, everything's kinda sagging
01:21:01
◼
►
for a quarter, eh.
01:21:02
◼
►
If everything sags for a year, let me know.
01:21:05
◼
►
That might be more interesting.
01:21:06
◼
►
But to have these little quarterly updates of,
01:21:08
◼
►
oh, well this year, this quarter was a little bit worse
01:21:11
◼
►
than last year, this quarter,
01:21:12
◼
►
and that particular pattern hasn't happened in a long time,
01:21:15
◼
►
even though they made billions of dollars.
01:21:16
◼
►
"Okay, well, it's the kind of thing that if you're an analyst or if you're the kind of
01:21:20
◼
►
person who reads analysts, this matters to you. But if you are a user or a developer
01:21:26
◼
►
or a fan, I just don't see how the finance stuff matters."
01:21:29
◼
►
Well, I think Apple's reaction to the finance stuff might matter. Like, not so much the
01:21:33
◼
►
results themselves of what Apple says about them. Like, you know, that's why they listen
01:21:37
◼
►
to the earnings calls or read transcripts of them or whatever. Yeah, you want to get
01:21:40
◼
►
the news, and the news is, you know, trends are continuing and there are no surprises.
01:21:44
◼
►
because Apple gives guidance on what it thinks its financial results are going to be next
01:21:48
◼
►
quarter and then the next quarter comes and thus far they've pretty much been within their
01:21:52
◼
►
guidance they give a range like well we expect low of this and high of that and they land
01:21:55
◼
►
somewhere in the middle of it and people still freak out about it Wall Street still freaks out
01:22:00
◼
►
but whatever like it's not it's not earth-shattering but what Apple says during those calls to I mean
01:22:05
◼
►
for the most part what Apple is trying to do during these calls is to if something seems bad
01:22:09
◼
►
Apple says something to make it seem not so bad because Apple doesn't like it when they're
01:22:14
◼
►
stock price goes down, right? And if things are good, Apple trumpets that they're good and tells
01:22:21
◼
►
you why they're good and how amazing it is and you know how proud they are and blah blah blah.
01:22:24
◼
►
And that's the more interesting part of earnings is how the company reacts and
01:22:28
◼
►
this this recent one and in the lead up to this recent set of results, the thing I've been
01:22:35
◼
►
noticing about Apple is the emphasis on their services business. They're talking about it,
01:22:42
◼
►
you know every chance they get and during the earnings call they emphasize it as a growth you
01:22:45
◼
►
know as the part of their business that's growing and doing well um and that that bothers me a
01:22:54
◼
►
little bit well it bothers me and it could be a good thing first let's say the optimistic side
01:22:59
◼
►
it could be a good thing in that all right services business is growing and apple you know what is the
01:23:04
◼
►
good news apple well iphone sales are down year over year but they're still doing really well
01:23:08
◼
►
but if you want a story about something that's growing hey we've got things that are growing too
01:23:11
◼
►
because that's what everyone's always looking for, you know, where is the growth going to come from next?
01:23:14
◼
►
It doesn't seem like it's going to be the Apple Watch, at least not for a little while, or wearables or whatever,
01:23:19
◼
►
but services are growing, and that's good.
01:23:21
◼
►
And Apple wants to emphasize that, and maybe, by emphasizing services, and by making more and more money from it,
01:23:28
◼
►
it will make Apple invest more in it, because if they see that as their next big growth opportunity,
01:23:32
◼
►
they will, you know, they will invest in themselves and try to continue to make it grow, and that will be better,
01:23:36
◼
►
because, historically speaking, Apple services have not been great.
01:23:39
◼
►
On the flip side, the pessimistic side, I feel like Apple can be proud of the growth of its services segment,
01:23:47
◼
►
but also not really get any better at services. Like, I don't know if you can turn Apple into a services company.
01:23:56
◼
►
They seem so far from, we talked about it before about them, you know, the CloudKit versus, you know,
01:24:01
◼
►
Microsoft Azure or AWS or any of these other things,
01:24:05
◼
►
they just don't seem like they understand
01:24:09
◼
►
what it takes to be really great there.
01:24:11
◼
►
And if that's going to become an important part
01:24:14
◼
►
of the business, they need to get way better at it.
01:24:16
◼
►
And it seems, instead what it seems to me is
01:24:19
◼
►
they're finding ways to make more money
01:24:20
◼
►
from their existing customers,
01:24:22
◼
►
and that's growing their quote unquote services revenue.
01:24:24
◼
►
Hey, we have all these people who buy these devices
01:24:25
◼
►
that they love, can we find more ways to monetize them?
01:24:29
◼
►
which I guess is fine as far as business models go,
01:24:33
◼
►
even though it's kind of been the inverse
01:24:34
◼
►
of what it's always been, which is buy our hardware
01:24:36
◼
►
and the services just make our hardware more attractive.
01:24:38
◼
►
Now it's like all those people who have our hardware,
01:24:41
◼
►
they're a potential source of service revenue,
01:24:42
◼
►
so we should make services for them.
01:24:44
◼
►
But when I look at the services they offer,
01:24:46
◼
►
I don't feel like for the most part
01:24:48
◼
►
they're best in class in any category, you know?
01:24:50
◼
►
And if you're going to be,
01:24:52
◼
►
if your next big growth opportunity is as a services company,
01:24:55
◼
►
you're gonna get way, way better at services.
01:24:57
◼
►
And I don't see, I mean, maybe that's going on internally,
01:25:00
◼
►
but externally Apple saying, we love services.
01:25:03
◼
►
We have a lot of customers.
01:25:04
◼
►
We found, you know, we found ways to get money from them.
01:25:06
◼
►
Isn't that great?
01:25:07
◼
►
And I think, no, that's not really great.
01:25:10
◼
►
Like I don't monetizing your existing,
01:25:13
◼
►
the existing customers of your hardware that we all love
01:25:16
◼
►
and even your operating systems that we all love,
01:25:19
◼
►
trying to make them pay for services that we tolerate
01:25:22
◼
►
or accept because of platform integration.
01:25:25
◼
►
doesn't make me feel particularly good about Apple or its services. So I really hope my
01:25:29
◼
►
first scenario is what happens, that services end up being a growth business and that Apple
01:25:33
◼
►
gets much, much better at them.
01:25:35
◼
►
I mean, there's also option number three. This might have just been what they said to
01:25:40
◼
►
be spin on these calls that they knew were going to be down in hardware sales. This might
01:25:46
◼
►
have just been something they told Wall Street to just kind of spin it and frame it in a
01:25:50
◼
►
better way to try to soften the blow a little bit and to try to appear that they have major
01:25:55
◼
►
growth opportunities in the future in this other area.
01:25:58
◼
►
Let's face it, you're right, Apple is not really
01:26:01
◼
►
much of a services company.
01:26:03
◼
►
They are primarily a hardware company.
01:26:05
◼
►
- Yeah, I mean, local applications, operating systems,
01:26:08
◼
►
platforms, hardware, but then services,
01:26:11
◼
►
I feel like they have not been strong.
01:26:13
◼
►
And I count that as separate from, hey,
01:26:15
◼
►
how good is the Mac operating system?
01:26:17
◼
►
How good are the applications available for your platform?
01:26:20
◼
►
- Right, but so, you know, option one, as you said,
01:26:22
◼
►
Option one is like Apple actually makes itself
01:26:25
◼
►
a really big services business.
01:26:27
◼
►
Option two is they just kind of tighten the screws
01:26:30
◼
►
and try to extract more money out of us
01:26:31
◼
►
in ways that are not so great.
01:26:33
◼
►
Option three is they kind of just keep doing
01:26:36
◼
►
what they've been doing and that was just spin on the call
01:26:39
◼
►
to soften the blow of bad results.
01:26:41
◼
►
All three of them I think are probably equally likely.
01:26:44
◼
►
- Well, but the reason that I don't think
01:26:45
◼
►
it's just spin for this particular announcement
01:26:47
◼
►
is because the services push is not just this quarter.
01:26:49
◼
►
like Apple Music, the Apple TV subscription business
01:26:54
◼
►
that they've been trying reportedly,
01:26:58
◼
►
rumored to be trying to get off the ground forever
01:26:59
◼
►
and just couldn't do,
01:27:00
◼
►
and they launched the hardware without it.
01:27:02
◼
►
Those are two potentially pretty big initiatives
01:27:05
◼
►
that predate a dip in iPhone sales year over year,
01:27:09
◼
►
whatever, who cares?
01:27:10
◼
►
But growth has been slowing in their other businesses,
01:27:12
◼
►
and I think the watch and everything
01:27:13
◼
►
is an attempt to find another big hardware product
01:27:15
◼
►
they can take, and the iPad efforts.
01:27:18
◼
►
can we find the next big hardware product line
01:27:20
◼
►
that's gonna take off?
01:27:21
◼
►
But the services push,
01:27:23
◼
►
I feel like has been brewing even longer,
01:27:24
◼
►
especially since these services take a long time
01:27:26
◼
►
to get off the ground.
01:27:27
◼
►
And the rumored revamp of Apple Music at WWDC
01:27:29
◼
►
just shows like they're serious about like,
01:27:32
◼
►
you know, recurring revenue for network services,
01:27:36
◼
►
for people who own our devices.
01:27:39
◼
►
I mean, you can even count iCloud
01:27:41
◼
►
and all of the storage, you know,
01:27:43
◼
►
charges for, you know, iCloud storage for your backups
01:27:45
◼
►
and for iCloud drive, like,
01:27:47
◼
►
This has been a long time building.
01:27:49
◼
►
Like, the service didn't come out of nowhere.
01:27:51
◼
►
They've been slowly growing, and Apple has been inventing new ways for you to regularly
01:27:56
◼
►
give money to Apple for the privilege of using their services that integrate with the hardware
01:28:01
◼
►
that you already bought from them.
01:28:03
◼
►
And I don't see the number of those services going down.
01:28:05
◼
►
If anything, like, again, the Apple TV one I'm counting even though it doesn't actually
01:28:09
◼
►
exist just because there's been so much smoke around that that I feel like if Apple could
01:28:12
◼
►
have got the content deals done in a way that they thought made an attractive product, they
01:28:16
◼
►
would have launched a long time ago, it just seems like they can't get the deals done.
01:28:18
◼
►
But Apple Music is their most serious services effort to date, and as a lot of articles have
01:28:28
◼
►
pointed out, for the size of the installed base that Apple has for people who own Apple
01:28:31
◼
►
devices and listen to music, the penetration of Apple Music has not been great.
01:28:35
◼
►
Maybe they were late with that because Spotify has got too much of a foothold in that market
01:28:39
◼
►
or whatever.
01:28:40
◼
►
It could be the same thing with television.
01:28:41
◼
►
Maybe they're too late and Netflix and HBO and Hulu and everything else have got too
01:28:45
◼
►
much of a foothold in that. But it seems like there is a real serious multi-year effort
01:28:52
◼
►
inside Apple to, maybe not the same way we're thinking of services like Dropbox or whatever,
01:28:57
◼
►
but to, it sounds bad to say to monetize their customer base, but to basically to offer network
01:29:04
◼
►
services to their customers because that is a fairly large and growing business of, you
01:29:09
◼
►
know, I will provide you music or video or some other kind of entertainment, you
01:29:14
◼
►
know, we'll give you content instead of you buying each one of these little
01:29:18
◼
►
items you just pay us a subscription fee and we will deliver it to you on all
01:29:22
◼
►
your devices and there's lots of those businesses and Apple I think wants to be
01:29:26
◼
►
one of those businesses but thus far has just kind of been a middle of the pack
01:29:30
◼
►
also ran and everyone that it's entered. I think if Apple really wants to become
01:29:34
◼
►
a more serious services company,
01:29:37
◼
►
I think they have shown through the results,
01:29:40
◼
►
through their actions, that their current setup
01:29:43
◼
►
is just bad at that.
01:29:44
◼
►
It seems to me that they would have to
01:29:47
◼
►
somehow dramatically restructure
01:29:49
◼
►
the part of the organization that does services.
01:29:53
◼
►
Maybe that's something as dramatic as replacing ed EQ,
01:29:56
◼
►
maybe it's something less dramatic,
01:29:57
◼
►
like just having somebody else take some of those things
01:30:02
◼
►
of the organization to make a new services stack,
01:30:05
◼
►
kind of like what just happened with
01:30:06
◼
►
Phil Schiller in the App Store.
01:30:08
◼
►
Something has to change there,
01:30:10
◼
►
because whatever they have now just doesn't work that well
01:30:14
◼
►
to achieve those goals.
01:30:16
◼
►
- Or they could, yeah, I was trying to think
01:30:18
◼
►
of whether they could have a simpler service,
01:30:19
◼
►
but this is something I had in the potential topic notes
01:30:22
◼
►
for many months and it's just been slowly pushed down,
01:30:24
◼
►
but it was an article that Jason Snell wrote a while ago
01:30:27
◼
►
about the idea of Apple launching a Netflix-style video service in which they would fund original
01:30:35
◼
►
content. It seemed kind of weird way back when. It's like, "Netflix, they'll let you stream the
01:30:41
◼
►
movies and TV shows you like on your television or your computer. Isn't that great?" And then
01:30:45
◼
►
it was like, "Netflix is going to make their own show starring Kevin Spacey, and they're going to
01:30:49
◼
►
fund it themselves for how many million dollars? Netflix doesn't make shows. Netflix just gives me
01:30:53
◼
►
me the shows that other people have already made. Why would Netflix make a show?" And
01:30:57
◼
►
it seemed absurd, but, you know, fast forward a few years and it's not so absurd. And Netflix
01:31:02
◼
►
and Amazon pay for shows to be made, and then they stream them exclusively on their services.
01:31:08
◼
►
And HBO, of course, came from the other direction where they paid, you know, even HBO used to
01:31:12
◼
►
be just home box office. You would watch movies that other people made on HBO. Then HBO started
01:31:16
◼
►
paying for its own content that you could only get on HBO. And then HBO decided to have
01:31:19
◼
►
a service that eventually divorced from the cable company. So all these other companies
01:31:22
◼
►
are getting into the funding of creative services.
01:31:26
◼
►
And Jason's article was like, "Why wouldn't that be something that Apple would want to
01:31:32
◼
►
The obvious answer is, Apple's currently in the business of selling other people's content.
01:31:35
◼
►
Apple doesn't make music, they sell other people's music.
01:31:37
◼
►
Apple doesn't make movies and television shows, they sell other people's movies and television
01:31:41
◼
►
shows and give the money to the people who made them and they're just the middleman type
01:31:46
◼
►
But all those other companies I described started out in a similar place and eventually
01:31:51
◼
►
came to make their own content.
01:31:52
◼
►
And it could be that if you want to be a successful at least video service, for example, that
01:31:58
◼
►
again, table stakes is by the way, you also have to have some exclusive content.
01:32:02
◼
►
And the best way to get exclusive content is to fund it yourself.
01:32:06
◼
►
Apple's got tons of money and connections to people in the entertainment industry.
01:32:10
◼
►
Why can't they fund their own, you know, Orange is the New Black or House of Cards or whatever,
01:32:16
◼
►
and have it exclusively available on a theoretical subscription to Apple TV service.
01:32:21
◼
►
Is that the only way that they could ever be a serious player in the market for video
01:32:26
◼
►
other than being simply a platform for the Netflix app, a platform for the Hulu app,
01:32:30
◼
►
a platform for the HBO Go app?
01:32:32
◼
►
If that's what they want to be, fine, but I don't know if that is the real growth opportunity
01:32:37
◼
►
that they think it is.
01:32:39
◼
►
And think of simpler services, even something like Netflix, when I think about what Netflix
01:32:44
◼
►
does, like if you like this you might like that, and just the basic polish of the application
01:32:48
◼
►
of automatically playing the next episode and keeping track of where you left off and
01:32:54
◼
►
Even that I feel like is above the degree of difficulty that Apple can handle based
01:32:56
◼
►
on our past episodes of talking about simply trying to watch a season of television on
01:33:01
◼
►
Apple TV and the difficulty of navigating to what the next show is going to be and everything.
01:33:06
◼
►
I just don't feel like Apple is up to it.
01:33:08
◼
►
But one of the things Apple has that a lot of those other companies don't is a humongous
01:33:13
◼
►
pile of cash and one of the things a humongous pile of cash can buy you if you are smart
01:33:17
◼
►
and know the right people is original creative content, whether they be television, movies,
01:33:21
◼
►
or I suppose even music.
01:33:23
◼
►
But like I said at the beginning of all this, the big issue is how do those other companies
01:33:29
◼
►
that sell music or television shows or movies through your services feel about you making
01:33:33
◼
►
movies or television?
01:33:36
◼
►
They probably don't like that very much and so maybe Apple would never do anything to
01:33:41
◼
►
to sort of become non-neutral in that war.
01:33:43
◼
►
But, and as far as now, it hasn't happened in music.
01:33:46
◼
►
Like, I don't think like Spotify is funding its own music
01:33:49
◼
►
and, you know, starting its own record label
01:33:51
◼
►
and getting its own artists and all that stuff.
01:33:52
◼
►
But in the video realm, it's happening.
01:33:56
◼
►
And I don't know if it's helping or hurting.
01:33:57
◼
►
I've heard like Netflix's catalog has been shrinking.
01:34:00
◼
►
I have no idea if there's any correlation
01:34:01
◼
►
between them making original content,
01:34:02
◼
►
but it definitely makes the relationship more complicated.
01:34:06
◼
►
- Spotify doesn't have original artists,
01:34:09
◼
►
but it does commission original performances.
01:34:12
◼
►
I forget what they're, the Spotify sessions,
01:34:14
◼
►
is I believe what they're called.
01:34:15
◼
►
- iTunes does that too, by the way.
01:34:17
◼
►
- Yeah, you're right, and they'll have artists come in
01:34:19
◼
►
and do a performance that's exclusive to Spotify
01:34:21
◼
►
or You're Right Marco or iTunes.
01:34:23
◼
►
Not exactly what you were talking about, John,
01:34:25
◼
►
but not too far away either.
01:34:27
◼
►
- I think what we've seen from these streaming services,
01:34:30
◼
►
both for video stuff and music stuff,
01:34:33
◼
►
that exclusive content is what drives people
01:34:36
◼
►
to go subscribe to these things for the most part.
01:34:38
◼
►
Netflix was kind of, for a while before it had much
01:34:41
◼
►
original stuff, Netflix was kind of like the bargain
01:34:43
◼
►
basement, and it was one of the first big video streamers.
01:34:46
◼
►
But the reason why a lot of people get Netflix now,
01:34:49
◼
►
especially over something else that might do something
01:34:51
◼
►
kind of similar, one of the biggest reasons they get
01:34:53
◼
►
Netflix now is for the original content.
01:34:56
◼
►
Amazon Prime Video, one of the reasons people want to
01:34:58
◼
►
watch that is because of stuff they have there
01:35:01
◼
►
that you can't watch in other places.
01:35:03
◼
►
Also because a lot of times you're just getting it for free
01:35:04
◼
►
with your free fast shipping thing.
01:35:07
◼
►
But, you know, I think, and HBO, of course,
01:35:09
◼
►
is probably the best example, where like,
01:35:11
◼
►
people paying for HBO, whichever one is it, Go, Now,
01:35:15
◼
►
I don't know, one of the HBO things,
01:35:17
◼
►
people paying for that are doing it not to get
01:35:19
◼
►
some kind of movie that HBO lets them see for a few weeks.
01:35:22
◼
►
It's, no, they're doing it for the original content.
01:35:24
◼
►
So I think if Apple is serious about getting into
01:35:27
◼
►
that kind of business, I would say, and if anything,
01:35:30
◼
►
the market is showing that Apple needs original content
01:35:33
◼
►
to really succeed there.
01:35:35
◼
►
- Yeah, I think of the, I didn't watch Amazon Video at all.
01:35:38
◼
►
And we have Amazon Prime, I could have been watching
01:35:40
◼
►
anything that was like free for Prime Video people.
01:35:43
◼
►
The only reason I started watching it was
01:35:44
◼
►
"Man in the High Castle",
01:35:45
◼
►
which was original content for Amazon.
01:35:47
◼
►
I suppose there are many shows that I could have watched
01:35:51
◼
►
on Amazon streaming that I also had available
01:35:53
◼
►
on Netflix streaming, you know, just like the shows
01:35:55
◼
►
that everybody has or the movies that everybody has,
01:35:58
◼
►
but you kind of get into a habit,
01:35:59
◼
►
like my habit tends to be my first go-to for like,
01:36:03
◼
►
where is this movie streamed or free?
01:36:05
◼
►
I go to Netflix and only think about Amazon tangentially,
01:36:08
◼
►
but original content is what brought me to this.
01:36:10
◼
►
I already pay for HBO for my television,
01:36:12
◼
►
but if I didn't, I would definitely pay for HBO Now
01:36:16
◼
►
to see "Game of Thrones" just for that one show.
01:36:18
◼
►
I have no idea what the hell else, or whatever show,
01:36:21
◼
►
"Deadwood" in the past, or "The Sopranos" or whatever,
01:36:23
◼
►
original content is a huge driver.
01:36:25
◼
►
It still remains a question whether Apple has to be
01:36:28
◼
►
in the content business to be viable at all,
01:36:30
◼
►
because again, Apple TV has apps for all these services
01:36:32
◼
►
we just listed.
01:36:33
◼
►
I just I'm not sure how much money Apple sees from that.
01:36:38
◼
►
I mean, you know, all these things are like fine.
01:36:41
◼
►
We'll make people sign up for HBO outside of Apple TV
01:36:45
◼
►
so we don't have to pay you 30% or whatever.
01:36:47
◼
►
But you know, and people will buy an Apple TV,
01:36:49
◼
►
but that's Apple TV is a cheap device
01:36:52
◼
►
with fairly slim margins in the grand scheme of things.
01:36:55
◼
►
And once you buy one,
01:36:56
◼
►
you don't have a bigger to replace it.
01:36:57
◼
►
And meanwhile, we're all paying, you know,
01:37:00
◼
►
10, 20 bucks a month to all these different services
01:37:03
◼
►
to get this video content, I feel like Apple would,
01:37:06
◼
►
their services business, they would be more happy
01:37:09
◼
►
getting a monthly, a small amount of money
01:37:12
◼
►
from the customers rather than you buying
01:37:14
◼
►
$150 Apple TV once every three years.
01:37:17
◼
►
- Well, and the other problem is,
01:37:18
◼
►
even if they do this and succeed,
01:37:20
◼
►
relative to the growth that they're trying
01:37:22
◼
►
to make up for in hardware, it just isn't that much money.
01:37:25
◼
►
- Yeah, well, that's Apple's problem,
01:37:27
◼
►
and you know, the bottom line problem is,
01:37:29
◼
►
is there anything that's ever gonna be
01:37:30
◼
►
as big as the iPhone?
01:37:32
◼
►
I mean, and again, Tim Cook pointed this out,
01:37:34
◼
►
the other thing he was spitting in the call,
01:37:36
◼
►
which is, look, iPhone's not done.
01:37:38
◼
►
Like, yeah, you know, almost every person in the world
01:37:41
◼
►
who can afford a smartphone has one,
01:37:43
◼
►
but not really because people are still using dumb phones
01:37:46
◼
►
and we only have like 40% market share.
01:37:48
◼
►
So we have a 60% that we can grow into.
01:37:51
◼
►
It just, I think everyone feels like that the battle lines
01:37:55
◼
►
have been drawn and the fronts are kind of settled
01:37:57
◼
►
and it's like, yeah, yeah, Apple, you're right.
01:37:59
◼
►
You don't even have, you know, a majority market share.
01:38:02
◼
►
but we feel like you're never gonna have
01:38:04
◼
►
majority market share.
01:38:05
◼
►
So unless you can suddenly start selling iPhones
01:38:08
◼
►
to billion people in India
01:38:10
◼
►
who previously you couldn't sell them to,
01:38:12
◼
►
or the middle-class in China increase,
01:38:15
◼
►
like all these things that we're trying to say,
01:38:16
◼
►
here's how we can sell more iPhones.
01:38:19
◼
►
But it seems like there's a lot of pessimism
01:38:21
◼
►
about the potential growth,
01:38:23
◼
►
both of the overall smartphone market,
01:38:25
◼
►
you know, in the short term anyway,
01:38:27
◼
►
and in Apple's ability to get more of that market.
01:38:30
◼
►
So everyone is looking for the next thing.
01:38:32
◼
►
What else can you sell that will make you iPhone kind of money or half iPhone kind of
01:38:37
◼
►
money or quarter iPhone kind of money?
01:38:38
◼
►
And again, I think wearables is a possible answer, but the Apple Watch is currently not
01:38:43
◼
►
a concrete implementation of that possible answer because I forget what category they
01:38:48
◼
►
lump it into.
01:38:49
◼
►
Other, but yeah, but it's not, you know, it's not setting the world on fire.
01:38:54
◼
►
And the Mac and the iPad don't look like they are on growth trajectories to be the next
01:38:58
◼
►
iPhones either.
01:38:59
◼
►
Maybe cars will be?
01:39:00
◼
►
I don't know.
01:39:01
◼
►
Even then, it's like, if you look at the market caps for big car companies, Apple has
01:39:09
◼
►
gotten so big and so successful, and the smartphone has been such a revolution that was accelerated
01:39:17
◼
►
both in speed and ubiquity and in profitability by a number of weird factors that, like, you
01:39:24
◼
►
know, the way people weren't really paying their direct prices in so many markets and
01:39:27
◼
►
and the upgrade cycle and how many people need them,
01:39:29
◼
►
which is so many people and the spread among the whole world,
01:39:32
◼
►
how quickly it happened.
01:39:33
◼
►
I mean, the smartphone was such a combination
01:39:37
◼
►
of fairly unique factors that it is unlikely
01:39:41
◼
►
during our lifetimes that we will see any other device
01:39:43
◼
►
that allows that level of insane,
01:39:45
◼
►
fast growth and profitability.
01:39:48
◼
►
It's probably not gonna happen again.
01:39:50
◼
►
That's not to say there isn't any other area of growth,
01:39:53
◼
►
but that I don't think there will be something
01:39:55
◼
►
that will provide quite this level and explosiveness of it.
01:40:00
◼
►
- They don't need one thing.
01:40:01
◼
►
What it seems like they're trying to do
01:40:04
◼
►
in bits and pieces is diversification.
01:40:06
◼
►
They don't wanna be the iPhone company.
01:40:08
◼
►
So if iPhone slows down,
01:40:10
◼
►
you gotta have a hedge against that, right?
01:40:12
◼
►
And if your hedge is not one other product,
01:40:13
◼
►
then maybe it's four other products
01:40:15
◼
►
that together make up an iPhone-sized lump
01:40:17
◼
►
and that if the iPhone decreases,
01:40:18
◼
►
if you could be ramping those up at the same time,
01:40:20
◼
►
you'll still stay above water.
01:40:22
◼
►
If you look at all the little graphs,
01:40:23
◼
►
You can see as one thing rose to prominence and then faded, something else came from out
01:40:29
◼
►
of nowhere to rise to prominence, then fade and something else comes out of nowhere.
01:40:32
◼
►
As if the iPhone is, if not fading, then at least leveling off, you may need a bunch of
01:40:37
◼
►
other lines to come and together sum up to something that looks like a reasonable hedge.
01:40:42
◼
►
Because you don't want to be a company where 95% of your revenue is coming from one product
01:40:48
◼
►
And Apple's not.
01:40:49
◼
►
I forget what the iPhone is.
01:40:50
◼
►
I think it's like 60-ish, 60% or something like that.
01:40:53
◼
►
still pretty good in the grand scheme of things, but you gotta get one of those other little
01:40:57
◼
►
pie wedges and the other 40% to be on a reasonable growth trajectory.
01:41:02
◼
►
Because I think the iPhone will keep growing, like more people will be able to afford smartphones,
01:41:06
◼
►
the price of the product will eventually go down to let more people afford it, more people
01:41:10
◼
►
will be entering the middle class, and if Apple is lucky, we'll be able to claw a little
01:41:14
◼
►
bit more market share percentage point here and there from its competitors.
01:41:18
◼
►
So it's not like the iPhone is done done, but the giant rocket sled ride to the top
01:41:25
◼
►
of the chart is probably in the past for the iPhone.
01:41:30
◼
►
One other quick thing I do want to tack on this topic before we wrap up.
01:41:34
◼
►
We're kind of basing this on the idea that Apple right now is really bad at web services
01:41:40
◼
►
or we're not seeing them finding these major other growth areas quite yet.
01:41:44
◼
►
Maybe they'll do a car, but whatever.
01:41:46
◼
►
I think it's worth pointing out that companies can change and companies can gain new expertise.
01:41:53
◼
►
Years ago before Apple launched the iPhone, the idea that Apple would have the in-house
01:41:58
◼
►
expertise to make a phone, to make a cell phone, all the crazy stuff like the baseband
01:42:03
◼
►
has to go into that, and then even the idea that they'd be making their own processors
01:42:07
◼
►
or at least designing their own processors.
01:42:09
◼
►
These are the kinds of things that before Apple really set their mind to doing it, they
01:42:14
◼
►
couldn't do. And you would think at the time it would be hard to see a path they would
01:42:20
◼
►
get there, but because they really put their mind to it, they really made it a priority.
01:42:26
◼
►
They funded it, they gave it time, they gave these things, you know, the talent and the
01:42:30
◼
►
space to mature and the funds required to develop these things over time. They were
01:42:35
◼
►
able to become, to develop expertise in these other areas that they didn't have yet. Services
01:42:42
◼
►
could be one of those areas.
01:42:44
◼
►
They just have to do that process.
01:42:46
◼
►
They have to recognize that it's a problem
01:42:49
◼
►
that they don't do well now,
01:42:51
◼
►
and then invest in it, make changes,
01:42:54
◼
►
invest money, invest time, get the right talent,
01:42:58
◼
►
give them the space to grow,
01:42:59
◼
►
give them the space to operate,
01:43:01
◼
►
give them what they need to develop that talent in-house
01:43:05
◼
►
and to become great in-house.
01:43:07
◼
►
The main reason we haven't seen that yet from Apple
01:43:09
◼
►
is that there doesn't seem to be much opinion
01:43:12
◼
►
in the top ranks at Apple that anything
01:43:15
◼
►
in the way they do services really needs to change.
01:43:17
◼
►
At least we're not seeing it.
01:43:19
◼
►
- Yeah, they think they're already good at it.
01:43:20
◼
►
They think they're already okay at it.
01:43:22
◼
►
Like, we've been doing that for years.
01:43:23
◼
►
It's not like a phone where we've never made a phone before.
01:43:26
◼
►
Boy, you really better bear down and work on this
01:43:29
◼
►
or whatever, like, no, we've been doing services
01:43:30
◼
►
like this for ages.
01:43:32
◼
►
I mean, remember eWorld, wasn't that great?
01:43:33
◼
►
Anyway, we've done all these great things.
01:43:37
◼
►
We just need to get a little bit better.
01:43:38
◼
►
Like, it's just a matter of tweaking.
01:43:40
◼
►
Whereas, I think you're right,
01:43:41
◼
►
The mindset going into a phone was kind of exactly what,
01:43:45
◼
►
you know, the Palm guy said,
01:43:46
◼
►
like the computer guys aren't just gonna walk in.
01:43:48
◼
►
Apple was like, we don't know anything about making phones.
01:43:51
◼
►
I mean, we make computer devices
01:43:52
◼
►
and smartphones are kind of computers, but like you said,
01:43:55
◼
►
we've never been in the phone market at all.
01:43:57
◼
►
So we really better, you know,
01:43:59
◼
►
go head down on this and figure it out
01:44:02
◼
►
and work really hard on it.
01:44:04
◼
►
It would almost be better if you could like wipe
01:44:06
◼
►
all history of Apple services from the earth
01:44:07
◼
►
and just say, starting from today,
01:44:10
◼
►
pretend you've got these iPhones and iOS,
01:44:12
◼
►
all these iOS devices out there and Macs and everything,
01:44:15
◼
►
but you've never made a network service before
01:44:17
◼
►
and you have all these billions of dollars, make one.
01:44:21
◼
►
I think a lot of the iCloud revolution
01:44:23
◼
►
and CloudKit and everything
01:44:24
◼
►
has been a step in the right direction,
01:44:25
◼
►
but I still feel like because they're coming from
01:44:27
◼
►
a position of okayed,
01:44:29
◼
►
they're not coming from a position of weakness
01:44:33
◼
►
as far as they're concerned,
01:44:34
◼
►
they're not coming from a position of strength,
01:44:35
◼
►
we're like, we're okay, right?
01:44:37
◼
►
It's not great, maybe MobileMe was kind of crappy,
01:44:40
◼
►
But all we need to do is just change a few things and it will be great.
01:44:43
◼
►
And I just, you know, from my perspective on the outside and seeing other companies
01:44:46
◼
►
that do similar things, I think they're far from average.
01:44:50
◼
►
I feel like there are these huge weaknesses that are not really, that don't seem to
01:44:55
◼
►
be resulting in the kind of radical change that I feel like is necessary to just get
01:45:00
◼
►
on the same playing field with everybody else who's doing the same stuff.
01:45:04
◼
►
Thanks a lot to our three sponsors this week, Casper, Audible.com, and Hover.
01:45:09
◼
►
and we will see you next week.
01:45:11
◼
►
(upbeat music)
01:45:13
◼
►
♪ Now the show is over ♪
01:45:16
◼
►
♪ They didn't even mean to begin ♪
01:45:18
◼
►
♪ 'Cause it was accidental ♪
01:45:21
◼
►
♪ Oh it was accidental ♪
01:45:24
◼
►
♪ John didn't do any research ♪
01:45:26
◼
►
♪ Marco and Casey wouldn't let him ♪
01:45:29
◼
►
♪ 'Cause it was accidental ♪
01:45:31
◼
►
♪ Oh it was accidental ♪
01:45:34
◼
►
♪ And you can find the show notes at ATP.fm ♪
01:45:39
◼
►
And if you're into Twitter, you can follow them
01:45:43
◼
►
@C-A-S-E-Y-L-I-S-S
01:45:48
◼
►
So that's Kasey Liss M-A-R-C-O-A-R-M
01:45:52
◼
►
Auntie Marco Armin S-I-R-A-C
01:45:57
◼
►
USA, Syracuse
01:46:00
◼
►
It's accidental (it's accidental)
01:46:03
◼
►
They didn't mean to, accidental (accidental)
01:46:08
◼
►
♪ Tech podcast so long ♪
01:46:11
◼
►
- Didn't even talk about TiVo.
01:46:16
◼
►
- So Apple bought Nintendo.
01:46:18
◼
►
- No, we'll save it for next week, it's fine.
01:46:19
◼
►
I think we need to talk about bumper sounds.
01:46:21
◼
►
- Is anybody gonna remember TiVo next week?
01:46:23
◼
►
- Yeah, I'll remember.
01:46:25
◼
►
Or we could talk about my mom getting hacked.
01:46:26
◼
►
- Yeah, what's that about?
01:46:28
◼
►
- Yeah, what is that about?
01:46:29
◼
►
- It happens, happens to people.
01:46:32
◼
►
It happens, like my mother is usually
01:46:36
◼
►
on the opposite side of the spectrum,
01:46:38
◼
►
constantly messaging me or emailing me or forwarding me messages or saying I got this
01:46:45
◼
►
message or text or email or whatever and it says this.
01:46:51
◼
►
Should I trust it?
01:46:52
◼
►
Is this a real thing?
01:46:53
◼
►
Is this a scam?
01:46:56
◼
►
What should I do?
01:46:57
◼
►
Should I do anything?
01:46:58
◼
►
And usually the answer is, you know, just delete it.
01:47:01
◼
►
It's a scam.
01:47:02
◼
►
You're right.
01:47:03
◼
►
Just delete it.
01:47:04
◼
►
Or like, no, that's a legitimate email from Apple or that's a legitimate receipt for something
01:47:06
◼
►
you bought like but always erring on the side of just asking like if you're not sure what
01:47:13
◼
►
this thing is you're looking at ask ask one of your computer nerdy children what's the
01:47:19
◼
►
deal with this this is real or is it not real and all you know it doesn't take much to ask
01:47:24
◼
►
just ask and if the answer is just delete the email then then you know fine this was
01:47:29
◼
►
the reverse case she had a problem with one of her devices a problem with her kindle and
01:47:35
◼
►
she does what I guess most people do when they have a problem with their Kindle is like
01:47:38
◼
►
you type something into a web search box that says like "Kendall problem can't sync whatever"
01:47:44
◼
►
blah blah blah.
01:47:47
◼
►
And it turns out if you type a certain sequence of words involving Kindle and problem or whatever
01:47:51
◼
►
into Google, one of the very top hits on the first page is a completely bogus Kindle support
01:47:59
◼
►
website and phone number.
01:48:01
◼
►
Like oh you got a problem with your Kindle?
01:48:03
◼
►
this number and we'll help you with your Kindle." So she called the number, which is like a
01:48:07
◼
►
one eight five five number or whatever, and a nice person answered the phone and asked
01:48:13
◼
►
her about her problems with her Kindle and gave her instructions to download a Citrix
01:48:17
◼
►
client to her computer and then took over control of her computer. And then she said
01:48:23
◼
►
then terminal came up and a whole bunch of things started scrolling by. Yeah. So eventually
01:48:29
◼
►
she figured out once her cursor started moving that I've connected, you know, I've done screen
01:48:34
◼
►
sharing with her before I controlled her computer to solve problems, but she knew this was something
01:48:38
◼
►
that should not be happening with a stranger. Although she got a lot of backtalk from the
01:48:42
◼
►
stranger. The person on the phone was like, you know, she was saying like, "How do I know you
01:48:46
◼
►
really from Amazon?" The person on the phone was like, "You called me." And like, well, that doesn't
01:48:50
◼
►
mean anything. It was, but you know, it just shows like, if you get off on the wrong foot,
01:48:57
◼
►
of like you're just googling you you think you you know it's actually kind of hard to find a
01:49:00
◼
►
phone number to call amazon my mom was insistent that you can't actually call amazon on a phone
01:49:04
◼
►
which is not true you can call them on the phone but anyway it's very easy to just think what the
01:49:09
◼
►
internet is is a giant search box where you type words and you click on the results and then
01:49:12
◼
►
you know of course it's trustworthy because i typed something in the problem with my kindle
01:49:18
◼
►
and i found the kindle support the official kindle support help desk that had a phone number
01:49:22
◼
►
and the person who picked up was totally helping me with my Kindle
01:49:26
◼
►
and she doesn't know what Citrix is, she doesn't know, you know, I'm amazed
01:49:29
◼
►
I'm kind of impressed that the person got her to successfully download, install, and launch the Citrix thing
01:49:34
◼
►
because that is no small feat and it must involve a frustrating series of steps trying to instruct people on how to download things and unzip things or whatever
01:49:42
◼
►
anyway, bottom line is I had her just wipe her whole computer and erase the hard drive
01:49:50
◼
►
Because like at that point you just have to assume every single thing on that computer is compromised, right? Yeah
01:49:54
◼
►
this is kind of the I mean
01:49:57
◼
►
You know this this was not a burner computer, but it wasn't like her main computer
01:50:02
◼
►
She had long since it was very old like a white macbook
01:50:05
◼
►
So she had long since removed everything from it that she cared about so we could wipe everything on it
01:50:10
◼
►
Um, she was using dropbox on it
01:50:12
◼
►
So in theory there could be something evil shoved into her dropbox, but hopefully that will be data and not executables. I don't know
01:50:19
◼
►
I mean she could you know anyway and the other thing is because my mom eventually figured out that it was bad that the person did
01:50:25
◼
►
Disconnect now do they disconnect after installing the ransomware botnet blah blah blah rootkit on their thing maybe
01:50:30
◼
►
maybe there was a one or two day delay on the rootkit thing or
01:50:35
◼
►
The key logger or whatever the hell else was going on there
01:50:39
◼
►
maybe it didn't get installed fast enough because I don't really know what the timeline is but
01:50:43
◼
►
You know you do what you can so we erase the entire hard drive, but
01:50:48
◼
►
We reinstalled the operating system every day re-downloaded to reinstall the operating system
01:50:53
◼
►
Reinstall the Dropbox client it did resync all her files from Dropbox
01:50:56
◼
►
So if those people snuck in something evil into Dropbox that somehow finds a way to execute itself from within Dropbox
01:51:02
◼
►
She could be reinfected but like what are we gonna tell her to do delete everything in Dropbox?
01:51:06
◼
►
That's basically like all her files. So I
01:51:09
◼
►
know this is just there's actually an FTC page about this specific thing like tech support scammers or whatever and what you're supposed to
01:51:15
◼
►
Do if you've been scammed, so hopefully
01:51:17
◼
►
being old retired people who don't have anything better to do. They are doing everything that
01:51:23
◼
►
it says on that page, including reporting the phone number and, you know, whatever,
01:51:27
◼
►
trying to get the people who are doing this to stop them from doing it to other people.
01:51:32
◼
►
But, yeah. Be careful out there on the internet. It's dangerous.
01:51:37
◼
►
It sucks, man. It's not fun.
01:51:40
◼
►
God. I just—this stuff makes me so sad that, like, not that, like, people fall for it because,
01:51:45
◼
►
you know, people don't know any better with this kind of stuff. It looks official, you're
01:51:48
◼
►
searching for something, computers suck at being clear, so that's understandable. What
01:51:52
◼
►
makes me sad is that there are people out there in the world who every day do this for
01:52:00
◼
►
a living and that they seem to be okay with that.
01:52:03
◼
►
And they don't get caught. I don't understand how they don't get caught. Like, I entered
01:52:07
◼
►
the phone number into Google, you find a million people who are like, "Yes, this totally
01:52:10
◼
►
happened to me." Like, years old reports of like, "Yep, I called these people and
01:52:14
◼
►
and they seemed a little bit shady,
01:52:15
◼
►
and then weird things started happening on my computer,
01:52:18
◼
►
and I think I might have got a virus and blah, blah, blah.
01:52:19
◼
►
How do they go on doing this?
01:52:22
◼
►
How do we not, like especially if they're calling
01:52:24
◼
►
from within the United States,
01:52:25
◼
►
they feel like they should be arrested within like,
01:52:27
◼
►
you know, days or weeks of the first report,
01:52:30
◼
►
but no, they just go on for years and years,
01:52:32
◼
►
and apparently this is just fine with everybody.
01:52:34
◼
►
- Yeah, I mean that's, we have two failures here.
01:52:37
◼
►
We have failure number one of these people doing this,
01:52:42
◼
►
like waking up every day and doing this,
01:52:44
◼
►
and being okay with that, knowing what they're doing.
01:52:47
◼
►
And then failure number two is,
01:52:50
◼
►
I mean, assuming they're operating in the US,
01:52:51
◼
►
which is not a safe assumption,
01:52:52
◼
►
but if they're operating in a country that has laws,
01:52:56
◼
►
how is this continuing?
01:52:59
◼
►
But the reality is they're probably outside of the US.
01:53:01
◼
►
- Yeah, I know, I think the phone number
01:53:02
◼
►
was some place in Atlanta or something, I don't know.
01:53:05
◼
►
It seemed like it wasn't--
01:53:06
◼
►
- Well, where the phone number is
01:53:08
◼
►
doesn't necessarily mean where they,
01:53:09
◼
►
I mean, I get so much, in recent months,
01:53:13
◼
►
I've had a massive uptick in the amount of phone call spam
01:53:18
◼
►
I get now from like robocalls, not just people like
01:53:22
◼
►
Dun & Bradstreet who have humans spamming the crap out of you
01:53:24
◼
►
but like robocalls that come from US numbers,
01:53:27
◼
►
oftentimes numbers like Merlin's talks about,
01:53:29
◼
►
it'll come from a very close exchange to where I live
01:53:33
◼
►
so that I'm thinking, well, what if this is like
01:53:35
◼
►
somebody calling from my kid's school, I better pick up.
01:53:39
◼
►
Or I get calls from San Jose, it's like, well,
01:53:42
◼
►
If you're an Apple developer and you get a call from San Jose, you pick up that call.
01:53:47
◼
►
I've gotten so much phone spam recently, only in the last few months, because I think
01:53:53
◼
►
what's going on is there's all these virtual phone services where you can use some API
01:54:01
◼
►
online to generate local phone calls. These things have been used for a while. I'm guessing
01:54:05
◼
►
that spammers have finally figured out that these things exist and are automating the
01:54:10
◼
►
the creation of a whole bunch of calls that are local
01:54:13
◼
►
to each person they're calling and spamming them that way.
01:54:16
◼
►
Anyway, spammers and scammers, they find ways.
01:54:21
◼
►
They're very creative, they find ways to create new spam
01:54:25
◼
►
and new scams and it's just, oh, it's so sad.
01:54:29
◼
►
- Yeah, and this long one, eight, five, five,
01:54:32
◼
►
whatever number, the fact that there are old Google results
01:54:35
◼
►
where it shows they aren't even being so smart
01:54:37
◼
►
as to change numbers all the time and keep hopping around
01:54:40
◼
►
or whatever, like they're just using the same one over a long period of time.
01:54:42
◼
►
Still, like, you figure at the very least what they could do is, like, have the government
01:54:47
◼
►
or whoever disconnect that number for fraud and force them to come up with another number.
01:54:52
◼
►
I mean, maybe that would make it worse, so they would be hopping around more, but the
01:54:55
◼
►
only thing I feel like I have going for me in this situation is that these type of scans
01:55:03
◼
►
tend to be broad, and so they're not, like, specifically targeting my mother or anybody
01:55:07
◼
►
else and what they mostly want to do is probably scrape for credit card numbers, turn your
01:55:14
◼
►
computer into a bot or install ransomware.
01:55:17
◼
►
Very generic stuff.
01:55:18
◼
►
Not like, do they know where my specific secret files are?
01:55:22
◼
►
Do they want my photos or whatever?
01:55:24
◼
►
No it's just like a one size fits all scam.
01:55:27
◼
►
They connect to your computer, they find out what operating system you have, they put whatever
01:55:31
◼
►
malware they want on there and it's just, you know, some percentage of it they just
01:55:35
◼
►
assume the malware is not going to work or everything's going to be erased or whatever,
01:55:40
◼
►
but enough percentage hit that it makes the money.
01:55:43
◼
►
And for all I know, the person on the phone doing the thing gets paid some percentage
01:55:47
◼
►
for the number of people they install the software on.
01:55:51
◼
►
It is in some ways better than being individually targeted for a hack.
01:55:55
◼
►
Like if you're a bank or something and hackers specifically target you, this kind of generic
01:56:01
◼
►
I don't know like mass-market scam is kind of reassuring in how
01:56:08
◼
►
How little it cares about you specifically so I have some dim hope that
01:56:13
◼
►
immediately erasing her entire computer has actually saved her from any sort of
01:56:17
◼
►
Future problems, but who knows who knows what they got?
01:56:20
◼
►
I mean she was you know her keychain was unlocked when they took control of her computer
01:56:25
◼
►
She had an admin account though. She swears. She never did enter her admin password
01:56:30
◼
►
I'm hoping that's the case, but at the very least her keychain was unlocked and
01:56:35
◼
►
Yeah, it's depressing
01:56:39
◼
►
Sucks, I'm glad she didn't really in the grand scheme of things
01:56:42
◼
►
It didn't seem like she really lost any data or she's really that much worse for where
01:56:46
◼
►
Yeah, well, it's just the question of like what did they get?
01:56:49
◼
►
You know because yeah, she there's you know, if you knew where to look on her computer
01:56:54
◼
►
There were plenty of things that people would want to steal, you know
01:56:58
◼
►
Because all people write things down
01:57:00
◼
►
What's your what's your beef with the completely flawless Windows XP sounds
01:57:08
◼
►
We already covered all my beefs, I just want to add one thing to bring together the two discussions about them which is
01:57:16
◼
►
The fact that I don't like the sounds because they're terrible and the idea that no matter what sounds
01:57:23
◼
►
We use eventually all listeners to the show which includes me will come
01:57:28
◼
►
To expect them as part of the show that you will come to love the sounds and it's kind of the reverse
01:57:33
◼
►
situation of
01:57:35
◼
►
The the reason why you never set your favorite song to be like the alarm that wakes you up in the morning or your ringtone
01:57:40
◼
►
Because you will come to hate it
01:57:42
◼
►
like you were just make like never do that never if you like a song or anything like just
01:57:48
◼
►
You can make yourself hate anything by making it wake you up in the morning or making it be a ringtone or whatever
01:57:54
◼
►
So you should never do that. You'll ruin things that you love. This is the reverse
01:57:58
◼
►
This is taking something that I hate which is these Windows XP sounds and trying to make me love it through repetition
01:58:03
◼
►
So that that's what is the the real the real horror of this
01:58:08
◼
►
This choice of sounds and yes, lots of people tweeted. They also hate the sounds - I
01:58:14
◼
►
I continue to think that better sounds exist and I would like to find one and I'm thinking
01:58:19
◼
►
about it and if I come up with ones I will send them to you.
01:58:22
◼
►
In the meantime I would encourage you to use different sounds on every show just like you
01:58:26
◼
►
want to have different t-shirts every year and in that way none of us will be forced
01:58:32
◼
►
to come to expect and love Windows XP sounds.
01:58:35
◼
►
By that rationale you would always hate every sound I ever used because you wouldn't have
01:58:39
◼
►
time to get acclimated and start loving any of them.
01:58:42
◼
►
That's a good point.
01:58:43
◼
►
No, they could just be mediocre.
01:58:47
◼
►
And who knows, maybe you'll hit on one
01:58:48
◼
►
that we all think is great.
01:58:50
◼
►
You know what I mean?
01:58:51
◼
►
Like for the purpose.
01:58:52
◼
►
The thing about the song is,
01:58:53
◼
►
the purpose of the song is not to wake you up in the morning
01:58:55
◼
►
the purpose of the song is like,
01:58:56
◼
►
oh, I listened to it and I enjoyed it.
01:58:57
◼
►
And you ruin that by making it the thing that wakes you up.
01:59:00
◼
►
What we're looking for is a purpose-built sound to be,
01:59:03
◼
►
this is the beginning of the ad
01:59:04
◼
►
and this is the end of the ad.
01:59:05
◼
►
And if we find something that works like that,
01:59:07
◼
►
just like we found a theme song that we like,
01:59:09
◼
►
none of us like hate the theme song
01:59:10
◼
►
because we played it repeatedly.
01:59:11
◼
►
because the theme song didn't exist outside the show and then was brought into it, especially
01:59:15
◼
►
in another context.
01:59:17
◼
►
So I feel like we could find a beginning of ad, end of ad sound that we all like, that
01:59:22
◼
►
we like in the beginning, that we like even more as it continues down the road.
01:59:27
◼
►
And in the meantime, you just pick a different one every episode, a different set on every
01:59:30
◼
►
ad even, and it could be funny and who knows, by just random chance we might hit on one
01:59:37
◼
►
that's awesome.
01:59:38
◼
►
But I've been thinking about it, I don't have any great ideas yet or I would have already
01:59:41
◼
►
uploaded the sound files for you.
01:59:43
◼
►
All right, it's funny to me that a lot of people came out of the woodwork to say, "Oh,
01:59:49
◼
►
those sounds make me think of the old days when I had to use these computers, blah, blah,
01:59:54
◼
►
Now I have PTSD, blah, blah, blah."
01:59:55
◼
►
And PTSD came up a lot.
01:59:57
◼
►
Just relax, people.
01:59:59
◼
►
It's a computer.
02:00:02
◼
►
If you were getting PTSD from Windows XP, it's probably because you were in an office
02:00:06
◼
►
somewhere, probably air-conditioned, probably heated.
02:00:10
◼
►
probably don't have PTSD. You probably are just getting yourself worked up for the sake of getting
02:00:14
◼
►
it getting worked up and or because John said so and apparently john can never be wrong.
02:00:19
◼
►
I think they're joking with PTSD. I don't think they mean actual PTSD. Maybe it is a joke in poor
02:00:24
◼
►
taste. But but there are could be there could be bad feelings associated with it. Like if you play
02:00:29
◼
►
a sound even if it's like say you worked like a drive thru and there was a little sound when a
02:00:32
◼
►
car drove up and you work there for like three summers and it was miserable. If you heard that
02:00:37
◼
►
that sound again it can make you kind of get a you know a cold shiver like you
02:00:41
◼
►
know brings you back to a bad time in your life and for many people Windows XP
02:00:44
◼
►
was a bad time in their life I guess I don't know I mean I understand what
02:00:47
◼
►
you're saying it just it seems excessive for people to get that worked up over
02:00:52
◼
►
like I didn't enjoy Windows XP I didn't think it was that well I mean I did I
02:00:56
◼
►
guess briefly but by the end of the time my time with it which was many many
02:01:00
◼
►
years I freaking hated it I hated it with a passion and I hated those those
02:01:04
◼
►
little noises. But in this context, I think it works perfectly. And I think everyone just
02:01:11
◼
►
needs to chill out a little bit.
02:01:12
◼
►
Yeah, again, it's not so much the origin of the sounds that's the problem, although that
02:01:16
◼
►
doesn't help it at all. Because I didn't really like the max sounds that were chosen either.
02:01:20
◼
►
And not them being from Max didn't magically make them awesome sounds for the purpose.
02:01:24
◼
►
I just, I just feel like we haven't found the right fit yet. I'm continuing to think
02:01:28
◼
►
about it. As, as should we all.