516: One of My Fits of Rage
00:00:00
◼
►
I sound a little bit bad this week because I'm a little bit sick because everyone's a
00:00:04
◼
►
little bit sick because oh my god everyone is sick.
00:00:06
◼
►
Like this might be, you know, anecdotally speaking, the most people I've ever heard
00:00:11
◼
►
of being sick at the same time.
00:00:14
◼
►
Everyone is sick right now.
00:00:17
◼
►
It's not all, you know, most of it's not COVID fortunately.
00:00:19
◼
►
A lot of it is just like, you know, mild colds here and there, occasional flu is here and
00:00:22
◼
►
there, but just everyone is sick.
00:00:26
◼
►
Michaela has been fighting a cough. She's been COVID tested, you know, once or twice,
00:00:29
◼
►
and it doesn't seem to be that. She woke up today complaining of an earache. And so fast forward
00:00:34
◼
►
three hours, she's getting treated for an ear infection. You know, our kids were sick over
00:00:39
◼
►
Thanksgiving. Again, not COVID as far as tests and as far as we know. Yeah, I agree with you that it
00:00:44
◼
►
seems like everyone is making up for lost time, unlike general illnesses. It's not, like you said,
00:00:50
◼
►
it's not necessarily COVID, although it's certainly plenty of that going around. But just
00:00:54
◼
►
even general illnesses, there seems to be plenty of it at the moment.
00:00:57
◼
►
- Yeah, and the good news is that it seems like the most common thing I hear about is
00:01:01
◼
►
people who just have like mild cold symptoms for a week or two at the most, which is really
00:01:06
◼
►
annoying. In fact, I'm currently on, I think, my second one of those for the season. It's
00:01:11
◼
►
annoying, but, you know, it could be a lot worse. It has been a lot worse. So, you know,
00:01:16
◼
►
it's good that it's all mild. So everyone is just kind of like mildly annoyed with sickness
00:01:21
◼
►
for this whole winter, which is, you know, again,
00:01:24
◼
►
could be worse, but that doesn't make it
00:01:25
◼
►
any less mildly annoying.
00:01:28
◼
►
What are you gonna do?
00:01:29
◼
►
By the way, I don't think it made it
00:01:31
◼
►
into the release recording, maybe it did,
00:01:33
◼
►
but as we were hanging up, so not as the,
00:01:36
◼
►
I don't think it was when the live broadcast was ending,
00:01:38
◼
►
but as the three of us were hanging up on Zoom,
00:01:41
◼
►
Marco sniped me and wished John a happy birthday in advance,
00:01:45
◼
►
and it had completely slipped my mind last recording,
00:01:48
◼
►
but I will now take credit for this one
00:01:51
◼
►
and say happy birthday John, I hope your birthday was wonderful and your carrot cake was delicious.
00:01:56
◼
►
Thank you, we're still working on the carrot cake, still some left.
00:01:59
◼
►
Oh, I thought you meant that it hadn't arrived yet, I was like what are you talking about?
00:02:03
◼
►
I thought Tina and Kate made that for you every year, I misunderstood.
00:02:06
◼
►
Those are the questions, should we make the full-size cake? Yeah, make the full-size cake.
00:02:10
◼
►
Would you ever not make the full-size cake? I mean-
00:02:12
◼
►
I mean for just four people it's a lot of cake, but I think we're up to the task.
00:02:16
◼
►
I mean carrot cake, so this is one of those things, you know, I hate to admit that you're
00:02:20
◼
►
carrot cake is awesome, like I love carrot cake.
00:02:23
◼
►
I'm going to your pizza place tomorrow,
00:02:27
◼
►
like it sucks when you're right this much.
00:02:29
◼
►
- No, the carrot cake is a relatively new birthday thing.
00:02:32
◼
►
I mean, I think Tina made it when we were at Underscores.
00:02:36
◼
►
- Yeah, that's right.
00:02:38
◼
►
- Right, so that's, I mean, that's not the first time
00:02:39
◼
►
we had it, but that was when the tradition
00:02:41
◼
►
was relatively new, so that's about the age of this,
00:02:43
◼
►
like, I don't know, like 10 years, 12 years, 15 years,
00:02:46
◼
►
I guess, that's relatively new when you're an old person.
00:02:49
◼
►
It's not just carrot cake in general, it's that specific recipe.
00:02:52
◼
►
I forget who it is, maybe it's Ina Gardner or whatever.
00:02:55
◼
►
It's carrot cake and it's got things in it that people may find controversial.
00:02:58
◼
►
One, it's got raisins in it.
00:02:59
◼
►
I know a lot of carrot cakes have raisins in it.
00:03:01
◼
►
I think they're good.
00:03:02
◼
►
And two, it's got pieces of pineapple in it, which maybe you haven't seen in a carrot cake
00:03:06
◼
►
before, but I think works really well.
00:03:08
◼
►
And then three is just cream cheese frosting.
00:03:10
◼
►
Carrot cake with cream cheese frosting.
00:03:11
◼
►
It's a classic combo.
00:03:12
◼
►
Whether you want the raisins or the pineapples, you can adjust that.
00:03:16
◼
►
I feel like that combo is overlooked.
00:03:20
◼
►
And this is literally the one time a year I have it.
00:03:22
◼
►
I would get sick of it if we had it all the time,
00:03:24
◼
►
but most of the time people are making cakes or cupcakes
00:03:25
◼
►
or whatever.
00:03:26
◼
►
They're making chocolate or vanilla cake or whatever.
00:03:28
◼
►
It's just for my birthday, carrot cake.
00:03:31
◼
►
That's-- the pineapples are really good,
00:03:32
◼
►
and a really interesting idea.
00:03:33
◼
►
The raisins, I could see why that would be controversial.
00:03:35
◼
►
Pineapple, though?
00:03:36
◼
►
That could be really nice.
00:03:38
◼
►
It keeps the cake moist, I think.
00:03:39
◼
►
I mean, the first time she made it,
00:03:40
◼
►
I'm like, are these dried pineapples?
00:03:41
◼
►
But they're not.
00:03:42
◼
►
It's fresh cut pineapple, bits of fresh cut pineapple.
00:03:45
◼
►
and they cook in the cake and the pineapple gets dry
00:03:48
◼
►
but the cake gets moist so they even out.
00:03:50
◼
►
So it's not like they're hard pieces of pineapple in there
00:03:54
◼
►
but the cake is very moist as well, it's good.
00:03:57
◼
►
- Okay, yeah, 'cause I've recently,
00:03:59
◼
►
I think I've talked about this before,
00:04:00
◼
►
I've recently honed the skill of choosing good pineapples
00:04:03
◼
►
at the grocery store and so now I'm able to fairly reliably
00:04:08
◼
►
buy pretty decent to great pineapples.
00:04:11
◼
►
So of course I'm always looking for ways to use them
00:04:13
◼
►
and that's a good one, I should try that.
00:04:15
◼
►
- I think this is it.
00:04:16
◼
►
I mean, I think we've passed around the recipe before.
00:04:18
◼
►
I'll double check for the show notes,
00:04:20
◼
►
but Ena Garten, not Ena Gartner,
00:04:22
◼
►
sorry, get her name wrong all the time.
00:04:23
◼
►
And we don't put pineapples on top like this shows.
00:04:26
◼
►
- No, well that's a different thing.
00:04:27
◼
►
That's an upside down cake kind of thing.
00:04:29
◼
►
That's a whole different-- - No, no, look at the picture.
00:04:30
◼
►
Like it's cream cheese frosting,
00:04:32
◼
►
but then they put bits of pineapple on top and we don't--
00:04:33
◼
►
- Oh, that's interesting.
00:04:35
◼
►
- Yeah, that actually could just be like an indicator.
00:04:37
◼
►
It's like this, warning, this cake contains pineapple
00:04:39
◼
►
in case for some reason you have terrible taste
00:04:41
◼
►
and don't want that.
00:04:43
◼
►
- I am actually not a pineapple fan.
00:04:44
◼
►
I wish I liked it, but it is not for me.
00:04:46
◼
►
- Like I said, easy to leave the pineapple
00:04:48
◼
►
and the raisins out of this.
00:04:50
◼
►
Then it just becomes a more boring carrot cake.
00:04:52
◼
►
But you know, plain old boring carrot cake
00:04:53
◼
►
with cream cheese frosting.
00:04:55
◼
►
It's one of the classics.
00:04:56
◼
►
- So what was your cake preference
00:04:58
◼
►
before this thought technology entered your world?
00:05:01
◼
►
- I don't think I had one.
00:05:02
◼
►
- No cake, no presents, no party.
00:05:04
◼
►
- Yeah, that remains.
00:05:07
◼
►
That remains.
00:05:07
◼
►
- Fair enough.
00:05:10
◼
►
Now I am a fan of like just boring,
00:05:12
◼
►
boxed like chocolate cake with--
00:05:15
◼
►
- You're a cheap date, Casey.
00:05:16
◼
►
- Yes, I am.
00:05:17
◼
►
I know everyone's surprised by this.
00:05:18
◼
►
But just chocolate cake with vanilla icing on the top.
00:05:22
◼
►
And the best thing, it's like lasagna,
00:05:26
◼
►
after you have a little bit, you refrigerate it,
00:05:28
◼
►
come back to it the next day,
00:05:29
◼
►
and the icing is just a little bit crunchy.
00:05:32
◼
►
- I don't think I've ever heard anyone say that
00:05:33
◼
►
about boxed cake mix, but okay.
00:05:35
◼
►
- I'm saying, it's true, try it out
00:05:38
◼
►
after you try your Velveeta.
00:05:40
◼
►
- I mean, I've had leftover box cake mix,
00:05:42
◼
►
not like I just feel like it's--
00:05:43
◼
►
- I think it's more about the icing
00:05:45
◼
►
than it is the cake, if I'm honest.
00:05:46
◼
►
The icing gets a little-- - Do you like it
00:05:47
◼
►
to get hard and crusty? - Yeah, yeah, yeah, yeah.
00:05:50
◼
►
Yes, oh yes.
00:05:51
◼
►
- Have you ever tried combining your loves
00:05:52
◼
►
and maybe putting a layer of Alveda Mac and Cheese
00:05:56
◼
►
between the cake-- - No, no, stop.
00:05:57
◼
►
- Sponge layers?
00:05:58
◼
►
- Look, okay, we gotta move on.
00:06:01
◼
►
- I'm sure it could be done.
00:06:02
◼
►
(electronic beeping)
00:06:04
◼
►
- All right, let's do some follow-up.
00:06:06
◼
►
Amy Lee writes, "I loved the recent conversation
00:06:08
◼
►
around the copyright implications of AI-generated art and there was some hypothetical discussion
00:06:11
◼
►
of how you'd feel if you were an artist and your art was used to train these models. I
00:06:15
◼
►
was surprised that something like GitHub Copilot wasn't in the conversation, as Copilot is
00:06:19
◼
►
probably the closest coding equivalent we have to stable diffusion. If you have any
00:06:23
◼
►
open source code on GitHub, it's likely been used by Copilot and in a way that doesn't
00:06:27
◼
►
necessarily respect the license applied to the code. OpenAI used all the public code
00:06:31
◼
►
they could find regardless of license and used it to train the model. This is quite
00:06:35
◼
►
similar to their approach with training on art.
00:06:37
◼
►
Hypothetical for this case would be, what if it was also allowed to train on closed
00:06:40
◼
►
source code on GitHub?
00:06:42
◼
►
How would you feel if your code was used in this model even though you never publicly
00:06:46
◼
►
released it or gave it a license to others?
00:06:48
◼
►
That's potentially just a contract away between GitHub and OpenAI, no fancy decompilation
00:06:53
◼
►
This was, I think, a very, very interesting point.
00:06:55
◼
►
I really was flummoxed once I read it.
00:06:59
◼
►
I don't think I have any problem with my open source stuff being sucked into, like, you
00:07:04
◼
►
Copilot or Stable Diffusion or what have you, but I would not feel good about
00:07:08
◼
►
closed source stuff ending up there. Just on principle.
00:07:13
◼
►
Like that's my private stuff. Yes, it exists on GitHub, but that's not
00:07:18
◼
►
GitHub stuff. That's my stuff, and I would not feel good about that at all.
00:07:22
◼
►
To me, that's the line. It's like, if you have private repos, those should
00:07:27
◼
►
remain private to you in all ways, from not only exposure to the files
00:07:32
◼
►
of you know for people to see but also training to me that's that's an obvious
00:07:36
◼
►
line yeah I completely agree with you I think the weird thing about copilot and
00:07:40
◼
►
code stuff well there's two weird things about it one is my impression based on
00:07:45
◼
►
seeing many examples of copilot and trying myself is that the odds of it
00:07:49
◼
►
producing a snippet of code verbatim from its source is much higher than with
00:07:54
◼
►
any of the AI image stuff yeah that's a good point you know what I mean like
00:07:57
◼
►
sometimes people I've seen people say hey this is like literally my paragraph
00:08:00
◼
►
of code for doing this thing, right?
00:08:04
◼
►
And I think that does make a difference because that's not a transformative any of this, literally
00:08:08
◼
►
just you copy and paste it, right?
00:08:10
◼
►
And on the open source thing, like, open source doesn't mean you can do whatever you want,
00:08:14
◼
►
that's why open source licenses exist.
00:08:16
◼
►
So I feel like open source licenses should address this case explicitly.
00:08:22
◼
►
Again, arguably all existing open source licenses do address it in some way that has yet to
00:08:27
◼
►
be tested in a court, right?
00:08:28
◼
►
Because you can say, well, I can look at the existing rules
00:08:30
◼
►
and decide whether I think this falls within them or not.
00:08:33
◼
►
But it would be much simpler if you could just
00:08:35
◼
►
explicitly put it in there.
00:08:36
◼
►
And same thing with the copyrighted stuff.
00:08:38
◼
►
I feel like this should be something that--
00:08:42
◼
►
if you're training an AI model on code,
00:08:45
◼
►
you should be using code that you're
00:08:46
◼
►
pretty sure you're allowed to use for the purposes of training
00:08:49
◼
►
an AI model.
00:08:49
◼
►
And so obviously, a very, very open, open source license
00:08:52
◼
►
may do that.
00:08:53
◼
►
Because it may say, hey, you can use this code
00:08:54
◼
►
for whatever you want.
00:08:55
◼
►
You don't have to credit us.
00:08:56
◼
►
You don't have to pay us.
00:08:57
◼
►
You don't have to do anything like the broadest
00:08:58
◼
►
of broadest open source licenses.
00:08:59
◼
►
That's probably game right now.
00:09:01
◼
►
But the more restrictive ones, you know,
00:09:03
◼
►
that requires credit or if it's a copyleft thing
00:09:05
◼
►
or whatever, using that to trade in AI models
00:09:08
◼
►
is still questionable.
00:09:09
◼
►
And the second thing is, unlike with image training things
00:09:12
◼
►
or whatever, the result you get from Copilot
00:09:15
◼
►
is not immediately useful, let's say.
00:09:17
◼
►
We talked about this before.
00:09:18
◼
►
You can't just take code generated by an AI thing
00:09:20
◼
►
and says, I assume this works.
00:09:22
◼
►
You have to actually figure out whether it does
00:09:24
◼
►
what you want it to do.
00:09:26
◼
►
It's a really important part of programming.
00:09:27
◼
►
not just writing the code the first time,
00:09:29
◼
►
whether you read it yourself or an AI thing writes it,
00:09:31
◼
►
then you have to figure out if what you wrote
00:09:33
◼
►
does the thing that you wanted it to do.
00:09:35
◼
►
And that's the hard part of programming, right?
00:09:38
◼
►
Arguably, it's harder when some other thing
00:09:39
◼
►
wrote the code for you, especially if it's complicated
00:09:42
◼
►
and you don't understand it, but either way, it's difficult.
00:09:45
◼
►
And so it's not like people are going to co-pilot up a thing
00:09:48
◼
►
and say, "And I'm done."
00:09:49
◼
►
No, you're not even close to done.
00:09:51
◼
►
You have to now say, "Okay, I co-pilot up
00:09:53
◼
►
"10,000 lines of code."
00:09:54
◼
►
Figure out if those 10,000 lines of code
00:09:56
◼
►
come close to doing what you wanted them to do.
00:09:59
◼
►
And that's, you know, at the micro level,
00:10:01
◼
►
does this paragraph do what I want it to do?
00:10:02
◼
►
And at the macro level,
00:10:03
◼
►
does the program do what I want it to do?
00:10:05
◼
►
That is incredibly difficult.
00:10:06
◼
►
Whereas if an AI art thing comes out and you say,
00:10:08
◼
►
I like it fine, it's done.
00:10:09
◼
►
Like it's not functional in that way.
00:10:11
◼
►
It's not like the people are gonna look at the image
00:10:14
◼
►
and then their eyes are gonna explode, right?
00:10:15
◼
►
But that's the equivalent of that could happen
00:10:17
◼
►
if you have code that doesn't do what you want
00:10:18
◼
►
and you run it and just absolutely doesn't do
00:10:21
◼
►
what your program is or crashes or does something like that.
00:10:23
◼
►
So it is interesting and there are similar issues,
00:10:27
◼
►
but code is so fundamentally different than images
00:10:31
◼
►
or something that tells another machine what to do
00:10:36
◼
►
and that presumably has some kind of correctness.
00:10:40
◼
►
I don't know, you can say whether it does
00:10:41
◼
►
what I intended it or not, is a little bit different
00:10:44
◼
►
than something that just someone has to look at
00:10:46
◼
►
and say, I find that acceptable, therefore I'm done.
00:10:48
◼
►
- Yeah, I agree with you that the open source license
00:10:52
◼
►
should prevent this, or may prevent this sort of thing
00:10:55
◼
►
from happening.
00:10:56
◼
►
I'm just saying I'm personally not particularly bothered
00:10:58
◼
►
if that was subverted or ignored or what have you
00:11:01
◼
►
for open source stuff.
00:11:03
◼
►
But yeah, I find it really gross for closed source stuff,
00:11:07
◼
►
even leaving aside what you're saying, Jon,
00:11:08
◼
►
that it's not exactly an apples to apples comparison.
00:11:11
◼
►
But yeah, I thought this was a really interesting point
00:11:14
◼
►
for me, nevertheless.
00:11:15
◼
►
- The closed source thing of like,
00:11:17
◼
►
have any of us read the user agreement for GitHub?
00:11:19
◼
►
It could be already in the user agreement for GitHub
00:11:22
◼
►
that we have allowed GitHub by agreeing to that thing
00:11:25
◼
►
and putting our code on there,
00:11:26
◼
►
that they're actually allowed to make a contract
00:11:28
◼
►
with OpenAI and say,
00:11:29
◼
►
"Hey, we're allowing them to use your close with them."
00:11:30
◼
►
Of course, if they did that, they could say,
00:11:32
◼
►
"Well, you agreed to these terms,
00:11:34
◼
►
then we just take our code off GitHub," right?
00:11:35
◼
►
I think that would be a bad move for them,
00:11:37
◼
►
but I'm assuming none of us have actually ever read,
00:11:40
◼
►
in full, the terms for GitHub.
00:11:42
◼
►
So that's just centralization
00:11:45
◼
►
and having large, powerful players in the market.
00:11:48
◼
►
That's why that's bad.
00:11:49
◼
►
And to be clear, I don't think GitHub is some kind of monopoly
00:11:52
◼
►
on Git or whatever.
00:11:53
◼
►
If GitHub did that, people would take their closed source stuff
00:11:58
◼
►
There is enough of a competitive market.
00:12:00
◼
►
They are not the only place that can host Git stuff.
00:12:03
◼
►
And Git being decentralized, you don't need any one single place
00:12:05
◼
►
to host anything.
00:12:06
◼
►
So we're pretty well protected technologically from this.
00:12:09
◼
►
Hopefully, GitHub would be smart with this.
00:12:11
◼
►
But the counterexample is, well, GitHub
00:12:12
◼
►
wasn't particularly smart with the rollout of Copilot
00:12:15
◼
►
in terms of what they used to train it
00:12:18
◼
►
and compliance with the licenses.
00:12:19
◼
►
I think when they first rolled it out,
00:12:21
◼
►
they were just like, everything's fine, right?
00:12:22
◼
►
And they're like, well, wait a second.
00:12:23
◼
►
My open source license says X, Y, and Z,
00:12:25
◼
►
and it definitely says you can't use it
00:12:27
◼
►
for something like this.
00:12:28
◼
►
Did you use my code?
00:12:29
◼
►
It seems like you did.
00:12:30
◼
►
And I think since then, maybe they've adjusted and said,
00:12:33
◼
►
okay, we will honor the license set on your repo
00:12:36
◼
►
and only use the ones that we think we're allowed to use
00:12:38
◼
►
according to the open source license or whatever.
00:12:41
◼
►
- Yeah, I should have been more explicit, by the way.
00:12:43
◼
►
GitHub Copilot is a thing where you can start typing code
00:12:47
◼
►
in one of the many supported languages.
00:12:50
◼
►
And based on what you type,
00:12:51
◼
►
it will try to figure out what it is you really want,
00:12:54
◼
►
and then go ahead and fill out your code for you.
00:12:58
◼
►
So for basic operations,
00:13:00
◼
►
like a database like CRUD, for example,
00:13:02
◼
►
it can get stunningly close from what I've understood.
00:13:05
◼
►
I haven't really played with this myself,
00:13:06
◼
►
but my understanding is it can get just bananas close
00:13:09
◼
►
to what you would actually write
00:13:11
◼
►
if you were to write this out by hand.
00:13:12
◼
►
And for tedious, like busy work,
00:13:15
◼
►
of which there's a fair bit in programming,
00:13:17
◼
►
that's actually super duper cool, but it's certainly--
00:13:21
◼
►
- It's not cool, but then you have to read a paragraph
00:13:24
◼
►
of code you didn't write and say,
00:13:25
◼
►
does this really reverse a string?
00:13:26
◼
►
Like whatever trivial thing you have.
00:13:28
◼
►
- That's the thing, it seems like a subtle bug factory.
00:13:31
◼
►
Like are you actually saving time?
00:13:34
◼
►
- I don't know, maybe not.
00:13:35
◼
►
Again, I haven't really played with this.
00:13:37
◼
►
- That's why I feel like the thing that people do
00:13:40
◼
►
that is different than this,
00:13:42
◼
►
like having a computer do it for you
00:13:44
◼
►
when you're a programmer is not that much more helpful
00:13:47
◼
►
than you going and looking up something, whatever it is.
00:13:50
◼
►
Look it up in Stack Overflow and people say,
00:13:51
◼
►
"Oh, I just caught," people just copy and paste
00:13:53
◼
►
everything from Stack Overflow.
00:13:54
◼
►
But Stack Overflow has someone explaining the code to you
00:13:57
◼
►
and people may copy and paste it,
00:13:58
◼
►
but a lot of time what they do is like rewrite it
00:14:01
◼
►
by looking at Stack Overflow
00:14:02
◼
►
and that's a process of understanding, hopefully.
00:14:04
◼
►
Hopefully you're not just blindly like,
00:14:05
◼
►
"Well, I don't understand this at all,
00:14:07
◼
►
"but I'm just gonna copy and paste this paragraph of code
00:14:09
◼
►
"from Stack Overflow."
00:14:11
◼
►
But even that, copying, pasting code from Stack Overflow
00:14:14
◼
►
is I feel like has a higher chance of success
00:14:16
◼
►
if it's a highly rated answer on a well-trafficked question.
00:14:21
◼
►
That code probably has a better chance of being correct
00:14:24
◼
►
than the AI-generated equivalent,
00:14:26
◼
►
unless the AI-generated equivalent is verbatim
00:14:28
◼
►
from somebody else's code,
00:14:29
◼
►
because there's not a lot of,
00:14:31
◼
►
especially for trivial code, mixing and matching,
00:14:33
◼
►
like what are they gonna do,
00:14:34
◼
►
rename the variables or something,
00:14:35
◼
►
like half of what people do
00:14:37
◼
►
when they copy from Stack Overflow.
00:14:38
◼
►
But if it takes any sort of deviance from,
00:14:41
◼
►
like there's not a lot of room for riffing, right?
00:14:44
◼
►
Like, it either has an off by one error in the loop
00:14:47
◼
►
or it doesn't, right?
00:14:48
◼
►
It either correctly reverses strings of all possible links
00:14:50
◼
►
or it doesn't, right?
00:14:51
◼
►
It handles the zero length case or it doesn't.
00:14:53
◼
►
You know, it's kind of an open shot on the micro level.
00:14:56
◼
►
On the macro level, things get hairier and, you know,
00:14:59
◼
►
then it's not like you can ask it
00:15:00
◼
►
to write an entire program for you.
00:15:02
◼
►
But you kind of can.
00:15:03
◼
►
You can say, "Space Invaders!"
00:15:04
◼
►
And it's like, here's an entire Space Invaders game
00:15:06
◼
►
in JavaScript.
00:15:06
◼
►
It's not really Space Invaders.
00:15:08
◼
►
It kind of crashes sometimes, but it mostly works.
00:15:11
◼
►
So, yeah, it's, again, it's different with code.
00:15:14
◼
►
because it's not just like, I look at the code
00:15:16
◼
►
and I'm happy, you have to actually run it,
00:15:18
◼
►
and it's in the running where you find out
00:15:19
◼
►
does this thing actually work.
00:15:22
◼
►
- Fair enough.
00:15:23
◼
►
John, tell me about ChickBit.
00:15:25
◼
►
- Yeah, we were talking about data,
00:15:27
◼
►
a bit rot last episode, someone had a question about it,
00:15:31
◼
►
and there are lots of programs that can do
00:15:33
◼
►
one of the steps that we talked about,
00:15:34
◼
►
which is detect whether there are other errors.
00:15:37
◼
►
Some file systems do it for you,
00:15:38
◼
►
some operating systems do it for you.
00:15:40
◼
►
Sometimes you can use a program outside
00:15:42
◼
►
of the operating system to do it for you,
00:15:43
◼
►
Here's one I don't think I had heard of last time we discussed this so I thought I would
00:15:47
◼
►
Mention it and link it disclaimer. I have not tried this program. I don't know if it actually does what it says it does, haha
00:15:54
◼
►
But if you want to check it out, it's written in Python
00:15:57
◼
►
It's called CHK bit which I'm assuming is short for check bit
00:16:00
◼
►
And as the website says a lightweight tool to check the data integrity of your files
00:16:04
◼
►
It allows you to verify the data has not changed since you put it there and that is still the same when you move it
00:16:09
◼
►
Somewhere else it just basically makes dot directories and writes about to check something in it
00:16:12
◼
►
This is actually kind of a fun project
00:16:13
◼
►
for a beginning programmer to become
00:16:17
◼
►
a little bit more seasoned, because you're like,
00:16:19
◼
►
oh, this is easy.
00:16:20
◼
►
I know how to read a file and get a checksum.
00:16:22
◼
►
I know how to make a directory.
00:16:23
◼
►
And I know how to read and write files and check that,
00:16:26
◼
►
you know, it seems like, oh, I can do all those things.
00:16:28
◼
►
I'm a beginning programmer.
00:16:29
◼
►
I have all the tools I need to do this.
00:16:32
◼
►
If you then go and try to implement a program like this,
00:16:35
◼
►
even though you think you know how to do,
00:16:37
◼
►
you can co-pilot up every single one
00:16:39
◼
►
of those individual steps,
00:16:40
◼
►
you will very, very quickly become a not so beginning programmer as you realize
00:16:44
◼
►
all the weird things you didn't consider about real people's discs and what are
00:16:49
◼
►
the actual performance bottlenecks to make this unfeasible and how much of a
00:16:53
◼
►
pain is it and what kind of weird errors do you get from the operating systems
00:16:56
◼
►
and what are sparse files and what are hard links and what are SIM links and
00:16:59
◼
►
what are permissions and what is sandboxing and you will learn so especially
00:17:02
◼
►
if you try to do this on a Mac, you will learn so much so fast probably that
00:17:07
◼
►
you'd never wanted to know.
00:17:07
◼
►
And if you don't find that exhilarating, you're probably don't want to be a
00:17:10
◼
►
programmer but presumably the people who wrote checkbit have done a bunch of this
00:17:13
◼
►
work for you so if you just want to do something to check some of your files
00:17:16
◼
►
this is one of many many options it's just one I hadn't heard of before so I
00:17:20
◼
►
thought it was worth linking you are clearly not a child of the 90s like I am
00:17:25
◼
►
you think you know but you have no idea so it was that MTV diary something like
00:17:29
◼
►
that I forget man it's true life I don't know some MTV show you still love
00:17:32
◼
►
probably true life we are sponsored this week by green chef a CCOF certified
00:17:40
◼
►
meal kit company. Green Chef makes eating well easy with plans to fit every
00:17:44
◼
►
lifestyle. Whether you're keto, paleo, vegan, vegetarian, gluten-free, or just
00:17:49
◼
►
looking to eat more balanced meals, Green Chef offers a range of recipes to suit
00:17:52
◼
►
your preferences. And in fact, you know, we previously were sponsored by HelloFresh.
00:17:56
◼
►
Green Chef is now owned by HelloFresh. And the wider variety of meal
00:18:00
◼
►
plans to choose from, there's something for everyone. So if you're looking to
00:18:03
◼
►
start a keto diet in particular in this new year, Green Chef's making it easier
00:18:07
◼
►
than ever to keep keto with their brand new limited time keto kickoff 2023 with
00:18:12
◼
►
keto recipes for breakfast lunch and dinner plus meal bundles at the green
00:18:15
◼
►
market keep keto the easy and delicious way and of course they also just have
00:18:20
◼
►
tons of other variety they've expanded their menu recently you can now choose
00:18:23
◼
►
from 30 weekly recipes with the option to mix and match meals from different
00:18:27
◼
►
dietary preferences all in the same box without changing your plans so if you
00:18:31
◼
►
want to do vegan one day keto the next you can do that they're offering more
00:18:35
◼
►
customization than ever before. You can also swap protein in any meal that
00:18:39
◼
►
features chicken, beef, or salmon. For USDA certified organic ground beef, USDA
00:18:44
◼
►
certified organic chicken, or wild-caught sockeye salmon. You can also now add
00:18:48
◼
►
chicken or fish to select vegan and veggie recipes each week for an added
00:18:51
◼
►
protein boost. There are just so many great options with Green Chef. They're
00:18:55
◼
►
also now offering 10-minute lunches. Each week's menu includes two convenient low
00:18:59
◼
►
prep and nutritious lunch recipes ready in just 10 minutes, no cooking required.
00:19:03
◼
►
So it's perfect for when you are on the go or pressed for time at the office so you can eat well at lunchtime too.
00:19:09
◼
►
So check it out at greenchef.com/ATP60 and use code ATP60 to get 60% off. That's a ton! Plus free shipping.
00:19:19
◼
►
Once again, greenchef.com/ATP60. Use promo code ATP60 for 60% off plus free shipping.
00:19:27
◼
►
shipping. Thank you so much to Green Chef, the number one meal kit for eating well, for
00:19:31
◼
►
sponsoring our show.
00:19:34
◼
►
Marco, on a recent episode of Under the Radar, which is on a very good run, which is not
00:19:42
◼
►
surprising because they are excellent episodes. Usually, Marco, usually not longer than 30
00:19:49
◼
►
minutes. But anyways, on Under the Radar, you were talking about a couple of things.
00:19:55
◼
►
You were talking about how you're kind of pulling the plug on using CloudKit for Overcast,
00:20:01
◼
►
but you are allegedly, theoretically, maybe, going to be keeping the web player for Overcast.
00:20:09
◼
►
So I would like to quickly celebrate the Overcast web player being--surviving for another day,
00:20:14
◼
►
which is great news, even though I don't use it that much anymore.
00:20:17
◼
►
I do think it's cool that you're keeping it around.
00:20:20
◼
►
But I'm very interested in this CloudKit stuff.
00:20:23
◼
►
So I have been working on something new that the boys don't really know about yet because
00:20:26
◼
►
it's way too early for that.
00:20:28
◼
►
But this new thing I'm working on—
00:20:30
◼
►
Are we the boys?
00:20:32
◼
►
You are the boys.
00:20:33
◼
►
This thing I'm working on, it is currently written against CloudKit, and I was using
00:20:41
◼
►
CloudKit as a data store for what it does.
00:20:44
◼
►
And hearing you have a less rosy opinion of CloudKit than I expected is very selfishly
00:20:50
◼
►
interesting to me.
00:20:51
◼
►
So can you give the 10 second version
00:20:55
◼
►
of your 29 minute podcast, if you don't mind?
00:20:58
◼
►
And then I'd love to dig in a little more
00:20:59
◼
►
about how you came to this conclusion
00:21:02
◼
►
and what you think the implications are
00:21:03
◼
►
for not only people like me
00:21:05
◼
►
that are trying to write something new,
00:21:07
◼
►
but people like you that are maybe moving something old
00:21:09
◼
►
into this new world.
00:21:11
◼
►
So I don't know, take it whatever direction you want,
00:21:12
◼
►
but I thought we could tug on that string a little bit.
00:21:14
◼
►
- Yeah, sure.
00:21:15
◼
►
So over the last, I'll be brief,
00:21:18
◼
►
'cause this is mostly covered in another radar,
00:21:20
◼
►
so we're mainly doing it here for any additional elaboration
00:21:23
◼
►
and for you guys to yell at me.
00:21:25
◼
►
But, you know, mainly I was,
00:21:28
◼
►
I was facing a couple problems with Overcast
00:21:30
◼
►
over the past year.
00:21:32
◼
►
One was that I'm getting increasingly burdened
00:21:36
◼
►
by my massive amount of legacy code,
00:21:39
◼
►
and I'm trying to move myself forward in some way
00:21:42
◼
►
so that I can, you know, basically adopt new things,
00:21:47
◼
►
new languages, new frameworks, new techniques,
00:21:49
◼
►
you know, Swift, Swift UI, Swift async stuff
00:21:52
◼
►
and all that kind of stuff.
00:21:54
◼
►
So I'm looking at a bunch of rewriting basically.
00:21:58
◼
►
Not everything has to be rewritten,
00:21:59
◼
►
like the audio engine I'm gonna keep what it is,
00:22:02
◼
►
which is mostly C, and that's gonna be fine.
00:22:06
◼
►
But a lot of the UI I wanna rewrite,
00:22:09
◼
►
a lot of the data layer I wanna modernize,
00:22:12
◼
►
in part to make it easier to change the UI
00:22:15
◼
►
and to keep it up to date and to keep it fresh
00:22:17
◼
►
and to add features and in part to fix certain,
00:22:20
◼
►
you know, just certain like shortcomings
00:22:22
◼
►
and reliability problems,
00:22:24
◼
►
certain like weird obscure crash conditions
00:22:26
◼
►
that could happen.
00:22:27
◼
►
You know, some of those require
00:22:29
◼
►
just re-architecting certain things.
00:22:31
◼
►
So anyway, that's the motivating factor.
00:22:33
◼
►
And the second big problem I was having
00:22:34
◼
►
besides my massive legacy code bloat
00:22:37
◼
►
is that my server load was really,
00:22:39
◼
►
my server maintenance load,
00:22:41
◼
►
not like the actual load average on a particular server,
00:22:43
◼
►
but like the amount of my time
00:22:46
◼
►
it was taking to maintain and deal with my servers
00:22:50
◼
►
and their workload was getting to be a little too much.
00:22:53
◼
►
And so over the year, over the past year,
00:22:55
◼
►
I really have done a lot of optimization,
00:22:59
◼
►
a lot of server experiments,
00:23:01
◼
►
moving to certain techniques or services
00:23:04
◼
►
that are supposed to try to improve things
00:23:06
◼
►
and some of them did, most of them didn't.
00:23:09
◼
►
I've had to deal with a lot of regressions,
00:23:12
◼
►
a lot of bugs.
00:23:16
◼
►
We talked on the show a few times about how
00:23:18
◼
►
I would experiment with doing something like with S3
00:23:20
◼
►
or with Cloudflare as a CDN in front of various things
00:23:24
◼
►
and almost all of those have actually failed.
00:23:29
◼
►
Almost all of those ideas I had either didn't make it better
00:23:33
◼
►
or only made it better if I burned a ridiculous amount
00:23:37
◼
►
of money way more than I could actually justify
00:23:40
◼
►
or and even then it wasn't that much better.
00:23:44
◼
►
So in many cases, they introduced a bunch of weird bugs.
00:23:47
◼
►
I learned a lot.
00:23:50
◼
►
One of the things I learned is that
00:23:52
◼
►
all of those web services,
00:23:53
◼
►
when you, for instance, write data to them,
00:23:57
◼
►
and you try to read it back, sometimes it's there.
00:24:00
◼
►
Sometimes it's not.
00:24:01
◼
►
Sometimes it says it's updated and it actually hasn't.
00:24:04
◼
►
It's sometimes the write just fails.
00:24:07
◼
►
Why? Who knows?
00:24:08
◼
►
Sometimes Cloudflare just caches things when it shouldn't.
00:24:10
◼
►
Why? Who knows?
00:24:13
◼
►
There's a lot of like, this works 98% of the time.
00:24:17
◼
►
Well that's great, but when I write things to MySQL,
00:24:20
◼
►
it works 100% of the time.
00:24:22
◼
►
And then when I read them back,
00:24:23
◼
►
that works 100% of the time too.
00:24:25
◼
►
And so many of these optimizations
00:24:29
◼
►
would introduce weird subtle bugs and problems
00:24:32
◼
►
that eventually made them not worth it.
00:24:34
◼
►
And so anyway, so I've just gone through all this crap
00:24:36
◼
►
with my servers and so I devised this plan in the fall.
00:24:40
◼
►
You know, and I've been thinking about this for a while,
00:24:43
◼
►
you know, I should probably just move
00:24:45
◼
►
as much user data as possible to CloudKit,
00:24:48
◼
►
because my servers process two kinds of data.
00:24:52
◼
►
You know, one is like global data.
00:24:53
◼
►
It's like, well, this is the list of feeds I know about,
00:24:56
◼
►
of RSS feeds I know about for different podcasts,
00:24:59
◼
►
and here's the episodes in those feeds,
00:25:01
◼
►
and you know, and so on,
00:25:03
◼
►
and then the user-specific part of the data is,
00:25:07
◼
►
all right, I have these users,
00:25:08
◼
►
user number 123 is subscribed to feeds A, B, and C,
00:25:13
◼
►
and in feed B, they've listened to episodes
00:25:16
◼
►
one, two, and three, to progress 60 seconds completion
00:25:20
◼
►
and two seconds, you know.
00:25:21
◼
►
That's what I'm dealing with here, a lot of that data.
00:25:24
◼
►
Huge volumes of very simple data.
00:25:27
◼
►
And I know from running my previous web services,
00:25:30
◼
►
I know the amount of server resources I was spending
00:25:34
◼
►
per user was not a very good ratio.
00:25:38
◼
►
I was spending too much per user.
00:25:41
◼
►
That the number of active users I have
00:25:43
◼
►
does not justify the amount of server resources
00:25:47
◼
►
that I was needing to keep the system going.
00:25:50
◼
►
And the amount of time it was taking me to manage it.
00:25:54
◼
►
So anyway, so again, I had this idea,
00:25:57
◼
►
let me go to CloudKit.
00:25:59
◼
►
I'll move user data there, and I'll keep the public data,
00:26:01
◼
►
like all the feed crawling and everything,
00:26:02
◼
►
I'll keep that on my servers,
00:26:04
◼
►
but I'll move user data to CloudKit,
00:26:06
◼
►
thereby not only being a huge win in terms of like
00:26:10
◼
►
getting possibly privacy sensitive data out of my hands,
00:26:14
◼
►
which is always a great feature there.
00:26:16
◼
►
It's like nuclear waste, like I don't want this.
00:26:18
◼
►
Like I don't want people's data.
00:26:20
◼
►
And then secondarily, that would presumably result
00:26:23
◼
►
in a huge reduction in the server costs
00:26:27
◼
►
and server complexity and server maintenance needs
00:26:29
◼
►
that I'd have to deal with.
00:26:31
◼
►
Over the course of the fall,
00:26:33
◼
►
I decided in one of my fits of rage
00:26:36
◼
►
in undoing one of my very bad ideas
00:26:40
◼
►
for one of the various CDN hosted S3 bucket,
00:26:44
◼
►
one of those various things,
00:26:46
◼
►
I'm like, you know what, let me just buy some time
00:26:49
◼
►
with the good old fashioned MySQL setup
00:26:51
◼
►
that's just serving stuff directly.
00:26:53
◼
►
Let me buy some time and see if I can optimize this
00:26:56
◼
►
a little bit more.
00:26:58
◼
►
And I took like a week,
00:27:00
◼
►
And the one big table that was getting hit the most often
00:27:04
◼
►
had like three indexes on it.
00:27:06
◼
►
It's a huge table, hundreds of gigs.
00:27:08
◼
►
It had like three indexes on it
00:27:10
◼
►
and I ended up consolidating it down to one.
00:27:13
◼
►
Both by a little bit combining two that were already there
00:27:16
◼
►
and then rewriting the code to just not use the other one.
00:27:19
◼
►
So a combination of basic database stuff
00:27:22
◼
►
and of code changes made it so I could only use one index
00:27:25
◼
►
if I had to.
00:27:27
◼
►
And that single change made a way bigger gain
00:27:32
◼
►
than any of the stupid stuff I did
00:27:34
◼
►
for the whole rest of the year.
00:27:35
◼
►
It was infuriating.
00:27:37
◼
►
- That is both beautiful and awful all at once.
00:27:40
◼
►
- Yeah, so I did a couple of other things,
00:27:43
◼
►
like during that week I optimized a couple other things
00:27:46
◼
►
like the feed crawling,
00:27:47
◼
►
it was hitting one of the big tables twice
00:27:50
◼
►
and I rewrote the code a little bit
00:27:52
◼
►
so it only had to hit it once, stuff like that.
00:27:54
◼
►
I did a couple of optimizations like that,
00:27:57
◼
►
and it just made a huge difference.
00:27:59
◼
►
And I was like, damn it.
00:28:01
◼
►
So basically during that time,
00:28:05
◼
►
oh, sorry, going back a second.
00:28:07
◼
►
Before I had done that, when I was deciding,
00:28:09
◼
►
okay, my future is probably gonna be CloudKit,
00:28:12
◼
►
I put two things on my to-do list.
00:28:14
◼
►
Number one, I'm like, all right,
00:28:15
◼
►
I have to issue an update to the app
00:28:16
◼
►
that will measure the percentage of people
00:28:20
◼
►
who have CloudKit enabled.
00:28:24
◼
►
Because I use CloudKit so far, I have used CloudKit
00:28:27
◼
►
for a number of years now to do something very,
00:28:29
◼
►
very, very basic, which is if you are logged out,
00:28:33
◼
►
so if you restored a phone or you got a new phone
00:28:36
◼
►
or whatever, if you're logged out of Overcast,
00:28:38
◼
►
it shows you a list of your accounts
00:28:40
◼
►
and you can tap it to just log in.
00:28:42
◼
►
And that's just a list of basically login tokens
00:28:47
◼
►
that are stored in CloudKit.
00:28:49
◼
►
So I knew that CloudKit was available
00:28:52
◼
►
on most of my customers' devices
00:28:53
◼
►
because the system really has not resulted
00:28:55
◼
►
in any big problems for me,
00:28:56
◼
►
having this be tied to iCloud.
00:28:58
◼
►
And then I also use CloudKit on the web
00:29:01
◼
►
to help people log into the website
00:29:03
◼
►
who have anonymous accounts
00:29:04
◼
►
that don't have emails and passwords, which is the default.
00:29:07
◼
►
And Apple does have a CloudKit.js web interface,
00:29:11
◼
►
and it is horrific.
00:29:13
◼
►
It is really hard to use. - I was gonna add.
00:29:16
◼
►
- It is old and seemingly unmaintained.
00:29:20
◼
►
It has a very high error rate,
00:29:22
◼
►
and just the URLs you're hitting just error out a lot
00:29:25
◼
►
and you just have nothing, you can't do anything about it.
00:29:27
◼
►
The documentation is horrendous, using it is awkward.
00:29:29
◼
►
- No, the documentation stinks?
00:29:31
◼
►
- Yeah, but yeah, using it is incredibly cumbersome
00:29:35
◼
►
and awkward, it was clearly designed by nobody
00:29:38
◼
►
who has ever made a web anything ever.
00:29:41
◼
►
It is designed only for JavaScript use
00:29:43
◼
►
and it's definitely not designed for any kind of like
00:29:44
◼
►
tying in with the backend, like it was just,
00:29:46
◼
►
it's really extraordinarily cumbersome and bad.
00:29:51
◼
►
So I already knew that if I was going in the direction
00:29:54
◼
►
of CloudKit, the website, it was not something
00:29:57
◼
►
I wanted to really offer, like with the web playback.
00:30:01
◼
►
And I was thinking, I guess I'll still have
00:30:04
◼
►
the directory on the web where you can search
00:30:05
◼
►
and browse stuff, 'cause if nothing else,
00:30:08
◼
►
I use it when I'm debugging feed problems.
00:30:10
◼
►
I'll search for a podcast, browse this episode list
00:30:13
◼
►
and see all that, so I was like,
00:30:14
◼
►
I might as well keep the website.
00:30:15
◼
►
But I was gonna lose all user functionality on the website
00:30:19
◼
►
if I went with CloudKit.
00:30:20
◼
►
Because I'm like, I'm not gonna have access
00:30:23
◼
►
to what are your subscriptions,
00:30:25
◼
►
what is your, what's your progress in this episode,
00:30:29
◼
►
stuff like that.
00:30:29
◼
►
That was all gonna be in CloudKit
00:30:31
◼
►
and not on my servers anymore.
00:30:32
◼
►
So this move that I was planning on doing to CloudKit
00:30:35
◼
►
was going to kill the website for any kind of logged in use.
00:30:39
◼
►
And so anyway, so I decided, you know what,
00:30:44
◼
►
my servers are just killing me.
00:30:46
◼
►
I'm just gonna finally rip the bandaid off
00:30:49
◼
►
and just tell people, you know what,
00:30:52
◼
►
the website's gonna have to go
00:30:53
◼
►
because I wanna make this move.
00:30:55
◼
►
And so I did that in, I think, November,
00:30:59
◼
►
something like that.
00:31:00
◼
►
I posted a thing to the website,
00:31:02
◼
►
a little banner on top saying, sorry,
00:31:04
◼
►
sometime in 2023, this website's gonna be discontinued,
00:31:07
◼
►
mostly with the user functionality and stuff,
00:31:09
◼
►
because I wanna leave all my options open
00:31:11
◼
►
with my server stuff going forward.
00:31:14
◼
►
And also because hardly anybody uses it.
00:31:16
◼
►
So to give you some idea of what I mean
00:31:20
◼
►
by hardly anybody uses it,
00:31:22
◼
►
I'm looking at a few hundred people who use the website.
00:31:26
◼
►
And that is not a large portion of the user base.
00:31:30
◼
►
And this is like per day.
00:31:32
◼
►
But it's under a thousand people.
00:31:34
◼
►
And that's well under 1% or whatever.
00:31:39
◼
►
It's a very small portion of the user base.
00:31:40
◼
►
And so I'm like, why am I jumping over backwards here
00:31:44
◼
►
for people, for under a thousand people?
00:31:47
◼
►
I've made decisions to cut off support for an old OS
00:31:51
◼
►
that still had thousands of people using it.
00:31:53
◼
►
But the trade-offs outweigh that or whatever,
00:31:55
◼
►
and it was still a small enough percentage
00:31:58
◼
►
that I was comfortable with that or whatever.
00:31:59
◼
►
So I'm like, this is okay.
00:32:02
◼
►
I can lose the web player, it's not that big of a deal.
00:32:04
◼
►
Most people won't care.
00:32:06
◼
►
Boy was I wrong.
00:32:11
◼
►
I heard from so many people.
00:32:15
◼
►
And I think part of my problem with this decision,
00:32:19
◼
►
part of what I think surprised me,
00:32:21
◼
►
is that my analytics are not super granular.
00:32:24
◼
►
This is just like a home built analytics system
00:32:26
◼
►
that I report a couple of parameters to my server
00:32:30
◼
►
that's all anonymized with every sync request
00:32:32
◼
►
and I count 'em up and you know.
00:32:34
◼
►
So I can tell things like how many distinct users
00:32:38
◼
►
used feature X yesterday.
00:32:40
◼
►
I can't tell you how many distinct users
00:32:44
◼
►
used feature X in the past month.
00:32:46
◼
►
So if you don't use something every day,
00:32:50
◼
►
you're not counted every day.
00:32:52
◼
►
Does that make sense?
00:32:53
◼
►
So like if a different 200 people use this feature
00:32:57
◼
►
on Monday, Tuesday, Wednesday, Thursday, and Friday,
00:32:58
◼
►
if those are actually five different sets of 200 people,
00:33:01
◼
►
that's a thousand people.
00:33:03
◼
►
But my analytics will only show 200
00:33:05
◼
►
'cause it's only measuring it like per day.
00:33:07
◼
►
- What kind of analytics do you have
00:33:08
◼
►
where you can tell per day uniqueness
00:33:10
◼
►
but not cross day uniqueness?
00:33:11
◼
►
Is this like a one day cookie expiration or something?
00:33:15
◼
►
I've wrote the system years ago
00:33:17
◼
►
so I forget the exact details.
00:33:18
◼
►
But just as it is, there's two tables.
00:33:20
◼
►
There's analytics today and analytics archive.
00:33:24
◼
►
And analytics today is just some random numbers
00:33:27
◼
►
and everything.
00:33:28
◼
►
And then analytics archive is like the sum
00:33:32
◼
►
of how many of those people were for each metric each day.
00:33:35
◼
►
So I'm only really keeping the sum.
00:33:37
◼
►
Also, the random number that the app uses
00:33:40
◼
►
to associate people per day does rotate pretty quickly.
00:33:44
◼
►
I forget what it is.
00:33:45
◼
►
It's something like a random expiration
00:33:47
◼
►
between 48 hours and 72 hours, something like that.
00:33:51
◼
►
So that number, the random ID people are using
00:33:54
◼
►
to report to me, it changes so often.
00:33:56
◼
►
Anything more than a day granularity
00:33:58
◼
►
wouldn't be useful anyway.
00:33:59
◼
►
But I've never needed it really.
00:34:01
◼
►
For the most part, I'm not measuring things
00:34:05
◼
►
that are so critical that I would need
00:34:06
◼
►
that kind of advanced measurement.
00:34:08
◼
►
- So everyone is upset that you're killing the website.
00:34:13
◼
►
- Yeah, and so I'm starting to get the feeling
00:34:16
◼
►
that again, it's way more people
00:34:19
◼
►
than the daily analytics suggest
00:34:20
◼
►
because what people are telling me is,
00:34:23
◼
►
I'm hearing the same stories over and over again basically.
00:34:25
◼
►
It's like, oh I use this occasionally
00:34:27
◼
►
when looking something up.
00:34:28
◼
►
Or I use this on certain days when I'm at work,
00:34:32
◼
►
on my Windows work PC.
00:34:34
◼
►
And there were so many stories like that.
00:34:39
◼
►
A lot of the use cases were people who were using
00:34:41
◼
►
the file upload feature, which is part of Overcast Premium.
00:34:44
◼
►
And I said, I'll find some way to offer file upload still
00:34:48
◼
►
if I cancel the web player.
00:34:49
◼
►
So that was less of a concern, but it was still,
00:34:52
◼
►
it was a common enough thing, and I noticed
00:34:54
◼
►
that occasionally I would use the features too.
00:34:57
◼
►
Like if I hit a link to a website that had a podcast episode
00:35:02
◼
►
and I would follow the overcast link,
00:35:03
◼
►
and then I would add it to my account
00:35:05
◼
►
with the web interface.
00:35:06
◼
►
I'm like, "Damn it, I want people to do this
00:35:07
◼
►
"after I make this change." (laughs)
00:35:09
◼
►
And I started realizing,
00:35:11
◼
►
there's a lot more uses for this thing.
00:35:13
◼
►
It's kind of like the Mac Mini,
00:35:15
◼
►
which is like, most people don't need a Mac Mini.
00:35:18
◼
►
However, there are certain use cases
00:35:21
◼
►
that only the Mac Mini can cover.
00:35:23
◼
►
And it's a large number of very small use cases, effectively.
00:35:28
◼
►
And that's how my web player was.
00:35:30
◼
►
it covers a large number of very small use cases.
00:35:33
◼
►
A lot of people end up using those every once in a while.
00:35:37
◼
►
That was problem number one.
00:35:39
◼
►
Problem number two happened when I shipped
00:35:42
◼
►
the version of Overcast that captured the analytics
00:35:45
◼
►
of how many people have logged in iCloud accounts.
00:35:47
◼
►
And I thought that the number of people
00:35:51
◼
►
who did not have CloudKit available,
00:35:54
◼
►
which I thought meant they didn't have an iCloud account
00:35:56
◼
►
on their device, would be very, very small.
00:36:00
◼
►
I was wrong about two things.
00:36:02
◼
►
Number one, not being able to use CloudKit
00:36:05
◼
►
is not just caused by not having an iCloud account
00:36:10
◼
►
signed into your device.
00:36:11
◼
►
It is also caused by having iCloud Drive disabled.
00:36:16
◼
►
That's a very different thing.
00:36:18
◼
►
- That's so weird to me that the two things
00:36:22
◼
►
are codependent, for lack of a better word.
00:36:24
◼
►
I would not have expected that.
00:36:25
◼
►
- Well, that's where CloudKit stars all the stuff, though,
00:36:27
◼
►
right? - Yes, that's the thing.
00:36:29
◼
►
So when people say iCloud, there's a bunch of different
00:36:33
◼
►
services that actually is part of iCloud.
00:36:35
◼
►
One that I've used before, which I think I might move
00:36:38
◼
►
the account system back to, that little login token list
00:36:41
◼
►
thing, is called Key Value Store.
00:36:44
◼
►
And this is one of the very first things,
00:36:45
◼
►
like when iCloud first launched, it was like two or three
00:36:48
◼
►
services, this was one of them.
00:36:49
◼
►
It's been there since the beginning.
00:36:51
◼
►
iCloud Key Value Store is literally a key value store
00:36:53
◼
►
for very small bits of data, it's limited,
00:36:55
◼
►
it's very limited.
00:36:57
◼
►
I forget the exact limits, but it's something like
00:36:58
◼
►
you can have like a thousand keys and values stored
00:37:01
◼
►
and each one can be up to like four kilobytes or something.
00:37:03
◼
►
So you can store decent data there
00:37:07
◼
►
but it's more for like preferences
00:37:09
◼
►
and you know short bits of things.
00:37:11
◼
►
It's not really for arbitrary user data
00:37:13
◼
►
because the limits are so small,
00:37:16
◼
►
I wouldn't be able to use KeyValueStore
00:37:18
◼
►
because like way too many people
00:37:20
◼
►
would bump into those limits
00:37:21
◼
►
if you know if you had a lot of subscriptions or whatever.
00:37:24
◼
►
But that service as far as I can tell
00:37:26
◼
►
doesn't really count against anyone's data at all.
00:37:29
◼
►
Like it doesn't count against your iCloud storage
00:37:32
◼
►
in either in any way or in any meaningful way.
00:37:35
◼
►
That data is also not user browsable at all.
00:37:39
◼
►
Like there is no place I can go as an iCloud customer
00:37:42
◼
►
and see the key value data for my apps for iCloud
00:37:46
◼
►
as far as I know.
00:37:46
◼
►
Maybe, I mean, you know, maybe who knows?
00:37:48
◼
►
Maybe on the Mac it's in some like library
00:37:50
◼
►
hidden folder somewhere.
00:37:51
◼
►
But I don't know where that is.
00:37:52
◼
►
And it's for the most part it's hidden from users.
00:37:55
◼
►
So users can't go in and delete it or manage it really.
00:37:58
◼
►
So that data's kept very small.
00:38:00
◼
►
And as far as I know, that's not affected
00:38:01
◼
►
by the iCloud Drive preference,
00:38:03
◼
►
but I don't know that for sure yet.
00:38:04
◼
►
Anyway, iCloud Drive, the amount of storage
00:38:08
◼
►
that you're allowed to use is just whatever the user has
00:38:10
◼
►
in their iCloud account.
00:38:11
◼
►
So whatever amount of storage they have for free or pay for,
00:38:14
◼
►
that's what you can use.
00:38:15
◼
►
So it's, as far as the app's concerned,
00:38:18
◼
►
kind of unlimited in the sense that you don't have
00:38:21
◼
►
these arbitrary limits of four kilobytes or whatever else.
00:38:24
◼
►
So that does make sense to have controllable
00:38:28
◼
►
in some way by the user, to have visible to the user.
00:38:31
◼
►
So the way Apple has chosen to do that
00:38:33
◼
►
is to tie it into iCloud Drive.
00:38:34
◼
►
That's where that data is stored.
00:38:37
◼
►
So if you have iCloud Drive disabled,
00:38:39
◼
►
apps, just as far as apps can tell,
00:38:42
◼
►
you can't use CloudKit.
00:38:43
◼
►
And it doesn't tell you necessarily
00:38:46
◼
►
why you can't use CloudKit.
00:38:48
◼
►
I think, I could be wrong about this,
00:38:51
◼
►
I think it returns the no account status,
00:38:56
◼
►
whether you have no account for real,
00:38:58
◼
►
or whether you are logged in but iCloud Drive is disabled.
00:39:00
◼
►
So you can't, there's not an easy message
00:39:02
◼
►
you could show the user necessarily
00:39:04
◼
►
that would be very accurate or whatever else.
00:39:06
◼
►
So anyway, so I was shocked to find out,
00:39:10
◼
►
not only that, but the percentage of not signed in
00:39:15
◼
►
to iCloud or iCloud Drive disabled,
00:39:18
◼
►
The percentage of my users who can't use CloudKit
00:39:23
◼
►
is around 12%.
00:39:27
◼
►
And it keeps going up, I keep following this metric.
00:39:30
◼
►
Now granted, most of my data is from the end of December
00:39:34
◼
►
and the first day or two of January,
00:39:36
◼
►
so it is holiday break time for a lot of people.
00:39:40
◼
►
A lot of people aren't at work during this time
00:39:42
◼
►
where they take vacations or whatever else,
00:39:44
◼
►
so it's not an extremely representative time.
00:39:46
◼
►
Also just my overall usage is down by something like 20%
00:39:49
◼
►
or something like that for during this time,
00:39:52
◼
►
just because fewer people listen to podcasts
00:39:53
◼
►
when they're not in their work routine
00:39:55
◼
►
and they're like, you know, commuting and everything else.
00:39:57
◼
►
So this data is not super strong yet,
00:39:59
◼
►
but it's been staying, since this update shipped
00:40:01
◼
►
a couple of weeks ago, it's been staying between 10 and 12%
00:40:06
◼
►
of people who cannot use CloudKit in my user base.
00:40:09
◼
►
This is way higher than I thought.
00:40:13
◼
►
I was thinking it would be like 1% maybe.
00:40:16
◼
►
Nope, it's 10 times that.
00:40:18
◼
►
So it's way higher than I thought.
00:40:22
◼
►
And if I can't use CloudKit for these customers,
00:40:25
◼
►
it's different from if I move the required OS version
00:40:31
◼
►
forward, I still have, like all those people
00:40:35
◼
►
who I'm leaving behind still can use the old version.
00:40:38
◼
►
Like it's fine.
00:40:40
◼
►
But if I move all my user storage and sync to CloudKit,
00:40:45
◼
►
I'm gonna cut off 12% of my existing users,
00:40:49
◼
►
like not even just new users, existing users.
00:40:52
◼
►
That's a problem.
00:40:53
◼
►
Now, many of you out there might be thinking,
00:40:56
◼
►
well who cares, why don't you just not offer sync
00:40:58
◼
►
to people who don't have iCloud enabled or whatever.
00:41:02
◼
►
And that's okay, that's a reasonable theory.
00:41:05
◼
►
The problem is on an iOS device, in practice,
00:41:09
◼
►
sync means backup.
00:41:11
◼
►
If you don't offer sync,
00:41:13
◼
►
then when somebody loses their phone
00:41:16
◼
►
or it falls off of Casey's car or it--
00:41:19
◼
►
- Oh, that was my watch, not my phone.
00:41:23
◼
►
- Or they get a new phone and they don't quite hit
00:41:26
◼
►
the restore in the correct order
00:41:28
◼
►
and they have to reset everything
00:41:29
◼
►
or they lose their synced key chain or whatever,
00:41:32
◼
►
they just lose all their data.
00:41:37
◼
►
And I know how people feel about that
00:41:39
◼
►
from the handful of requests or the handful of support,
00:41:41
◼
►
emails and stuff I do get about that problem
00:41:43
◼
►
when my system doesn't work for somebody
00:41:46
◼
►
with the whole CloudKit account sync thing.
00:41:49
◼
►
People expect their data to be there.
00:41:51
◼
►
They expect that no matter what happens,
00:41:54
◼
►
when they get a new phone or they replace
00:41:55
◼
►
their run over phone, they expect that everything
00:42:00
◼
►
will just be there.
00:42:01
◼
►
You can't just tell them, well hey look,
00:42:03
◼
►
hey if you don't enable your iCloud account,
00:42:05
◼
►
you know, this is it, no sync, no backup.
00:42:08
◼
►
That's not really an acceptable outcome
00:42:10
◼
►
for modern expectations of software.
00:42:13
◼
►
that's just not an option.
00:42:14
◼
►
So you have to have some kind of account
00:42:16
◼
►
or something to back stuff up,
00:42:17
◼
►
and ideally it's automatic.
00:42:19
◼
►
And so anyway, so that's a no-go.
00:42:21
◼
►
I can't just say, well, sync is optional now.
00:42:24
◼
►
Like that doesn't fly in this day and age.
00:42:27
◼
►
So I have to offer this.
00:42:29
◼
►
And when I first, I first thought
00:42:32
◼
►
that the reason people wouldn't have an iCloud account
00:42:34
◼
►
would be really obscure situations like,
00:42:39
◼
►
I don't even know what.
00:42:40
◼
►
Like you're using some kind of weird test device,
00:42:42
◼
►
'cause it's actually somewhat challenging
00:42:44
◼
►
to use an iOS device without ever signing in
00:42:47
◼
►
an iCloud account.
00:42:48
◼
►
Lots of stuff doesn't really work very well without that.
00:42:50
◼
►
But I learned when I was, I guess, not tweeting about this,
00:42:54
◼
►
when I was mastadoning about this,
00:42:57
◼
►
I learned, I'm not gonna say tooting.
00:42:59
◼
►
That's a different thing.
00:43:01
◼
►
- You should say tooting.
00:43:02
◼
►
Embrace the tooting.
00:43:03
◼
►
- No, when I was masta-posting about this,
00:43:06
◼
►
that sounds gross too.
00:43:07
◼
►
- No, it's just making it worse.
00:43:09
◼
►
Tude is great because it's so close to tweet.
00:43:11
◼
►
When I was posting on Mastodon about this,
00:43:13
◼
►
I learned that it's actually fairly common
00:43:19
◼
►
for corporate issued and corporate locked down devices,
00:43:23
◼
►
either to not have an iCloud account at all
00:43:26
◼
►
and to disallow you from logging into one,
00:43:28
◼
►
or apparently a lot of corporate IT departments
00:43:30
◼
►
for whatever compliance or security reasons
00:43:33
◼
►
or whatever it is, won't allow third party
00:43:36
◼
►
cloud storage solutions.
00:43:37
◼
►
So they will possibly allow your iCloud account
00:43:40
◼
►
to be signed in, but they will specifically
00:43:41
◼
►
disallow iCloud Drive from being enabled.
00:43:44
◼
►
So that, which kills the whole thing for CloudKit.
00:43:47
◼
►
So I think what I'm seeing here is way more people
00:43:52
◼
►
than I expected use Overcast on a corporate managed iPhone.
00:43:57
◼
►
That makes sense, people listen to podcasts
00:44:00
◼
►
as part of their workday sometimes,
00:44:01
◼
►
like they'll have it on in the background
00:44:02
◼
►
or if you bring that phone to work,
00:44:05
◼
►
you'll use that on your commute or whatever else,
00:44:08
◼
►
like there's all sorts of conditions.
00:44:09
◼
►
So what I've learned here is CloudKit is really a no-go
00:44:14
◼
►
for things that might be run on a decent number
00:44:17
◼
►
of corporate issued phones.
00:44:18
◼
►
And so I decided, like right at the end of December,
00:44:23
◼
►
I decided, you know what, now that I have this data,
00:44:26
◼
►
this is not a good idea anymore.
00:44:27
◼
►
And since I had in the meantime optimized my servers
00:44:31
◼
►
a little bit better and made those gains,
00:44:33
◼
►
I'm like, actually, is continuing to run my servers
00:44:37
◼
►
the way they are really that big of a burden
00:44:39
◼
►
is it really worth this loss of this many people?
00:44:43
◼
►
And I decided, you know what, no it's not.
00:44:46
◼
►
It's not worth, like it isn't worth this loss.
00:44:48
◼
►
It's not, this whole plan I had to go to CloudKit
00:44:51
◼
►
and everything, this is not gonna work for me.
00:44:54
◼
►
And I'm not saying nobody can use CloudKit,
00:44:57
◼
►
but I'm saying it's, I thought it was gonna be a good fit
00:44:59
◼
►
for this particular app and for my particular priorities
00:45:02
◼
►
and needs and I got more information and it's not.
00:45:06
◼
►
So the website will stay and the Mac Mini remains a product in my lineup and
00:45:11
◼
►
I'm going to, you know,
00:45:13
◼
►
keep running my servers and I'll try to keep making it easier on myself.
00:45:16
◼
►
In the meantime,
00:45:18
◼
►
I'll get to go do anything else and not spend a year rewriting my whole sync
00:45:22
◼
►
How swayed were you,
00:45:23
◼
►
assuming this was not the case and it really was a fraction of a percent who
00:45:26
◼
►
couldn't use it,
00:45:27
◼
►
would you have been swayed by the horror stories from the people who say,
00:45:31
◼
►
Oh, if you're going to use CloudKit,
00:45:32
◼
►
you have to have something that's not CloudKit to serve as your backup for in
00:45:35
◼
►
CloudKit craps out?
00:45:38
◼
►
- Sync for a podcast app, I just finished telling you
00:45:40
◼
►
why it's required.
00:45:42
◼
►
But it doesn't have to be fast,
00:45:44
◼
►
and it doesn't have to be super aggressive or super recent
00:45:47
◼
►
because most of my customers are only using it
00:45:50
◼
►
on one device.
00:45:52
◼
►
So if CloudKit was having a bad day,
00:45:55
◼
►
and you were still able to use the podcast app,
00:45:58
◼
►
and you'd still, in my imagined architecture
00:46:00
◼
►
with my server still existing to do feed crawling and stuff,
00:46:03
◼
►
in that architecture, you would still even be getting
00:46:05
◼
►
new episodes, like that wouldn't stop if CloudKit was down.
00:46:10
◼
►
All that would stop would be your data wouldn't sync
00:46:12
◼
►
between different devices of yours.
00:46:14
◼
►
And so I decided in that kind of scenario,
00:46:17
◼
►
okay, it's a risk I'm willing to take.
00:46:19
◼
►
Like if CloudKit's down for a few hours
00:46:21
◼
►
and your progress, your overcast progress
00:46:24
◼
►
between your phone and your iPad and your watch
00:46:27
◼
►
doesn't sync for a few hours,
00:46:28
◼
►
that's not the end of the world.
00:46:30
◼
►
- What about the horror story of it just getting wedged?
00:46:32
◼
►
Like whether it's up or down for some period of time,
00:46:35
◼
►
at a certain point it just gets wedged
00:46:37
◼
►
and will just never sink again without some heroic measure.
00:46:40
◼
►
- That was a little more concerning, for sure.
00:46:42
◼
►
And frankly, I just hadn't gotten there yet.
00:46:46
◼
►
I mean, if I had gone down this path,
00:46:49
◼
►
chances are I would find different downsides to it.
00:46:52
◼
►
Downsides exist with every solution.
00:46:55
◼
►
Everyone's like, oh well, why don't you just,
00:46:57
◼
►
my favorite phrase, why don't you just move to,
00:47:01
◼
►
insert Facebook or Google or Amazon hosted solution here.
00:47:05
◼
►
Like, oh, just move to XYZ cloud server parsley.
00:47:08
◼
►
And it's like, I don't, like you don't understand,
00:47:11
◼
►
this is not my first day on the internet.
00:47:14
◼
►
Like this is not the first time I've, you know,
00:47:17
◼
►
used web services or created web services.
00:47:21
◼
►
Like every one of these solutions has pitfalls
00:47:25
◼
►
and limits and downsides.
00:47:27
◼
►
If you don't know what they are yet,
00:47:28
◼
►
you haven't used them enough.
00:47:30
◼
►
Trust me, everything has downsides.
00:47:33
◼
►
Nothing is hands off, nothing is automatic,
00:47:36
◼
►
nothing is taking all the problems out of your hands.
00:47:40
◼
►
Every service has a bad day, every service has downsides,
00:47:43
◼
►
every service has BS you have to deal with
00:47:45
◼
►
as the person running it, or using it I guess.
00:47:48
◼
►
At least with my current service,
00:47:50
◼
►
of running a whole bunch of Linode servers
00:47:52
◼
►
with MySQL and PHP and stuff,
00:47:54
◼
►
I know where all the pitfalls are.
00:47:57
◼
►
I know how that breaks.
00:47:59
◼
►
I know when I need to intervene.
00:48:01
◼
►
I know the BS I have to deal with.
00:48:03
◼
►
Any other service I would move to,
00:48:05
◼
►
I knew that I would be signing up for the devil I don't know.
00:48:09
◼
►
I'd be signing up for some kind of future BS
00:48:13
◼
►
and some kind of future sleepless nights
00:48:15
◼
►
and headaches and stress that I didn't yet know
00:48:18
◼
►
what they were.
00:48:19
◼
►
It's like Dick Cheney's Unknown Unknowns,
00:48:22
◼
►
whatever that was, or was it a from himself, who cares?
00:48:24
◼
►
Anyway, I knew there would be some kind of pitfalls
00:48:27
◼
►
with any of these other services.
00:48:29
◼
►
and CloudKit is of course no exception.
00:48:31
◼
►
Of course CloudKit has weirdness and problems
00:48:34
◼
►
and shortcomings and downsides and downtime and errors.
00:48:37
◼
►
Everything does.
00:48:39
◼
►
I'm not scared away by the possibility
00:48:41
◼
►
of a service having them.
00:48:43
◼
►
I'm scared away by me not knowing them
00:48:46
◼
►
and knowing that if I move to something like this,
00:48:49
◼
►
there will be some amount of learning curve there,
00:48:53
◼
►
possibly things that I would do very wrong as I learned.
00:48:56
◼
►
It'd be one thing if I was starting a whole new app
00:48:58
◼
►
with no users to start with, but when I'm moving an app
00:49:02
◼
►
from, you know, when I'm thinking about moving an existing
00:49:05
◼
►
app with a whole bunch of existing users,
00:49:08
◼
►
that is currently making up, you know, my income
00:49:12
◼
►
as a person, like, I don't wanna move that willy nilly
00:49:15
◼
►
to just anything, you know, I wanna do that pretty carefully
00:49:20
◼
►
and that's quite an operation to move something like that.
00:49:22
◼
►
And so, I was entertaining CloudKit because I thought
00:49:26
◼
►
would have significant benefits to me.
00:49:29
◼
►
Like I thought that the benefits would outweigh
00:49:31
◼
►
the possible downsides, and I got more information,
00:49:34
◼
►
and they didn't.
00:49:36
◼
►
- It makes sense.
00:49:37
◼
►
It's obviously a big bummer for you
00:49:40
◼
►
that you're not getting out of the server business
00:49:42
◼
►
no matter what happens, but I don't know.
00:49:45
◼
►
It's, I thought that a lot of Apple's stuff
00:49:49
◼
►
is using CloudKit now.
00:49:50
◼
►
Like I thought shared, not shared photo library,
00:49:53
◼
►
I thought the iCloud Photos was on CloudKit, so.
00:49:56
◼
►
- It is, and notes and reminder, I don't know if I remember,
00:49:59
◼
►
I think all of Apple's recent stuff is backed by CloudKit.
00:50:02
◼
►
And what I heard actually, when I was browsing
00:50:07
◼
►
my post-a-dons, what I heard was that people
00:50:11
◼
►
who have these devices, who run devices for work
00:50:15
◼
►
without iCloud Drive for whatever reason,
00:50:18
◼
►
a lot of them replied to me and a lot of them said,
00:50:20
◼
►
yeah, a bunch of apps break in random, annoying ways.
00:50:23
◼
►
Basically, like a whole bunch of stuff
00:50:25
◼
►
doesn't work quite right.
00:50:26
◼
►
A whole bunch of third party apps don't sync
00:50:28
◼
►
and just don't even tell you why.
00:50:30
◼
►
A whole bunch of Apple's apps just don't work right.
00:50:33
◼
►
You are correct, a lot of stuff uses CloudKit.
00:50:35
◼
►
And when you have one of these devices,
00:50:37
◼
►
a lot of that stuff just breaks.
00:50:38
◼
►
- I just, I find that hard,
00:50:40
◼
►
I'm not trying to say you're wrong,
00:50:41
◼
►
I'm not trying to imply you're wrong,
00:50:42
◼
►
I'm not, none of those things.
00:50:44
◼
►
But I just find that hard to believe, right?
00:50:45
◼
►
Like, you know what I mean?
00:50:46
◼
►
Like, it's just, it's stunning to me
00:50:49
◼
►
that so many of your users apparently don't get to use
00:50:53
◼
►
like half the junk on their phone.
00:50:56
◼
►
Obviously I'm being hyperbolic,
00:50:57
◼
►
but it's just bananas to me
00:51:00
◼
►
that that's just a no-fly zone for so many people.
00:51:03
◼
►
And I understand the other corporate thing.
00:51:04
◼
►
I am not far enough removed from real work
00:51:06
◼
►
that I don't understand it
00:51:09
◼
►
or it doesn't make sense or what have you,
00:51:10
◼
►
but golly, that is bananas.
00:51:13
◼
►
And I don't know, I guess there's a couple of different
00:51:17
◼
►
things that I'm thinking about completely selfishly
00:51:19
◼
►
as I'm wondering if I can create a new thing
00:51:21
◼
►
that rides on CloudKit.
00:51:22
◼
►
And one of the things that I was--
00:51:24
◼
►
the thing I was most worried about, in fact,
00:51:25
◼
►
was that, oh, CloudKit would be unreliable,
00:51:28
◼
►
or the API would be crummy, or something like that.
00:51:31
◼
►
The API seems reasonably OK so far.
00:51:33
◼
►
I have gotten far enough in the pre-alpha version of this app
00:51:37
◼
►
that I can save stuff to CloudKit
00:51:40
◼
►
and pull it back out and so on.
00:51:41
◼
►
So the API seems fine.
00:51:43
◼
►
In my singular use, it seems reliable.
00:51:49
◼
►
But I never thought that, oh, if I release this app,
00:51:52
◼
►
I'm shutting off 10% of iPhone users,
00:51:54
◼
►
which granted, I mean, I can choose not to care about that,
00:51:58
◼
►
which is kind of what you were saying earlier.
00:51:59
◼
►
You don't get to make that choice.
00:52:00
◼
►
I can make the choice that I can just choose not to care,
00:52:03
◼
►
but ugh, that's not what I expected,
00:52:06
◼
►
and that's a real bummer.
00:52:07
◼
►
- Well, and to be clear,
00:52:08
◼
►
this might not be 10% of all users.
00:52:11
◼
►
This might just be 10% of my users.
00:52:13
◼
►
- That's fair.
00:52:14
◼
►
- My user base is not representative of the entire world,
00:52:17
◼
►
and part of my user base is very nerdy, of course.
00:52:20
◼
►
That's part of it.
00:52:21
◼
►
It's a podcast app at all, it's also my podcast app.
00:52:24
◼
►
So it's a very nerdy leaning for sure.
00:52:27
◼
►
And also, it depends what the app is used for.
00:52:30
◼
►
Again, in my case, I think my theory here is like,
00:52:33
◼
►
in my case, a lot of people use podcast apps at work.
00:52:37
◼
►
And therefore, my percentage of work-issued device usage
00:52:41
◼
►
is probably higher than the average.
00:52:43
◼
►
So if your top secret app that you haven't told us about yet
00:52:46
◼
►
not that I'm bitter, is, if your top secret app
00:52:51
◼
►
is less likely to be used by people on their work devices,
00:52:54
◼
►
you might have a very different number.
00:52:56
◼
►
- Yeah, yeah, I'm not so sure that's the case, unfortunately.
00:52:59
◼
►
Well, fortunately and unfortunately.
00:53:01
◼
►
Ah, that's something else.
00:53:04
◼
►
So you said you've gotten over the immediate hurdle
00:53:08
◼
►
of the feeling like your database is going to explode.
00:53:12
◼
►
I'm not saying that's actually what was happening,
00:53:13
◼
►
but it seems like you kinda felt like,
00:53:15
◼
►
oh, whoa, things are getting a little dodgy over here.
00:53:18
◼
►
So you got through at least the first hurdle
00:53:22
◼
►
in front of you with some changes on your end,
00:53:24
◼
►
some changes on the database end.
00:53:26
◼
►
So now, to the best that you're willing to share,
00:53:29
◼
►
what is the long-term play then?
00:53:30
◼
►
Because these servers aren't gonna go away.
00:53:32
◼
►
This problem is gonna continue to be a problem.
00:53:34
◼
►
And God willing, it's gonna get worse
00:53:36
◼
►
'cause you have more users who are doing more with your app.
00:53:39
◼
►
So what's the plan, man?
00:53:43
◼
►
- Good question.
00:53:44
◼
►
So one of the concerns,
00:53:47
◼
►
one of the things that was frustrating me
00:53:48
◼
►
was that I was so close to my capacities before.
00:53:52
◼
►
And it's not, you know, look,
00:53:54
◼
►
there's lots of things I could do to add capacity.
00:53:59
◼
►
One of them that I, what I relied on in the past,
00:54:02
◼
►
most of the time, with my SQL-based things,
00:54:05
◼
►
and you know, I'm mostly database-bound,
00:54:08
◼
►
you know, it's your standard kind of, you know,
00:54:10
◼
►
lamp design of an app, it's, you know,
00:54:12
◼
►
a monolithic app with a whole bunch of web server,
00:54:15
◼
►
not even, you know, eight web servers
00:54:16
◼
►
and a handful of database servers.
00:54:18
◼
►
And the way I had scaled it in the past
00:54:20
◼
►
was what everyone does at this kind of
00:54:22
◼
►
low to moderate scale database based app.
00:54:25
◼
►
You split some high traffic tables onto their own servers.
00:54:28
◼
►
Eventually you have replication using MySQL replication
00:54:31
◼
►
and you have the primary secondary
00:54:33
◼
►
and then you try to send read queries to the secondary
00:54:35
◼
►
and write to the primary.
00:54:37
◼
►
I've done all those things.
00:54:39
◼
►
You can get pretty far with that.
00:54:42
◼
►
Obviously you couldn't run a very large scale operation
00:54:44
◼
►
with this kind of architecture,
00:54:45
◼
►
but you can get pretty far with it.
00:54:48
◼
►
And so that's what I've been doing.
00:54:50
◼
►
I have found MySQL replication to be significantly worse
00:54:54
◼
►
since MySQL 8 and I'm looking to move,
00:54:58
◼
►
to reduce my reliance on it to only like a backup
00:55:01
◼
►
or kind of hot standby kind of situation,
00:55:04
◼
►
not actually sending any queries to the replicas.
00:55:07
◼
►
And that's where I am now.
00:55:08
◼
►
Right now I have everything going to the primary,
00:55:10
◼
►
no queries are being sent to the replicas,
00:55:11
◼
►
they're only being used as basically live backups
00:55:14
◼
►
so I could failover to them.
00:55:16
◼
►
And I use replication, well no I guess,
00:55:18
◼
►
no I use hotbackup to actually copy them for backups,
00:55:20
◼
►
so that's something else.
00:55:21
◼
►
Anyway, so replication is only for, at this point,
00:55:24
◼
►
only for like failover scenarios.
00:55:26
◼
►
So one thing I could do, rather than using replication
00:55:29
◼
►
to build stuff up later, is I could just split up
00:55:31
◼
►
the user data, like what we used to call sharding,
00:55:33
◼
►
I don't know if that still means that today.
00:55:36
◼
►
'Cause the other thing is like,
00:55:38
◼
►
my knowledge of server backend stuff is super outdated.
00:55:42
◼
►
I know the way things were built in 2006
00:55:45
◼
►
and I'm really frickin' good at it.
00:55:48
◼
►
And anything that's come out since then,
00:55:51
◼
►
chances are I don't know about it.
00:55:53
◼
►
Or if I do know about it, I'd rather not use it.
00:55:56
◼
►
Because here's the thing, the stuff in 2006
00:55:59
◼
►
solves my needs really well the vast majority of the time
00:56:03
◼
►
and I know how to do it and I know how not to do it.
00:56:07
◼
►
Like I know what mistakes not to make
00:56:11
◼
►
with this kind of setup.
00:56:12
◼
►
I know how to avoid getting woken up
00:56:15
◼
►
in the middle of most nights.
00:56:16
◼
►
I know how to set this up so I can actually like
00:56:18
◼
►
have a family life and take vacations
00:56:21
◼
►
and have work-life balance.
00:56:23
◼
►
Like I know how to run this.
00:56:26
◼
►
So that's why I stick with it.
00:56:27
◼
►
And it's served me just fine.
00:56:29
◼
►
Anyway, one thing I could do is shard user data.
00:56:31
◼
►
This is very, very simple.
00:56:32
◼
►
My user data does not depend on other user data.
00:56:35
◼
►
So I could say, you know, all right,
00:56:37
◼
►
let's take the modulus of the user ID
00:56:40
◼
►
and just make eight different databases,
00:56:42
◼
►
and if your ID, you know, module eight equals two,
00:56:46
◼
►
you go to the server, whatever,
00:56:47
◼
►
and split up the user data across eight different servers,
00:56:51
◼
►
and then all of a sudden I have eight times the capacity.
00:56:54
◼
►
I could do something like that.
00:56:55
◼
►
And I'm fortunate, fortunate,
00:56:57
◼
►
in the sense that my business
00:56:58
◼
►
is not really growing very quickly,
00:56:59
◼
►
so I can predict what I'm going to need
00:57:02
◼
►
with pretty reasonable certainty.
00:57:04
◼
►
Like, I'm not gonna need eight times
00:57:07
◼
►
as much capacity next month.
00:57:09
◼
►
You know, things are not that,
00:57:10
◼
►
I don't have hockey stick growth on my podcast app.
00:57:14
◼
►
So, you know, so, you know,
00:57:16
◼
►
I have lots of options that I can do,
00:57:18
◼
►
but one of the reasons why I was so stressed all year
00:57:22
◼
►
is that I did feel like I was like really at that threshold
00:57:26
◼
►
of like I was, I felt like I was at like 90% capacity
00:57:29
◼
►
all the time, and you know, things were not going well.
00:57:33
◼
►
Sometimes, you know, things would fall behind,
00:57:35
◼
►
you know, cues would fall behind or whatever.
00:57:37
◼
►
It was very high stress, certain things would go down,
00:57:39
◼
►
it was a whole thing.
00:57:40
◼
►
Well, I wanted to do things that required storing
00:57:43
◼
►
more database data, like for instance,
00:57:47
◼
►
the thing I now have tracking data,
00:57:49
◼
►
but I haven't actually shown it anywhere yet,
00:57:51
◼
►
which is the how much hour time you spend
00:57:55
◼
►
listening to each podcast per month or whatever.
00:57:58
◼
►
People want that kind of Spotify unwrapped feature,
00:58:01
◼
►
where you tell them at the end of the year,
00:58:02
◼
►
I hear this every single December,
00:58:04
◼
►
where you tell people at the end of the year,
00:58:06
◼
►
hey, this year you spent 400 hours listening to ATP.
00:58:11
◼
►
Like that's, people want that kind of stuff.
00:58:13
◼
►
It's a very commonly requested feature.
00:58:15
◼
►
Not only the end of the year wrap ups,
00:58:16
◼
►
but people just ask for stats much more often.
00:58:19
◼
►
And most of my competitors at this point provide stats.
00:58:22
◼
►
So it's a very, very, very common user request.
00:58:25
◼
►
And so I wanted to offer that.
00:58:27
◼
►
So I needed to track more data than I,
00:58:29
◼
►
before this, all I tracked per episode was like,
00:58:33
◼
►
all right, you're at this position.
00:58:35
◼
►
or you've completed it or you've deleted it.
00:58:37
◼
►
The smart speed total time saved is just a double.
00:58:42
◼
►
It's just a number.
00:58:44
◼
►
Like the app just accumulates how much time you're saving
00:58:46
◼
►
and periodically writes it to the database
00:58:48
◼
►
and that number is synced.
00:58:51
◼
►
Like that's not tracking every single listening session
00:58:54
◼
►
you do and adding it up.
00:58:55
◼
►
It's just tallying up on a number.
00:58:58
◼
►
So in order for me to add any kind of stats,
00:59:01
◼
►
well now I have more data to store.
00:59:03
◼
►
And the idea of writing to my database with more data,
00:59:07
◼
►
I'm like, I just can't do that feature.
00:59:08
◼
►
Like, I'm running at 90% capacity here.
00:59:11
◼
►
I'm having trouble keeping up sometimes.
00:59:13
◼
►
I can't add load to my database.
00:59:16
◼
►
And well, I could set up a whole new database cluster
00:59:18
◼
►
just to do that, but that's a very expensive operation.
00:59:22
◼
►
'Cause it's gonna be a lot of data.
00:59:24
◼
►
How big of a server am I gonna need for that?
00:59:26
◼
►
And then I have to have a replica for that,
00:59:28
◼
►
and I have to add it to the database backup system,
00:59:29
◼
►
and it's a whole thing.
00:59:31
◼
►
So I would just block, I would just say,
00:59:33
◼
►
you know what, I can't do that right now.
00:59:36
◼
►
And so ever since I did those optimizations,
00:59:39
◼
►
I thought, you know what, I bought myself some headroom,
00:59:42
◼
►
now I can actually see, let me launch this feature
00:59:45
◼
►
and I'll just launch it in the background
00:59:48
◼
►
and if it turns out to be way too heavy on the database,
00:59:52
◼
►
I'll just stop writing the data.
00:59:54
◼
►
Like I'll just edit the PHP file,
00:59:56
◼
►
that method of the controller,
00:59:58
◼
►
and I'll just stop writing it to the database, who cares?
01:00:00
◼
►
then I just won't launch the feature publicly,
01:00:03
◼
►
but I can test, I can launch the app
01:00:05
◼
►
that starts writing the data
01:00:06
◼
►
and starts submitting it to the servers
01:00:08
◼
►
and I can see can I actually handle it or not.
01:00:11
◼
►
So I did that and yeah,
01:00:13
◼
►
it turns out it handles it just fine now.
01:00:15
◼
►
It turns out that's really small data.
01:00:18
◼
►
And so I added enough headroom.
01:00:21
◼
►
So again, I'm able to do all this stuff now
01:00:25
◼
►
which feels really good because I have just spent
01:00:29
◼
►
So much of the past few years with Overcast,
01:00:31
◼
►
I have spent wishing I could do something,
01:00:34
◼
►
wishing I could add some feature
01:00:36
◼
►
or change the way something works,
01:00:38
◼
►
but then the server side of it was prohibitive in some way.
01:00:43
◼
►
Either it actually did cause too much load
01:00:47
◼
►
or I expected it to cause so much more load
01:00:50
◼
►
that I didn't even try it.
01:00:51
◼
►
And so now I bought myself a lot of headroom,
01:00:55
◼
►
I'm learning that some of the ideas I have
01:00:57
◼
►
actually are cheaper on the database and stuff
01:01:00
◼
►
than what I thought.
01:01:02
◼
►
And at some point, my actual plan,
01:01:04
◼
►
to answer your actual question here,
01:01:05
◼
►
my plan for the future is,
01:01:07
◼
►
I guess I'll just keep doing what I've been doing.
01:01:09
◼
►
And if I reach the point where I can't just
01:01:13
◼
►
double the instance size on Linode
01:01:14
◼
►
to make my database have more capacity or whatever,
01:01:17
◼
►
then I'll split it up.
01:01:18
◼
►
Then I'll start sharding, and I'll start
01:01:20
◼
►
splitting more tables into their own servers,
01:01:22
◼
►
and do more user sharding and stuff like that.
01:01:25
◼
►
That's all stuff I can do.
01:01:26
◼
►
It's all a trade-off of cost and complexity
01:01:29
◼
►
and management time and code adjustment time.
01:01:34
◼
►
But it's all stuff I can actually do.
01:01:36
◼
►
And so at the end of the day,
01:01:38
◼
►
it's probably way less time and complexity
01:01:42
◼
►
than rewriting my entire sync engine
01:01:45
◼
►
to use a whole different system.
01:01:47
◼
►
So this is probably the best way forward.
01:01:50
◼
►
- Now you can do the fun stuff,
01:01:51
◼
►
which is using SwiftUI to make a cool animated
01:01:53
◼
►
year-end wrap-up screen based on the data that you have,
01:01:55
◼
►
because you have to have, if you've looked at all the ones
01:01:57
◼
►
that other things do, you have to have some kind of like
01:01:59
◼
►
nice presentation of the information.
01:02:02
◼
►
And that's perfect for SwiftUI because the data is small
01:02:04
◼
►
and SwiftUI is pretty good at doing animations
01:02:07
◼
►
and arranging images and stuff.
01:02:09
◼
►
- Yeah, exactly.
01:02:10
◼
►
Yeah, I am very much on board with that plan.
01:02:13
◼
►
- To go back a step just for a moment,
01:02:15
◼
►
you had made a comment a little while ago
01:02:18
◼
►
that your knowledge is like been frozen in 2006, 2008,
01:02:23
◼
►
whatever year you said.
01:02:25
◼
►
And that makes sense. And you've said many times over many shows, including "Build and Analyze,"
01:02:29
◼
►
that you do not like to be, you know, the tip of the spear for these sorts of things. You prefer
01:02:33
◼
►
to use the boring stuff because it's the reliable stuff, and that also makes sense. Have you thought
01:02:39
◼
►
about, like, doing a deep dive in, okay, how does-- how do people do these sorts of things in 2023,
01:02:46
◼
►
and how is that different than 2006, 2008, whatever? Like, does that appeal to you? Do you
01:02:51
◼
►
Do you think that would be a worthwhile expenditure
01:02:53
◼
►
of your time or are you just gonna do the bare,
01:02:55
◼
►
and I don't mean this, this is gonna come across snarky,
01:02:57
◼
►
I don't mean it that way,
01:02:58
◼
►
but are you just gonna do the bare minimum you can
01:03:00
◼
►
but to kick that can down the road
01:03:01
◼
►
as long as you possibly can?
01:03:03
◼
►
- It's a good question.
01:03:04
◼
►
I think when you're looking at,
01:03:07
◼
►
is what I'm doing too old
01:03:09
◼
►
and is the new thing better than the old thing
01:03:10
◼
►
and should I use the new thing,
01:03:12
◼
►
it's important to first ask yourself,
01:03:14
◼
►
well, what's wrong with the status quo?
01:03:16
◼
►
What am I not getting with the current thing that I'm using?
01:03:20
◼
►
what problem am I actually trying to solve here?
01:03:23
◼
►
And again, like I was saying earlier,
01:03:25
◼
►
anything I would move to,
01:03:27
◼
►
not just web services-wise, but tools-wise,
01:03:30
◼
►
any software or stack component I would move to
01:03:33
◼
►
would also have pitfalls and limitations
01:03:36
◼
►
and downsides and bugs and crashes and downtime.
01:03:39
◼
►
And I at least know how the current stuff works.
01:03:43
◼
►
I know how to run the current stuff
01:03:45
◼
►
so that it won't be problematic for me
01:03:48
◼
►
and be a heavy load on me.
01:03:50
◼
►
So the new stuff, I'm sure it's mature by now.
01:03:53
◼
►
I'm sure there's many different options of what people do.
01:03:56
◼
►
I mean, I think part of the problem is that
01:04:00
◼
►
whenever people recommend something to me
01:04:03
◼
►
or when people talk about how things should be done,
01:04:06
◼
►
they seem to either not realize
01:04:08
◼
►
that things can be run inexpensively
01:04:11
◼
►
or totally underestimate the scale of the data
01:04:16
◼
►
that I'm trying to store.
01:04:17
◼
►
People will suggest things that, you know,
01:04:19
◼
►
some kind of hosted service that purports
01:04:22
◼
►
to take all your problems away,
01:04:23
◼
►
and then you end up paying per query or per byte
01:04:27
◼
►
or whatever, and it's like, and you actually look,
01:04:29
◼
►
okay, well, even if I rewrote this to be very efficient
01:04:32
◼
►
for this particular service, I would still need to hit
01:04:35
◼
►
1,000 queries per unit of time or whatever,
01:04:40
◼
►
and it's like, okay, well, that's gonna then cost
01:04:42
◼
►
like 30 grand a month or something.
01:04:45
◼
►
It's some absurd, it's like, when you actually look at
01:04:48
◼
►
what it would take, people don't realize,
01:04:50
◼
►
people who have grown up in the,
01:04:52
◼
►
just put everything in AWS kind of age,
01:04:57
◼
►
don't realize how cheap hosting is for doing things
01:05:01
◼
►
that are low level that you write yourself.
01:05:05
◼
►
Another example of this is,
01:05:06
◼
►
there's all these services that exist
01:05:07
◼
►
to send push notifications for your iPhone apps.
01:05:10
◼
►
Sending push notifications is so comically cheap for me.
01:05:15
◼
►
It costs nothing, not even close to, like it's nothing.
01:05:20
◼
►
If you are paying anything to send push notifications,
01:05:25
◼
►
you're overpaying.
01:05:26
◼
►
Like if you have a server to do literally anything else,
01:05:30
◼
►
you can have a background job that reads a queue
01:05:32
◼
►
to send push notifications and you will never even notice it.
01:05:36
◼
►
It costs nothing.
01:05:38
◼
►
So I send a lot of push notifications.
01:05:41
◼
►
I have never had to scale any part of that at all.
01:05:44
◼
►
Like it has never been a thing I've noticed.
01:05:46
◼
►
Receipt validation, I do all that myself
01:05:49
◼
►
'cause it's like one call.
01:05:51
◼
►
There's stuff that if I used a new system,
01:05:56
◼
►
a lot of the new ways to do a lot of these things,
01:05:59
◼
►
whether they're low level components
01:06:01
◼
►
like a database kind of thing
01:06:04
◼
►
or whether they're high level services
01:06:06
◼
►
like we'll send you notifications for you,
01:06:08
◼
►
a lot of them, it's like one of those as seen on TV
01:06:12
◼
►
like what's he do at commercials
01:06:14
◼
►
where you have the black and white scene,
01:06:16
◼
►
the person's fumbling with the old one,
01:06:18
◼
►
how can you make a salad with this
01:06:19
◼
►
and you're like fumbling and dropping all your tools
01:06:21
◼
►
in the black and white, you need this new tool.
01:06:23
◼
►
It's like many of those are overstating the problem
01:06:27
◼
►
or they're making you think something's a huge inconvenience
01:06:30
◼
►
when it really actually isn't.
01:06:31
◼
►
And it's like this weird complex doodicky thing here,
01:06:36
◼
►
whatever, this is solving a problem
01:06:39
◼
►
that it wants me to think is a big problem for me.
01:06:42
◼
►
But is it really a big problem for me?
01:06:45
◼
►
Is this problem actually something I need
01:06:48
◼
►
to pay someone a large amount of money to solve for me?
01:06:50
◼
►
What if I just try to do it myself?
01:06:52
◼
►
What would it take?
01:06:53
◼
►
What does it cost?
01:06:54
◼
►
How complex is it?
01:06:55
◼
►
How hard of a problem is it?
01:06:57
◼
►
I have found that with a relatively small amount
01:07:01
◼
►
of virtual server resources, like standard VPS,
01:07:04
◼
►
like you get with Linode or whatever else,
01:07:06
◼
►
with a pretty small amount of computing power,
01:07:09
◼
►
you can do a ton if you just have a Linux server
01:07:13
◼
►
running a database in some kind of front-end language.
01:07:16
◼
►
You can do so much more with that than anybody thinks.
01:07:20
◼
►
I've made a career out of running
01:07:23
◼
►
moderate-volume web services very, very cheaply
01:07:27
◼
►
so that I don't need to take VC money
01:07:30
◼
►
and I don't have to have some kind of creepy business model
01:07:32
◼
►
and I don't have to have some kind of big company
01:07:33
◼
►
behind all this stuff.
01:07:35
◼
►
Overcast has more market share by a lot
01:07:39
◼
►
than many other apps that have staffs or VC funding
01:07:44
◼
►
or some kind of startup to like,
01:07:45
◼
►
oh, we're gonna be the Netflix or podcast.
01:07:47
◼
►
Or like, part of the reason I'm able to do it
01:07:50
◼
►
as a single person here is 'cause I'm really good
01:07:53
◼
►
at hosting stuff cheaply.
01:07:55
◼
►
So when people recommend a lot of these new alternatives,
01:07:58
◼
►
it's not only not solving a problem I have,
01:08:02
◼
►
but it's not solving a problem I have very expensively.
01:08:05
◼
►
And so to the point where like,
01:08:07
◼
►
it's not even in the ballpark of what would work for me.
01:08:10
◼
►
Anyway, that's a long way of saying,
01:08:12
◼
►
I will move to new things if I have to,
01:08:15
◼
►
or if there's really compelling reasons to,
01:08:17
◼
►
and so far, I haven't found those compelling reasons
01:08:21
◼
►
for any of the tools that I'm actually using.
01:08:24
◼
►
Once I factor in the cost of rewriting everything,
01:08:28
◼
►
the cost of learning a new tool,
01:08:29
◼
►
and learning its pitfalls and downsides,
01:08:31
◼
►
and downtime, and bugs, and everything else,
01:08:34
◼
►
what I have is working pretty well most of the time
01:08:36
◼
►
if I actually optimize it
01:08:38
◼
►
and I'm a little bit careful about it.
01:08:40
◼
►
- That makes sense.
01:08:41
◼
►
So when are you going to Postgres?
01:08:43
◼
►
- Postgres, again, I've never used Postgres.
01:08:45
◼
►
I hear it's great, but it doesn't seem like
01:08:48
◼
►
it's greater enough than MySQL
01:08:51
◼
►
to be worth the changing in the learning curve.
01:08:54
◼
►
So maybe, I'll move to it if I have to,
01:08:57
◼
►
but I'm not rushing to do that.
01:09:00
◼
►
- All right, well, best of luck.
01:09:02
◼
►
I mean, it certainly makes me wonder
01:09:05
◼
►
about my strategy for this thing that may never even see the light of day anyway. So
01:09:08
◼
►
it's not like this is a business crushing decision or anything like that. It's not dramatically
01:09:14
◼
►
altering my world. But it makes me think and makes me wonder, you know, I had initially
01:09:19
◼
►
started writing this, again, you know, it's extremely early stages, but I initially started
01:09:24
◼
►
writing this thing with like, well, I'll just treat CloudKit as the data source. And it's
01:09:28
◼
►
quickly becoming apparent that for other reasons too, but that's not going to work. And, you
01:09:33
◼
►
CloudKit may end up being like a sync destination,
01:09:36
◼
►
but having it be the one true source of data
01:09:38
◼
►
is probably unwise.
01:09:39
◼
►
So, I don't know, it's a lot to think about,
01:09:41
◼
►
and I appreciate you taking the time.
01:09:42
◼
►
And like I said, listen under the radar 258,
01:09:44
◼
►
if you haven't already, 'cause it was really good.
01:09:46
◼
►
And under 30 minutes.
01:09:47
◼
►
- It's a much shorter version of this whole thing.
01:09:49
◼
►
We are brought to you this week by Trade Coffee.
01:09:54
◼
►
If you love drinking coffee every morning,
01:09:57
◼
►
I know I sure do, you have to check out Trade Coffee.
01:10:00
◼
►
Trade makes it super easy to get great coffee delivered
01:10:04
◼
►
fresh from the finest local roasters around the country.
01:10:08
◼
►
Now look, if you've been getting the same grocery store
01:10:10
◼
►
coffee for your whole life,
01:10:11
◼
►
you don't know what you're missing.
01:10:12
◼
►
'Cause coffee is best when it's freshly roasted.
01:10:14
◼
►
It goes stale within a couple of weeks at most of roasting.
01:10:17
◼
►
And Trade makes it easy to get fresh roasts delivered
01:10:20
◼
►
to your doorstep.
01:10:21
◼
►
And they have them from all these local roasters
01:10:24
◼
►
to choose from.
01:10:24
◼
►
And so this is a coffee subscription service.
01:10:27
◼
►
And what's great about it is they have such great variety,
01:10:29
◼
►
You can discover new coffees so easily
01:10:32
◼
►
and make your best cup of coffee at home every single day.
01:10:35
◼
►
All of this from the nation's top rated independent roaster
01:10:38
◼
►
so that Trade can send you coffee they know you'll love
01:10:41
◼
►
fresh to your home and on whatever your preferred schedule is.
01:10:44
◼
►
So whether you're a coffee nerd
01:10:45
◼
►
and you already know what you like,
01:10:46
◼
►
or whether you're new to specialty high-end coffee
01:10:49
◼
►
and need some guidance through it,
01:10:50
◼
►
Trade makes it easy and convenient to discover new coffees
01:10:53
◼
►
that you're guaranteed to love.
01:10:55
◼
►
I personally have used Trade for I think over a year now,
01:10:58
◼
►
and I love the variety I get from them.
01:11:00
◼
►
It's so good.
01:11:01
◼
►
And my tastes changed a while ago,
01:11:03
◼
►
and so I was able to adjust my preferences
01:11:05
◼
►
really easily with them and give feedback.
01:11:07
◼
►
Oh, I like this one, this one wasn't so good,
01:11:09
◼
►
I like this one.
01:11:10
◼
►
And they learned quickly,
01:11:11
◼
►
and it just hit after hit after hit now.
01:11:14
◼
►
It's just so, so good.
01:11:16
◼
►
So treat yourself or the coffee lover in your life
01:11:19
◼
►
with Trade Coffee.
01:11:20
◼
►
Right now, Trade's offering our listeners
01:11:22
◼
►
a total of $30 off a subscription
01:11:24
◼
►
and access to limited time specials
01:11:26
◼
►
at drinktrade.com/atp.
01:11:29
◼
►
That's drinktrade.com/atp for $30 off.
01:11:34
◼
►
Drinktrade.com/atp.
01:11:37
◼
►
Thank you so much to Trade Coffee
01:11:39
◼
►
for keeping me caffeinated and for sponsoring our show.
01:11:42
◼
►
Breaking news.
01:11:46
◼
►
Samsung has decided to make the studio display
01:11:51
◼
►
look like garbage, maybe, possibly.
01:11:54
◼
►
So CES is happening soon, I guess.
01:11:57
◼
►
I don't even know.
01:11:57
◼
►
I don't pay attention to CES.
01:11:58
◼
►
But there's some CES-related announcements.
01:12:01
◼
►
The Verge covered this, and we'll also put a link to the
01:12:02
◼
►
Samsung PR article as well.
01:12:05
◼
►
But Samsung has announced the Viewfinity S9.
01:12:10
◼
►
And it appears to be a shot across the bow at the studio
01:12:15
◼
►
display, almost at the studio display.
01:12:19
◼
►
It's 5K, same resolution.
01:12:22
◼
►
It's not glossy.
01:12:24
◼
►
It gets almost perfect DCI-P3 color reproduction.
01:12:29
◼
►
It has HDR 600, which we'll talk about
01:12:31
◼
►
what the heck that means in a minute.
01:12:33
◼
►
It has a 4K external webcam,
01:12:35
◼
►
which I guess you can slam onto the top of the screen
01:12:39
◼
►
when you need it and then make it go away when you don't.
01:12:41
◼
►
Allegedly, this includes automated zoom control
01:12:44
◼
►
that will track subjects in the frame.
01:12:46
◼
►
Does that sound like center stage to anyone else?
01:12:48
◼
►
- 'Cause it worked out so well for the studio display.
01:12:50
◼
►
- Well, I actually, I am a center stage apologist.
01:12:52
◼
►
I like center stage, but the studio display's camera
01:12:55
◼
►
fidelity is pretty bad.
01:12:57
◼
►
It still is.
01:12:59
◼
►
It'll rotate to portrait in the included stand.
01:13:02
◼
►
It has HDMI input, Thunderbolt 4, USB-C, and DisplayPort.
01:13:05
◼
►
It'll charge downstream, whatever you want to call it,
01:13:07
◼
►
up to 96 watts.
01:13:09
◼
►
It does not have True Tone.
01:13:10
◼
►
And apparently it runs Samsung's--
01:13:13
◼
►
what is this?
01:13:14
◼
►
Is that how you pronounce it?
01:13:16
◼
►
TVOS, and it has apps on it and whatnot.
01:13:18
◼
►
So you can use it even when it's not
01:13:20
◼
►
connected to a computer.
01:13:22
◼
►
That's about everything there is to know about this,
01:13:25
◼
►
except the deep dive into HDR 600,
01:13:27
◼
►
which I'll let Captain John take us down in a minute.
01:13:30
◼
►
But at a glance, not knowing a price,
01:13:33
◼
►
not knowing when it's coming out,
01:13:34
◼
►
at a glance, this looks like a pretty compelling option.
01:13:38
◼
►
I'm not sure it's better than the studio display.
01:13:41
◼
►
It may be more money than the studio display,
01:13:43
◼
►
for all I know, although I'd be surprised.
01:13:45
◼
►
- Unlikely. - It is unlikely.
01:13:47
◼
►
But hey, I am all in on there being any competition
01:13:52
◼
►
to the LG Ultra Me and the studio display.
01:13:55
◼
►
So I'm here for this, at least in principle.
01:13:58
◼
►
I'm excited to see more about this over time.
01:14:00
◼
►
- The nice thing about it is that it looks
01:14:02
◼
►
like the studio display too.
01:14:03
◼
►
So if you want a studio display,
01:14:04
◼
►
but you want a cheaper version of it,
01:14:06
◼
►
that kind of looks like studio display from the distance,
01:14:08
◼
►
from what I can see in the pictures,
01:14:10
◼
►
it looks very similar because you know Samsung
01:14:12
◼
►
and making things that look similar to Apple,
01:14:13
◼
►
that they're not above that.
01:14:16
◼
►
like they have here.
01:14:17
◼
►
So yeah, because this is a pre-CS announcement, they haven't actually announced the price
01:14:22
◼
►
or availability, so it's hard to talk too much about it, but the feature set is just
01:14:25
◼
►
what you would expect, which is, we're going to do a thing like Apple, we're going to make
01:14:29
◼
►
it look like Apple's product, we'll copy their aesthetic, we'll use the same panel presumably
01:14:32
◼
►
or a very similar panel, we'll get to that in a second, and we'll undercut them on price.
01:14:36
◼
►
And you don't have to pay extra for an adjustable stand, and our webcam is 4K, which I think
01:14:41
◼
►
gives it a shot of not being crap when they do center stage, because they just have more
01:14:45
◼
►
pixels to work with, right? It's an external camera which is way bigger than the bezel.
01:14:49
◼
►
Like it's not huge, but like if you look at the picture, it's a circle that is like two to three
01:14:54
◼
►
times the thickness of a tiny bezel on here. So hey, we can get a normal sized camera without
01:14:58
◼
►
worrying about having to fit it in, and the camera can be 4K, right? And, you know, presuming it
01:15:05
◼
►
undercuts it on price, it looks like it does everything the Apple one does. Now, the real
01:15:09
◼
►
The real question is, is it the same panel?
01:15:12
◼
►
So the HDR 600 thing, there's a bunch of terrible
01:15:15
◼
►
marketing terms, we'll put a link in the show notes
01:15:17
◼
►
to the HDR 600 one, but there's the VISA display HDR
01:15:21
◼
►
certification things, if you watch any sort of
01:15:25
◼
►
review channels for gaming monitors, which I watch a lot of
01:15:28
◼
►
'cause I'm always looking for a good monitor for my PS5
01:15:31
◼
►
that is HDR, every monitor says, supports HDR
01:15:36
◼
►
than some number.
01:15:38
◼
►
Pretty much all of those numbers,
01:15:39
◼
►
or let's say half those numbers,
01:15:41
◼
►
mean you don't have HDR.
01:15:43
◼
►
HDR 400, not HDR.
01:15:45
◼
►
HDR 500, not HDR.
01:15:47
◼
►
HDR 600, probably not HDR, right?
01:15:50
◼
►
Because regular monitors go to that brightness.
01:15:53
◼
►
So witness the Apple Studio display.
01:15:56
◼
►
It goes to 600 nits.
01:15:58
◼
►
But it doesn't have local dimming,
01:16:00
◼
►
and 600 nits is brighter than 500 nits,
01:16:04
◼
►
which was the previous kind of standard Mac display thing,
01:16:07
◼
►
but not super bright.
01:16:09
◼
►
And not having local dimming means you don't really get
01:16:11
◼
►
that contrast that you would want in high dynamic range,
01:16:14
◼
►
because the brighter you support in the screen,
01:16:17
◼
►
the brighter your blacks are gonna be too,
01:16:19
◼
►
because the backlight is always on behind the thing, right?
01:16:21
◼
►
So if you look at the HDR 600 specification
01:16:24
◼
►
on the displayhdr.org website,
01:16:26
◼
►
one of the things that it says is,
01:16:28
◼
►
of the HDR 600 standard specifically is,
01:16:33
◼
►
real-time contrast ratios with local dimming.
01:16:37
◼
►
That's in the bullet points of this marketing material
01:16:40
◼
►
for HDR 600.
01:16:42
◼
►
Local dimming means you can turn off the backlight
01:16:45
◼
►
behind some portions of the screen.
01:16:47
◼
►
The Verge said-- whoever's writing this research--
01:16:49
◼
►
says, "I couldn't get an answer at press time
01:16:51
◼
►
as to whether Samsung's latest monitor includes local dimming.
01:16:54
◼
►
I'm guessing if it did, they would
01:16:55
◼
►
be highlighting that feature."
01:16:57
◼
►
It's kind of weird that Samsung wouldn't
01:16:59
◼
►
say in their press release if it did support local dimming,
01:17:01
◼
►
but they do say it supports HDR 600
01:17:04
◼
►
and the HDR 600 marking bullet points say local dimming.
01:17:07
◼
►
I don't know what this means, we'll find out.
01:17:09
◼
►
But if it does have local dimming
01:17:10
◼
►
and the local dimming isn't garbage,
01:17:12
◼
►
like doesn't have, you know,
01:17:13
◼
►
it was four zones or something, or it's not one of those,
01:17:15
◼
►
they do like vertical local dimming.
01:17:16
◼
►
I don't know if you know about this,
01:17:17
◼
►
but like one of the crappy,
01:17:19
◼
►
cheap local dimming technologies
01:17:21
◼
►
just cuts your screen into a bunch of vertical slices
01:17:24
◼
►
and the backlight can be on in any of those slices,
01:17:26
◼
►
which as you can imagine is terrible if you have,
01:17:28
◼
►
you know, like something that isn't the full height
01:17:30
◼
►
of the screen because you get blooming and a vertical stripe.
01:17:34
◼
►
So we'll see.
01:17:35
◼
►
Obviously, Apple has no local dimming at all.
01:17:38
◼
►
This is an IPS panel, which is what Apple has,
01:17:41
◼
►
but it claims to be HDR 600, which is, oh, it's just
01:17:44
◼
►
like Apple because Apple says their thing is 600 nits,
01:17:46
◼
►
but the local dimming thing is still a mystery.
01:17:48
◼
►
And as for True Tone, which is Apple's thing where they have
01:17:51
◼
►
like a light sensor, it adjusts the color temperature,
01:17:54
◼
►
essentially, of your screen based on how yellow
01:17:56
◼
►
the light is in your room.
01:17:57
◼
►
This doesn't have that because True Tone
01:17:59
◼
►
is an Apple technology, but it does have
01:18:01
◼
►
a color calibration feature built into the monitor
01:18:04
◼
►
where you can either use your smartphone
01:18:07
◼
►
with the Samsung app on it to sort of like
01:18:08
◼
►
point it at the screen like the Apple TV thing
01:18:10
◼
►
where it calibrates, or you can also use
01:18:12
◼
►
a more professional calibration tool to calibrate it.
01:18:15
◼
►
That's not calibrating to your room lighting,
01:18:17
◼
►
it's calibrating the monitor to some standard or whatever,
01:18:20
◼
►
but that shows where they're kind of aiming this monitor,
01:18:22
◼
►
so I expect it to be in the ballpark of Apple's price
01:18:25
◼
►
just because you don't put color calibration
01:18:27
◼
►
on a monitor that people are just gonna use
01:18:29
◼
►
to look at webpages or whatever.
01:18:31
◼
►
It's trying to get that same market
01:18:32
◼
►
of people who care about color accuracy on their displays.
01:18:36
◼
►
The Tizen OS, this is not Samsung's first monitor
01:18:40
◼
►
that does this.
01:18:41
◼
►
They have a bunch of monitors that's been selling
01:18:42
◼
►
for a while.
01:18:43
◼
►
They're like little smart TVs, right?
01:18:45
◼
►
Only in a computer monitor, right?
01:18:46
◼
►
So you connect it to nothing except for power.
01:18:49
◼
►
You can turn it on and inside of it,
01:18:51
◼
►
it has not an A13 obviously,
01:18:53
◼
►
but some kind of CPU and memory and storage
01:18:56
◼
►
so that you can run essentially TV streaming apps.
01:18:59
◼
►
You can even run Google Hangouts
01:19:00
◼
►
and do video conferencing and maybe Zoom calls
01:19:03
◼
►
with just the monitor,
01:19:04
◼
►
because it has enough smarts in it to run stuff,
01:19:06
◼
►
just like your TV has enough smarts in it.
01:19:08
◼
►
This is just something, it's kind of weird,
01:19:09
◼
►
it took this long to come to computer monitors.
01:19:11
◼
►
In many ways, televisions were ahead of monitors,
01:19:13
◼
►
because we buy a monitor and we expect this thing is useless
01:19:16
◼
►
until I plug it into something to send it an image.
01:19:19
◼
►
And because these monitors have an increasing amount
01:19:22
◼
►
of computing power in them just to do their monitor job,
01:19:24
◼
►
It's not too much of a stretch to say, you know what,
01:19:27
◼
►
why don't we just run our TV OS in here too?
01:19:29
◼
►
And so now all you need to do is connect it to power
01:19:31
◼
►
and you can watch Netflix or look at YouTube
01:19:34
◼
►
or do video conferencing with the supplied camera
01:19:37
◼
►
or whatever.
01:19:37
◼
►
I think that's a great idea.
01:19:38
◼
►
And I think it's kind of,
01:19:40
◼
►
it's definitely a huge waste of computing resources
01:19:42
◼
►
for the A13 in the studio display,
01:19:45
◼
►
not to be acting like a little Apple TV in that mode,
01:19:48
◼
►
but that's something Apple chose not to do,
01:19:50
◼
►
at least in the first iteration of their product.
01:19:51
◼
►
So we don't know a ship date for this,
01:19:54
◼
►
Maybe by the time this comes out,
01:19:56
◼
►
a new Apple Studio display with local dimming will come out
01:19:58
◼
►
and we'll have a better comparison.
01:20:00
◼
►
But not having to pay extra for an adjustable display.
01:20:03
◼
►
And if you really don't like glossy,
01:20:05
◼
►
not having to pay the huge amount of money
01:20:07
◼
►
for Apple's nano texture,
01:20:08
◼
►
but instead to accept a presumably somewhat inferior
01:20:11
◼
►
but way cheaper default matte display on this thing
01:20:14
◼
►
may be to your liking.
01:20:15
◼
►
So I'm with Casey.
01:20:18
◼
►
Anything to get beyond the ultra fine
01:20:21
◼
►
as being the only other option.
01:20:22
◼
►
- Vuefinity is an awful name, but I think this is
01:20:26
◼
►
some decent competition for Apple's display.
01:20:28
◼
►
- And by the way, it's not Vuefinity, it's Vuefinity S9.
01:20:31
◼
►
- Yeah, S9 reminds me of an Audi, so.
01:20:33
◼
►
- No, I'm happy to see this.
01:20:36
◼
►
Even if it's not something any of us want,
01:20:38
◼
►
it's not healthy in this ecosystem
01:20:42
◼
►
for there to be only one monitor available
01:20:46
◼
►
at a given size that has the right DPI for Apple users.
01:20:49
◼
►
And that's only a fairly recent thing
01:20:52
◼
►
that's really been a problem.
01:20:53
◼
►
Like, you know, the XDR is the first Apple monitor
01:20:58
◼
►
I've ever bought.
01:20:59
◼
►
All of my desktop use before this, that wasn't an iMac,
01:21:02
◼
►
you know, when I go back in a pre desktop retina time,
01:21:07
◼
►
it was always with third party monitors.
01:21:08
◼
►
I had some Dell monitors, I had an HP monitor,
01:21:12
◼
►
I had, you know, before that I had like ViewSonic
01:21:14
◼
►
and the other like kind of PC brands.
01:21:16
◼
►
There's always been good monitor choices from third parties
01:21:20
◼
►
until relatively recent in computing history
01:21:23
◼
►
for Apple people to choose.
01:21:24
◼
►
That would have the right DPI,
01:21:26
◼
►
that would have the resolution that we're looking for
01:21:29
◼
►
and the size we're looking for,
01:21:30
◼
►
and pretty decent specs if you didn't care too much
01:21:33
◼
►
about some of the stuff Apple cares about.
01:21:35
◼
►
And for me, most of that was always fine.
01:21:39
◼
►
I never needed super color accuracy for my programming work.
01:21:44
◼
►
Like that's not something I really ever need.
01:21:47
◼
►
So it's been fine.
01:21:50
◼
►
I've greatly enjoyed those monitors
01:21:52
◼
►
at the time they came out.
01:21:52
◼
►
And it was only when we went to desktop Retina
01:21:55
◼
►
that the Darth of Monitors started.
01:21:58
◼
►
And even when we first got the 27 inch category of monitors,
01:22:03
◼
►
there were a couple of 5K ones besides the LG Ultrafine.
01:22:10
◼
►
Like, Adele had one briefly.
01:22:13
◼
►
I think ViewSonic actually had one briefly
01:22:15
◼
►
that maybe wasn't even available in the US.
01:22:17
◼
►
But there were a couple others at launch
01:22:19
◼
►
and then they just disappeared
01:22:20
◼
►
and were just discontinued very quickly.
01:22:23
◼
►
But I hope there are more options.
01:22:25
◼
►
Like Apple should not be the only company
01:22:28
◼
►
making a 5K 27 inch monitor.
01:22:32
◼
►
Apple should not be the only company
01:22:33
◼
►
making a 6K 30 whatever XDR is either.
01:22:37
◼
►
Like there should be other options here
01:22:40
◼
►
and ideally more than one
01:22:42
◼
►
so we don't have the ultra fine problem.
01:22:45
◼
►
But that's a sign of a healthy ecosystem.
01:22:48
◼
►
And I know for various reasons, like PC people
01:22:52
◼
►
kind of went in a different direction
01:22:53
◼
►
with what they prioritize with monitor design,
01:22:55
◼
►
and a different direction than Apple
01:22:59
◼
►
with the whole high DPI, retina,
01:23:01
◼
►
game frame rate kind of situation.
01:23:03
◼
►
I get that, but it's really good to have more options here.
01:23:07
◼
►
And so if Apple screws this up again,
01:23:11
◼
►
there's somewhere else to go.
01:23:12
◼
►
And if this actually ends up being better
01:23:15
◼
►
than Apple's monitor in ways that are important to people,
01:23:17
◼
►
like number one, I'm sure price is probably gonna be better.
01:23:20
◼
►
Number two, that webcam is almost certain to be better
01:23:23
◼
►
because it's so much larger, it has room for better optics,
01:23:27
◼
►
better sensor and everything.
01:23:29
◼
►
- And it's 4K.
01:23:31
◼
►
- Yeah, right, and so I expect certain things
01:23:34
◼
►
about this to be better.
01:23:35
◼
►
I expect certain things about it to be worse,
01:23:38
◼
►
but that's fine, it's another option,
01:23:40
◼
►
and the more options we have, the better.
01:23:42
◼
►
We are brought to you this week by Squarespace,
01:23:46
◼
►
The all-in-one platform for building your brand
01:23:48
◼
►
and growing your business online.
01:23:50
◼
►
Stand out with a beautiful website,
01:23:52
◼
►
engage with your audience, and sell anything.
01:23:54
◼
►
Your products, content you create, even your time.
01:23:57
◼
►
Squarespace makes it incredibly easy for anyone
01:24:00
◼
►
to make amazing websites, especially with all
01:24:02
◼
►
their great new business features.
01:24:04
◼
►
So for instance, maybe your business
01:24:06
◼
►
is selling content to members.
01:24:08
◼
►
They have member areas now.
01:24:09
◼
►
You can monetize your content and expertise
01:24:11
◼
►
in a way that fits your brand.
01:24:13
◼
►
Unlock new revenue streams for your business
01:24:14
◼
►
and free up time in your schedule
01:24:16
◼
►
by selling access to gated content like videos,
01:24:18
◼
►
online courses, or newsletters.
01:24:21
◼
►
Of course, you can also have online stores of Squarespace.
01:24:23
◼
►
Sell any physical or digital products,
01:24:26
◼
►
all with the tools Squarespace has to sell online.
01:24:29
◼
►
You can have email campaigns to promote what you're doing,
01:24:32
◼
►
apply your own brand ingredients like site colors and logo,
01:24:35
◼
►
have built-in analytics to measure the impact of every
01:24:38
◼
►
email that you send.
01:24:39
◼
►
And all of this, of course, is backed
01:24:40
◼
►
by awesome, powerful analytics in other areas, too.
01:24:43
◼
►
You can use insights to grow your business,
01:24:45
◼
►
Learn where your site visits and your sales are coming from.
01:24:48
◼
►
Analyze which channels are most effective.
01:24:50
◼
►
Build your marketing strategy based on your top keywords,
01:24:52
◼
►
your most popular products and content.
01:24:54
◼
►
All of that and so much more is available
01:24:57
◼
►
with Squarespace sites.
01:24:59
◼
►
They make it so easy.
01:25:00
◼
►
You can see for yourself, you can build the entire site
01:25:03
◼
►
with their free trial.
01:25:04
◼
►
No credit card is required.
01:25:06
◼
►
You can set up your entire site, test it out,
01:25:09
◼
►
see how it looks, send it to other people to look at,
01:25:11
◼
►
all without giving them a dime or a credit card.
01:25:14
◼
►
And they are, I'm so confident you're gonna use them really.
01:25:17
◼
►
They're so good, it's so easy, it's so much easier
01:25:19
◼
►
than doing any of this stuff in any other way,
01:25:21
◼
►
if I'm honest with you.
01:25:23
◼
►
So go to squarespace.com/atp to start that free trial.
01:25:27
◼
►
When you're ready to launch, use offer code ATP
01:25:29
◼
►
to save 10% off your first purchase of a website or domain.
01:25:32
◼
►
Once again, squarespace.com/atp to start that free trial
01:25:36
◼
►
and use offer code ATP when you purchase
01:25:37
◼
►
to save 10% off your first purchase of a website or domain.
01:25:40
◼
►
Thank you so much to Squarespace for sponsoring our show.
01:25:43
◼
►
(upbeat music)
01:25:47
◼
►
Let's do some Ask ATP.
01:25:48
◼
►
Eshu Marnidi writes, "How do you backup and store
01:25:51
◼
►
your main Xcode project folders for your apps?
01:25:54
◼
►
Just on your Mac with Time Machine, iCloud,
01:25:56
◼
►
something more sophisticated, and PS,
01:25:58
◼
►
does Ask ATP work on Mastodon?"
01:25:59
◼
►
Let me cover the second one first.
01:26:00
◼
►
No, I need to look into, so it was just an if-t-t-t-t
01:26:04
◼
►
that did the scanning on Twitter for #askATP.
01:26:08
◼
►
Is that even something you can do on Mastodon?
01:26:11
◼
►
- It probably is, but my interpretation
01:26:13
◼
►
of this question was, "Hey, can we ask questions on Mastodon
01:26:17
◼
►
by addressing them to @ATPFM and get them answered?"
01:26:22
◼
►
And the answer to that is, yeah, pretty much.
01:26:25
◼
►
But I have, this is one of my,
01:26:26
◼
►
granted, this is not a use case that Mastodon
01:26:28
◼
►
probably needs to care about at this point,
01:26:30
◼
►
but it is one of my use cases, so it bothers me.
01:26:33
◼
►
Mastodon doesn't have full search.
01:26:37
◼
►
That's a whole thing.
01:26:38
◼
►
I think I have a good link on that.
01:26:39
◼
►
Tim Bradis wrote a bunch about it today.
01:26:41
◼
►
We should put that in the show notes.
01:26:42
◼
►
I will find it for you.
01:26:44
◼
►
Remind me, Casey, to get that link for you.
01:26:46
◼
►
But anyway, there's no full text search.
01:26:47
◼
►
You can search your own messages,
01:26:50
◼
►
and you can search your favorites,
01:26:52
◼
►
and you can search on hashtags,
01:26:53
◼
►
but you can't do full text search,
01:26:54
◼
►
and that is an intentional design decision,
01:26:56
◼
►
not a technical limitation,
01:26:57
◼
►
and there is much controversy about it.
01:26:59
◼
►
But anyway, that is the case.
01:27:01
◼
►
What that means is for someone like me,
01:27:03
◼
►
I have my personal account,
01:27:05
◼
►
but also I like to look at the mentions for ATP FM
01:27:09
◼
►
on both Twitter and Mastodon.
01:27:11
◼
►
So I can see things like people asking Ask ATP questions,
01:27:14
◼
►
especially since Casey's automation
01:27:15
◼
►
that automatically finds anybody who uses the Ask ATP hashtag
01:27:19
◼
►
and shoves it into Google Sheet,
01:27:20
◼
►
doesn't currently work with Mastodon,
01:27:22
◼
►
and we'll work on getting that work.
01:27:23
◼
►
But I like to look at the ATP mentions manually, and I can.
01:27:27
◼
►
I have access to the ATP account.
01:27:28
◼
►
We share access to that account.
01:27:30
◼
►
I can have it in Mastodon.
01:27:32
◼
►
I can go over that and look at the mentions
01:27:33
◼
►
when I'm logged in, right?
01:27:35
◼
►
What I can't do, though,
01:27:36
◼
►
and what I'm used to doing on Twitter is,
01:27:40
◼
►
On Twitter, I just have a saved search for @ATPFM.
01:27:43
◼
►
And I can look at that saved search,
01:27:44
◼
►
and now I'm looking at all of ATP's mentions.
01:27:46
◼
►
I can't do that on Mastodon.
01:27:48
◼
►
I have to be signed into the ATP account
01:27:51
◼
►
to look at the mentions, but it's fine.
01:27:52
◼
►
Again, I can do that.
01:27:53
◼
►
But when I want to reply to them,
01:27:55
◼
►
I want to reply to the ATP FM mentions as me.
01:27:59
◼
►
I don't want to reply from the ATP account
01:28:01
◼
►
because I don't feel like I'm speaking,
01:28:02
◼
►
unless I'm speaking for all of ATP,
01:28:04
◼
►
which is a rare occurrence,
01:28:05
◼
►
I want to just speak for myself.
01:28:07
◼
►
And Mastodon makes that so hard.
01:28:09
◼
►
Because when I'm signed into ATP,
01:28:13
◼
►
looking at the ATP mentions,
01:28:14
◼
►
I see something I wanna respond to,
01:28:16
◼
►
this is what I have to do.
01:28:18
◼
►
Copy link to the toot, Marco.
01:28:21
◼
►
- Nope, I'm not on board with this.
01:28:23
◼
►
- As a URL, then I have to switch back to my account,
01:28:27
◼
►
paste that URL into the search field,
01:28:29
◼
►
switch to post so it finds that post,
01:28:31
◼
►
and then reply to it.
01:28:32
◼
►
That is a terrible process.
01:28:33
◼
►
It takes way too long.
01:28:35
◼
►
I just wanna be able to reply.
01:28:37
◼
►
I don't know what the solution to this is,
01:28:39
◼
►
'cause I understand all the decisions that led to this,
01:28:41
◼
►
I understand it's a weird use case
01:28:42
◼
►
to be looking at a shared account or whatever,
01:28:44
◼
►
but boy is it hard to,
01:28:46
◼
►
because the thing might not even be on the same server
01:28:48
◼
►
as you and so if you do it in the web thing,
01:28:51
◼
►
you have to, it's just, doing it in clients
01:28:54
◼
►
like the various iOS clients I use,
01:28:56
◼
►
some of them make this harder and easier
01:28:57
◼
►
depending on how well they have integrated
01:29:00
◼
►
the search and reply functionality.
01:29:02
◼
►
It's weird, but anyway, if you do wanna ask
01:29:06
◼
►
and ask ATP on Mastodon, human beings will look at that.
01:29:09
◼
►
And if we find the question interesting,
01:29:10
◼
►
we'll probably see it.
01:29:12
◼
►
But the automation was really good
01:29:13
◼
►
because the automation just puts them
01:29:14
◼
►
into a giant Google Sheet
01:29:15
◼
►
and we can browse that at our leisure.
01:29:18
◼
►
So even if we missed it in the day of or whatever,
01:29:20
◼
►
or noted it, but forgot to write it down,
01:29:21
◼
►
it would always be in the Google Sheet.
01:29:22
◼
►
So we'll work on that.
01:29:24
◼
►
- Yep, so you can, like John said,
01:29:26
◼
►
you can certainly ask on Mastodon,
01:29:27
◼
►
but we need an automated solution.
01:29:30
◼
►
And actually I was listening to upgrade
01:29:32
◼
►
before we recorded and Mike was hinting
01:29:34
◼
►
they have some sort of automated solution. Now he never said anything about Mastodon,
01:29:38
◼
►
but I'm curious to see what they come up with and maybe I'll be able to steal it. But anyway,
01:29:44
◼
►
with regard to issues, actual question, you know, how do you back up and store the main
01:29:47
◼
►
Xcode project folders? I mean, I just check stuff into GitHub and I don't remember where
01:29:52
◼
►
I got my gitignore, but it's like a standard issue iOS gitignore. So perhaps I'm misunderstanding
01:29:56
◼
►
the question, but like other than what's in GitHub, which is enough to just download and
01:30:01
◼
►
and start development, assuming Xcode is already installed.
01:30:04
◼
►
I don't do anything explicit or specific for it.
01:30:08
◼
►
I do have Time Machine and I do have Backblaze,
01:30:10
◼
►
but I don't do anything specific.
01:30:12
◼
►
So am I missing the point here?
01:30:14
◼
►
I don't know, Marco, what is the correct answer?
01:30:16
◼
►
- So the way I read this, is Ashu not using source control?
01:30:21
◼
►
Like-- - I don't know.
01:30:22
◼
►
- So my answer here is, I mean,
01:30:27
◼
►
the main store for my source code is GitHub.
01:30:30
◼
►
Like that's the source control store.
01:30:33
◼
►
They're all private repos, which you can do.
01:30:35
◼
►
- Yeah, same.
01:30:36
◼
►
- So I store it there for many reasons.
01:30:39
◼
►
And then the local checkouts of my code,
01:30:42
◼
►
they are backed up just as any other files
01:30:46
◼
►
on my computer are as part of Time Machine
01:30:49
◼
►
and Backblaze and everything else.
01:30:50
◼
►
- Yeah, same.
01:30:51
◼
►
- Yeah, I do think it's weird that this question
01:30:53
◼
►
didn't mention version control.
01:30:54
◼
►
Maybe people are in the mindset where like
01:30:56
◼
►
they've been heard so many times
01:30:57
◼
►
if you've been around the internet,
01:30:58
◼
►
RAID is not a backup.
01:30:59
◼
►
like oh it's a way to redone only start data on a disk but raid is not a backup
01:31:02
◼
►
you need to make separate backups because if you pose your data you also
01:31:06
◼
►
on a raid it's post on your raid it's not a backup solution right as in you
01:31:11
◼
►
oops I deleted it oh I want to get that back raid does not help you there maybe
01:31:14
◼
►
your file system helps you there maybe your backups help you there but raid is
01:31:18
◼
►
not a backup get decentralized version control is also kind of not a backup but
01:31:25
◼
►
it's way more of a backup than raid for a bunch of reasons so first of all the
01:31:29
◼
►
The point of decentralized version control is there's not some central server that has
01:31:32
◼
►
all the data and then your client just has a portion of it.
01:31:35
◼
►
When you clone a repo, the word clone is right there.
01:31:39
◼
►
You've got it locally.
01:31:40
◼
►
Now, it doesn't mean they're always in sync.
01:31:41
◼
►
You could have a repo on your laptop, on your desktop, on GitHub, and they could all be
01:31:46
◼
►
at different states.
01:31:47
◼
►
They're not automatically synchronized.
01:31:48
◼
►
You have to do that yourself with pulling and pushing and fetching and doing all that
01:31:52
◼
►
But the thing about version control that has that raid doesn't is that it keeps past versions
01:31:58
◼
►
of your thing.
01:31:59
◼
►
So if you screw it up real badly,
01:32:02
◼
►
you can always rewind to a time when it wasn't screwed up
01:32:05
◼
►
and it keeps them forever unless you remove them, right?
01:32:07
◼
►
And that's not, RAID does not do that for you, right?
01:32:10
◼
►
So using Git and having,
01:32:12
◼
►
or any kind of decentralized version control
01:32:15
◼
►
and having multiple reasonably recent clones of that repo
01:32:19
◼
►
that you have some way of keeping in sync
01:32:22
◼
►
is actually a pretty good backup.
01:32:23
◼
►
And the GitHub thing is like, I'm trusting GitHub,
01:32:25
◼
►
the big giant corporation now owned by Microsoft,
01:32:27
◼
►
to mostly not lose my data, right?
01:32:30
◼
►
If you wake up one day and like,
01:32:31
◼
►
oh, GitHub has had a catastrophe
01:32:33
◼
►
and 60% of their private repos, the data's gone, sorry.
01:32:37
◼
►
Actually, I think most people, they'd grumble,
01:32:38
◼
►
but most people probably have local copies of that repo,
01:32:42
◼
►
local clones of that repo that are reasonably up to date.
01:32:44
◼
►
In fact, their local repos may be ahead of the one on GitHub
01:32:47
◼
►
'cause they haven't pushed recently.
01:32:48
◼
►
So it wouldn't be as big as a disaster
01:32:51
◼
►
because that's the nature of decentralized version control.
01:32:53
◼
►
But having it on GitHub is in fact one,
01:32:56
◼
►
it's a cloud backup, right?
01:32:57
◼
►
But what Casey said is true too.
01:33:00
◼
►
They're just files, like backblaze, time machine,
01:33:04
◼
►
like back them up the way you back up any of your files.
01:33:06
◼
►
The good thing is they're probably small files too,
01:33:08
◼
►
so you don't have to worry about it.
01:33:09
◼
►
So yeah, they should be in your patented backup vortex
01:33:12
◼
►
where they get backed up to multiple local backups,
01:33:15
◼
►
multiple cloud backups, and then throw in GitHub
01:33:18
◼
►
as a second or third cloud backup,
01:33:20
◼
►
because I think it counts.
01:33:22
◼
►
- Sean Cameron writes, "John, how do you feel
01:33:24
◼
►
"about lossy video streaming compression
01:33:26
◼
►
"with your fancy new TV?
01:33:27
◼
►
Platforms do offer content technically in 4K, Dolby Atmos, etc.,
01:33:31
◼
►
but the streams will still be compressed lossy, and I find visible artifacts like color banding
01:33:35
◼
►
all the more tragic in the context of our era of incredible TV technology.
01:33:40
◼
►
With studios producing new content available streaming only, there's often little you can do
01:33:43
◼
►
to avoid this until it's released on another medium. How do you manage? And have you ever
01:33:47
◼
►
looked into lossless movie sources like Kaleidoscope, which claim to offer an even higher
01:33:52
◼
►
bitrate than Blu-ray. You know, this is a very funny Ask ATP because I've been giving
01:33:57
◼
►
a friend of mine a real hard time. He just got, actually we were talking about him obliquely
01:34:01
◼
►
when you had recommended the LG and the Andrew Sony. He just got, you know, this, I think
01:34:07
◼
►
he ended up with the new LG and he keeps insisting on buying Blu-rays and I keep making fun of
01:34:12
◼
►
him for it because, you know, it's fidelity, fidelity, fidelity. And this is your time
01:34:16
◼
►
to make me feel wrong, John, and convince me that the Blu-ray player from 15 years ago
01:34:21
◼
►
that's been in my attic for 10 years should come back downstairs and be used to new.
01:34:25
◼
►
Maybe not if it's a 1080 Blu-ray player. I know, I know.
01:34:31
◼
►
Yeah, so getting my fancy TV that's 4K, it's my first 4K TV so I'm late to the 4K revolution,
01:34:36
◼
►
but it has of course made me realize, "Oh, I have that movie and I have it on Blu-ray,
01:34:41
◼
►
but it's only 1080 and it's a 4K version." And it's tricky with Blu-ray because there's so much
01:34:46
◼
►
more to a Blu-ray release than just the bitrate.
01:34:50
◼
►
It's how is it mastered, how is it upscaled from the lower res source if that's the case,
01:34:55
◼
►
how is it color corrected.
01:34:56
◼
►
That's why you see reviews of Blu-ray discs.
01:34:58
◼
►
Which version of the 4K thing of this movie looks good or which one did they screw up
01:35:02
◼
►
by weirdly color balancing it or whatever.
01:35:04
◼
►
So you have to do your research there.
01:35:06
◼
►
In terms of what my favorite YouTube channel calls "bit starved content", things that are
01:35:11
◼
►
lossy compressed with bad artifacts and stuff, there actually is a difference in the television
01:35:17
◼
►
you use to view it and how it handles that.
01:35:21
◼
►
You wouldn't be surprised to know that upscaling non-4K content to 4K, different TVs do a better
01:35:29
◼
►
or worse job of that, but even just playing content at its native resolution when it is
01:35:34
◼
►
bit starved, when the bitrate is not enough to avoid visible compression artifacts, televisions
01:35:41
◼
►
have ways to try to make those compression artifacts less visible and it's not even like
01:35:46
◼
►
the really extreme like oh just totally massage this picture you know computational photography
01:35:51
◼
►
but for video even with basically everything turned quote unquote off some televisions will
01:35:56
◼
►
do things like decontouring filters at a very very low level that will show difficult gradients
01:36:03
◼
►
with less banding than other televisions the one that uh HGTVs has the YouTube channel I was
01:36:07
◼
►
referring to always uses is a scene from The Martian which has like a red orange
01:36:12
◼
►
kind of Martian sky in the background and it's a big gradient behind Matt
01:36:16
◼
►
Damon's head it's like a dark you know dark orange to light orange huge gradient
01:36:20
◼
►
across the whole sky and even on blu-ray it is difficult to show some television's
01:36:26
◼
►
have difficulty showing that content at a high bit rate without banding on the
01:36:31
◼
►
on the gradient right it's a challenging situation to get a smooth gradient
01:36:36
◼
►
across an entire 4K screen, some televisions do better than others with it.
01:36:41
◼
►
That's why you watch TV reviews and find out what do I care about more.
01:36:44
◼
►
Do I care about gaming input lag versus decontouring versus handling the really badly compressed
01:36:51
◼
►
HBO copy of a Game of Thrones episode that's really dark and has weirdly weird flickering
01:36:55
◼
►
and what is it, near black luminance overshoot.
01:36:59
◼
►
Did I get that right?
01:37:00
◼
►
I think I got the reverse.
01:37:01
◼
►
I'm sorry Vincent T. O. for near white luminance overshoot.
01:37:05
◼
►
I'm sure it's one of those two things.
01:37:06
◼
►
Anyway, there's a bunch of visual artifacts
01:37:08
◼
►
that you might care about that your TV has an influence on.
01:37:10
◼
►
So that's why I say look at TV reviews.
01:37:12
◼
►
Now, setting all that aside,
01:37:14
◼
►
you do want the highest bit rate you could possibly get.
01:37:17
◼
►
That's why I buy Blu-ray discs of the movies
01:37:20
◼
►
that I care about the most,
01:37:21
◼
►
because I don't wanna see them
01:37:22
◼
►
in the movies that I care about the most.
01:37:24
◼
►
And yes, you can see the difference
01:37:25
◼
►
if you actually are familiar with the movie enough,
01:37:29
◼
►
especially on a service
01:37:30
◼
►
where either your network connection is bad,
01:37:32
◼
►
or the service is having a bad day,
01:37:34
◼
►
or the service just has low bit rate stuff.
01:37:36
◼
►
You'll look at a particular scene and it'll be blocky
01:37:38
◼
►
and it's gross and it takes you out of it.
01:37:39
◼
►
If anyone ever throws confetti in your movie,
01:37:42
◼
►
you should get the Blu-ray.
01:37:44
◼
►
Confetti is hell on my handbag artifact, it's so bad.
01:37:48
◼
►
Like the movie will look perfect up until the point
01:37:50
◼
►
confetti explodes and you're like,
01:37:51
◼
►
"Oh, what the heck is going on?"
01:37:53
◼
►
- Like the HBO static logo?
01:37:55
◼
►
- The HBO static logo is actually better
01:37:57
◼
►
because your eye doesn't know, like,
01:38:00
◼
►
"Ah, static is static and yeah,
01:38:01
◼
►
it might look a little blocky,
01:38:02
◼
►
but you're not looking for it."
01:38:03
◼
►
but confetti is supposed to be individual,
01:38:05
◼
►
brightly colored, like little pieces of confetti,
01:38:08
◼
►
and you know that's what it's supposed to look like
01:38:09
◼
►
on those macro block, it doesn't get hidden
01:38:12
◼
►
like the static logo on HBO does, but yeah.
01:38:15
◼
►
The problem with, of course, high bit rate stuff
01:38:18
◼
►
is it's big, so I get Blu-rays for the movies
01:38:20
◼
►
I really, really care about, but it is such a pain.
01:38:22
◼
►
Blu-rays suck so bad, they take so long to load,
01:38:25
◼
►
you gotta go through the menus, it is the worst.
01:38:27
◼
►
Everyone hates Blu-rays for a reason,
01:38:28
◼
►
but it's the best I can have.
01:38:29
◼
►
So that's why I was saying, what about,
01:38:31
◼
►
what if you just take those Blu-rays
01:38:32
◼
►
rip them one-to-one, you know, no recompression, just take the data right off the blu-ray and
01:38:36
◼
►
put it on your Synology.
01:38:38
◼
►
I looked into that back when I had a 1080 TV and even at 1080 resolution I do not have
01:38:44
◼
►
the storage to do that.
01:38:45
◼
►
Someday I might, but they're big.
01:38:47
◼
►
You know, 1080 blu-ray is like 50 gigs or whatever, 4K ones might be even bigger, I
01:38:51
◼
►
haven't even looked.
01:38:52
◼
►
I just know I don't have the storage for that.
01:38:55
◼
►
Even for like the one or two movies that I care about, I just gave up, I deleted them
01:38:59
◼
►
off of my Synology and I just go back to the plastic disks that they came from.
01:39:03
◼
►
Someday maybe when hard drive sizes continue to get bigger and bigger and movies stay at
01:39:07
◼
►
4K I will have one to one ripped version of blu-ray stuff on my Synology and I think that'll
01:39:13
◼
►
I do now prefer the services that have higher bitrate content.
01:39:17
◼
►
There is that, what was the Sony thing, the BraviaCore I think it was called, the service
01:39:23
◼
►
that Sony runs that will stream you really high bitrate stuff and your Sony television
01:39:29
◼
►
comes with like 10 free movies or whatever.
01:39:32
◼
►
I look at that.
01:39:33
◼
►
I look at HBO versus Netflix versus Amazon to see who has the better version of a particular
01:39:40
◼
►
It's usually pretty easy to tell.
01:39:41
◼
►
You just start playing it and wait a few seconds for it to snap in and see what it looks like.
01:39:46
◼
►
In my experience, HBO does okay.
01:39:49
◼
►
Amazon is usually the worst and Netflix is somewhere in the middle, but your mileage
01:39:52
◼
►
which may vary based on the particular thing that you're watching.
01:39:55
◼
►
Fair enough.
01:39:57
◼
►
And then Justin Fisher writes, "What's the best way to backup a photos library to a
01:40:00
◼
►
Synology? Ideally, I think I'd like a backup as a disk image,
01:40:04
◼
►
open to other options as well."
01:40:07
◼
►
backup my photo library in the sense that I think Justin's talking about. Like, my
01:40:11
◼
►
photos, as I've said many, many times, the canonical version of my photos,
01:40:15
◼
►
as far as I'm concerned,
01:40:17
◼
►
is what's on my Synology.
01:40:19
◼
►
But I don't do anything, I don't really do a lot
01:40:23
◼
►
with like albums and favoriting and things like that
01:40:26
◼
►
in photos and if I lost that,
01:40:28
◼
►
I wouldn't personally be upset by it.
01:40:30
◼
►
So I don't really do anything to back that up
01:40:32
◼
►
other than to trust an iCloud photo
01:40:33
◼
►
or what is an iCloud photo library?
01:40:35
◼
►
John, you obviously, as you've talked many times
01:40:39
◼
►
throughout the show, you spend a lot of time
01:40:41
◼
►
curating your photos collection.
01:40:42
◼
►
So what is the correct answer to this question?
01:40:45
◼
►
- So if you just point Time Machine at your photos library,
01:40:47
◼
►
I think it ignores everything that's an iCloud photo library,
01:40:50
◼
►
like in terms of the photo data, or maybe just ignores
01:40:53
◼
►
the entire thing.
01:40:54
◼
►
But the bottom line is that the Photos library, especially
01:40:57
◼
►
today, is just a bunch of files on disk.
01:40:59
◼
►
So any file-based backup solution
01:41:01
◼
►
ought to be able to make a 100% faithful backup of your Photos
01:41:06
◼
►
I would not suggest doing it on a disk image
01:41:08
◼
►
and trying to do that yourself.
01:41:09
◼
►
Even if you just backblaze it, like just an online cloud backup
01:41:12
◼
►
of your Photos library, and as long
01:41:13
◼
►
as you don't leave photos running all the time,
01:41:16
◼
►
or even if you do, like it's just, I'm wondering
01:41:19
◼
►
if you're gonna get like the SQLite databases
01:41:21
◼
►
like mid update or something.
01:41:22
◼
►
In general, I think like just having a file based backup
01:41:25
◼
►
of your photos library to a cloud backup service
01:41:28
◼
►
or anything else is fine.
01:41:29
◼
►
I wouldn't go through the trouble to make a disk image
01:41:31
◼
►
on your Synology and then go through that
01:41:33
◼
►
because I don't think any of the metadata matters that much.
01:41:36
◼
►
You just wanna make sure you're getting the file.
01:41:39
◼
►
So the prerequisite to that is you would have to have
01:41:41
◼
►
your photos library on your Mac set to download originals
01:41:44
◼
►
so you actually have the photos.
01:41:46
◼
►
If you don't have it set to download originals,
01:41:47
◼
►
what you're backing up is a bunch of smaller,
01:41:49
◼
►
lower resolution thumbnails,
01:41:51
◼
►
and then some full-size images, right?
01:41:53
◼
►
So you have to set it download originals,
01:41:54
◼
►
you have to let it download all the originals,
01:41:56
◼
►
then use any decent file backup solution to back it up.
01:42:00
◼
►
And the reason I say don't make a district image
01:42:02
◼
►
is because then you gotta mount the image,
01:42:03
◼
►
which might be annoying, and then on top of that,
01:42:05
◼
►
then you have to run some kind of, you know,
01:42:07
◼
►
backup file synchronization thing
01:42:09
◼
►
that understands Mac metadata,
01:42:10
◼
►
which is actually pretty hard to find.
01:42:12
◼
►
So better to just point cloud backup
01:42:14
◼
►
or carbon copy cloner or any kind of basic file-based
01:42:19
◼
►
backup solution at your photos library
01:42:21
◼
►
and just have it backed up like any other set of files.
01:42:24
◼
►
- Marco, any thoughts?
01:42:25
◼
►
- Yeah, I would just use regular backup methods.
01:42:28
◼
►
I would just use Time Machine.
01:42:30
◼
►
Synology's host Time Machine backups really well.
01:42:33
◼
►
So if you aren't already using a Time Machine Synology
01:42:36
◼
►
backup, I would suggest starting to do that.
01:42:39
◼
►
And then it's then included.
01:42:41
◼
►
- Well yeah, but then check.
01:42:42
◼
►
That's why I didn't definitively say this one
01:42:44
◼
►
or the other, but I seem to recall
01:42:46
◼
►
that Time Machine ignores photos in your photo library
01:42:49
◼
►
if you have iCloud Photo Library enabled.
01:42:51
◼
►
Yeah, so check I guess.
01:42:53
◼
►
Yeah, you'll be able to tell.
01:42:54
◼
►
Just look on your backup and see if your .icloud photo library
01:42:58
◼
►
folder is like one terabyte or like 500 megs.
01:43:00
◼
►
It should be obvious once you have lots of images.
01:43:02
◼
►
Or you just look inside it.
01:43:03
◼
►
Again, they're just files.
01:43:04
◼
►
Like your .icloud photo library thing, it's a bundle.
01:43:07
◼
►
It looks like a file in the Finder,
01:43:09
◼
►
but it's actually a folder.
01:43:10
◼
►
You can go into there and look at the stuff.
01:43:12
◼
►
Don't mess with the SQLite databases,
01:43:14
◼
►
but don't mess with anything in there,
01:43:16
◼
►
but you can look at it.
01:43:17
◼
►
It's just a bunch of files.
01:43:19
◼
►
- All right, thanks to our sponsors this week,
01:43:21
◼
►
Green Chef, Trade Coffee, and Squarespace.
01:43:25
◼
►
Thanks to our members who support us directly.
01:43:26
◼
►
You can join at atp.fm/join.
01:43:29
◼
►
We will talk to you next week.
01:43:32
◼
►
(upbeat music)
01:43:34
◼
►
♪ Now the show is over ♪
01:43:36
◼
►
♪ They didn't even mean to begin ♪
01:43:39
◼
►
♪ 'Cause it was accidental ♪
01:43:41
◼
►
♪ Accidental ♪
01:43:42
◼
►
Oh it was accidental John didn't do any research
01:43:47
◼
►
Marco and Casey wouldn't let him Cause it was accidental
01:43:52
◼
►
Oh it was accidental And you can find the show notes at ATP.fm
01:43:59
◼
►
And if you're into Twitter You can follow them @C-A-S-E-Y-L-I-S-S
01:44:09
◼
►
So that's Casey Liss, M-A-R-C-O-A-R-M
01:44:14
◼
►
Anti-Marco Armin, S-I-R-A-C
01:44:19
◼
►
USA, Syracuse, it's accidental
01:44:24
◼
►
They didn't mean to accidental
01:44:29
◼
►
Tech podcast, so long
01:44:34
◼
►
- Jon, a long time ago,
01:44:35
◼
►
you went on an adventure with microphones.
01:44:38
◼
►
And I actually did kind of the same thing.
01:44:40
◼
►
Markowitz suggested to the two of us that,
01:44:43
◼
►
hey, maybe it's time to upgrade our mics.
01:44:44
◼
►
- No, no, no, that's not what I said.
01:44:48
◼
►
- That's right.
01:44:49
◼
►
The reason I put this in here is because
01:44:51
◼
►
this is one of those questions we get every few years.
01:44:52
◼
►
And we usually, you know,
01:44:54
◼
►
we like to re-answer the same questions multiple times.
01:44:57
◼
►
If you listen to the shows for years and years,
01:44:58
◼
►
you know that.
01:44:59
◼
►
And I think it's a useful thing to do.
01:45:00
◼
►
And this is our, I don't know,
01:45:03
◼
►
biannual every three years, whatever,
01:45:06
◼
►
answering of the question,
01:45:07
◼
►
How do you record your podcasts?
01:45:10
◼
►
What kind of equipment do you use?
01:45:11
◼
►
We get that question all the time,
01:45:12
◼
►
but we can't answer it all the time.
01:45:13
◼
►
But this is one of the times we're answering it
01:45:15
◼
►
because the story that we're gonna tell here
01:45:18
◼
►
is tangentially about what we use to record our podcasts,
01:45:21
◼
►
but it was kicked off by Marco posting
01:45:24
◼
►
to various channels that we are in,
01:45:26
◼
►
hey, this microphone that I like that used to cost $700
01:45:29
◼
►
is now available for $400.
01:45:32
◼
►
That's a good deal.
01:45:33
◼
►
You should check this out.
01:45:35
◼
►
- It wasn't to us in particular,
01:45:37
◼
►
was just like, this is quite a price cut.
01:45:38
◼
►
700 down to 400.
01:45:40
◼
►
Was it 700 to 400 or 700 to 300?
01:45:41
◼
►
It was 700, I think, to 400.
01:45:43
◼
►
Yeah, but anyway, that's a good deal, right?
01:45:45
◼
►
And it wasn't-- what we later found out
01:45:47
◼
►
is it wasn't on sale for Black Friday or something like that.
01:45:49
◼
►
It was just like, this is the new lower price.
01:45:51
◼
►
And so this microphone that you might have looked at and said,
01:45:53
◼
►
oh, Marco likes his microphone.
01:45:55
◼
►
Like, I'm not a big, big podcaster.
01:45:57
◼
►
I don't need to look at that.
01:45:59
◼
►
Like, eh, maybe, right?
01:46:00
◼
►
And so when Marco posted this, both Casey and I independently
01:46:04
◼
►
So I thought, hmm, you know,
01:46:06
◼
►
we haven't looked at our audio setup for a while.
01:46:09
◼
►
This is a microphone Marco likes.
01:46:11
◼
►
It's way cheaper than it used to be.
01:46:12
◼
►
And we do podcasts for a living.
01:46:15
◼
►
We can justify a $400 microphone, easy.
01:46:17
◼
►
Maybe seven and another one, we're like,
01:46:18
◼
►
ah, current mics are fine.
01:46:19
◼
►
But for $400, we should check it out.
01:46:21
◼
►
So I went on this adventure, and so did Casey,
01:46:24
◼
►
of getting this microphone.
01:46:25
◼
►
- Without asking me.
01:46:26
◼
►
- Yeah, we don't need to ask you.
01:46:27
◼
►
It's not, only Casey was not blaming you for this.
01:46:30
◼
►
It's not like you told us to do it.
01:46:32
◼
►
I was just like, this is the thing I'd like to try.
01:46:34
◼
►
It's not like I mess with my setup very often, right?
01:46:37
◼
►
It's been years and years,
01:46:38
◼
►
and I'll get to what my current setup is in a second.
01:46:41
◼
►
But this microphone is called the Earthworks Ethos.
01:46:43
◼
►
We'll put a link in the show notes.
01:46:45
◼
►
It is a very nice looking, attractive microphone.
01:46:48
◼
►
One of the reasons that I was interested in it,
01:46:49
◼
►
in fact, had to do with the form factor.
01:46:51
◼
►
My current setup is unwieldy.
01:46:53
◼
►
It is, the stand is big and weird.
01:46:56
◼
►
I have a pop filter.
01:46:57
◼
►
It's got a little springy, what is it,
01:46:59
◼
►
what is that thing called?
01:47:00
◼
►
- A shock mount.
01:47:00
◼
►
It's got a shock mount with little elastic thingies.
01:47:03
◼
►
I've had it so long that the elastic and the shock mount
01:47:06
◼
►
dried up and broke and I had to get my new elastics for it.
01:47:08
◼
►
Just from existing, it dried up and crumbled to dust
01:47:11
◼
►
and I got bought new elastics for it
01:47:12
◼
►
like two years ago or whatever.
01:47:14
◼
►
And I don't like it.
01:47:15
◼
►
And this new one has an integrated shock mount
01:47:19
◼
►
and is slim and, you know, an integrated shock mount
01:47:22
◼
►
and a little, what is the little foamy thing called?
01:47:25
◼
►
- A pop filter, effectively.
01:47:26
◼
►
It's a foam windscreen technically,
01:47:28
◼
►
but it serves as a pop filter, basically.
01:47:31
◼
►
- Right, and so it's just a little stick
01:47:34
◼
►
that you put a cable in the back of
01:47:35
◼
►
and it has everything built in.
01:47:36
◼
►
I'm like, that is much slimmer than what I have.
01:47:39
◼
►
I would love to have that on my desk instead of this setup.
01:47:41
◼
►
And hey, if Marco says this is a good microphone,
01:47:44
◼
►
maybe I should try it out.
01:47:46
◼
►
The main reason I wanted to bring this up is
01:47:49
◼
►
this is an XLR microphone.
01:47:50
◼
►
That's the type of connector that's on the back of it,
01:47:52
◼
►
and there is no XLR port on the back of any of our Macs.
01:47:55
◼
►
So if you wanna plug this microphone into your Mac,
01:47:57
◼
►
you plug an XLR cable into the back of the microphone,
01:48:00
◼
►
and then the other end of that cable plugs into something,
01:48:03
◼
►
and then that something connects to your Mac.
01:48:06
◼
►
And I have never had one of those somethings.
01:48:08
◼
►
For the entire time I've been podcasting,
01:48:10
◼
►
my entire podcasting career,
01:48:12
◼
►
I have had a microphone that you plug a USB cable
01:48:15
◼
►
into the microphone, and the other end of the USB cable
01:48:18
◼
►
connects to my Mac.
01:48:19
◼
►
And if there's one message I want everyone to get
01:48:22
◼
►
from this thing, this whole adventure here,
01:48:24
◼
►
is that you can be a professional podcaster
01:48:27
◼
►
with a microphone that connects with a USB cable
01:48:30
◼
►
to your computer and that's it.
01:48:31
◼
►
You do not need a giant console with motorized faders on it
01:48:35
◼
►
and a bunch of RGB lights.
01:48:36
◼
►
You do not need a stream deck.
01:48:38
◼
►
Do you not need a big fancy amplifier with tubes on it?
01:48:41
◼
►
And also you don't need any of that stuff.
01:48:44
◼
►
I record this podcast on what I think is like
01:48:46
◼
►
the third microphone I've ever bought for doing this.
01:48:49
◼
►
It's no longer made, which is relevant in a second,
01:48:52
◼
►
but it is the Shure PG42 USB.
01:48:55
◼
►
And that USB at the end, it says,
01:48:56
◼
►
hey sure used to make a version of this microphone with an XLR in it but they also made a USB
01:49:00
◼
►
variant and a USB cable just plugs into the bottom of this microphone and that's it.
01:49:05
◼
►
That is my entire audio setup.
01:49:07
◼
►
I have a microphone stand, a shock mount, the windscreen thing, this is all just physical
01:49:14
◼
►
It's like pantyhose stretched over a little circular thing and a fuzzy foam microphone
01:49:17
◼
►
and some Kredy rubber bands that eventually rot out.
01:49:21
◼
►
You do not need fancy audio equipment and this microphone, I mean it wasn't cheap but
01:49:25
◼
►
but it wasn't expensive. I think it was maybe like $200 or $300 back when I bought it.
01:49:28
◼
►
Yeah, I think it was like $249 when it was listed.
01:49:32
◼
►
And we're going to go into the details of this kind of microphone, but like I said,
01:49:36
◼
►
if you want to podcast, you do not need fancy audio equipment. That said, lots of people
01:49:40
◼
►
I know who podcast have fancy audio equipment, and I was like, "I kind of like that I didn't
01:49:45
◼
►
have it because it makes a simpler setup." But hey, if the cost of having the slimmer
01:49:49
◼
►
microphone that Marco says that he likes is that I have to deal with some of that XLR
01:49:57
◼
►
I've got time.
01:49:58
◼
►
I'm not currently messing with my setup.
01:49:59
◼
►
My computer setup is fine.
01:50:01
◼
►
I should go on this little adventure.
01:50:03
◼
►
So I ordered the microphone, you know, and an XLR cable, and then I needed to buy some
01:50:09
◼
►
kind of box.
01:50:11
◼
►
Before you get to this, let me tell people about your current setup a little bit more
01:50:15
◼
►
than you did.
01:50:16
◼
►
I'll explain what you're going to explain in a second.
01:50:18
◼
►
I just want to go through the whole thing.
01:50:19
◼
►
We'll go through the story, and then we'll
01:50:21
◼
►
understand why the results are what they were.
01:50:22
◼
►
And I think it's a perfectly fine result.
01:50:24
◼
►
But anyway, I needed a little box to connect it.
01:50:27
◼
►
And the box I was looking for basically has XLR,
01:50:29
◼
►
the microphone plug-in to.
01:50:31
◼
►
And then I just wanted USB from that box to my computer.
01:50:33
◼
►
And it would be a USB audio input.
01:50:34
◼
►
There's lots of boxes like this that you can get.
01:50:36
◼
►
One of the features that's been difficult for all podcasters,
01:50:40
◼
►
apparently, to deal with has been a mute thing.
01:50:43
◼
►
There is the cough button that Marco uses.
01:50:45
◼
►
It doesn't really mute.
01:50:46
◼
►
It just makes the volume really, really low.
01:50:49
◼
►
but you can still hear what's being said.
01:50:51
◼
►
I kind of like the full mute thing
01:50:52
◼
►
and some of the more modern boxes
01:50:54
◼
►
that are made for podcasters
01:50:55
◼
►
actually do have a mute thing on it.
01:50:57
◼
►
The one I found was called the Algato Wave XLR.
01:50:59
◼
►
Had a touch sensitive full mute,
01:51:02
◼
►
full digital mute button on the thing,
01:51:04
◼
►
which I thought was great
01:51:04
◼
►
'cause you don't hear a button clicking,
01:51:06
◼
►
it's touch sensitive.
01:51:07
◼
►
Like this box is ideal.
01:51:08
◼
►
I also wanted to be able to adjust the bounce
01:51:11
◼
►
in my headphones of my own voice
01:51:12
◼
►
and the other people's voices
01:51:13
◼
►
and this had that as well.
01:51:14
◼
►
And so I got that one, got the microphone,
01:51:17
◼
►
got everything all set up.
01:51:18
◼
►
boy, it was so much smaller than the setup.
01:51:21
◼
►
I was like so excited about it.
01:51:23
◼
►
But of course, like being a programmer,
01:51:25
◼
►
you don't just get it set up and say, we're good to go.
01:51:27
◼
►
I did what you have to do is, gotta test it.
01:51:30
◼
►
Gotta see, you know, don't just assume,
01:51:32
◼
►
because this is a cool microphone that Marco said
01:51:35
◼
►
was a microphone that he likes,
01:51:37
◼
►
that it's better than your other one.
01:51:38
◼
►
So I did multiple record, I put the microphone,
01:51:41
◼
►
my old microphone and my new microphone
01:51:42
◼
►
right next to each other and I talked to them
01:51:43
◼
►
and I sent Marco the recordings and I said,
01:51:46
◼
►
which one of these is better?
01:51:47
◼
►
And he said, "Your old microphone is better."
01:51:50
◼
►
And I was like, "Okay, maybe the box I got was wrong."
01:51:53
◼
►
So I borrowed a box from a friend
01:51:54
◼
►
that had like a lower noise thing,
01:51:55
◼
►
'cause there was definitely some noise in this thing,
01:51:57
◼
►
and did the same thing.
01:51:58
◼
►
"Okay, Marco, which one of these is better?"
01:52:00
◼
►
"Your old microphone is better."
01:52:02
◼
►
And then I did a blind test with the old box
01:52:04
◼
►
and the new box, and Marco was like,
01:52:05
◼
►
"Your old microphone is better."
01:52:07
◼
►
Which I was very disappointed to hear,
01:52:09
◼
►
because boy, this new setup was so much nicer.
01:52:11
◼
►
Like the box wasn't that big,
01:52:13
◼
►
but the microphone was smaller and lighter,
01:52:15
◼
►
and there was less stuff around it or whatever,
01:52:18
◼
►
but always test.
01:52:20
◼
►
Now, why was the old microphone better?
01:52:22
◼
►
My current microphone, my old one,
01:52:24
◼
►
is a large diaphragm condenser microphone,
01:52:27
◼
►
which basically means that there's a big thing in there
01:52:30
◼
►
that my voice makes wiggle.
01:52:32
◼
►
It's literally large diameter.
01:52:36
◼
►
And this is the type of microphone
01:52:38
◼
►
that if you read Margot's Giant Microphone Review
01:52:39
◼
►
that we'll link, he says,
01:52:41
◼
►
large diaphragm, large diameter condenser microphones
01:52:45
◼
►
pick up every little thing, every little noise,
01:52:47
◼
►
'cause they have a large thing
01:52:49
◼
►
that for air particles to whack up against, right?
01:52:53
◼
►
I happen to have an acoustically nice room
01:52:55
◼
►
with carpets and bookshelves and lots of soft materials
01:52:58
◼
►
so you don't hear a lot of echo.
01:53:00
◼
►
And so I get away with using a large diaphragm condenser.
01:53:03
◼
►
Also, my voice being kind of froggy and nasal,
01:53:05
◼
►
I need a large diaphragm condenser
01:53:09
◼
►
to make my voice not sound awful,
01:53:11
◼
►
because the only good parts of my voice
01:53:13
◼
►
need to be picked up by this large diaphragm condenser.
01:53:16
◼
►
And the one, the Earthworks Ethos was,
01:53:19
◼
►
what is that one, Marco?
01:53:20
◼
►
- It's a small diaphragm condenser.
01:53:22
◼
►
- All right, so it's not a dynamic microphone,
01:53:24
◼
►
which is the other kind.
01:53:25
◼
►
It is a condenser microphone, but it is smaller.
01:53:27
◼
►
Like the diameter of the thing that wiggles is,
01:53:31
◼
►
you can tell it's smaller.
01:53:31
◼
►
The microphone is small, it's physically smaller.
01:53:33
◼
►
It is a smaller thing in there
01:53:35
◼
►
that is wiggling back and forth.
01:53:36
◼
►
And it wasn't as good at picking up
01:53:39
◼
►
the nuances of my voice that need to be there
01:53:41
◼
►
to make me sound slightly less like Kermit the Frog.
01:53:44
◼
►
- And people overestimate or overthink
01:53:47
◼
►
the difference between condenser and dynamic
01:53:49
◼
►
and they attribute benefits to one or the other
01:53:52
◼
►
that actually aren't a result of the pickup technology
01:53:55
◼
►
and are more the result of the pickup pattern
01:53:58
◼
►
or the other various characteristics of the mic.
01:54:01
◼
►
But yeah, you had a large diaphragm condenser
01:54:07
◼
►
that worked well.
01:54:09
◼
►
And the problem with large diaphragm condensers,
01:54:12
◼
►
if anybody's ever been in this podcast microphone
01:54:16
◼
►
buying game, you've at some point probably tried
01:54:19
◼
►
the Blue Yeti.
01:54:20
◼
►
The Blue Yeti is a large diaphragm condenser mic.
01:54:23
◼
►
There's a few other popular ones that are like
01:54:24
◼
►
in the kind of affordable price range.
01:54:26
◼
►
And the main characteristic of these is
01:54:31
◼
►
they can sound amazing in a really good environment.
01:54:35
◼
►
So if you have what John has,
01:54:37
◼
►
which is a small room filled with soft diffused surfaces
01:54:42
◼
►
like carpet, bookshelves with lots of books in them,
01:54:45
◼
►
all different sizes sticking out,
01:54:47
◼
►
any kind of padding or anything,
01:54:49
◼
►
any kind of acoustic treatment you can get.
01:54:50
◼
►
- Bay window that's on an angle.
01:54:53
◼
►
- Yeah, anything that is not just like a big hard box,
01:54:56
◼
►
like anything that is soft and different shapes
01:54:59
◼
►
that can diffuse the sound,
01:55:00
◼
►
whether it's actually acoustic foam or a bookshelf
01:55:04
◼
►
or whatever.
01:55:06
◼
►
And also, large diaphragm condensers are very sensitive
01:55:09
◼
►
to shaking, like if you hit the desk,
01:55:12
◼
►
that's why you put them in those giant,
01:55:14
◼
►
suspended rubber shock mount things.
01:55:16
◼
►
And they're usually very susceptible to pops.
01:55:19
◼
►
When you, here I'll take mine off for a second.
01:55:21
◼
►
When you say pop, pop, pop, edit,
01:55:23
◼
►
you get that big bass thing.
01:55:26
◼
►
When that big blast of air, when you say the puh sound,
01:55:29
◼
►
when that hits the diaphragm, it goes boom,
01:55:31
◼
►
and you hear that, like.
01:55:33
◼
►
So anyway, they are very sensitive.
01:55:35
◼
►
They do pick up everything to a fault.
01:55:38
◼
►
And so if you are in good circumstances
01:55:41
◼
►
and if you baby the crap out of the microphone,
01:55:43
◼
►
they sound amazing.
01:55:45
◼
►
I have never been able to get one of these
01:55:47
◼
►
to sound amazing for me because I'm never in a perfect room,
01:55:49
◼
►
but Jon for some reason is.
01:55:51
◼
►
And so when he first got this microphone years ago,
01:55:55
◼
►
I told him, "Oh my God, never change it.
01:55:56
◼
►
"Like it's great, just don't change a thing."
01:55:59
◼
►
And that's the audio way.
01:56:03
◼
►
When you get something working, don't touch it again.
01:56:05
◼
►
- But the reason I was interested in changing it
01:56:07
◼
►
had nothing to do with the quality of the audio
01:56:09
◼
►
and everything to do with just the physical reality
01:56:11
◼
►
of this microphone, it is unwieldy.
01:56:13
◼
►
Like all the things you said about it,
01:56:15
◼
►
I would love to have something slimmer
01:56:18
◼
►
and less cumbersome and just, you know,
01:56:19
◼
►
'cause this, I have a double pop filter,
01:56:23
◼
►
like it's two pieces of pantyhose strung over like a ring,
01:56:26
◼
►
a double one of those in front of the microphone
01:56:29
◼
►
which has a foam thingy on top of it.
01:56:32
◼
►
So my plosives are as well arrested as they possibly can be
01:56:36
◼
►
and that all adds to the bulk.
01:56:37
◼
►
So you know, if it's not broken up,
01:56:41
◼
►
part of it is like because they don't make
01:56:42
◼
►
this microphone anymore,
01:56:43
◼
►
and literally if this microphone breaks,
01:56:44
◼
►
I'm gonna have to buy one
01:56:46
◼
►
and then I'm gonna have to start doing research,
01:56:47
◼
►
but at least now I know just to look for
01:56:49
◼
►
other large diaphragm condensers I suppose.
01:56:51
◼
►
- And the good thing is you don't have to do
01:56:52
◼
►
that much research because large diaphragm condensers,
01:56:56
◼
►
like I did this in my mic test,
01:56:57
◼
►
I got a really nice one from Neumann and a couple others.
01:57:00
◼
►
Large diaphragm condensers sound pretty much all the same.
01:57:05
◼
►
Like there are very small differences,
01:57:07
◼
►
but for the most part, across all price ranges,
01:57:11
◼
►
they sound pretty similar,
01:57:12
◼
►
because they have fairly flat frequency responses
01:57:16
◼
►
and they don't really color the sound.
01:57:19
◼
►
Like dynamic mics have a huge range of how they sound.
01:57:23
◼
►
'Cause dynamic mics,
01:57:24
◼
►
just because of the different ways they pick up,
01:57:27
◼
►
it's almost like Instagram filters for sound.
01:57:29
◼
►
like the old Instagram filters,
01:57:31
◼
►
when they would significantly change the way the image,
01:57:33
◼
►
you can get different dynamic mics
01:57:35
◼
►
that sound radically different on the same person's voice
01:57:38
◼
►
and just by the nature of how they're made.
01:57:40
◼
►
Condensers are not like that.
01:57:42
◼
►
Condensers largely sound the same
01:57:45
◼
►
and the large diaphragm condensers in particular
01:57:48
◼
►
really sound very similar to each other, all of them.
01:57:50
◼
►
You can get different characteristics and pickup pattern
01:57:53
◼
►
and certain built-in filters that might be on the mic
01:57:56
◼
►
but for the most part, the basic pickup of them
01:57:58
◼
►
is all very, very similar.
01:57:59
◼
►
And so, and actually, that's what,
01:58:02
◼
►
the Blue Yeti is a really great sounding microphone
01:58:05
◼
►
in a really good environment.
01:58:07
◼
►
But I don't recommend it to some people usually
01:58:09
◼
►
because no one except Jon has a really good environment
01:58:12
◼
►
to record sound, which we'll get to in a minute with Casey.
01:58:15
◼
►
- Wait, what did I do?
01:58:17
◼
►
I'm not in trouble, am I?
01:58:18
◼
►
- Well, just to finish on my thing here,
01:58:20
◼
►
I wanna say that when I sent the audio recordings to Marco
01:58:23
◼
►
and he said mine sound better,
01:58:24
◼
►
I could hear the difference too.
01:58:26
◼
►
If he had said that but I thought they sounded the same or I sounded better I would have kept the new microphone but
01:58:31
◼
►
You know, it was impossible not to hear like I was I did like as good an a/b test
01:58:36
◼
►
I'm literally talking to both microphones at the same time and I could hear the difference and I had to agree
01:58:40
◼
►
The old one was better as much as I hated it. I was like, oh, yeah
01:58:44
◼
►
Because I had to return everything and it was annoying for multiple reasons and no one likes to go through all that
01:58:50
◼
►
I mean, I I did return everything I got all the money back. It's fine or whatever
01:58:53
◼
►
but it's like, boy, it was so much nicer
01:58:56
◼
►
in that setup, but this one sounds better.
01:58:58
◼
►
And I really do think it has to do
01:59:00
◼
►
with the nature of my voice.
01:59:01
◼
►
If you have like a big earthy kind of,
01:59:02
◼
►
like if you have a voice that is not as nasal as mine,
01:59:05
◼
►
I think the difference would be less severe.
01:59:08
◼
►
I think, in fact, I think it was recommended,
01:59:10
◼
►
that, hey, you should use a large diaphragm condenser
01:59:12
◼
►
by someone who, by a listener,
01:59:14
◼
►
who is an expert in audio,
01:59:16
◼
►
who said, your particular voice, John, you, John,
01:59:19
◼
►
because of the way your voice sounds,
01:59:21
◼
►
you will need something like large diaphragm condenser
01:59:23
◼
►
to make you not sound as bad.
01:59:26
◼
►
Or apparently I could wake up at 9am because everybody loved my voice on the episode where
01:59:29
◼
►
I had to wake up at 9am.
01:59:31
◼
►
And I listened back to it and I'm like, "I sound congested and gravelly!"
01:59:34
◼
►
And everyone's like, "Yeah, congested and gravelly, that's great."
01:59:36
◼
►
No, I don't like congested and gravelly.
01:59:39
◼
►
Anyway, it didn't sound as much like me.
01:59:41
◼
►
But yeah, so apparently I need a large eye for a condenser.
01:59:43
◼
►
They are unwieldy.
01:59:44
◼
►
I continue to have one.
01:59:46
◼
►
I'm glad to hear that if this does eventually break, I can find another one that is essentially
01:59:50
◼
►
I don't even wanna go through that
01:59:51
◼
►
because it sounds like I find an equivalent.
01:59:53
◼
►
It will also be unwieldy.
01:59:55
◼
►
I'll have to have the stupid shock mount
01:59:56
◼
►
and it'll probably be side address instead of front address.
01:59:59
◼
►
- Usually. - I'll have to have the thing.
02:00:01
◼
►
Well, anyway, it is what it is.
02:00:03
◼
►
- That's why I personally, for myself and for most people,
02:00:08
◼
►
recommend small diaphragm condensers
02:00:10
◼
►
that are usually in the form of stage microphones.
02:00:12
◼
►
And in fact, this Earthworks Ethos, I think,
02:00:14
◼
►
is the first one I found that was not,
02:00:16
◼
►
that was also otherwise good.
02:00:17
◼
►
And I usually recommend supercardioid pickup patterns.
02:00:19
◼
►
And what that means is like, it only picks up like,
02:00:22
◼
►
a very kind of narrow shape in front of the microphone.
02:00:26
◼
►
And if I move off to the side here,
02:00:27
◼
►
I'm moving off to the side now, I get quiet very quickly.
02:00:30
◼
►
And if I come back to the front,
02:00:31
◼
►
it's kind of loud again.
02:00:32
◼
►
So the idea there is the kind of sharper the shape is
02:00:36
◼
►
that it's picking up within, the less room echo
02:00:40
◼
►
and background noise it is likely to pick up.
02:00:42
◼
►
Now, it doesn't work miracles, as with Casey,
02:00:45
◼
►
it doesn't work miracles, but generally speaking,
02:00:49
◼
►
like the small diaphragm stage condensers,
02:00:51
◼
►
like the Beta 87A or the Neumann KMS 105,
02:00:55
◼
►
and now this Earthworks Ethos that I found,
02:00:58
◼
►
they are way more practical for most podcasters,
02:01:02
◼
►
just because most people don't have perfect rooms
02:01:05
◼
►
in perfect conditions all the time,
02:01:07
◼
►
and they minimize background noise better than most.
02:01:10
◼
►
Whether you go dynamic or condenser,
02:01:13
◼
►
the supercardioid pickup pattern
02:01:14
◼
►
is one I strongly recommend.
02:01:16
◼
►
And in fact, Casey's mic is a super-cardioid dynamic.
02:01:19
◼
►
It's the Shure Beta 58A.
02:01:22
◼
►
I recommended this to him forever ago.
02:01:24
◼
►
Basically what happened was, a long time ago,
02:01:27
◼
►
when John got his new microphone,
02:01:29
◼
►
he by comparison made Casey and I sound like garbage.
02:01:34
◼
►
And so we were like, all right.
02:01:35
◼
►
- This cannot stand.
02:01:37
◼
►
- Yeah, it's like, John, all of us,
02:01:38
◼
►
like we were using, I was using the Rode Podcaster,
02:01:41
◼
►
which is like what all the 5x5 and TWiT people got
02:01:44
◼
►
a million years ago.
02:01:45
◼
►
And by today's standards, it was garbage.
02:01:49
◼
►
But back then, it was fine.
02:01:51
◼
►
But then once John steps up,
02:01:52
◼
►
it's like a nice large condenser.
02:01:55
◼
►
We said it like crap by comparison.
02:01:58
◼
►
So, you know.
02:01:59
◼
►
- Well, I had a sure something or other for a long time.
02:02:02
◼
►
And then after that,
02:02:05
◼
►
I think I have this on my website somewhere.
02:02:07
◼
►
But anyway, after that, I got the,
02:02:08
◼
►
what is this, the 58a?
02:02:09
◼
►
I don't even remember.
02:02:10
◼
►
- The beta 58a is what you use now.
02:02:12
◼
►
- Yeah, and this has been working pretty well for me.
02:02:14
◼
►
And the short, short, short version of the story for me
02:02:17
◼
►
with regard to the Earthworks ethos is that
02:02:20
◼
►
I did the exact same thing that Jon did.
02:02:21
◼
►
Oh, that's a good deal, I'm a sucker for a good deal.
02:02:24
◼
►
I'm a professional now, I should give this a shot.
02:02:26
◼
►
And I did, and Marco immediately said,
02:02:28
◼
►
oh, absolutely, absolutely not,
02:02:31
◼
►
that is not gonna work for you.
02:02:33
◼
►
- Oh my God.
02:02:33
◼
►
- Real time follow up, it was the SM7B,
02:02:35
◼
►
and then, like you said, now I'm on the 58A.
02:02:38
◼
►
- Oh, I hate the SM7B so much.
02:02:40
◼
►
I tried to make it work, I bought one myself
02:02:42
◼
►
'cause I was duped like everyone else who buys them.
02:02:44
◼
►
"Oh, this is a radio classic.
02:02:45
◼
►
Michael Jackson recorded Thriller on it, ugh."
02:02:48
◼
►
Oh my God, what an overrated microphone that is.
02:02:51
◼
►
I tried for a long time, I spent a ton of money
02:02:54
◼
►
trying to make that thing sound good.
02:02:55
◼
►
And it turns out it's not that great by modern standards.
02:02:58
◼
►
It was great when it came out.
02:03:00
◼
►
That was a very long time ago.
02:03:02
◼
►
We have better options now.
02:03:03
◼
►
Yeah, so what happened when Casey tried my new microphone,
02:03:06
◼
►
the Earthworks Ethos, that was now discounted.
02:03:09
◼
►
When he tried it, I'm like,
02:03:11
◼
►
what is all this background noise?
02:03:13
◼
►
Like, are you running like a fan?
02:03:15
◼
►
Like, are you in a fan factory?
02:03:17
◼
►
What is going on there?
02:03:19
◼
►
And you're like, oh yeah, well, you know,
02:03:21
◼
►
I'm running these 14 fans in the room,
02:03:23
◼
►
but I always run them.
02:03:24
◼
►
You never hear them before.
02:03:26
◼
►
- That's mostly true.
02:03:27
◼
►
It is not 14 fans, but typically,
02:03:29
◼
►
I had a ceiling fan on for like 98% of the run of ATP,
02:03:34
◼
►
and this has actually stopped in the last month or two,
02:03:36
◼
►
because it was like a month or two ago
02:03:39
◼
►
that I guess it just had a little bit of a jiggle to it,
02:03:42
◼
►
ceiling fan and Marco blew a gasket which if I were in your shoes I would
02:03:46
◼
►
have blown a gasket. What is this ticking? What is this ticking? What is it? What are
02:03:50
◼
►
you doing? It sounded like a bomb was gonna go off. It's like when
02:03:56
◼
►
the little chain of a ceiling fan is a little bit rattly and the fans going
02:04:00
◼
►
you hear "tik tik tik tik tik" just all the time and he's talking in the background "oh my god I'm
02:04:06
◼
►
like what I'm like this is you we can't use this like this is totally unusable."
02:04:09
◼
►
- Yeah, and so I was, it was immediately verboten
02:04:13
◼
►
that I ever turn the ceiling fan on,
02:04:15
◼
►
which is, I've honored your request ever since.
02:04:19
◼
►
Now, instead, I have a fan blowing at my legs
02:04:21
◼
►
under the desk, which apparently is okay
02:04:23
◼
►
and makes a lot less noise.
02:04:24
◼
►
But anyways, but yeah, Marco immediately said,
02:04:27
◼
►
"Oh my gosh, this is completely unacceptable."
02:04:29
◼
►
And let me remind you, I think I've told this story
02:04:30
◼
►
more than once because it still blows my mind,
02:04:32
◼
►
but like a year ago or thereabouts,
02:04:35
◼
►
I think I had like a video call for some reason,
02:04:37
◼
►
this was after I was independent,
02:04:39
◼
►
I had a video call for some reason,
02:04:40
◼
►
and I had closed the closet doors behind my desk.
02:04:44
◼
►
So my desk faces one wall.
02:04:46
◼
►
On the opposite wall, on the other side of the room,
02:04:48
◼
►
there's one of those like accordion closet doors.
02:04:51
◼
►
And I closed them and I'd forgotten to reopen them
02:04:53
◼
►
during the recording.
02:04:54
◼
►
And the following day, whenever you went to do the edit,
02:04:57
◼
►
you're like, "Mm, yep, yep, something's wrong.
02:04:59
◼
►
"Something ain't right here."
02:05:01
◼
►
Marco, what are you talking about?
02:05:01
◼
►
I did nothing different.
02:05:03
◼
►
Everything is identically the same.
02:05:04
◼
►
And I went back and forth for a few minutes,
02:05:06
◼
►
and I was like looking around the room,
02:05:08
◼
►
wondering like, "What did I do?"
02:05:11
◼
►
And then I looked all the way behind me,
02:05:14
◼
►
and sure enough, the closet doors were closed,
02:05:15
◼
►
and I was like, "Well, the closet doors were closed?"
02:05:20
◼
►
And, oh, that was it, yep, sure enough.
02:05:22
◼
►
And I have also never, ever, ever recorded
02:05:24
◼
►
with the closet doors closed ever since, so.
02:05:27
◼
►
- Make sure you don't take their clothes out of the closet,
02:05:29
◼
►
'cause that is the function, right?
02:05:31
◼
►
You gotta leave the clothes in there, too.
02:05:32
◼
►
- That's right, and my point is, you know,
02:05:34
◼
►
Marco has a pretty good ear for these sorts of things,
02:05:37
◼
►
And yeah, apparently the Earthworks Ethos
02:05:40
◼
►
was not a good fit for either of us.
02:05:43
◼
►
- Yeah, 'cause in John's case, it wasn't sensitive enough,
02:05:45
◼
►
because typically the difference between
02:05:47
◼
►
a small condenser like this and a large condenser
02:05:49
◼
►
is the high frequency pickup.
02:05:51
◼
►
Like usually there's a substantial roll off
02:05:54
◼
►
in high frequency pickup for any kind of smaller mic,
02:05:57
◼
►
including small condensers, and large condensers
02:06:00
◼
►
basically have like relatively flat pickup,
02:06:02
◼
►
and in fact sometimes even boost the high end.
02:06:04
◼
►
And so the large sensors pick up,
02:06:07
◼
►
everything above 10 kilohertz or whatever,
02:06:10
◼
►
large sensors are way better at picking up usually.
02:06:13
◼
►
So all that high frequency crispness
02:06:15
◼
►
that makes John sound awesome.
02:06:16
◼
►
And if you're a professional voiceover artist,
02:06:19
◼
►
you're probably using one of these.
02:06:21
◼
►
If you're really trying to capture
02:06:22
◼
►
a really high quality voice,
02:06:24
◼
►
that's what you should be using most of the time.
02:06:26
◼
►
But for podcasting, again, when you wanna pick up,
02:06:30
◼
►
sometimes you wanna pick up less detail for various reasons.
02:06:32
◼
►
Like whether you wanna minimize the harsh sss,
02:06:35
◼
►
like sibilance sound, or the high frequencies sss,
02:06:39
◼
►
like that can be very harsh sounding.
02:06:41
◼
►
So whether you're trying to minimize that
02:06:42
◼
►
with certain mics, or just trying
02:06:43
◼
►
to minimize background noise.
02:06:45
◼
►
And Casey's mic is actually pretty insensitive.
02:06:49
◼
►
Like in terms of how much power it takes
02:06:51
◼
►
to generate a signal, it's actually pretty efficient
02:06:53
◼
►
'cause it uses modern NIB magnets.
02:06:56
◼
►
But the, like how much it picks up around it,
02:06:59
◼
►
it's a pretty insensitive dynamic mic.
02:07:02
◼
►
So the only reason I would ever suggest Casey upgrade his mic
02:07:06
◼
►
is because Casey has a wonderful voice
02:07:08
◼
►
and a voice that I think would be compatible
02:07:10
◼
►
with almost any mic.
02:07:11
◼
►
And in fact, if you ever heard any of our live shows,
02:07:14
◼
►
I always brought to the live shows three Neumann KMS 105s.
02:07:18
◼
►
That's what we use for those.
02:07:19
◼
►
So it's three of my mic basically.
02:07:21
◼
►
Like I would always just bring three of those
02:07:24
◼
►
and so that you could hear them,
02:07:25
◼
►
I mean, it's a little bit different environment there,
02:07:27
◼
►
but you could hear the voices
02:07:28
◼
►
and it sounded a little bit different.
02:07:29
◼
►
And so I would love for Casey to have like, you know,
02:07:31
◼
►
a better mic at some point to get more of that
02:07:34
◼
►
glorious, casey-less voice.
02:07:36
◼
►
But he needs a mic that's incredibly insensitive
02:07:39
◼
►
to make up for his ridiculous fan factory that he podcasts.
02:07:42
◼
►
- Oh, stop it, all his fans,
02:07:44
◼
►
and his glass of water with ice in it,
02:07:46
◼
►
and his technology running two feet away from his desk.
02:07:49
◼
►
- Right, meanwhile, John accidentally created
02:07:52
◼
►
a perfect recording studio with his home office.
02:07:54
◼
►
And so he's great with a large condenser--
02:07:56
◼
►
- And I do think I need it for my voice,
02:08:00
◼
►
That's where I get to tell, there's not much,
02:08:02
◼
►
if you take out the highs in my voice, it gets way worse.
02:08:05
◼
►
Like Casey has a more normal voice
02:08:08
◼
►
and I think a lot of radio, the radio sound is more
02:08:10
◼
►
about the mids and the lows than the super highs, so.
02:08:13
◼
►
- Yeah, and Casey and I both need to be careful
02:08:16
◼
►
about our siblings, that high end,
02:08:18
◼
►
we both have like a strong siblings in our voices.
02:08:22
◼
►
- Right, I mumble too much for that.
02:08:24
◼
►
- Right, yeah. (laughing)
02:08:25
◼
►
So we both have to use mics that actually have
02:08:27
◼
►
less high end pickup and you know, a lot of this,
02:08:29
◼
►
I fix a lot of this with EQ,
02:08:31
◼
►
like I EQ all of our voices as part of my process,
02:08:33
◼
►
but you know, sometimes EQ can only do so much
02:08:37
◼
►
when the microphone is sometimes just not even
02:08:39
◼
►
picking up certain frequencies.
02:08:41
◼
►
- Yeah, you can't EQ what's not there, so.
02:08:42
◼
►
- Right, right, and the mic can get you
02:08:44
◼
►
a lot of the way there.
02:08:45
◼
►
Anyway, so, turns out we all have very different setups
02:08:50
◼
►
for good reasons, and yeah, when you get it working,
02:08:54
◼
►
don't touch it.
02:08:55
◼
►
- Kind of like you wish you could use the AirPods
02:08:57
◼
►
back when you can use them,
02:08:58
◼
►
I wish my voice was compatible with that microphone
02:09:00
◼
►
'cause it was so nice.
02:09:01
◼
►
It's a really nice look.
02:09:02
◼
►
It's the first microphone that I thought is nice looking
02:09:04
◼
►
'cause it looks kind of like the, you know,
02:09:06
◼
►
the shock, not the shock, the flash tube.
02:09:11
◼
►
You remember old cameras from like, you know,
02:09:12
◼
►
black and white movies where there'd be someone
02:09:14
◼
►
holding a camera and there'd be like a vertical tube
02:09:18
◼
►
that led to the giant flash.
02:09:19
◼
►
You'd hold the camera with like one hand on the camera,
02:09:21
◼
►
one hand on the big vertical tube that led to the flash.
02:09:24
◼
►
That flash tube is what Luke's lightsaber in the first Star Wars is based on.
02:09:31
◼
►
They took that tube and added a bunch of crap to it.
02:09:33
◼
►
So that big flash tube, it's just a big silver tube, that's what this microphone looks like.
02:09:37
◼
►
It looks like that flash tube only instead of adding lightsaber stuff to it, they added
02:09:41
◼
►
a really cool looking little ball joint microphone thing to it and an XLR to the bottom and a
02:09:45
◼
►
fuzzy sock on the top.
02:09:47
◼
►
I endorse the Earth, Earth, and Ethos at its new price of $400 as long as your voice doesn't
02:09:51
◼
►
sound like mine.
02:09:53
◼
►
as long as you are not in a fan factory.
02:09:56
◼
►
It's not a fan factory coming out.
02:09:59
◼
►
Sorry, a bomb factory.
02:10:01
◼
►
But only the cartoon bombs with the alarm clocks on them.
02:10:03
◼
►
It's one or the other. You have to choose.
02:10:05
◼
►
You have to choose what the factory's producing.
02:10:07
◼
►
It's either a bomb or fans. One or the other.