PodSearch

ATP

168: Coffee Stops Working

 

00:00:00   Talk about TiVo next week.

00:00:02   Sorry, Jon.

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:13   Ding!

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:01   All right.

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:44   Oh God.

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:55   Goodness.

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:16   Oh my god

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:29   (laughing)

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:16   sheets.

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:42   the night.

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:54   Yeah.

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:03   Fun.

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:52   - Gotcha.

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:10   Koalas?

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:47   (laughs)

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:42   (laughs)

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:01   (laughing)

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:43   - Yep.

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:54   And--

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   of there.

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:57   (laughing)

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:06   (laughing)

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:29   (laughing)

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:11   is.

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:42   (chime)

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:42   (laughs)

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:06   Is it this?

01:02:07   Quit.

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:08   by the way.

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:17   - I do.

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:19   (laughing)

01:14:22   Oh my goodness.

01:14:23   - Oh well.

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:43   (laughing)

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:07   - Do you?

01:18:08   - That's a good question, I don't know.

01:18:10   - Wow, wow.

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:23   out there.

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:35   - Ugh.

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:31   get into?"

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:44   of thing.

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:53   everything.

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:47   line.

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:03   All right.

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:15   (laughing)

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:53   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.

02:01:30   [BELCH]