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]