151: The Opposite of Final
00:00:00
◼
►
Hello everybody we are live from Las Vegas with our CES
00:00:05
◼
►
Extravaganza, I thought it was extravaganza. Is it extravaganza? No, not really. No, I'm just kidding and say we're gonna talk about Star Wars for three hours
00:00:13
◼
►
There's a little exchange between one of our listeners and the ever watching ever listening up there folks
00:00:22
◼
►
They're in the cloud. That's why I see everything
00:00:24
◼
►
Peter Brock and Howard
00:00:27
◼
►
Was tweeting at us about this and he said an FYI up there is hosted on AWS little snitch told me so
00:00:33
◼
►
AWS is Amazon's web services and little snitch is a firewall program that tells you where computers connecting to yeah
00:00:38
◼
►
And up there on Twitter responded not true. We built our own stack from the ground up and host our service on this stack
00:00:45
◼
►
So I'm not quite sure what little snitch was on about maybe it connects to AWS or some ancillary things
00:00:50
◼
►
But straight from the up there horses mouse mouth. They're not using AWS
00:00:55
◼
►
they have built their own stack, which is what I was talking about in the last show.
00:00:57
◼
►
Whatever mysterious technology they're using, presumably the whole point of the company
00:01:01
◼
►
is not to write an iOS and a Mac app that connects to S3.
00:01:07
◼
►
That's not, I don't think Bertrand Serlet would do a startup and focus on that because
00:01:12
◼
►
there's a million of those things already.
00:01:13
◼
►
Well, I mean, they could have also just been working a layer above that.
00:01:17
◼
►
Like they could have been using EC2 servers or some other part of AWS as part of their,
00:01:22
◼
►
like how iCloud uses some AWS stuff and some Azure stuff as far as we knew forever ago.
00:01:28
◼
►
Yeah, but that like, what would they use from it? Even, even EC2, like, I don't know, it
00:01:34
◼
►
just seems, it seems counter, because that's all there is, that's all there is up there.
00:01:37
◼
►
There's no, iCloud is built on top of this whole bunch of other stuff, like that's just
00:01:40
◼
►
this, you could use S3 for the storage backend, or if you, if you don't want to have your
00:01:45
◼
►
own data centers or whatever, maybe you could use EC2 for compute stuff, but I don't know,
00:01:49
◼
►
I just always imagine whatever they're doing being more interesting than that.
00:01:53
◼
►
Fair enough.
00:01:55
◼
►
Any other follow up?
00:01:56
◼
►
I threw in some follow up just because it's, I don't know if there's any information here,
00:02:01
◼
►
You threw in some follow up just because you couldn't stand to not have any.
00:02:03
◼
►
No, I mean, like, I was, I had this in the topic section before, but I said, you know,
00:02:06
◼
►
we talked about this on a past show, and so it's kind of follow up, but I'm not sure how
00:02:10
◼
►
filled with information it is.
00:02:11
◼
►
So a friend of mine was messaging me today, and he's like, so how do you feel about the
00:02:15
◼
►
headphone port going away from the iPhone 7?
00:02:19
◼
►
And I said, A, you obviously don't listen to my podcast.
00:02:23
◼
►
And B, what are you talking about?
00:02:26
◼
►
Did I miss some news or something?
00:02:27
◼
►
He's like, oh, yeah, they were talking about it before,
00:02:29
◼
►
but it wasn't confirmed until today.
00:02:31
◼
►
I'm like, what are you talking about?
00:02:32
◼
►
I really thought that Apple had announced
00:02:34
◼
►
that there was going to be no headphone
00:02:35
◼
►
for it on the iPhone 7,
00:02:36
◼
►
but I forget that regular people
00:02:38
◼
►
don't know what confirmed means.
00:02:40
◼
►
So this is a Forbes article.
00:02:42
◼
►
- This is a Forbes article that says,
00:02:44
◼
►
the headline is iPhone 7 Leaks Confirm in Single Quotes,
00:02:48
◼
►
Apple-abandoning headphone jack.
00:02:50
◼
►
I said they did the work for you.
00:02:52
◼
►
They put it in scare quotes in the headline.
00:02:53
◼
►
At least they have the decency to say,
00:02:55
◼
►
"Confirm," I'm doing air quotes now, "Confirm."
00:02:57
◼
►
Anyway, more, so we talked a lot about this on a past show.
00:03:02
◼
►
More rumors, more supposed part leaks.
00:03:05
◼
►
This one has a neat little concept image,
00:03:07
◼
►
'cause if you're gonna have a rumor story,
00:03:09
◼
►
you gotta have someone do a mock-up image
00:03:10
◼
►
with the iPhone 7, and I'm looking at this mock-up image,
00:03:14
◼
►
and what do you guys think?
00:03:16
◼
►
It looks a little thin to me.
00:03:17
◼
►
But anyway, this is more smoke for this potential fire
00:03:21
◼
►
of the headphone port going away.
00:03:23
◼
►
I don't know.
00:03:23
◼
►
I think it's too early to make any kind of call.
00:03:26
◼
►
But if I keep, not that Forbes has a great track record,
00:03:30
◼
►
but it's making me think about it again.
00:03:32
◼
►
It's making me think how Apple could explain
00:03:35
◼
►
this inevitability, if not this year,
00:03:37
◼
►
then next year, the year after, the year after.
00:03:40
◼
►
And I think a lot of the stuff in this article
00:03:42
◼
►
is a good way that they might explain it.
00:03:44
◼
►
The idea being that the phone would be smart
00:03:47
◼
►
about where it sends its audio output depending on context.
00:03:50
◼
►
I wish all of Apple's devices would get smarter this way.
00:03:53
◼
►
All of Apple's service and devices.
00:03:54
◼
►
So if I'm listening on my wireless headphones,
00:03:58
◼
►
you know, I'm in my car, it's playing through Bluetooth.
00:04:00
◼
►
I get out of the car,
00:04:00
◼
►
it's just on my wireless earbuds or whatever.
00:04:03
◼
►
I sit down at my desk and it switches to outputting
00:04:06
◼
►
through the headphone jack of my computer or something.
00:04:09
◼
►
You know what I mean?
00:04:10
◼
►
Like situational awareness where you don't have to be
00:04:12
◼
►
plugging and unplugging things where it will just know
00:04:14
◼
►
based on your location of one of the devices there,
00:04:16
◼
►
or what your preferred sound output device is.
00:04:19
◼
►
That, and then you say,
00:04:20
◼
►
"See, isn't that better than headphone jacking?"
00:04:22
◼
►
Say, "Yeah, if that actually worked,
00:04:24
◼
►
"that would kinda be better than headphone jack."
00:04:25
◼
►
And it lets you make your phone thinner,
00:04:27
◼
►
so everybody's happy.
00:04:28
◼
►
I don't know if that world is gonna arrive
00:04:31
◼
►
in time for the iPhone 7,
00:04:32
◼
►
but it's one way to sell this feature, I guess.
00:04:36
◼
►
- Yeah, I mean, we talked about this to death
00:04:37
◼
►
a few episodes back,
00:04:39
◼
►
so I don't think we should spend too much time on it,
00:04:41
◼
►
but I do think that the world of not having
00:04:44
◼
►
the headphone jack is probably on its way.
00:04:46
◼
►
I think as we discussed last time,
00:04:48
◼
►
it's probably still a few years off.
00:04:50
◼
►
I mean, I think one of the biggest supports for this
00:04:54
◼
►
is to look at the MacBook One.
00:04:56
◼
►
And the MacBook One has two ports,
00:04:58
◼
►
the multipurpose USB-C/charging port and a headphone jack.
00:05:03
◼
►
And they couldn't justify any other ports on that,
00:05:05
◼
►
but they could justify a headphone jack.
00:05:07
◼
►
And I think that goes to show just how often they're used.
00:05:10
◼
►
And Bluetooth headphones do exist.
00:05:13
◼
►
They've used it for quite some time.
00:05:14
◼
►
There are some decent ones, there are very few good
00:05:19
◼
►
or even great ones, and there's a lot of trade-offs
00:05:22
◼
►
to Bluetooth headphones that make them not only less good
00:05:25
◼
►
in some ways, but actually unusable
00:05:27
◼
►
for certain applications.
00:05:28
◼
►
So it is not a clean transition.
00:05:32
◼
►
I'm guessing that that one kind of crazy,
00:05:37
◼
►
translated a million times from different languages story
00:05:39
◼
►
that we got back then, back a month ago or two,
00:05:42
◼
►
That one story about how there would just be a passive
00:05:45
◼
►
special lightning adapter for this new revision
00:05:48
◼
►
of the lightning port that would basically have a DAC
00:05:51
◼
►
on the phone and have it be able to send analog audio
00:05:55
◼
►
through a cheap passive adapter through the port
00:05:58
◼
►
into a headphone jack port
00:06:00
◼
►
that threw like a little breakout cable.
00:06:01
◼
►
I think that's pretty plausible.
00:06:03
◼
►
And so that I think is the most plausible explanation
00:06:07
◼
►
I've heard for why this might not be a big deal,
00:06:10
◼
►
is if they can make a cheap little passive adapter like that
00:06:12
◼
►
and just sell that to you or even include one in the box
00:06:16
◼
►
if it's really that cheap and passive.
00:06:18
◼
►
They probably won't, it'll be more likely
00:06:19
◼
►
they would sell it for 30 bucks, but we can dream.
00:06:23
◼
►
But I think where there's smoke, there's usually some fire
00:06:27
◼
►
and I think there's enough smoke around this
00:06:29
◼
►
that I would move it from unlikely to somewhat likely.
00:06:34
◼
►
And I think if we consider that special lightning adapter
00:06:40
◼
►
passive adapter thing, that makes it more,
00:06:44
◼
►
I don't know, digestible.
00:06:47
◼
►
It makes it suck less, basically.
00:06:50
◼
►
- With all these type of stories,
00:06:52
◼
►
there's a build to the inevitability
00:06:54
◼
►
until we eventually get the real parts leaks,
00:06:56
◼
►
especially with the phones,
00:06:57
◼
►
as the date of the new phone approaches.
00:06:59
◼
►
We're pretty far away now.
00:07:01
◼
►
So I was thinking that this next round of stories
00:07:04
◼
►
about this rumor, nudge it slightly more
00:07:09
◼
►
towards the realm of possibility,
00:07:10
◼
►
but it's still so far out that it's within the realm
00:07:14
◼
►
of things that could end up being totally wrong.
00:07:15
◼
►
But we'll keep watching.
00:07:16
◼
►
We'll keep watching it nudge ever closer.
00:07:18
◼
►
I mean, we'll basically know for sure
00:07:20
◼
►
when the real parts leaks come out,
00:07:21
◼
►
'cause I don't think we've had a significant iPhone revision
00:07:24
◼
►
in a long time where we haven't gotten a look
00:07:26
◼
►
at pretty much every piece of this thing
00:07:29
◼
►
disassembled before it arrives.
00:07:31
◼
►
- And we'll probably know it by April or May.
00:07:35
◼
►
- And especially like this,
00:07:36
◼
►
like you may not know everything,
00:07:37
◼
►
'Cause you can't figure out all the software features,
00:07:41
◼
►
obviously, and then the hardware features,
00:07:43
◼
►
sometimes they're hard to tell from parts,
00:07:44
◼
►
but things like, does it have a hole
00:07:46
◼
►
for the headphone port to go in?
00:07:48
◼
►
We'll be able to tell it just by looking at cases.
00:07:49
◼
►
- Yeah, and the back case is often
00:07:51
◼
►
one of the very first parts to leak.
00:07:52
◼
►
So it can't probably, that's what I'm saying,
00:07:55
◼
►
we'll probably know this one by the spring, really.
00:07:58
◼
►
- All right, what's awesome these days, Marco?
00:08:00
◼
►
- Our first sponsor this week is Audible.com.
00:08:03
◼
►
Audible.com has more than 180,000 audio books
00:08:06
◼
►
spoken word audio products. Get a free 30 day trial at audible.com/ATP. If you want
00:08:12
◼
►
to listen to it, Audible has it. Listen to audiobooks from virtually every genre, anytime,
00:08:17
◼
►
anywhere. You can play Audible's audiobooks on phones, tablets, computers, most Kindles,
00:08:22
◼
►
even iPods if you're Stephen Hackett. Now audiobooks are great for flights, long road
00:08:26
◼
►
trips, even your daily commute. You may think you don't have time to read books, but you'd
00:08:30
◼
►
be surprised how many audiobooks you can hear each year, even if you only listen to and
00:08:33
◼
►
from work every day. With more than 180,000 audiobooks and spoken word audio products,
00:08:39
◼
►
you will find what you're looking for. We have a book recommendation, don't we?
00:08:43
◼
►
Indeed. I believe Jon has one, and I have one if you'd like one as well.
00:08:47
◼
►
We'll do Jon's this time and yours next time. How's that?
00:08:49
◼
►
Sounds good.
00:08:50
◼
►
Or do you want to go first?
00:08:51
◼
►
Oh, no, no, no. It's cool. Especially since Jon is going to make fun of my book selection,
00:08:54
◼
►
so we can definitely save that.
00:08:55
◼
►
Oh, let's do yours then.
00:08:56
◼
►
Ah, shouldn't have said it. So I really enjoyed the book "Ready Player One" by Ernest Cline,
00:09:02
◼
►
which I made the mistake of listening to the incomparable about it, and they basically spent an hour and a half talking about how terrible it is.
00:09:09
◼
►
Anyway, his second book came out, I believe was in 2015, I could be wrong about that, and it's called Armada.
00:09:17
◼
►
And it is not as good as Ready Player One, which at this point John is seriously rolling his eyes, but it is good.
00:09:23
◼
►
I did like it. If you happen to be a fan of Ender's Game, you'll like this and/or Ready Player One.
00:09:29
◼
►
And it is also narrated by Wil Wheaton, who is kind of an internet darling, and I mean
00:09:34
◼
►
that in a not sarcastic way, and a not derisive way.
00:09:37
◼
►
So I definitely recommend it.
00:09:39
◼
►
It's apparently just a shade under 12 hours, so that's what, like two ATP episodes?
00:09:44
◼
►
And it's available on Audible.
00:09:46
◼
►
So check it out today with more than 180,000 audiobooks and spoken word audio products,
00:09:51
◼
►
you will find what you're looking for.
00:09:52
◼
►
Get a free 30-day trial today by signing up at audible.com/ATP.
00:09:57
◼
►
It's audible.com/ATP.
00:10:00
◼
►
Thanks to Audible for sponsoring our show.
00:10:02
◼
►
Ready Player One is mostly harmless, silly, garbage.
00:10:08
◼
►
You really sold it, Joe.
00:10:11
◼
►
We had fun making fun of it on The Incomparable, but it's also all in good fun.
00:10:15
◼
►
I think just because we have a lot of things where it's easy to ridicule the book and
00:10:21
◼
►
poke at it and find flaws, it's still a fun read.
00:10:25
◼
►
I don't regret reading it.
00:10:27
◼
►
I guess that makes me feel a little better?
00:10:31
◼
►
I don't like to use guilty pleasure because I don't like that concept, but it's kind of
00:10:33
◼
►
like junk food.
00:10:34
◼
►
It's like a bag of potato chips.
00:10:36
◼
►
Just chomp it down.
00:10:40
◼
►
Well, anyway, yeah, you should check out Audible.
00:10:45
◼
►
So what else are we talking about tonight?
00:10:47
◼
►
We see that somebody has fixed Apple's grievous mistake with the MacBook One.
00:10:54
◼
►
two kinds of mistakes, so just two things that I just happened to see recently and I'm
00:10:57
◼
►
sure there's more.
00:10:59
◼
►
The MacBook One has got the one little lonely USB Type-C port on the side of it, but USB
00:11:05
◼
►
Type-C can do all sorts of stuff.
00:11:08
◼
►
That's why it's one port, you can put the power through it and you can do all sorts
00:11:12
◼
►
of other things.
00:11:13
◼
►
And so the first link in this tooling set here is for a Griffin device that you plug
00:11:20
◼
►
into your USB-C port on your MacBook One and it gives you back a MagSafe connector, sort
00:11:27
◼
►
Basically a magnetic thing that if someone trips over the cord it will become disconnected.
00:11:30
◼
►
Now I find this interesting for a couple of reasons.
00:11:33
◼
►
When we were first talking about the MacBook One, we of course discussed the fact that
00:11:38
◼
►
this one connector also replaces MagSafe.
00:11:41
◼
►
What happened to MagSafe?
00:11:42
◼
►
Isn't MagSafe great?
00:11:43
◼
►
Doesn't everybody love MagSafe?
00:11:44
◼
►
Doesn't everybody love being able to trip over a cord and not have it yank your computer
00:11:47
◼
►
off the thing or break your adapter or whatever.
00:11:50
◼
►
Isn't MagSafe a great feature?
00:11:51
◼
►
Why would they get rid of it?
00:11:52
◼
►
And my question, which I still don't have an answer to because I don't have one of these
00:11:55
◼
►
and neither do any of us, was maybe you don't need MagSafe because maybe the USB-C connector
00:12:00
◼
►
is so small that if you trip over it, it just pops out anyway harmlessly.
00:12:04
◼
►
The connector is so small that MagSafe is no longer needed.
00:12:08
◼
►
I still don't know if that's the case.
00:12:09
◼
►
Obviously, Griffin thinks that people think it's not the case.
00:12:13
◼
►
Or maybe they know themselves that it's not the case, but they're saying, "Hey, buy this
00:12:16
◼
►
adapter whose sole purpose is to provide a magnetic breakaway connection for the power
00:12:22
◼
►
for your laptop. uh and i don't know like i i feel like i would buy this thing by the laptop
00:12:28
◼
►
by itself and i would see is tripping over the i mean i don't know how to find out maybe find out
00:12:33
◼
►
by yanking the thing onto the floor and watching the screen crack or something maybe just do some
00:12:36
◼
►
experiments to see but boy it seems a long way to go to fill the one and only port on your thing
00:12:42
◼
►
with this giant adapter, $40 giant adapter, not yet available, that gives you a big magnetic
00:12:49
◼
►
thing? Weird product.
00:12:53
◼
►
Yeah, this is, I don't know. Whenever there's a computer or technology thing that comes
00:12:59
◼
►
out and lacks something that came before it, there's always a market for third parties
00:13:05
◼
►
to come in and offer the comforts of the previous thing in some kind of bolt-on thing that costs
00:13:11
◼
►
between $40 and $100. This is true of all technology whenever any progress is made.
00:13:17
◼
►
And sometimes it's worth using, usually it's not. In this case, and you know, Griffin's
00:13:22
◼
►
stuff I've had, honestly I've had mixed success with Griffin's stuff, so I'm not even sure
00:13:27
◼
►
I would trust this to work and be of high quality. So I don't know, I don't really see
00:13:35
◼
►
why people would want to go through the hassle of this and as you said, to kind of like bulk
00:13:40
◼
►
up that port, ruin that port, I don't know. It doesn't seem, it seems like this is a problem
00:13:46
◼
►
that is not worth solving because the solution to it is too clunky itself.
00:13:50
◼
►
I don't even know if it's a problem, like we don't know. The other thing is, there's
00:13:53
◼
►
no USB pass-through. This takes your one and only port, this fills it with power and that's
00:13:58
◼
►
it. So, you know, I can't believe they didn't even provide a pass-through so you could...
00:14:02
◼
►
You sure about that? That makes it suck, really.
00:14:05
◼
►
So, $40 to fill the one port.
00:14:09
◼
►
Anyway, it shows like, that's kind of how product companies work.
00:14:11
◼
►
Like you said, you hit the nail right on the head saying, "Someone always makes one of
00:14:15
◼
►
these things."
00:14:16
◼
►
And it's mostly to make people, like you said, feel more comfortable.
00:14:18
◼
►
I used to have MagSafe, and regardless of whether I need MagSafe now, I want to still
00:14:24
◼
►
have it because it makes me feel comfortable.
00:14:25
◼
►
Maybe it's needed.
00:14:26
◼
►
I don't know.
00:14:27
◼
►
I haven't done the experiment, and as far as I know, nobody has.
00:14:30
◼
►
But another solution to this would be if Apple just put enough battery life in that laptop
00:14:34
◼
►
that you wouldn't need to plug it in all day.
00:14:36
◼
►
You gotta plug it in sometime.
00:14:39
◼
►
Even if you're just putting it somewhere to charge and someone walks by your desk and
00:14:41
◼
►
yanks the thing.
00:14:42
◼
►
Yeah, but the MacBook One has pretty mediocre battery life among the rest of the lineup.
00:14:47
◼
►
It's pretty small.
00:14:49
◼
►
The Skylake revision will presumably get noticeably better, but it's still gonna probably require
00:14:54
◼
►
being plugged in if you're using it all day.
00:14:56
◼
►
So the next one is another thing that takes advantage of the versatility of the USB Type-C
00:15:03
◼
►
It's even bigger.
00:15:04
◼
►
like rectangular thing that pokes out the side of your MacBook one but it
00:15:09
◼
►
gives you a whole mess of ports it gives you two big normal size USB it gives you
00:15:13
◼
►
SD card looks like a CF card and also has to pass through for USB C and this
00:15:17
◼
►
one is from hyper this looks nice to me I was just talking at work today with
00:15:23
◼
►
someone so I think I'd mentioned in the past that where I'm working these days
00:15:26
◼
►
there are cinema displays everywhere or well really Thunderbolt displays I
00:15:30
◼
►
should say and I've always been so jealous because I've always kind of
00:15:33
◼
►
wanted one of those so that I could just sit my laptop down,
00:15:36
◼
►
plug in just a couple of cables,
00:15:37
◼
►
and then I'd be connected to ethernet,
00:15:39
◼
►
my microphone and whatnot.
00:15:41
◼
►
And this is a $50 on sale, kind of mini docking station.
00:15:46
◼
►
Although it doesn't have ethernet,
00:15:48
◼
►
which is a little bit of a bummer,
00:15:50
◼
►
this is the sort of thing that if I had a MacBook One,
00:15:52
◼
►
I would absolutely stick one of these on my desk
00:15:54
◼
►
and make it a little easier to use.
00:15:56
◼
►
- Yeah, I mean, what's promising about this too is,
00:15:59
◼
►
there have always been similar products,
00:16:01
◼
►
although never very many of them,
00:16:03
◼
►
before Thunderbolt, and they were always basically
00:16:06
◼
►
from like $200 and up.
00:16:07
◼
►
So it's promising that USB-C stuff is so cheap to make,
00:16:12
◼
►
even though it is obviously a little more limited,
00:16:13
◼
►
like technically, than the Thunderbolt.
00:16:16
◼
►
But this is nice.
00:16:17
◼
►
What's a few more interesting things,
00:16:19
◼
►
first of all, this is very, very small,
00:16:20
◼
►
and it seems to fit the profile pretty well of the laptop,
00:16:24
◼
►
so that's nice.
00:16:25
◼
►
- Yeah, it is small, but it's a small laptop,
00:16:29
◼
►
compared to the size.
00:16:31
◼
►
It adds significantly to the laptop percentage-wise, I feel like.
00:16:35
◼
►
Like it changes you from your little tiny portable thing to something that's really
00:16:38
◼
►
big and here's the thing that worries me a lot when I look at it.
00:16:41
◼
►
Is the USB-C port the only mechanical connection between this, again, like small and absolute
00:16:47
◼
►
size, but large and relative size?
00:16:49
◼
►
Is that the only connection to the thing?
00:16:51
◼
►
Like what if you tried to pick this thing up from the side with the adapter on it and
00:16:54
◼
►
accidentally grabbed a little bit below the USB-C port?
00:16:56
◼
►
Would you twist and crack the thing off?
00:16:58
◼
►
doesn't seem to have any other means of connecting itself to the thing other than the USB-C,
00:17:04
◼
►
but I'm sure it's lightweight and everything. It just, what it looks like is extending your
00:17:08
◼
►
laptop sideways by an inch, but it's not. It's like, I don't know, it just seems like
00:17:13
◼
►
it is a lever made to break that connector. Yeah, that's a good point. This, well, and
00:17:18
◼
►
again, you know, you can look at this stuff, like, I think if you're going to be connecting
00:17:22
◼
►
things to your MacBook on a regular basis, the MacBook One is probably not the right
00:17:28
◼
►
model for you. You know, because we know a lot of people who have these things, most
00:17:32
◼
►
of whom love them, and the number one thing we hear from these people who love them whenever
00:17:38
◼
►
the port conversation comes up is, "They don't really ever plug anything in, so it's
00:17:42
◼
►
fine." And I think if you're going to be plugging things in, just get either an Air
00:17:47
◼
►
or the presumed soon to becoming Skylake 13 inch Pro,
00:17:52
◼
►
which should probably be pretty competitive
00:17:55
◼
►
thinness and lightness wise to the 13 inch Air,
00:17:58
◼
►
but we'll see.
00:17:59
◼
►
- Yeah, I dig this though.
00:18:00
◼
►
Especially the price, like you said, Mark.
00:18:02
◼
►
I mean, that is stunningly cheap.
00:18:04
◼
►
- Yeah, 50 bucks.
00:18:05
◼
►
I mean, you can't get a Thunderbolt cable for 50 bucks.
00:18:09
◼
►
- Seriously.
00:18:09
◼
►
- Well, you probably can now, please don't email me,
00:18:11
◼
►
but you couldn't at first.
00:18:13
◼
►
- It reminds me of like a PC peripheral
00:18:15
◼
►
because it's like a CF card reader?
00:18:18
◼
►
No, it's not.
00:18:19
◼
►
Oh no, it's SD and microSD.
00:18:21
◼
►
Oh yeah, maybe I'm misjudging the size then, because everything is relative to the size
00:18:24
◼
►
of the MacBook and I keep forgetting how darn small that thing actually is, so yeah.
00:18:28
◼
►
But anyway, the SD and the microSD, if you took out those two slots, then you wouldn't
00:18:34
◼
►
have such a long lever with which to crack off the USB-C connector.
00:18:38
◼
►
But then there would be, it's almost as if I think like, go full length and just add
00:18:42
◼
►
like seven more slots or go even shorter and just add the full size USB you know and the
00:18:49
◼
►
passthrough I don't know I don't know anyway people apparently buying them so like I said
00:18:53
◼
►
you can't really go that far wrong for 50 bucks and I would definitely recommend this for people
00:18:59
◼
►
who have their laptop on their desk like not for people who are constantly picking it up and
00:19:04
◼
►
carrying it from place to place or if you want to travel with it and like if you want to be like on
00:19:07
◼
►
on the plane but you have like plain old USB peripherals
00:19:11
◼
►
that you need to use or you wanna be swapping SD cards
00:19:13
◼
►
to do but you know pulling pictures off cameras
00:19:16
◼
►
while you're sitting in your plane seat,
00:19:17
◼
►
I wouldn't want this thing hanging out the side
00:19:19
◼
►
while I'm trying to handle my thing on the tray.
00:19:22
◼
►
- Well, see to me I think this would actually,
00:19:24
◼
►
I would go the opposite way.
00:19:25
◼
►
I would say for a desk you'd want something
00:19:27
◼
►
with like one cable that plugs in
00:19:29
◼
►
and then has some kind of breakout box
00:19:31
◼
►
with the other stuff in it.
00:19:32
◼
►
That way you can kind of get it away
00:19:33
◼
►
from the side of the computer
00:19:34
◼
►
and not have the stress on there every single day
00:19:37
◼
►
and kind of make a cleaner desk if you can hide that stuff
00:19:40
◼
►
somewhere behind the desk or under it or whatever.
00:19:42
◼
►
Whereas this one I think would be better for travel
00:19:44
◼
►
because you get adaptability to these
00:19:48
◼
►
three different port types in one small thing
00:19:50
◼
►
that doesn't have itself its own cable.
00:19:53
◼
►
So for like size and tidiness in a travel bag
00:19:56
◼
►
full of other cables and adapters and computer junk,
00:19:59
◼
►
this would actually be a big win I think.
00:20:00
◼
►
- I was saying on the desk,
00:20:02
◼
►
mostly because then there's less chance of
00:20:05
◼
►
someone lifting up and cracking the thing off.
00:20:07
◼
►
You know what I mean?
00:20:08
◼
►
'Cause it's like it's laying flat on the desk
00:20:10
◼
►
and you can manipulate it and stick the things into it.
00:20:12
◼
►
But you're right, like on desk even better
00:20:13
◼
►
would be a cable that snakes away from the thing.
00:20:15
◼
►
And it does work well for travel in terms of clutter,
00:20:18
◼
►
but I don't know, it just makes me nervous just looking at it
00:20:21
◼
►
like I keep looking at the close of pictures.
00:20:23
◼
►
Like it really is just that little tiny connector.
00:20:26
◼
►
It just, it doesn't seem right.
00:20:29
◼
►
- Yeah, that would make me nervous as well, to be honest.
00:20:31
◼
►
But I mean, it's not, and the thing is,
00:20:32
◼
►
I think you're not gonna break the computer with that.
00:20:34
◼
►
you're gonna break the adapter because the computer has the aluminum case like laser cut opening around that that's not you're not gonna break the
00:20:41
◼
►
Computer by twisting the thing
00:20:42
◼
►
I feel like you're gonna break the or maybe it would be just a battle between the two pieces of aluminum to see which one
00:20:47
◼
►
World's least interesting battle. Yeah. Well, it's exactly all these people are doing like the what was it?
00:20:54
◼
►
MKB HD or whatever was doing his
00:20:57
◼
►
Stabbing the the iPhone 6 suppose that iPhone 6 screens with a knife and everything
00:21:02
◼
►
We need the even more boring equivalent of that,
00:21:05
◼
►
of let's stress test the connector
00:21:06
◼
►
on this USB hub type thing, 'cause that's our domain.
00:21:09
◼
►
If we had a YouTube channel, it would be all USB hubs.
00:21:13
◼
►
- Hey, you heard it here first, Hyper Shop.
00:21:15
◼
►
Send us one of these to review,
00:21:16
◼
►
along with a MacBook One that you don't want,
00:21:18
◼
►
and we will do this test on the air for you.
00:21:22
◼
►
- Marco will film it on his fancy still image camera
00:21:24
◼
►
that's also kind of a video camera.
00:21:26
◼
►
- Yeah, yeah.
00:21:29
◼
►
All right, anything else on this thing?
00:21:31
◼
►
I can't believe this is the news this week.
00:21:34
◼
►
This is why I hate CES, because the only news that happens
00:21:38
◼
►
is either pie-in-the-sky stuff that will never come out
00:21:42
◼
►
or USB port news.
00:21:45
◼
►
It's nothing.
00:21:46
◼
►
- Well, there was some CES news.
00:21:47
◼
►
People keep sending me the stories about the OLED TVs
00:21:51
◼
►
that are going to be shown or announced at CES,
00:21:54
◼
►
and maybe they have been by today,
00:21:55
◼
►
but I haven't caught up on the stories.
00:21:57
◼
►
I basically just wait for CES to be over
00:21:59
◼
►
and then find the summary stories
00:22:00
◼
►
pick out the three things that were actually good or interesting at CES and then just read
00:22:05
◼
►
That's really all.
00:22:06
◼
►
But CES is good for people who are interested in TVs.
00:22:08
◼
►
You either find out that it's not an interesting year where nothing good has happened, or you
00:22:13
◼
►
find out, oh, everyone is still obsessed with 3D, or everyone is still obsessed with curved
00:22:17
◼
►
screens or some other gimmick that you don't like.
00:22:19
◼
►
This year, the gimmick seems to be high dynamic range, which I am interested in and I hope
00:22:24
◼
►
is an emerging standard and will be...
00:22:26
◼
►
Because it's a legitimate picture quality improvement, not something that's gimmicky
00:22:32
◼
►
like 3D and not something that's ridiculous like The Curve.
00:22:36
◼
►
So I'm glad for that to be the new thing this year, but if it's the new thing this year,
00:22:42
◼
►
that means all the televisions that have any kind of support for this this year are going
00:22:45
◼
►
to be like the very first generation that tries to support it, and maybe there are competing
00:22:49
◼
►
standards and that's all got to work itself out, so it's still not time to buy a TV.
00:22:54
◼
►
But I would like to read about that, but I haven't yet.
00:22:56
◼
►
So I don't think CES is a total loss.
00:22:58
◼
►
It's just like a 98% loss.
00:23:02
◼
►
- What a low bar that we've set.
00:23:07
◼
►
So John, your summary of the TV news coming out of a CES is--
00:23:12
◼
►
- I haven't read it yet.
00:23:12
◼
►
That's my, I will give, next week I will know more.
00:23:15
◼
►
But yeah, my summary is it seems like
00:23:17
◼
►
dynamic range is the thing this year.
00:23:20
◼
►
And I don't know whether everyone
00:23:22
◼
►
is over the curve screen thing yet.
00:23:25
◼
►
We should actually send, I would love to send you
00:23:28
◼
►
to Las Vegas for this week, just to capture
00:23:31
◼
►
the misery of that trip.
00:23:33
◼
►
That, like I would go for that if it was just
00:23:36
◼
►
to film you being there.
00:23:38
◼
►
- Nobody wants to go to CES, nobody does.
00:23:40
◼
►
That's the thing that I think people don't understand.
00:23:42
◼
►
Like, for those of us who know a lot of people
00:23:45
◼
►
who cover CES as part of their job, nobody likes it.
00:23:49
◼
►
Like, people like going to, back in the day,
00:23:51
◼
►
people liked going to Macworld to cover it.
00:23:53
◼
►
If you're interested in Apple stuff,
00:23:55
◼
►
People like going to WWDC.
00:23:56
◼
►
People like going to Google IO
00:23:57
◼
►
if you're interested in Google stuff.
00:23:59
◼
►
Nobody likes going to CES, nobody.
00:24:01
◼
►
I think a lot about who is this for
00:24:03
◼
►
and I guess it's, is it for like retailers or advertisers?
00:24:08
◼
►
- Jon, it's the consumer electronics show, come on.
00:24:11
◼
►
- Oh no, no.
00:24:13
◼
►
- I mean it seems like there's a lot of legitimate reasons
00:24:15
◼
►
for some people to be there.
00:24:16
◼
►
Seems like there's a lot of like meeting with the reps
00:24:19
◼
►
that happens in private meetings
00:24:20
◼
►
that can be very useful to people.
00:24:22
◼
►
But to actually be on the show floor,
00:24:24
◼
►
I don't really know who that's for necessarily,
00:24:27
◼
►
besides people who are tasked with covering it
00:24:29
◼
►
and who, as you said, usually hate this job
00:24:32
◼
►
because it is grueling and pretty intense.
00:24:35
◼
►
- But even the people who are meeting
00:24:36
◼
►
with the reps behind closed doors,
00:24:38
◼
►
I think they like the meetings,
00:24:39
◼
►
but they wish they could meet basically anywhere
00:24:41
◼
►
in the world other than CES.
00:24:44
◼
►
Like, I'll come to your city.
00:24:45
◼
►
Where is your company located?
00:24:47
◼
►
I will fly to your city and do,
00:24:48
◼
►
I mean, I guess maybe it's,
00:24:49
◼
►
I just never heard anyone say,
00:24:52
◼
►
I can't wait to go to CES.
00:24:54
◼
►
Nobody, not vendors, not people who are gonna meet
00:24:57
◼
►
with vendors, like maybe the only circles I'm traveling
00:25:00
◼
►
are like people who were like a buyer
00:25:02
◼
►
for a big store chain, like the Best Buy person or something
00:25:05
◼
►
who wants to go to see what they're gonna buy for that.
00:25:07
◼
►
Maybe they look forward to it.
00:25:08
◼
►
It just seems, it's like the worst of it.
00:25:11
◼
►
Think of everything that's bad about conferences
00:25:13
◼
►
and concentrated and then like multiply it by five.
00:25:16
◼
►
It's kinda like E3 used to be, but at least E3 was exciting
00:25:19
◼
►
for people who weren't there.
00:25:21
◼
►
Like even when E3 was at its worst,
00:25:22
◼
►
I've never been to E3 but I know a lot of people have,
00:25:24
◼
►
even when E3 was at its worst,
00:25:25
◼
►
it was just completely overblown
00:25:27
◼
►
and nobody really, you know, it was exhausting
00:25:30
◼
►
and nobody wanted to cover it.
00:25:31
◼
►
It was exciting for people who weren't there
00:25:33
◼
►
because you would say,
00:25:34
◼
►
"I can't wait to see what's announced at E3."
00:25:36
◼
►
So, you know, if you wanted to read the coverage,
00:25:39
◼
►
you'd get excited.
00:25:39
◼
►
But my impression of CES is that people who are there
00:25:42
◼
►
don't wanna be there and people who aren't there
00:25:44
◼
►
don't wanna read about it.
00:25:45
◼
►
It's mysterious.
00:25:47
◼
►
- Our second sponsor this week is Igloo.
00:25:49
◼
►
go to igloosoftware.com/atp for an intranet you will actually like. Anyone who has worked
00:25:55
◼
►
in a corporate environment knows how painful intranets can be. The content is stale, the
00:26:00
◼
►
interface is ugly, and you can't access it on your phone or any kind of modern device
00:26:03
◼
►
made after the year 2010. Now igloo is an intranet you will actually like because it
00:26:08
◼
►
is designed with modern technology and modern sensibilities for real usability. Igloo gives
00:26:14
◼
►
you the flexibility to get your work done, how you want, where you want, and on whatever
00:26:18
◼
►
device you want. They are truly building a product meant for 2016 and beyond, not the
00:26:25
◼
►
With Igloo intranets, you can share news, organize your files, coordinate calendars
00:26:29
◼
►
and manage projects all in one place. Everything can be optionally social, with comments, like
00:26:35
◼
►
buttons, revisions, messages, and anyone can add content based on their permissions with
00:26:41
◼
►
drag and drop widgets and a what you see is what you get editor.
00:26:44
◼
►
And Igloo makes use of responsive web design.
00:26:47
◼
►
So it looks fantastic on all of your devices,
00:26:50
◼
►
whether they exist today or whether they're gonna
00:26:52
◼
►
come out tomorrow, it'll already look good
00:26:53
◼
►
because it is fully responsive, modern web design
00:26:56
◼
►
with modern social and collaborative features
00:26:59
◼
►
so that you won't have your employees going out
00:27:01
◼
►
to use things like Dropbox and Twitter
00:27:04
◼
►
and all this stuff that is public
00:27:06
◼
►
that you want to keep this stuff inside your company,
00:27:08
◼
►
inside your internet.
00:27:09
◼
►
Igloo is very corporate friendly, they're very secure,
00:27:13
◼
►
all these granular permissions, all the stuff that you need to sell it to your company.
00:27:17
◼
►
It's even free to use forever for up to 10 people.
00:27:20
◼
►
So check it out today, igloosoftware.com/atp, free to use up to 10 people and very reasonably
00:27:25
◼
►
priced after that, and at any size you get a free trial.
00:27:29
◼
►
So check it out today, igloosoftware.com/atp for that free trial.
00:27:33
◼
►
Get started now.
00:27:34
◼
►
Thanks a lot to igloo, the internet you will actually like.
00:27:38
◼
►
- So a few weeks ago we started talking about Swift
00:27:41
◼
►
being open sourced and then we got sidetracked by,
00:27:45
◼
►
I'm not even sure what, but here we are again
00:27:47
◼
►
scraping at the bottom of the barrel.
00:27:49
◼
►
So why don't we talk a little more about Swift open source
00:27:52
◼
►
and actually talk about something that's cool
00:27:53
◼
►
which is the Swift Code of Conduct.
00:27:55
◼
►
- Or if you want me to talk about the Mac Pro some more.
00:27:57
◼
►
- So about the Swift Code of Conduct.
00:27:59
◼
►
- Yeah, we'll get to the equivalent of,
00:28:01
◼
►
well we'll get to some pro-rowing topic after this,
00:28:02
◼
►
but the Code of Conduct is a thing that has been happening
00:28:06
◼
►
over the past, I'd say year or so, has become more popular.
00:28:09
◼
►
Every sort of open source project
00:28:11
◼
►
or volunteer based community thing or conferences,
00:28:15
◼
►
sort of any sort of ad hoc collection of people,
00:28:19
◼
►
especially in the tech world,
00:28:21
◼
►
has been starting to have an actual written down
00:28:23
◼
►
code of conduct that is exactly what it sounds like.
00:28:26
◼
►
It's sort of a set of rules or expectations of behavior.
00:28:31
◼
►
Like just to give examples,
00:28:33
◼
►
you could have a code of conduct for, I don't know,
00:28:36
◼
►
a website where people join and want to talk about knitting.
00:28:39
◼
►
And the code of conduct could say,
00:28:41
◼
►
if you want to participate in our knitting forums
00:28:43
◼
►
and talk about knitting,
00:28:45
◼
►
we don't want you to use curse words or whatever.
00:28:48
◼
►
And then you can decide,
00:28:49
◼
►
hey, I don't want to be part of a community
00:28:50
◼
►
where I can't curse.
00:28:51
◼
►
So you won't join that knitting community, right?
00:28:53
◼
►
But it sets clear expectations.
00:28:55
◼
►
Like here is how we expect people to behave.
00:28:57
◼
►
And it gives you something like, if someone misbehaves,
00:28:59
◼
►
you can point to the code of conduct and say,
00:29:00
◼
►
hey, we have a code of conduct here.
00:29:02
◼
►
This is how it's going to be.
00:29:03
◼
►
These are the rules.
00:29:04
◼
►
If you don't like it, you should go someplace
00:29:05
◼
►
a different set of rules. And it's like that for open source projects or conferences where like,
00:29:12
◼
►
"Hey, I'm going to show up to this conference. It's going to be a conference for my favorite
00:29:14
◼
►
programming language. And there's going to be talks and everything. What are the expectations?
00:29:19
◼
►
What kind of behavior is and isn't allowed? How are the people in this community expected to
00:29:25
◼
►
behave?" There's been minimal pushback to the idea of a code of conduct because a lot of nerds are
00:29:30
◼
►
very literal minded and don't really see the nuances and things. They say, "Oh, a code of
00:29:34
◼
►
of conduct doesn't actually make people behave in a certain way, you're right it doesn't.
00:29:38
◼
►
But by writing it down, you're setting expectations. Like you do for kids or whatever. It's more
00:29:45
◼
►
comfortable to know what is expected. Because that lets everybody decide if they want to
00:29:50
◼
►
be a part of a community with this set of rules and guidelines. If you think not being
00:29:58
◼
►
allowed to curse is stupid, you know right away this is not the knitting community for
00:30:02
◼
►
me. I should go someplace else where people are knitting and also like to curse, right?
00:30:06
◼
►
And on the other stuff in terms of like making jokes at other people's expense or like any sort
00:30:14
◼
►
of aggressive behavior and even just writing down stuff like no violence, no hitting other people's,
00:30:21
◼
►
again it's mostly like you do for little kids. You set the expectations of you know here's how you're
00:30:24
◼
►
expected to behave in preschool, no biting your friends, we expect you to share, when the teacher
00:30:29
◼
►
is talking, we expect you to listen, you know, everybody eats at this time and naps at this
00:30:34
◼
►
time or whatever, it doesn't mean that's all going to happen, but you just want to write
00:30:37
◼
►
it down. And like I said, the pushback is mostly of people thinking that, are you saying
00:30:46
◼
►
if we don't have a code of conduct, we allow those things, or this stuff should go without
00:30:49
◼
►
saying, or writing it down makes it seem like we are telling people that are coming here
00:30:55
◼
►
that are going to behave badly, why do we need to write down stuff like don't murder
00:30:58
◼
►
like they should know that already or are you trying to make it sound like we're a bunch of murderers here or
00:31:02
◼
►
Really what's under the covers a lot of it is
00:31:06
◼
►
You know just coming up with the code of conduct can be like
00:31:09
◼
►
Especially like programming projects or whatever like if there are debates about technical issues, which we'll get to in a second
00:31:16
◼
►
Debate the issue don't debate the person don't know ad hominem attacks when you're discussing some feature some programming language or open source project
00:31:25
◼
►
Don't call the other person a jerk or an idiot. Do not attack the person or that person's personal history
00:31:31
◼
►
Keep your debate to the topic at hand. And again, this may sound like yeah, these all sound like reasonable rules, whatever
00:31:38
◼
►
It's like little things to do for kids
00:31:39
◼
►
But at a certain point people push back against it. An example is the Linux kernel mailing list where
00:31:45
◼
►
Linus Torvalds or Linus or whatever you want to say it
00:31:48
◼
►
the creator of Linux very often is
00:31:52
◼
►
that uses very salty language,
00:31:54
◼
►
so again, like the knitting forum,
00:31:56
◼
►
Linux kernel mailing list,
00:31:57
◼
►
totally allowed to use curse words.
00:31:58
◼
►
That's in the, you know, if they had a code conduct,
00:32:00
◼
►
which I'm not sure if they do, but if they did,
00:32:02
◼
►
it would be in there because that's sort of what they expect
00:32:05
◼
►
and has been known to say pretty mean things about people,
00:32:08
◼
►
not just about their thing, you know,
00:32:10
◼
►
like it's, there is a fine line.
00:32:13
◼
►
Am I calling, when I say this is the stupidest idea
00:32:16
◼
►
I've ever heard, I'm kind of criticizing the idea,
00:32:19
◼
►
but I'm also kind of being mean about it or whatever.
00:32:21
◼
►
Anyway, that community has pushed back against the idea of trying to be more civil to each other,
00:32:26
◼
►
or more civil to each other's ideas or anything like that.
00:32:28
◼
►
So that's, you know, that's the kind of community they want.
00:32:30
◼
►
If you were to come in there and they were to try to come up with a code of conduct,
00:32:33
◼
►
and they make a set of rules that past behavior doesn't fit into,
00:32:36
◼
►
the people with that past behavior feel like they're now being excluded from the community that they're an important part of.
00:32:40
◼
►
Anyway, all this is a big, rambly way to say that Swift is doing what I think is the right thing,
00:32:46
◼
►
which is, from the very beginning, having a code of conduct,
00:32:49
◼
►
and I looked at the code of conduct and it seems pretty sane and pretty tame and I think
00:32:54
◼
►
it is a good thing for anybody, whether it's in a preschool or a knitting club or an open
00:33:01
◼
►
source project or a website or a web forum or anything, to write down their code of conduct
00:33:06
◼
►
as early as possible and revisit it as needed and amend it and clarify and so on and so
00:33:13
◼
►
forth just to have a starting point and a guideline instead of just assuming everybody
00:33:17
◼
►
will behave and all agree about what proper behavior is.
00:33:20
◼
►
It's pretty sad that it's come to this point, but I think that the one universal internet
00:33:26
◼
►
truth is that even if you don't act like a petulant child up front, anyone on the internet
00:33:33
◼
►
is but the smallest push away from being a petulant child. And I agree with you that
00:33:38
◼
►
this is a good thing to have. This reminds me of the post by—was it Randy Harper? Is
00:33:43
◼
►
Because that shows what happens if you don't have a code of conduct and if you don't think
00:33:47
◼
►
about these issues.
00:33:49
◼
►
So she had posted—this is FreeBSD—or, well, the woman who used to be known as FreeBSDGirl—she
00:33:56
◼
►
posted recently a really, really good and not terribly long post about how she was treated
00:34:00
◼
►
in the BSD community, and it's really pretty deplorable.
00:34:04
◼
►
And you could argue, just like Marco just said, that that is in no small part because
00:34:09
◼
►
they didn't really have an established code of conduct.
00:34:11
◼
►
And then even when they did, if you believe what she says, which I do, they didn't act
00:34:16
◼
►
fairly once there were issues escalated,
00:34:20
◼
►
which is really too bad.
00:34:22
◼
►
But we'll put a link to that in the show notes.
00:34:24
◼
►
And if you work in any sort of community,
00:34:27
◼
►
I highly recommend reading her post
00:34:31
◼
►
because it was fascinating.
00:34:34
◼
►
- And a code of conduct, as many people will point out,
00:34:36
◼
►
does not guarantee good behavior
00:34:37
◼
►
because there's issues of enforcement
00:34:39
◼
►
and there's debates about how should things be enforced,
00:34:41
◼
►
is it enforceable at all?
00:34:43
◼
►
Like another reason people shy away from code of conduct
00:34:45
◼
►
they think it opens up this big can of warrants and they all have to debate. But these are
00:34:49
◼
►
important things to talk about. And it's better to talk about them before anything has happened,
00:34:53
◼
►
like sort it out amongst yourselves, not in light of some actual event, because it's so much harder
00:34:59
◼
►
to figure it out. It's very difficult to come up with a good set of rules and to figure out
00:35:05
◼
►
how you're going to enforce them and to follow through on it. But it's so much better to engage
00:35:10
◼
►
in that process than to bury your head in the sand. Because engaging that process will, first
00:35:14
◼
►
First of all, for people making the policies, it will force you to think about things.
00:35:17
◼
►
Like hopefully you'll go and say, "Let me look at other people's code of conduct.
00:35:20
◼
►
Let me look at what they wrote down."
00:35:21
◼
►
And I think collectively all the codes of conduct of various communities and open source
00:35:26
◼
►
projects are getting better by looking at each other in the open source kind of way
00:35:29
◼
►
and say, "What have they written down?
00:35:30
◼
►
How have they phrased this?
00:35:31
◼
►
What kind of—oh, I didn't even think of that.
00:35:32
◼
►
We should put that in too because I believe in that, but it wouldn't have even occurred
00:35:35
◼
►
to me to write it because I'm not in that group of marginalized people and didn't realize
00:35:39
◼
►
that was a thing we had to write down, but I totally agree with it now that I see it."
00:35:42
◼
►
you know, get it all down ahead of time. And then you're going to have, you know, incidents,
00:35:49
◼
►
and then you have to figure out how to deal with them. And then you look at how other
00:35:51
◼
►
people dealt with events and read, you know, read Randy's thing and say, here's how this
00:35:56
◼
►
community tried to deal with this event. And here's how it went badly. How can we avoid
00:36:00
◼
►
that? What kind of policies can we have in place to help with it? No one's gonna be perfect.
00:36:04
◼
►
It's not a guarantee of anything. It just shows that you are engaged in the process
00:36:08
◼
►
that you are committed to the idea that you can manage your community to be what you want
00:36:15
◼
►
it to be, to be a more welcoming community, to be a successful community for the kind
00:36:19
◼
►
of people that you want.
00:36:20
◼
►
You can make a code of conduct that sets totally different kinds of rules, but it's so much
00:36:24
◼
►
better to just think about like, "Who do I want?
00:36:27
◼
►
Who do I want here?
00:36:28
◼
►
Do I want people who are really technically skilled but also really, really angry and
00:36:32
◼
►
mean all the time?"
00:36:34
◼
►
If you want that, write into your code of conduct.
00:36:37
◼
►
There's an expectation that you'll be berated and curse that.
00:36:41
◼
►
And we will only accept people who have the highest of skills.
00:36:46
◼
►
Build the community you want for yourself, whatever it is that you want.
00:36:49
◼
►
But it's much better to take on that task as an actual thing rather than falling ass
00:36:56
◼
►
backwards into it.
00:36:58
◼
►
You just end up with this community and you're not quite sure how you got there.
00:37:02
◼
►
So that's what I think the important part is.
00:37:04
◼
►
And Swift is very sensible, and they're coming relatively late in the game because Swift
00:37:07
◼
►
wasn't an open source project until recently.
00:37:10
◼
►
And I think they're benefiting from all the other code of conducts that have come before
00:37:18
◼
►
And at this point, it's kind of the type of thing where if you are a community or an open
00:37:22
◼
►
source project without a code of conduct, people are going to ask, "Why?
00:37:28
◼
►
Why don't you have one maybe you should think about?"
00:37:31
◼
►
Not that they're saying you're bad or anything, but they're saying you may not have thought
00:37:34
◼
►
too much about this, but history has shown that this is a good thing to have, and the
00:37:38
◼
►
act of thinking about it will lead you to be a better community.
00:37:43
◼
►
All right, what else is going on with Swift?
00:37:46
◼
►
This is a programery topic.
00:37:48
◼
►
I don't know if Marco talks about all these on Under the Radar, but I saved one for here.
00:37:51
◼
►
I don't think he got to this one, because it's kind of esoteric, but I continue to follow
00:37:55
◼
►
the Swift evolution mailing list, or try to follow anyway.
00:37:58
◼
►
It's still pretty high volume.
00:37:59
◼
►
talk about the future of Swift and make proposals and debate them and go through all sorts of
00:38:06
◼
►
other things.
00:38:07
◼
►
This big process of evolving Swift is becoming more formalized with different phases of whatever.
00:38:13
◼
►
Anyway, this one particular proposal that I thought started to get at the heart of what
00:38:18
◼
►
seems to be one of the big internal struggles between Swift and the community formerly known
00:38:24
◼
►
as the Objective-C development community.
00:38:26
◼
►
I guess there's still not as that.
00:38:27
◼
►
But anyway, all the people who are writing all the code in Objective-C and Apple is saying
00:38:32
◼
►
you guys should think about moving to Swift at some point, because we are.
00:38:36
◼
►
And this is a debate around things that are allowed and disallowed, static and dynamic,
00:38:43
◼
►
you know, free or clamped down.
00:38:46
◼
►
And this particular one is about whether classes should be final by default in Swift.
00:38:51
◼
►
As in, if you don't say anything one way or the other and you define a class in Swift,
00:38:58
◼
►
should that class be subclassable and amendable and be able to be extended and have things
00:39:05
◼
►
Or by default, should it be all closed up and you can't screw with it?
00:39:08
◼
►
And it's not really a question about capability, because no one is saying all classes should
00:39:14
◼
►
be all closed up in final or all classes should be open.
00:39:17
◼
►
It's just a question of what the defaults are.
00:39:19
◼
►
And the defaults have two effects.
00:39:21
◼
►
One is, obviously it affects the actual code because a lot of people will just take the
00:39:26
◼
►
default, right?
00:39:29
◼
►
And so if no one does anything and they just declare a class and they don't know about
00:39:32
◼
►
this particular keyword or they don't think about it, what do they get by default?
00:39:36
◼
►
And the second thing is, by choosing the default, if people think about it for a little bit,
00:39:41
◼
►
they'll see it's like a signal from the design of the language.
00:39:43
◼
►
We think most of your classes should be like this.
00:39:47
◼
►
It's the default.
00:39:48
◼
►
But if you have special needs, make your class like this.
00:39:54
◼
►
And like, I think in Java, you know, the default is not final.
00:39:58
◼
►
I don't know anything about Java, I think that's the case.
00:40:00
◼
►
And so what they're saying is, by default, in Java, if you declare a class, you can subclass
00:40:05
◼
►
But that's -- we think that's the common case.
00:40:07
◼
►
But if you have special needs, like, say, for performance reasons, or you really don't
00:40:11
◼
►
want people extending your class, you can declare it to be final by adding this other
00:40:16
◼
►
So that means that most people who just like Java class blah blah blah blah blah
00:40:20
◼
►
They're all getting classes that can be subclass and extend and all that other stuff because that's the default and also
00:40:25
◼
►
philosophically speaking
00:40:26
◼
►
It's so clear that Java really expects people to subclass your stuff and that the exception to the rule is oh you want to make
00:40:32
◼
►
You think final and be all closed off or whatever. Sorry if I'm getting this job. I'm gonna say
00:40:35
◼
►
This job a default thing backwards. I haven't touched job in a really long time
00:40:41
◼
►
Somebody named Java nut 13 in the chat says it is not final by default
00:40:45
◼
►
And I think they would probably know because their name is Java nut. Well. Yeah, there's no way they could have changed their username
00:40:53
◼
►
Anyway, yeah, I think my recollection anyway, so the proposal for Swift is to default to final and this would make Swift
00:41:00
◼
►
one of those languages is saying
00:41:02
◼
►
Most of the time when you make classes we expect them to be like done
00:41:06
◼
►
But sometimes you might want someone to be able to extend your class and in that case
00:41:11
◼
►
We want you to have to put a special keyword or whatever in there to say
00:41:15
◼
►
Oh other people like I'm writing a base class and other people are supposed to subclass me and override these three methods to do this
00:41:22
◼
►
other thing and
00:41:23
◼
►
This is really again. It's not really like a technical debate because both things would still be possible
00:41:28
◼
►
This is really a sort of battle for the heart and soul of what Swift is and what objective C has been
00:41:34
◼
►
I pulled a little quote out here from Jordan Rose, who I think is someone at Apple, although
00:41:39
◼
►
it's very difficult to tell on the Swiss Evolution list when people are speaking for themselves
00:41:44
◼
►
as users of Swift or as contributors to the open source product, and when they were speaking
00:41:48
◼
►
as Apple employees.
00:41:49
◼
►
Kind of implicitly, no one is ever speaking for Apple because no one speaks for Apple
00:41:53
◼
►
except for Tim Cook, I guess.
00:41:55
◼
►
But when there's an @apple.com in their email address, like, just, I don't know, does their
00:42:00
◼
►
opinion carry more weight?
00:42:01
◼
►
I still haven't quite sorted out the sort of uneasy dance between at Apple.com people
00:42:08
◼
►
like Apple employees working on Swift and the unwashed masses of the Swift community
00:42:13
◼
►
and how that power balance works.
00:42:16
◼
►
And for the most part, the back and forth has been very polite and mostly useful.
00:42:22
◼
►
I think that mostly people realize, look, Apple's doing most of the work here.
00:42:25
◼
►
Apple made the language.
00:42:26
◼
►
Apple is going to do most of the work here.
00:42:28
◼
►
So while we can have some input, the bottom line isn't, are you going to develop Swift
00:42:31
◼
►
on your own?
00:42:32
◼
►
Are you seven people are going to take Swift and run with it?
00:42:35
◼
►
No, probably not.
00:42:36
◼
►
So all you can really do is give your opinion.
00:42:38
◼
►
But anyway, a lot of what this default final thing comes down to is the expectation by
00:42:45
◼
►
Objective C programmers that any sort of framework, anything in the framework that's like not
00:42:50
◼
►
behaving correctly or that you're making a subclass of that you can just override methods
00:42:55
◼
►
that you want to behave in a slightly different way.
00:42:58
◼
►
Like you can do a lot of interesting things with UIKit and AppKit by overriding things
00:43:04
◼
►
in subclasses, even things that, you know, overriding them in ways maybe that, you know,
00:43:10
◼
►
to turn something into a no-op or to make something have an aside effect when it didn't
00:43:13
◼
►
have before, or even to do things like the Objective-C runtime, reach in and do what
00:43:18
◼
►
I think they called method swizzling where you just reach in there and you screw with
00:43:22
◼
►
with the implementation of a base class,
00:43:24
◼
►
not even in a subclass, but you say,
00:43:25
◼
►
you know, you've got a blah method.
00:43:27
◼
►
I would like your, I'll save a reference
00:43:28
◼
►
to what the original blah method was,
00:43:30
◼
►
but instead point your entry for the blah method
00:43:32
◼
►
to my code that will do some other crap
00:43:34
◼
►
and then call your code
00:43:35
◼
►
and that will modify everybody who uses this class,
00:43:37
◼
►
not my subclass, but the base class everywhere.
00:43:39
◼
►
And those are the types of things you can do
00:43:42
◼
►
when classes are not entirely closed off,
00:43:44
◼
►
when you have access to their guts
00:43:45
◼
►
and you can screw with them.
00:43:46
◼
►
And then, you know, subclassing above and beyond that.
00:43:48
◼
►
So again, getting back to what Jordan Rose said here,
00:43:51
◼
►
He says, "Supporting arbitrary code injection
00:43:53
◼
►
to someone else's framework is a non-goal for Swift,
00:43:56
◼
►
perhaps even an anti-goal.
00:43:57
◼
►
If you replace a method on someone else's class,
00:43:59
◼
►
you don't actually know what semantics they're relying on.
00:44:02
◼
►
Of course, Apple code will have bugs in it.
00:44:03
◼
►
Trying to patch over those bugs in your own code
00:44:05
◼
►
is one, obviously not an answer Apple would support,
00:44:08
◼
►
but also two, fraught with peril,
00:44:09
◼
►
and three, likely to break in the next OS release."
00:44:11
◼
►
This is referring specifically
00:44:13
◼
►
to third-party developers saying,
00:44:16
◼
►
"When things are open and able to be screwed with,
00:44:19
◼
►
sometimes that's the only way we can ship our damn app,
00:44:20
◼
►
because you've got a bug somewhere deep in your framework.
00:44:23
◼
►
And sometimes a subclass isn't enough for us to fix it.
00:44:26
◼
►
Sometimes you have to reach into the guts
00:44:27
◼
►
and mess with the method just to make our app not crash.
00:44:31
◼
►
We can't wait for you to fix the bug, Apple,
00:44:33
◼
►
in a point one release,
00:44:33
◼
►
'cause that could be two months from now.
00:44:34
◼
►
And we need to ship now,
00:44:36
◼
►
and our application doesn't run on the new OS
00:44:39
◼
►
that you're about to release.
00:44:40
◼
►
So we'd love to be able to go into some framework thing
00:44:43
◼
►
and nuke one of your methods
00:44:45
◼
►
or mess with it in a certain way
00:44:47
◼
►
to work around some strange bug.
00:44:49
◼
►
or even if it's just as simple as like an animation bug
00:44:51
◼
►
or something that crashes your app but nobody else's app.
00:44:54
◼
►
Third-party developers are used to be having the freedom
00:44:57
◼
►
of the Objective-C runtime to mess with these things,
00:44:59
◼
►
but Swift really doesn't want that type of thing to happen.
00:45:03
◼
►
Swift would like it if in the future
00:45:05
◼
►
that it's not something they want to support.
00:45:10
◼
►
They don't want you to be able to reach
00:45:11
◼
►
into anyone's framework, Apple's or anybody else's,
00:45:13
◼
►
and say, "Oh, you have a bug in there.
00:45:15
◼
►
"I'm gonna fix your bug for you."
00:45:17
◼
►
Or I want, your thing almost does what I want,
00:45:19
◼
►
but there's this one behavior it doesn't have.
00:45:21
◼
►
I would like it that if you did this one thing,
00:45:23
◼
►
it actually didn't trigger this other action.
00:45:24
◼
►
So I'm just gonna reach into your guts and screw with it.
00:45:27
◼
►
And programmers will get used to that freedom.
00:45:30
◼
►
It's kind of like a, it's a last resort,
00:45:32
◼
►
but it's nice that it's there.
00:45:34
◼
►
But if you are a developer of frameworks,
00:45:36
◼
►
you don't want anyone reaching into the guts
00:45:37
◼
►
of your crap and messing with it.
00:45:38
◼
►
Because you don't know what the semantics
00:45:41
◼
►
of my framework are.
00:45:42
◼
►
You don't know what invariants you're violating
00:45:46
◼
►
by messing with that value.
00:45:47
◼
►
I don't want you touching this member variable
00:45:50
◼
►
you're not even supposed to know exists
00:45:51
◼
►
that might disappear in the next OS version.
00:45:54
◼
►
I don't want you messing with anything inside my code
00:45:56
◼
►
because you don't have the source code.
00:45:57
◼
►
You don't understand it.
00:45:58
◼
►
Even if you did, it's my framework.
00:45:59
◼
►
It's supposed to be like a black box to you.
00:46:00
◼
►
Just use the public API.
00:46:02
◼
►
Don't mess with my implementation.
00:46:04
◼
►
I thought this battle, which is,
00:46:07
◼
►
we'll link to the MJ size blog post
00:46:10
◼
►
that links to a bunch of this discussion
00:46:13
◼
►
and to the mailing list itself,
00:46:14
◼
►
the Swift Evolution mailing list,
00:46:16
◼
►
I thought this discussion was fascinating because it really does get at the heart of
00:46:20
◼
►
the old guard versus the new guard in Swift, and I really wanted to hear both of your opinions.
00:46:27
◼
►
I don't know what the C# world is like, but I do know what the Objective-C world is like.
00:46:31
◼
►
So Marco, if he's ever had to reach into some Objective-C framework and screw with it to
00:46:35
◼
►
get his application to ship, and Casey, what he thinks of this entire battle between the
00:46:41
◼
►
world of framework authors versus the world of application developers.
00:46:44
◼
►
- I mean, I've never had to swizzle to do anything.
00:46:49
◼
►
That to me is over the line of like,
00:46:53
◼
►
you really, really shouldn't do that.
00:46:55
◼
►
Like, that is more dangerous.
00:46:57
◼
►
Subclassing things that aren't intended to be subclassed,
00:47:02
◼
►
especially in UI kit, I do that a lot, or not a lot,
00:47:06
◼
►
but I've done that numerous times over the years.
00:47:10
◼
►
I'm pretty sure Overcast does a little bit of that.
00:47:14
◼
►
Re-implementing my own methods to override parent methods
00:47:17
◼
►
in those subclasses that aren't intended to be overridden,
00:47:21
◼
►
I've done that.
00:47:22
◼
►
Almost, I totally get it from the developer perspective
00:47:24
◼
►
of almost always there is something you want to do
00:47:27
◼
►
in an app that is, that there's just no other way to do it
00:47:31
◼
►
besides subclassing some UI kit thing and, you know,
00:47:35
◼
►
re-implementing my own child version of a method
00:47:38
◼
►
and just hoping I call super at the right time
00:47:40
◼
►
if I have to at all and just hoping nothing bad happens,
00:47:43
◼
►
testing it on the one release that I have access to
00:47:45
◼
►
and then shipping it and hoping it doesn't break
00:47:47
◼
►
in the future.
00:47:47
◼
►
That to me, and this is all like, you know,
00:47:51
◼
►
you're subclassing, when I do this,
00:47:53
◼
►
I'm subclassing public methods,
00:47:55
◼
►
so there is some documentation on them,
00:47:58
◼
►
some public expectation of how they should behave,
00:48:00
◼
►
they're fairly stable.
00:48:02
◼
►
So that has never actually caused problems that I know of
00:48:05
◼
►
to do that that way.
00:48:07
◼
►
And there really have been a lot of these occasions
00:48:09
◼
►
where there's a limitation in the public API
00:48:14
◼
►
of there's just no better way to do this
00:48:17
◼
►
or there is no other way to do this at all.
00:48:20
◼
►
And so you have to do stuff like that.
00:48:22
◼
►
This is one of those things where in theory
00:48:24
◼
►
it would be nice if you never had to do this
00:48:27
◼
►
and if you could then have all the technical advantages
00:48:30
◼
►
of not doing this in a similar way that in theory
00:48:34
◼
►
it would be nice if every Mac app was sandboxed.
00:48:37
◼
►
then in practice these strict technical limitations get in the way of reality and real world use
00:48:44
◼
►
and they kind of require a level of competence and perfection and expansiveness from Apple
00:48:53
◼
►
and its frameworks that in reality probably won't come. And so it's one of those things
00:48:58
◼
►
like in theory it's great, in theory having everything be final by default and having
00:49:04
◼
►
no overrides possible, that sounds great for academic theoretical safety. But in practice,
00:49:12
◼
►
I don't think modern developers with Apple's frameworks are really able to go that way.
00:49:19
◼
►
The reality is just not, it doesn't support that. Apple is not that great and developers
00:49:25
◼
►
aren't that flexible to be required to avoid this entire class of functionality and possible
00:49:32
◼
►
bug avoidances and bug fixes that simple things like subclass overrides can provide.
00:49:38
◼
►
Steven: Yeah, you know, it's really hard. Let me start by just quickly establishing
00:49:44
◼
►
that C# unsurprisingly takes the same approach to this as Java does except where you say
00:49:48
◼
►
final I would say sealed. So, no, seriously.
00:49:52
◼
►
Steven (laughing)
00:49:53
◼
►
Jared (laughing)
00:49:54
◼
►
Totally different language, I swear.
00:49:55
◼
►
Steven Yeah, right, exactly.
00:49:56
◼
►
Jared It isn't Java clone.
00:49:57
◼
►
Steven No, not at all. So, yeah, so it's sealed
00:49:59
◼
►
classes to me, not final, but everything else is exactly the same, and they are not sealed
00:50:05
◼
►
And in fact, it is striking, even within Microsoft frameworks, to see something that's sealed.
00:50:10
◼
►
That's very peculiar.
00:50:12
◼
►
That being said, I think the problem is that—and Jon, you alluded to this earlier—so much
00:50:20
◼
►
of Objective-C seems to be about subclassing.
00:50:24
◼
►
And over time, even from my perspective as someone who doesn't live in it, it seems like
00:50:30
◼
►
that's starting to go away between blocks, between—shoot, I had something else on the
00:50:35
◼
►
tip of my tongue.
00:50:36
◼
►
Anyway, it's going away.
00:50:37
◼
►
But a lot of legacy, Objective-C seems to be about subclassing.
00:50:41
◼
►
And subclassing, when the author of that class hasn't deliberately decided for that to be
00:50:50
◼
►
subclassed, is inherently dangerous.
00:50:53
◼
►
And so much of Swift seems to be about, at least in comparison to Objective-C, about
00:50:59
◼
►
preventing danger, about having stronger typing, about doing more compile time to check and
00:51:04
◼
►
make sure you're not doing something stupid.
00:51:08
◼
►
So much about Swift seems to be about preventing danger and about being safer.
00:51:12
◼
►
And having carte blanche access, with a few exceptions, to subclass anything is inherently
00:51:21
◼
►
And so it seems to me that the academic answer is unequivocally that classes should be final
00:51:32
◼
►
That being said, one of the things I've struggled with lately, and a coworker of mine that we've
00:51:38
◼
►
worked together on a couple of projects lately, it's been a really interesting experience
00:51:43
◼
►
because he is extremely academic, or at least that's the way I think of him.
00:51:47
◼
►
He really likes to do things by the book, and he really likes to do things the rightest
00:51:51
◼
►
way possible.
00:51:53
◼
►
By comparison—and of course I like to do that too—but by comparison I feel like I'm
00:51:57
◼
►
considerably more pragmatic, or perhaps "loosey-goosey" is maybe how he would describe it.
00:52:02
◼
►
I would say pragmatic.
00:52:04
◼
►
And I come down, I think, in the same way that Marco does, that yes, academically, everything
00:52:11
◼
►
should be final by default, but realistically, I don't see how that's really possible.
00:52:17
◼
►
And what I think, looking at it from my point of view, what's difficult about this is, Apple
00:52:22
◼
►
has a tendency to kind of assume they know better than everyone.
00:52:27
◼
►
And so even if we had classes final by default, I think it's pretty clear that Apple wouldn't
00:52:36
◼
►
allow classes to be extended and sub-classed very often, because they tend to assume, "We
00:52:42
◼
►
know better than you.
00:52:43
◼
►
You shouldn't touch this."
00:52:45
◼
►
And while in principle that should be true, that Apple should know better than us, in
00:52:50
◼
►
reality there's so many just minor bugs and issues and things that developers need to
00:52:56
◼
►
do in order to get around small problems that I don't think that's reality.
00:53:01
◼
►
And so in the end, the academic in me says, "Yes, it should be final by default," but
00:53:07
◼
►
I come down with Marco that this seems to be a little too broad and a little too aggressive
00:53:13
◼
►
a change to be to be right. Is there an Objective-C like @ keyword or something for doing the equivalent
00:53:19
◼
►
of final or sealed? I don't think it's possible. So my take on this so far from looking at this
00:53:25
◼
►
thread and thinking about it a lot is that Swift seems to be, like Casey pointed out, like the
00:53:31
◼
►
whole thing with Swift is it's trying to be uh trying to be less open, less open to interpretation,
00:53:39
◼
►
less open to possibilities than Objective-C in terms of, will this variable be initialized?
00:53:45
◼
►
When will it be initialized? What can I guarantee about these things? At what point do I have
00:53:50
◼
►
a half-initialized object floating around somewhere in my thing? Like, well, you know,
00:53:54
◼
►
can I be sure that this method I'm calling is going to exist in this thing? How sure
00:53:58
◼
►
can I be? How sure do I want to be? Some of that is for performance, some of that is for
00:54:03
◼
►
safety, some of it is for both, but that is definitely the direction Swift is going. It's
00:54:07
◼
►
trying to have its cake and eat it too. It's like, oh, we do things that are safer and we do things
00:54:11
◼
►
that are faster and we can do it with, you know, with less typing and less code. Less code means
00:54:18
◼
►
fewer bugs and so, you know, more power, more safety, more speed, everything's good, right?
00:54:22
◼
►
But less flexibility is kind of floating around in there, rattling around. All right, more power,
00:54:26
◼
►
more safety, more speed. Is it as flexible as it used to be? Well, how do you define flexibility?
00:54:31
◼
►
And AppKit and the Objective-C APIs
00:54:35
◼
►
really have been built around the ideas of subclassing,
00:54:38
◼
►
so much so that it seems like it's the expectation, if not,
00:54:42
◼
►
of the framework offers than at least of the application
00:54:46
◼
►
developers that if you have some kind of problem,
00:54:50
◼
►
maybe you can solve it with a subclass.
00:54:52
◼
►
Maybe that class does everything you need,
00:54:54
◼
►
but you need to add a little extra functionality.
00:54:56
◼
►
So subclass it.
00:54:57
◼
►
And categories are like, subclass too much trouble
00:55:00
◼
►
because there's a million other places inside the framework
00:55:02
◼
►
that use NSString?
00:55:03
◼
►
Throw a category in NSString.
00:55:05
◼
►
Now all your NSStrings have a route 13 method.
00:55:08
◼
►
Very sort of open to,
00:55:12
◼
►
like this is a giant world of toys
00:55:15
◼
►
and you can screw with that world of toys.
00:55:17
◼
►
And Swift tries to do some of those.
00:55:18
◼
►
Swift has extensions which are like categories.
00:55:20
◼
►
Like, oh, you want to throw a method
00:55:22
◼
►
on every string or number in your thing?
00:55:25
◼
►
You want to make a new operator that works on all integers?
00:55:27
◼
►
You can do that.
00:55:28
◼
►
Like, yeah, go nuts.
00:55:29
◼
►
but it tries to do it in a safer way.
00:55:31
◼
►
So given that safety is such a concern of the language,
00:55:35
◼
►
I think it's natural.
00:55:38
◼
►
It fits the Swift language to say final by default.
00:55:43
◼
►
And furthermore, I think that the technique
00:55:45
◼
►
of building user interface libraries
00:55:49
◼
►
where everything is assumed to be subclassable by everybody
00:55:52
◼
►
leads to a substantial amount of the sadness
00:55:54
◼
►
that necessitates the weird subclassing
00:55:57
◼
►
eventually in rare cases the swizzling to happen because not because like the
00:56:02
◼
►
the application developers are bad but because the people making the framework
00:56:06
◼
►
aren't giving like when they're writing you know all these classes that make up
00:56:10
◼
►
the frameworks that people use they're not thinking about designing for
00:56:16
◼
►
subclass ability versus not there there in whatever mindset they're in it's like
00:56:20
◼
►
someone could subclass me so I should make this class subclassable but they're
00:56:24
◼
►
also probably thinking, "But who's gonna subclass this one?" Or they're thinking,
00:56:29
◼
►
"When I need to update this class, boy, I'm about to update this class in a new
00:56:33
◼
►
major version of this OS. What about people who subclass the old one? Am I
00:56:38
◼
►
breaking their crap by changing it?" And it's like, "Well, I can't know. I can't
00:56:41
◼
►
really know what they did in their subclasses. Like, I had no real way of
00:56:44
◼
►
expressing the things that I didn't expect to vary versus the things that I
00:56:48
◼
►
did, and if they overrode this method and did some weird thing or there
00:56:51
◼
►
was some, you know, timing or ordering thing having to do with this that I don't know what
00:56:56
◼
►
the subclasses are doing.
00:56:57
◼
►
And the thing I think that final defaults will force people to do is, especially framework
00:57:03
◼
►
authors, think more about which parts of this framework should be subclassable.
00:57:10
◼
►
Like what are the extension points?
00:57:12
◼
►
What are the things that can vary versus the things that can't vary?
00:57:16
◼
►
Maybe they'd come to the same decision.
00:57:17
◼
►
This is the other thing about the final default.
00:57:19
◼
►
Maybe it turns out that the people who are writing UIKit or whatever, like the next Swiftie
00:57:23
◼
►
version, you know, because they're very writing core foundation Swift, as they work their
00:57:27
◼
►
way up the stack, maybe those people who are writing those frameworks will come to the
00:57:30
◼
►
same conclusion that all the same classes that you can override in UIKit that you'd
00:57:33
◼
►
also be able to override in some Swiftie equivalent of the same type of UI framework.
00:57:39
◼
►
Like they would, they would, you wouldn't lose any flexibility at all, but at least
00:57:43
◼
►
they will have been forced to think about it.
00:57:45
◼
►
I would imagine what they'd come up with is to reduce the surface area of things that
00:57:51
◼
►
you can mess with, to make it clearer what classes you're expected to subclass and maybe
00:57:59
◼
►
to document it better, like how you're expected to subclass, like how does a well-behaved
00:58:03
◼
►
subclass of this thing, you know, is it possible to subclass this in a way that will break
00:58:09
◼
►
with the next update of this thing?
00:58:10
◼
►
Or just making some classes not subclassable at all because you're not supposed to mess
00:58:13
◼
►
with that, if you really need to mess with it, you should instead extend it or use composition
00:58:18
◼
►
to make your object have one of these instead of be one of these.
00:58:23
◼
►
And it just seems like a more natural fit to Swift to me, because I think long-term,
00:58:29
◼
►
forcing everybody involved, by changing the default, forcing everybody involved to think
00:58:33
◼
►
more about subclassing instead of it just being the default, like, well, of course,
00:58:37
◼
►
I can subclass everything.
00:58:38
◼
►
It's like, you know, it's my right.
00:58:41
◼
►
It's like the first dominion, freedom of speech and freedom of subclass.
00:58:44
◼
►
Thinking more about it will cause everybody involved, both the framework authors and the
00:58:49
◼
►
programmers, to try to reduce the sort of anti-pattern that we see in the existing frameworks
00:58:57
◼
►
where everything's up for grabs and anytime something updates, nobody is really sure about
00:59:02
◼
►
what they're breaking because they have no idea what people sub-classed and how.
00:59:07
◼
►
So I understand all of that, but the problem I come down on is I don't think Apple would
00:59:14
◼
►
be a good citizen of this mindset.
00:59:17
◼
►
And this is what I was saying earlier, that Apple would assume, "No, all of our stuff
00:59:24
◼
►
is flawless.
00:59:25
◼
►
We don't want you to subclass this.
00:59:27
◼
►
There's no reasonable reason for you to ever have to subclass this.
00:59:31
◼
►
So we're not going to allow you to."
00:59:33
◼
►
And I don't think that they would be pragmatic enough to realize, "Well, we don't see any
00:59:41
◼
►
particular reason that anyone would need to subclass this class, but you never know and
00:59:48
◼
►
you shouldn't hurt anything if you do, so we'll just allow you to."
00:59:53
◼
►
What is the opposite of the final keyword in Swift, you know?
00:59:56
◼
►
Whatever it may be.
00:59:57
◼
►
So we'll mark it as "not final."
01:00:01
◼
►
And I just don't think they'll be a good citizen of this environment.
01:00:03
◼
►
I think other framework authors might, because they seem to be less aggressive, for lack
01:00:09
◼
►
of a better word.
01:00:10
◼
►
But I don't – I just don't think Apple would be a good citizen of that environment.
01:00:14
◼
►
No, I mean, modern Apple is restrictive by default in many ways towards developers.
01:00:22
◼
►
And in most ways, that has worked out well for them.
01:00:25
◼
►
And so that pattern of being restrictive by default is something that is so ingrained
01:00:32
◼
►
in them that I don't think they're going to revert course in that. I mean, Objective
01:00:38
◼
►
C is only as flexible and loosey-goosey as it is because it's ancient and it came from
01:00:45
◼
►
a time and a culture and a company that was very different from today's Apple and where
01:00:50
◼
►
dynamism was the goal and was considered very advanced for the time. Now, modern Apple does
01:00:58
◼
►
things like this, where Swift will be all locked down and rigid and strict and final
01:01:06
◼
►
by default. I see them doing this mostly because it just fits in with the things they see now
01:01:15
◼
►
is being correct. And in many ways these things go in waves in programming. Programming is
01:01:22
◼
►
not a young practice anymore. It's been going on for decades. Things go in and out of fashion
01:01:28
◼
►
and there are trends and there are fashions and there are fads and everything. Open versus
01:01:35
◼
►
closed, loose typing versus strict typing, dynamic versus static, all these things go
01:01:41
◼
►
in and out of fashion at different times, often just reacting to what was popular previously,
01:01:46
◼
►
and they just go in cycles. And we're in a cycle now where what is in fashion today
01:01:54
◼
►
is strictness and formalism and compile time checks, compile time safety. Apple is right
01:02:01
◼
►
up there with everyone else with Swift in that regard. And also in just the environment
01:02:07
◼
►
that apps run it with iOS being locked down,
01:02:11
◼
►
sandboxed everything, Mac App Store being sandboxed only
01:02:15
◼
►
if anybody still uses the Mac App Store,
01:02:16
◼
►
a whole separate discussion,
01:02:18
◼
►
having technical blocks in front of calling private APIs
01:02:22
◼
►
and app store apps, things like that.
01:02:24
◼
►
This is the direction Apple is going
01:02:27
◼
►
and has been going for quite some time.
01:02:29
◼
►
So I agree that this is not,
01:02:31
◼
►
I wouldn't expect today's Apple to,
01:02:34
◼
►
if given a choice, to redesign something from scratch
01:02:37
◼
►
as they have with Swift to take the option to say, "You know what? We're going to let
01:02:42
◼
►
people subclass our stuff." No, they're looking for ways to lock it down. And I think, ultimately,
01:02:48
◼
►
I think what we've learned as a profession, as programmers, over the last few decades
01:02:54
◼
►
of having popularized OO programming, I think what we've learned is that subclassing really
01:03:01
◼
►
is messy and has tons of anti-patterns and tons of potential for weird, unforeseen bugs
01:03:08
◼
►
and problems and a lot of dysfunction that becomes possible with OO programming. And
01:03:12
◼
►
of course it's true of everything. But I think as a working programmer, I look around at
01:03:18
◼
►
my friends and I see people who are all programmers who are kind of evaluating, like people who
01:03:24
◼
►
are smart like Brent Simmons, kind of evaluating how we should be doing things moving forward.
01:03:29
◼
►
subclassing in general is going out of fashion very quickly among programmers, not just among
01:03:35
◼
►
Apple and Swift, but among all programmers I know, subclassing is really out. Like, it
01:03:40
◼
►
is going out, it is possibly out now. So you can look at Apple and you can say, as I have,
01:03:47
◼
►
that I really don't see them choosing any differently on this if given the choice. I
01:03:51
◼
►
see them going final by default just because it's Apple and that's how they are these days.
01:03:56
◼
►
But also, I think there's enough support
01:03:59
◼
►
from programmers now for that.
01:04:01
◼
►
You can't really say Apple is exclusively at fault,
01:04:04
◼
►
ignoring what everyone's saying.
01:04:06
◼
►
I think you can say you can make a good case
01:04:07
◼
►
for there being enough support,
01:04:09
◼
►
that Apple's kinda making the right call
01:04:10
◼
►
for the whole community.
01:04:12
◼
►
- Yeah, and that's the thing.
01:04:13
◼
►
So to look at it from the flip side,
01:04:17
◼
►
we don't know the sorts of things
01:04:19
◼
►
that Apple has to deal with.
01:04:22
◼
►
We don't know the sorts of crazy, ridiculous hacks
01:04:25
◼
►
third-party developers do that aren't as skilled as the Brent Simmons of the world.
01:04:31
◼
►
What makes a Brent Simmons really good at what he does is that he knows when a hack
01:04:35
◼
►
is the right answer and when it's not.
01:04:39
◼
►
And typically, since it's being called a hack, the answer is not often.
01:04:42
◼
►
But we don't see the sorts of BS they have to put up with by the really shoddy developers
01:04:47
◼
►
that aren't really thinking things through properly.
01:04:51
◼
►
And so I think if I were in Apple's shoes, it's easy to get lulled into trying to lock
01:04:59
◼
►
things down, because you genuinely do feel like you know better.
01:05:02
◼
►
And when you're looking at all these really disgusting hacks, you do know better.
01:05:07
◼
►
It's not just a feeling of knowing better, you do know better.
01:05:11
◼
►
But the problem is, it's just the bazooka approach to something that really you need
01:05:17
◼
►
a scalpel for.
01:05:18
◼
►
And I mean, I think what makes this discussion so fascinating, what makes me enjoy engineering,
01:05:24
◼
►
sorry Dr. Drang, so much is that it's these sorts of difficult decisions that make our
01:05:32
◼
►
job so much fun.
01:05:33
◼
►
You know, to weigh these options and figure out, well, what is the right answer?
01:05:37
◼
►
- Well, and also, I think you can look at like modern day Apple as, you know, in being
01:05:42
◼
►
in this position of authority, if you look at things like the App Store restrictions,
01:05:46
◼
►
private API restrictions like sandboxing on both platforms,
01:05:49
◼
►
but especially on the Mac.
01:05:51
◼
►
I think if Apple presented with the option of,
01:05:54
◼
►
do you let developers ship something that needs to ship,
01:05:58
◼
►
and this is like, as you mentioned, this is,
01:06:01
◼
►
you might be able to say, well, if you're smart enough,
01:06:04
◼
►
you're allowed to break the rules.
01:06:05
◼
►
But that isn't, first of all, that isn't usually true,
01:06:08
◼
►
and you still generally shouldn't,
01:06:10
◼
►
'cause A, it's still a bad idea,
01:06:12
◼
►
and B, you probably aren't smart enough.
01:06:16
◼
►
But, and even for the people who are smart enough,
01:06:19
◼
►
they still probably shouldn't be doing that
01:06:20
◼
►
because everyone is dumb at some point while programming.
01:06:24
◼
►
And you know, the idiot who wrote that
01:06:28
◼
►
was probably just your past self.
01:06:30
◼
►
But anyway, if you look at like,
01:06:33
◼
►
the problems of shipping things,
01:06:35
◼
►
and the problems of like, you know, in the real world,
01:06:36
◼
►
especially like so much of the business these days
01:06:39
◼
►
is consulting.
01:06:40
◼
►
And as you know, like from being a consultant,
01:06:43
◼
►
Shipping is often of utmost priority above things like
01:06:48
◼
►
doing things in exactly the best architectural way
01:06:51
◼
►
or by best practices, you know.
01:06:53
◼
►
You just gotta ship stuff and that's it.
01:06:55
◼
►
But that isn't Apple's problem and Apple doesn't necessarily
01:06:58
◼
►
play by those rules with the way it treats other developers.
01:07:02
◼
►
If Apple's given the choice of letting developers
01:07:06
◼
►
ship more functional stuff more quickly
01:07:09
◼
►
at the expense of security or restrictions
01:07:13
◼
►
or calling private APIs, Apple doesn't choose
01:07:16
◼
►
to let them ship things.
01:07:17
◼
►
Apple says, you know what, that's not our problem.
01:07:19
◼
►
We would rather have you not ship a product at all,
01:07:23
◼
►
or ship a lesser product, or ship a later product,
01:07:27
◼
►
than break any of these rules.
01:07:28
◼
►
And there's no better example of that
01:07:30
◼
►
than everything that's ever happened in the Mac App Store.
01:07:32
◼
►
Like Apple would rather lose apps to the app stores
01:07:36
◼
►
and to their platforms.
01:07:37
◼
►
They would rather lose apps completely,
01:07:39
◼
►
or have apps be reduced functionality and lose features over time or never have certain
01:07:47
◼
►
They would rather not allow those things or have fewer apps or have later or worse apps
01:07:52
◼
►
than have apps that are in a more permissive environment.
01:07:55
◼
►
>> I'm not sure everything they do in the Mac App Store has that much forethought.
01:07:59
◼
►
I think there's a lot of unforeseen consequences, unforeseen by Apple as well.
01:08:03
◼
►
They have a goal in mind.
01:08:04
◼
►
They didn't realize it would be difficult to get from there from here.
01:08:07
◼
►
So I think that's off to the side a little bit.
01:08:10
◼
►
Getting back to something that both of you said earlier about what will Apple do?
01:08:13
◼
►
Like, you know, you can't trust Apple with this because they're going to lock everything
01:08:16
◼
►
down because that's the kind of company that they are.
01:08:21
◼
►
I think it's appropriate for Apple to be more conservative because they're not just a company
01:08:27
◼
►
that writes a bunch of frameworks that people use.
01:08:29
◼
►
They are the platform.
01:08:30
◼
►
They are the foundation.
01:08:31
◼
►
They are the thing upon which everybody else builds.
01:08:34
◼
►
They should be more conservative than you are with your own classes and stuff.
01:08:40
◼
►
That's their role.
01:08:41
◼
►
Like, so, not that Swift is just made for them, but in any language, if there are tools
01:08:48
◼
►
to be conservative and to try to reduce the service area, try to reduce the public API,
01:08:53
◼
►
try to reduce the number of things that other developers call into, like they do with stopping
01:08:57
◼
►
private APIs in their app stores, and that's all part of the same process, they should
01:09:03
◼
►
because they are they're underneath everything else so they have a responsibility to be more
01:09:09
◼
►
solid and more resilient to people doing crazy things on top of them than the people who are
01:09:15
◼
►
building on top and your application code be all loosey-goosey all you want you can get away with
01:09:19
◼
►
that because the people building layers below you don't get to be as loosey-goosey and for apple say
01:09:25
◼
►
apple does that and they follow through on what you think is their instinct to close stuff up which
01:09:29
◼
►
i'm not entirely sure that they would because again it would be the same people who are advocating
01:09:31
◼
►
and UIKit doing the thing.
01:09:33
◼
►
And UIKit isn't any more closed than AppKit.
01:09:35
◼
►
They just changed the vectors,
01:09:38
◼
►
they knew which things would be more likely to vary,
01:09:41
◼
►
which is why UIKit seems like so much nicer
01:09:42
◼
►
to deal with than AppKit,
01:09:43
◼
►
'cause they learned, oh,
01:09:44
◼
►
when people use this kind of thing,
01:09:45
◼
►
mostly they want to vary X, Y, and Z.
01:09:47
◼
►
And so we'll build our classes to make those things vary.
01:09:49
◼
►
But anyway, if Apple was to close things off
01:09:52
◼
►
in the new Swift frameworks or whatever,
01:09:55
◼
►
that would basically force people,
01:09:59
◼
►
like developers are like,
01:10:00
◼
►
well, I can't work around this anymore,
01:10:01
◼
►
'cause I can't even subclass this thing
01:10:02
◼
►
and override your thing 'cause your stupid framework
01:10:04
◼
►
is all closed off and I don't have your source code
01:10:05
◼
►
and it's a binary framework.
01:10:07
◼
►
So the only thing left for me is to file bugs.
01:10:09
◼
►
And what that will mean is that many more developers
01:10:12
◼
►
are forced essentially to, like they have no workaround.
01:10:16
◼
►
They have to tell Apple, hey, I can't make my button,
01:10:20
◼
►
you know, tint color on this button blue in this scenario
01:10:22
◼
►
because there's, you know,
01:10:25
◼
►
because of the way the framework works,
01:10:26
◼
►
I have no access to that little knob to turn
01:10:28
◼
►
and I can't subclass it and do that.
01:10:31
◼
►
So please, like, you know, I'll file the bug
01:10:34
◼
►
and I can't ship my app.
01:10:36
◼
►
You're preventing me from shipping my app
01:10:37
◼
►
'cause there's no workaround.
01:10:39
◼
►
And Apple, in response to this,
01:10:41
◼
►
has added pressure to consider these requests
01:10:43
◼
►
because they can't say, oh yeah, no, that's a bug,
01:10:46
◼
►
but for now, you can just work around it
01:10:47
◼
►
by overriding this method.
01:10:49
◼
►
Like there is no workaround.
01:10:50
◼
►
Both parties know, geez, there's no workaround.
01:10:52
◼
►
We didn't think about this way
01:10:54
◼
►
that people use the frameworks,
01:10:56
◼
►
that they can't get it, that they can't change this thing
01:10:58
◼
►
that seems eminently reasonable to change.
01:11:00
◼
►
That's going to force Apple to reconsider.
01:11:03
◼
►
Maybe if we don't have a way to do this,
01:11:06
◼
►
can we provide a supported way to do this?
01:11:08
◼
►
And there's much more motivation
01:11:10
◼
►
to provide a supported way to do this
01:11:11
◼
►
if it's really a common thing
01:11:13
◼
►
that tons of developers are asking about
01:11:14
◼
►
and there is literally no workaround.
01:11:16
◼
►
And there's no workaround because of what Apple did.
01:11:17
◼
►
And the workaround isn't, oh, just open that class up.
01:11:19
◼
►
The fix is, well, we don't want to just open the class up
01:11:23
◼
►
because we know what kind of problems that leads to.
01:11:25
◼
►
It ties everyone's hands in the future
01:11:26
◼
►
and makes it so that the S-O-O-S upgrade
01:11:28
◼
►
could break your app and stuff.
01:11:30
◼
►
But if people really want to change this thing,
01:11:32
◼
►
we should provide a supported way to change it.
01:11:35
◼
►
Because there is no work around.
01:11:36
◼
►
And so you would hope, like, what you're hoping,
01:11:38
◼
►
like this is like all the best laws.
01:11:40
◼
►
You're hoping that it motivates everyone involved
01:11:42
◼
►
to behave better.
01:11:44
◼
►
Like this is something pressing in on a system
01:11:46
◼
►
and you're hoping what it causes to happen
01:11:48
◼
►
is for the system to shape itself around this pressure
01:11:50
◼
►
and this force to become a better thing.
01:11:53
◼
►
Making everybody become better.
01:11:55
◼
►
It's difficult for more people.
01:11:56
◼
►
It'd be easier if they could just do
01:11:57
◼
►
whatever the hell they want,
01:11:58
◼
►
And then you just had to go to chaos, right?
01:12:01
◼
►
And in general, the larger issue about this whole thing, about Swift and frameworks and
01:12:04
◼
►
Apple being the foundation layer and everything is, you know, less code and increased safety
01:12:10
◼
►
is what you need when you want to create large, complicated systems.
01:12:13
◼
►
And our systems keep getting better and keep getting more complicated.
01:12:15
◼
►
And one of the biggest tools we have to fight against that is reduce the number of things
01:12:19
◼
►
that can go wrong.
01:12:20
◼
►
Reduce the number of things that you can do.
01:12:22
◼
►
Make more things deliberate and less things accidental.
01:12:27
◼
►
Yeah, and and I think that's
01:12:29
◼
►
It's in the spirit of Swift and it's just in the spirit of the demands in the technology mark
01:12:33
◼
►
Talk about this going in cycles and dynamic versus static or whatever
01:12:36
◼
►
I think all like that some of that stuff does go in cycles, but increased safety is an arrow in one direction
01:12:42
◼
►
Very very rarely. Do we see the world of writing programs?
01:12:47
◼
►
For that arrow to reverse and say we had this kind of safety where it was impossible to scribble over memory
01:12:52
◼
►
But we'd like to add that in in the next language to be rose
01:12:55
◼
►
it always goes towards more abstraction and more safety.
01:12:57
◼
►
And that safety can take different forms.
01:12:59
◼
►
People will be misguided about what you need
01:13:00
◼
►
to provide that safety or how, you know,
01:13:02
◼
►
because small talk is pretty darn safe,
01:13:05
◼
►
but it certainly looks nothing like Swift, right?
01:13:07
◼
►
So the move towards higher level languages
01:13:10
◼
►
and increased safety, however that may manifest,
01:13:12
◼
►
that is an arrow that is essentially always going
01:13:14
◼
►
in one direction.
01:13:15
◼
►
And I think just the gyrations and getting there
01:13:17
◼
►
and the different paths towards that goal are separate.
01:13:19
◼
►
And so is the dynamic versus static,
01:13:21
◼
►
'cause you can have an, again, like small talk,
01:13:23
◼
►
an eminently dynamic language that is very, very safe.
01:13:27
◼
►
And you can also have an eminently static language
01:13:29
◼
►
that is also very, very safe.
01:13:30
◼
►
So static and dynamic, I think does go in cycles,
01:13:37
◼
►
not just based on fashion,
01:13:40
◼
►
but based on theory and everything like that,
01:13:41
◼
►
but increased safety, everybody always wants that.
01:13:43
◼
►
And that's the direction I think Swift is going.
01:13:45
◼
►
So I don't know if this, I forget who proposed this.
01:13:48
◼
►
It might've been a third party proposal or whatever,
01:13:50
◼
►
but bottom line for me is,
01:13:52
◼
►
I think that since this doesn't change capabilities,
01:13:56
◼
►
all it does is make everyone involved
01:13:58
◼
►
think about things differently.
01:13:59
◼
►
And because the default will be different than objector C,
01:14:01
◼
►
I hope it will cause everyone involved
01:14:03
◼
►
to think differently than they used to think about it.
01:14:07
◼
►
And that Apple will nail more things down
01:14:09
◼
►
and it will cause more inkemates for developers
01:14:11
◼
►
and Apple will send the feedback
01:14:12
◼
►
and then developers will send the feedback to Apple
01:14:14
◼
►
and Apple will be forced to think about the feedback
01:14:17
◼
►
and provide a way to do it
01:14:18
◼
►
because they're reasonable requests
01:14:19
◼
►
and there is literally no work around
01:14:21
◼
►
and the end result should be for users,
01:14:23
◼
►
programs that have fewer bugs,
01:14:25
◼
►
third-party applications that break less frequently
01:14:26
◼
►
with OS upgrades, and just generally more solid,
01:14:30
◼
►
stable code for everyone going forward.
01:14:32
◼
►
- Our final sponsor this week is Warby Parker.
01:14:35
◼
►
Go to warbyparker.com/atp.
01:14:38
◼
►
They make buying glasses online easy and risk-free.
01:14:41
◼
►
Order your free home try-ons today.
01:14:43
◼
►
So Warby Parker offers contemporary eyeglasses
01:14:46
◼
►
that are extremely affordable and fashion-forward.
01:14:49
◼
►
Glasses should be viewed as a fashion accessory,
01:14:50
◼
►
not costing as much as an iPhone.
01:14:53
◼
►
Warby Parker offers prescription eyeglasses
01:14:54
◼
►
starting at just $95, including prescription lenses.
01:14:58
◼
►
And they also have a titanium collection
01:15:00
◼
►
starting at just $145, which includes
01:15:03
◼
►
premium Japanese titanium and Frank's non-rocking screws.
01:15:06
◼
►
They also offer prescription and non-prescription sunglasses.
01:15:09
◼
►
So even if you're 20/20, there's still something
01:15:11
◼
►
for you at Warby Parker.
01:15:13
◼
►
All Warby Parker glasses include anti-reflective
01:15:15
◼
►
and anti-glare coatings, an excellent hard case,
01:15:18
◼
►
we have one of these in our house,
01:15:19
◼
►
this thing is built like a tank,
01:15:20
◼
►
the hard case they come with, it's awesome,
01:15:22
◼
►
and a cleaning cloth, all at no additional charge.
01:15:25
◼
►
Whether your eyesight is pretty good or absolutely abysmal,
01:15:28
◼
►
they have you covered
01:15:29
◼
►
with a wide range of prescription options,
01:15:31
◼
►
from simple reading glasses
01:15:32
◼
►
to advanced digital freeform progressive lenses.
01:15:36
◼
►
For those of you with very strong prescriptions,
01:15:37
◼
►
they offer ultra-thin, high-index lenses
01:15:40
◼
►
to avoid the Coke bottle look.
01:15:42
◼
►
Now, buying glasses online sounds like it would be tricky.
01:15:44
◼
►
Warby Parker makes it easy and risk-free.
01:15:46
◼
►
Their home try-on program
01:15:48
◼
►
unless you order five pairs of glasses to evaluate for free.
01:15:51
◼
►
They ship them to you for free,
01:15:53
◼
►
and you can try them on in the comfort of your own home
01:15:55
◼
►
and get feedback from anybody around you if you want to.
01:15:57
◼
►
You can keep them for up to five days,
01:15:59
◼
►
then you can send them back also for free
01:16:01
◼
►
with their prepaid return label,
01:16:03
◼
►
and there's no obligation to purchase anything.
01:16:05
◼
►
If they aren't for you, you can just stop right there
01:16:07
◼
►
and you've spent nothing, you're done.
01:16:09
◼
►
If you decide they are right for you,
01:16:11
◼
►
they can get started on your order right away.
01:16:13
◼
►
They can get prescription glasses to you
01:16:14
◼
►
within 10 business days and usually even faster.
01:16:18
◼
►
They also believe in giving back to the world.
01:16:19
◼
►
For every pair of glasses Warby Parker sells,
01:16:21
◼
►
they distribute another pair to somebody in need.
01:16:23
◼
►
So whether you could use a nice pair of eyeglasses,
01:16:25
◼
►
reading glasses, or even sunglasses,
01:16:27
◼
►
go to warbyparker.com/atp,
01:16:30
◼
►
order your free home try-ons today
01:16:33
◼
►
with free shipping both ways and no obligation to buy.
01:16:36
◼
►
Once again, that's warbyparker.com/atp.
01:16:39
◼
►
Thanks a lot to Warby Parker for sponsoring our show.
01:16:42
◼
►
- So John, what does open source Swift mean
01:16:45
◼
►
for the future of Go and Rust?
01:16:47
◼
►
I don't know, I just thought it was an interesting question.
01:16:49
◼
►
So there's a lot of languages out there that are very similar in spirit and visually even,
01:16:55
◼
►
or the ideas behind them.
01:16:57
◼
►
Make a language that is kind of like C but without the nasty pointer stuff that is fast
01:17:04
◼
►
like those compiled languages but that has lots of more safety guarantees where the compiler
01:17:09
◼
►
can figure out all sorts of stuff for you so you don't have to do manual memory management
01:17:13
◼
►
but you get the speed of a language like C or C++.
01:17:17
◼
►
So Go, Rust, and Swift all kind of fall into that family, and they're all relatively new.
01:17:23
◼
►
Open Source Swift, as we saw from the project being open and the crazy activity on the Swift
01:17:28
◼
►
Evolution mailing list, and just the sheer number of iOS developers who this language
01:17:32
◼
►
is potentially for, and even just the general excitement at WWC when Swift was announced
01:17:38
◼
►
in the first place, that Swift is pretty popular just because it belongs to Apple.
01:17:42
◼
►
Like if Swift had just been a project off to the side by some random person, we wouldn't
01:17:47
◼
►
be having these shows about it, but it's because it's coming from Apple that it's very popular.
01:17:52
◼
►
Go is from Google, another big company, they use it internally, that is a tractor to pull
01:17:56
◼
►
on Go being very popular. It was also made by some of the folks that made See, so that
01:18:00
◼
►
has some, you know, celebrity cachet behind it. Rust, I think, is from the Mozilla folks
01:18:05
◼
►
primarily. I don't know the full backstory on Rust, but...
01:18:09
◼
►
So if you have to compare the sizes of these communities, you would think that, like, Apple
01:18:14
◼
►
Apple and Swift is the most powerful, not because they're a bigger or more important
01:18:18
◼
►
company than Google, but merely because Google uses all sorts of languages.
01:18:21
◼
►
Google uses a lot of Java, Google uses Python, Google uses Go, so it's not as if there's
01:18:27
◼
►
like this one Google language, and if there was, Go probably wouldn't be it.
01:18:30
◼
►
But with Apple, Apple has been for a long time now Objective-C. It's their one language,
01:18:35
◼
►
and they're moving over to Swift, so they kind of speak with one voice.
01:18:39
◼
►
All the Apple wood is behind that one arrow, right?
01:18:42
◼
►
Google will have to come in second with Go and like yeah, Google does have lots of different
01:18:45
◼
►
languages and has always been kind of like encouraging of using lots of different language
01:18:49
◼
►
and they have Dart, their own language and all sorts of things.
01:18:52
◼
►
Lots of languages are mixing around in there but Google is a big company and they write
01:18:55
◼
►
a lot of stuff and Go is a fairly important language and then finally Google has more
01:19:00
◼
►
languages than I have Mac Pros like that's – they just – they make a new language
01:19:04
◼
►
like every six months.
01:19:05
◼
►
You never know where it goes.
01:19:07
◼
►
So it doesn't have much behind it.
01:19:08
◼
►
And then Rust, I think, is even smaller because, like, well, Mozilla, they make a web browser
01:19:13
◼
►
and a bunch of other stuff, and they're important, but -- and Rust is really interesting, and
01:19:17
◼
►
it's not like you have to use all these languages, general purpose languages that you could use
01:19:21
◼
►
for anything, but they all have communities around them.
01:19:23
◼
►
They're all fairly open, and you could, in theory, write anything you want and go.
01:19:26
◼
►
Marco even wrote a thing for Overcast and Go, and Rust you could use to write any kind
01:19:30
◼
►
of -- and same thing with Swift, right?
01:19:32
◼
►
But Swift coming on the scene and being similar to those other two languages and having the
01:19:36
◼
►
full weight of Apple behind it could potentially do one of two things. Either it could suck
01:19:41
◼
►
people away from those things and they can say, "Well, I was interested in Go and Rust,
01:19:45
◼
►
but Swift seems very similar and it just seems to be like more popular and has a better IDE
01:19:49
◼
►
and I keep hearing about it and whatever, or I like it better or something like that
01:19:53
◼
►
or just because Apple's behind it." Or it could have the opposite effect where it's
01:19:56
◼
►
like, "I wasn't going to consider one of these alternate languages, but now that Swift is
01:20:00
◼
►
out it seems like all bets are off on what used to seem safe, C, C++ or C# or Java. That's
01:20:05
◼
►
old and busted, now it's time for me to try out all sorts of new languages. So maybe Go
01:20:09
◼
►
and Rust receive a huge influx of activity and pull requests and people contributing
01:20:14
◼
►
to their communities as well. I guess we'll check back in a year and see, you know, I
01:20:18
◼
►
don't know how you'd measure this. Maybe you'd like go to GitHub or whatever and see like
01:20:21
◼
►
what happened to the Go and Rust communities and, you know, is there any way we can measure
01:20:25
◼
►
that? Was the effect of Swift to cause those communities to swell in importance and those
01:20:30
◼
►
languages to mature and become more popular or was the effect to sort of pull people away
01:20:35
◼
►
from those two communities and have them sort of wither more now that the giant sun that
01:20:39
◼
►
is Swift is shining down from WWDC every year.
01:20:44
◼
►
All right, thanks a lot to our three sponsors this week, Audible.com, Igloo, and Warby Parker.
01:20:51
◼
►
And we will see you next week.
01:20:53
◼
►
Now the show is over, they didn't even mean to begin, 'cause it was accidental.
01:21:02
◼
►
Oh, it was accidental.
01:21:04
◼
►
John didn't do any research, Marco and Casey wouldn't let him
01:21:09
◼
►
'Cause it was accidental, it was accidental
01:21:14
◼
►
And you can find the show notes at ATP.FM
01:21:19
◼
►
And if you're into Twitter, you can follow them
01:21:24
◼
►
@C-A-S-E-Y-L-I-S-S
01:21:29
◼
►
So that's Casey List, M-A-R-C-O-A-R-M,
01:21:34
◼
►
N-T-M-A-R-C-O-R-M-N-S-I-R-A-C-U-S-A-C-R-A-C-U-S-A-C-C-R-A-C-U-S-A
01:21:41
◼
►
It's accidental.
01:21:43
◼
►
It's accidental.
01:21:45
◼
►
They didn't mean to.
01:21:50
◼
►
Tech podcast so long.
01:21:55
◼
►
- We're gonna name it at the top.
01:21:56
◼
►
This is what Casey put in here, RIP web objects.
01:21:58
◼
►
- I think I might have.
01:21:59
◼
►
- RIP, you mean RIP?
01:22:01
◼
►
- As in, what does this mean for WebObjects?
01:22:04
◼
►
- I don't know.
01:22:05
◼
►
WebObjects is a mystery to me.
01:22:06
◼
►
- It's a mystery to everyone.
01:22:08
◼
►
- I mean, I don't know anything about WebObjects,
01:22:10
◼
►
but I do know that it is blamed for a lot
01:22:15
◼
►
of the shortcomings of Apple's web services,
01:22:18
◼
►
and I would guess it's probably not all about WebObjects.
01:22:22
◼
►
I'm guessing that it's much more about
01:22:25
◼
►
the entire rest of the stack,
01:22:27
◼
►
And that is probably a small part of the problem,
01:22:30
◼
►
if it's even still part of the problem at all.
01:22:32
◼
►
- It's probably connected to it,
01:22:34
◼
►
but just like the consequences, what does it mean?
01:22:36
◼
►
What are the consequences that spin out
01:22:38
◼
►
from the fact that you're using WebObjects?
01:22:39
◼
►
Well, then we have to have it on this platform.
01:22:41
◼
►
And well, then we have to have it on this OS.
01:22:42
◼
►
And well, the way WebObject applications work
01:22:45
◼
►
is they have to be factored in this way,
01:22:46
◼
►
and you can't really split this up from that,
01:22:47
◼
►
and you can't, this isn't horizontally scalable,
01:22:49
◼
►
and these are tightly coupled instead of loosely coupled,
01:22:52
◼
►
and we can't replace this
01:22:53
◼
►
with a better version of this component.
01:22:55
◼
►
There's consequences that ripple outwards from WebObjects.
01:22:58
◼
►
So WebObjects itself, I would think, is not a big deal.
01:23:02
◼
►
But I don't know, I just wonder with a technology like that
01:23:04
◼
►
that just seems to be like the only person left
01:23:05
◼
►
in the world using it is Apple, which is fine,
01:23:08
◼
►
but at a certain point, like every company,
01:23:11
◼
►
even if you're Google, has to be like,
01:23:12
◼
►
is this gonna be a thing we do?
01:23:14
◼
►
If it is, we should probably make it open
01:23:15
◼
►
and try to get other people to use it,
01:23:16
◼
►
'cause if it's just us using it,
01:23:17
◼
►
we'll kinda do a crappy job.
01:23:19
◼
►
It's better to get everybody else on board,
01:23:22
◼
►
like they're doing with Swift or Go or Rust.
01:23:24
◼
►
than to try to say, oh, we just use this internally.
01:23:27
◼
►
We can support our own weird web framework indefinitely,
01:23:32
◼
►
- What else is going on?
01:23:35
◼
►
- You wanna talk about the Chevy Bolt
01:23:37
◼
►
that Sam the Geek suggested in the chat?
01:23:40
◼
►
- Is that the smaller Volt?
01:23:42
◼
►
- Yeah, it's a battery only.
01:23:44
◼
►
It claimed up to a 200 mile range,
01:23:47
◼
►
which would be substantial.
01:23:48
◼
►
- $30,000, it's not attractive.
01:23:51
◼
►
It looks like the i3.
01:23:52
◼
►
- Yeah, I saw an i3 in person again the other day.
01:23:56
◼
►
It's one of those things, like whenever a new model of,
01:23:58
◼
►
a new crazy design comes out, at first it seems
01:24:02
◼
►
wacky and crazy and ugly, and then over time
01:24:04
◼
►
you kinda get used to it as you see them more and more
01:24:06
◼
►
and it gets less new.
01:24:08
◼
►
The i3 has not followed that progression for me.
01:24:11
◼
►
The i3, every time I see it, is worse
01:24:14
◼
►
than the last time I saw it.
01:24:16
◼
►
Oh, it's so bad.
01:24:18
◼
►
- Yeah, I didn't read anything about this.
01:24:21
◼
►
I've thought about it in the past.
01:24:22
◼
►
I'm not in the market for a car, but...
01:24:24
◼
►
- Wait, aren't you though?
01:24:25
◼
►
Kind of, for Aaron?
01:24:27
◼
►
- Well, for Aaron, yeah, but not for me.
01:24:29
◼
►
But I've been thinking, and this would not be for Aaron,
01:24:32
◼
►
it would be for me, I rarely drive more than 100 miles
01:24:36
◼
►
in a week, maybe.
01:24:38
◼
►
Like, my commute up until I went and did Staffog,
01:24:41
◼
►
which is Marco's favorite thing,
01:24:42
◼
►
my commute was like five minutes.
01:24:44
◼
►
And so I would drive maybe 10 miles in a day, maybe.
01:24:49
◼
►
- You could take a hoverboard to work.
01:24:51
◼
►
- Yeah, pretty much.
01:24:51
◼
►
Which, by the way, I just realized tonight that the hoverboards everyone are talking
01:24:54
◼
►
about is like a segue without the handlebars.
01:24:57
◼
►
I had no idea what everyone was talking about.
01:24:59
◼
►
Basically, yeah.
01:25:00
◼
►
I mean, it's a lot simpler and less sophisticated, but that's basically it.
01:25:04
◼
►
Yeah, I didn't realize that was a thing.
01:25:07
◼
►
But anyway, there's no reason for me not to have an electric car, because I drive very
01:25:13
◼
►
It would absolutely charge itself overnight.
01:25:16
◼
►
There's no reason for me not to have one, except that every single electric car I've
01:25:20
◼
►
ever seen other than the Tesla is either hideous, slow, or both. And I'm just not into that.
01:25:28
◼
►
So good at Tesla. I need to work like three jobby jobs.
01:25:34
◼
►
So we're sponsored this week by four more people.
01:25:37
◼
►
Exactly. I need three more jobby jobs or you guys need to not take sponsorship money for
01:25:44
◼
►
the next like six months and then maybe we can think about it. I don't know. But this
01:25:48
◼
►
is interesting, I guess.
01:25:50
◼
►
The Bolt looks like an American Prius is what it looks like.
01:25:54
◼
►
Yeah, kinda.
01:25:55
◼
►
Like, it's small, it's a small, bubulous car.
01:25:58
◼
►
It's not like the Model S where it's trying to be like a full-sized, regular-shaped car
01:26:04
◼
►
that also happens to be electric.
01:26:05
◼
►
There's some—what was that other one?
01:26:07
◼
►
I forget what the name of the company was, but some company basically taking Teslas and
01:26:10
◼
►
putting a different body on them.
01:26:13
◼
►
What is it, Faraday or something?
01:26:15
◼
►
Is that what that was about?
01:26:16
◼
►
Yeah, it's like the Tesla, like the little thing you see in the Tesla store in the mall,
01:26:21
◼
►
just like the battery and the drivetrain and the wheels, and then they build a different
01:26:24
◼
►
car on top of it and sell it for presumably more money, and it seems silly.
01:26:29
◼
►
And it was, it's like the FF-Zero or something like that, which made me happy because it's
01:26:34
◼
►
a play on the F-Zero Super Nintendo game, which I love.
01:26:38
◼
►
If it was, they would be sued.
01:26:39
◼
►
Speaking of which, how about that Apple Watch clone from this Swiss mechanical watch maker
01:26:46
◼
►
- Did you see the black Milanese loop?
01:26:50
◼
►
- Yeah, I saw it on a rumor site.
01:26:52
◼
►
That looks interesting, but I mean,
01:26:55
◼
►
there's no reason why Apple couldn't do that
01:26:57
◼
►
like off the top of my head, I mean,
01:26:58
◼
►
unless there was some kind of manufacturing challenge,
01:26:59
◼
►
but tell you what, so right now,
01:27:02
◼
►
I'm still on my mechanical watch thing,
01:27:03
◼
►
but the black, the space black link bracelet that I got,
01:27:08
◼
►
I don't know, six months ago now for my Apple watch,
01:27:12
◼
►
that black DLC coating is the real deal.
01:27:15
◼
►
Like it is still flawless and any kind of stainless steel
01:27:20
◼
►
band or the stainless steel watch itself
01:27:22
◼
►
gets scratched to hell in like a second.
01:27:24
◼
►
The black, the space black with the DLC on it
01:27:27
◼
►
is just literally like it, mine has no scratches on it
01:27:32
◼
►
at all, like it is crazy how good that coating is.
01:27:37
◼
►
So I welcome Apple adding more options that have DLC
01:27:42
◼
►
because that is, it's just awesome.
01:27:43
◼
►
It is just so good.
01:27:45
◼
►
This mechanical Apple Watch is not good.
01:27:48
◼
►
I don't understand what they're--
01:27:49
◼
►
- Yeah, I just looked at it the moment you started talking.
01:27:52
◼
►
That's, wow.
01:27:55
◼
►
Like, Apple had to make it like that.
01:27:58
◼
►
- And to me, it's like, the world of mechanical watches,
01:28:01
◼
►
if you look at mechanical watches and the appeal they have,
01:28:05
◼
►
and you look at the complaints that mechanical watch people
01:28:08
◼
►
have about the Apple Watch, one of the big complaints
01:28:11
◼
►
is that the Apple Watch just isn't that attractive
01:28:15
◼
►
So why would you make one that looks just like it?
01:28:19
◼
►
Like it seems, first of all, Apple's gonna sue the crap
01:28:22
◼
►
out of you and make this stop immediately.
01:28:24
◼
►
Second of all, why?
01:28:27
◼
►
Third of all, they're only selling it in gold,
01:28:30
◼
►
so it's like 25 grand. (laughs)
01:28:33
◼
►
I just-- - They gotta make enough money
01:28:35
◼
►
to pay for lawyers.
01:28:36
◼
►
- Who's gonna buy that?
01:28:37
◼
►
Like who's gonna spend 25 grand on that?
01:28:41
◼
►
- Yeah, I don't know, it just seems silly,
01:28:44
◼
►
but I mean, it's like these watchmakers,
01:28:48
◼
►
like what's going on?
01:28:49
◼
►
What's exciting in the watch world?
01:28:51
◼
►
This entire year, all we heard about,
01:28:52
◼
►
it's a stupid Apple Watch.
01:28:53
◼
►
Can we get in on that excitement somehow?
01:28:57
◼
►
How about we make, like we can make a smartwatch,
01:28:59
◼
►
it's like we don't know how to do that.
01:29:01
◼
►
How make a regular watch,
01:29:02
◼
►
make it look like the Apple Watch?
01:29:05
◼
►
- Yeah, similar, like the Tag Heuer,
01:29:09
◼
►
I don't know how that's pronounced.
01:29:10
◼
►
I'm assuming it's Tag or Tog Heuer.
01:29:13
◼
►
their smartwatch that they released a few months ago.
01:29:17
◼
►
It's like the, it looks just like a regular,
01:29:21
◼
►
like you know, round mechanical watch face,
01:29:25
◼
►
but it is just a black screen, like the Apple Watch
01:29:27
◼
►
most of the time it seems like, and then like you know,
01:29:29
◼
►
it turns on and it has a face that looks like
01:29:31
◼
►
a Tag Heuer watch, you know, but like,
01:29:34
◼
►
to me again, like that kind of ruins the point.
01:29:36
◼
►
If you're gonna have a watch where the screen's black
01:29:38
◼
►
all the time and then eventually you look at it
01:29:39
◼
►
and you glance at it and there's like a computer
01:29:41
◼
►
have to manage, then I think the Apple Watch is the one to get because if you want a computer
01:29:47
◼
►
watch, that seems like it's probably the best computer watch. Right? Like, I don't get it.
01:29:51
◼
►
Like, now that I've seen this world just a little bit, I totally see the value of a good
01:29:56
◼
►
mechanical watch, and I totally see the value of a computer watch. And I don't think those
01:30:01
◼
►
things should be crossed. I think crossing them destroys the value of both, really. This
01:30:07
◼
►
is going to get now email from all the watch people.
01:30:08
◼
►
Oh, we've already gotten, even I have gotten a lot of stuff from the watch people.
01:30:14
◼
►
You know, I've been thinking in the watch world, and speaking of smart watches and mechanical
01:30:19
◼
►
watches and everything, I've been impressed so far anyway, still, by the way, another
01:30:23
◼
►
year, but impressed with how Fitbit has reacted to the challenge of the Apple Watch.
01:30:29
◼
►
Reacting by basically making newer and more capable series of things that are mostly featureless
01:30:36
◼
►
bands with very simple screens incorporated into them in subtle ways.
01:30:41
◼
►
I saw a picture of the president wearing one and a lot of people have the newer Fitbits.
01:30:45
◼
►
They found kind of in the same way that the Pebble didn't, or maybe, you know Pebble had
01:30:49
◼
►
some good ideas too, but like trying to find like how am I different than the Apple Watch
01:30:53
◼
►
but still a valuable product?
01:30:55
◼
►
Like what is the road that is still available to me to go forward?
01:30:58
◼
►
And Fitbit seems to be, I mean who knows, they could be like the Flip, remember the
01:31:02
◼
►
flip camera back in those years before the iPhone shot video.
01:31:06
◼
►
Oh yeah, the flip camera had a really great business for like three years.
01:31:10
◼
►
Right, and so it still remains to be seen if Fitbit will find a way out of the woods,
01:31:14
◼
►
but so far, their reaction in the post-Apple watch time has been pretty good.
01:31:18
◼
►
No, they found it.
01:31:19
◼
►
It's the Fitbit Blaze.
01:31:20
◼
►
Is that a real thing?
01:31:21
◼
►
Yeah, look at it.
01:31:22
◼
►
That's how they're getting away from the Apple Watch.
01:31:26
◼
►
Oh, that's the—the one thing that looks like an Apple Watch with the corners punched
01:31:31
◼
►
- That's not the way I would say you would go towards it,
01:31:33
◼
►
but I'm talking about the other Fitbit products.
01:31:36
◼
►
- The Ything's Activity Steel, this I think is a more,
01:31:41
◼
►
this is like a better competitor,
01:31:42
◼
►
at least I haven't seen one in real life,
01:31:44
◼
►
but on their website it looks really nice.
01:31:46
◼
►
Like this is the kind of thing,
01:31:47
◼
►
like I can see buying that and valuing that
01:31:51
◼
►
rather than an Apple Watch before I could see like,
01:31:55
◼
►
you know, the big Fitbit corner cut off Apple Watch.
01:31:58
◼
►
I don't know.
01:32:00
◼
►
- It's a smart approach, it's mostly a mechanical watch,
01:32:03
◼
►
basically, or I mean it's a quartz probably,
01:32:05
◼
►
but it's mostly a regular watch with some very slight
01:32:09
◼
►
activity tracking and sleep alarm kind of thing.
01:32:12
◼
►
So it still has all the battery advantages
01:32:14
◼
►
of a regular watch, it's low cost,
01:32:16
◼
►
it's only under 200 bucks, long battery.
01:32:20
◼
►
- It can be more attractive.
01:32:22
◼
►
- Yeah, I think from these pictures
01:32:24
◼
►
it looks pretty attractive, who knows again,
01:32:25
◼
►
who knows what it looks like in real life,
01:32:26
◼
►
but it looks pretty decent, under 200 bucks,
01:32:30
◼
►
activity tracking built-ins,
01:32:32
◼
►
that seems like that's a better kind of approach
01:32:35
◼
►
to try to compete with the Apple Watch,
01:32:37
◼
►
rather than to be a full-featured computer platform
01:32:40
◼
►
because you're not gonna do that
01:32:42
◼
►
if you're WiThings or Fitbit.
01:32:44
◼
►
You're not gonna be able to compete on that front.
01:32:46
◼
►
- Yeah, the Blade looks more like a fitness,
01:32:49
◼
►
totally focused on fitness, GPS type thing,
01:32:52
◼
►
but I was thinking of the Charge and the Charge HR
01:32:54
◼
►
and even the Flex,
01:32:55
◼
►
evolution of the Flex into increasingly large rubbery bands with a tiny little screen that
01:33:01
◼
►
appeals to people for athletics.
01:33:03
◼
►
Like it's for activity and athletics just so focused on fitness.
01:33:06
◼
►
Fitbit's right in the name.
01:33:07
◼
►
I guess they do have a clear path, like Fitbit.
01:33:10
◼
►
We're not going to be a general purpose platform for smart watching.
01:33:14
◼
►
Everything we do is going to be about fitness.
01:33:16
◼
►
And so you can make this whole line of products with a similar value proposition of we track
01:33:20
◼
►
the stuff that you do and your heart rate and your activity and we connect to your smartphone
01:33:24
◼
►
with an app and do all that stuff, but there's no real brains in our thing.
01:33:27
◼
►
It's just an accelerometer and a tiny simple screen and some Magic Invisible Bluetooth
01:33:31
◼
►
that just, you know, make it work.
01:33:32
◼
►
And even the Blaze thing looks like, you know, like those Garmin GPS things.
01:33:37
◼
►
Like a really fancier version of a thing you wear when you exercise.
01:33:40
◼
►
I do not buy the one where they show like the woman in like with jewelry with her fancy
01:33:45
◼
►
I do not buy that scenario at all for this thing because it is huge and I absolutely
01:33:52
◼
►
don't buy it as anything. Oh boy, it looks bad.
01:33:54
◼
►
Yeah, the one where it's like, it's a woman and a man going on a date, the man's wearing
01:33:58
◼
►
a whole suit, and it's like, he's wearing a suit with this watch.
01:34:01
◼
►
Yeah, I didn't know this existed. I may have to take back some of my credit to Fitbit.
01:34:06
◼
►
But the other things, I see them around a lot. I see them around a lot in regular people,
01:34:10
◼
►
and they so clearly have, because they're so cheap compared to the Apple Watch, and
01:34:15
◼
►
they're so, like, not disposable, but they're made of plastic and they're rugged and they
01:34:22
◼
►
They have such a clear purpose and they're simple and you don't have to worry about rebooting
01:34:28
◼
►
them or updating the OS or getting apps for them.
01:34:32
◼
►
They just, again, remember the Flip camera.
01:34:35
◼
►
We'll come back to this in a year and see how this is all shaken up.
01:34:38
◼
►
Yeah, I mean, I really do think there's going to be a healthy market for inexpensive, more
01:34:45
◼
►
focused smartwatches that are not full-fledged app platforms.
01:34:50
◼
►
Because you could argue, you're looking at the Apple Watch,
01:34:52
◼
►
how the Apple Watch really isn't a great app platform either.
01:34:56
◼
►
It tries to be, and maybe it will be in the future,
01:34:58
◼
►
but at the moment it isn't.
01:35:00
◼
►
And what people tend to like most about the Apple Watch
01:35:05
◼
►
is the stuff that a $200 less capable watch
01:35:09
◼
►
with a longer battery life probably could do most of.
01:35:13
◼
►
- Yeah, like this withings or whithings thing.
01:35:17
◼
►
Like, you know, it's the old,
01:35:18
◼
►
as the price of compute drops to zero,
01:35:20
◼
►
eventually smart guts go into everything just because it's so freaking cheap.
01:35:23
◼
►
You're going to like it's why?
01:35:24
◼
►
Why would you have this a regular quartz watch without some very basic
01:35:28
◼
►
accelerometer step tracking and computer smarts and wireless connectivity?
01:35:32
◼
►
Because eventually that the thing that does all that on one tiny system in the
01:35:35
◼
►
chip five years from now, it's like that costs less than the little metal bar
01:35:40
◼
►
that we use to connect the straps, like just put it in. It's free.
01:35:43
◼
►
And so everything has some amount of smarts in it.
01:35:45
◼
►
And then Apple is making the high end one where they're always pushing the envelope.
01:35:48
◼
►
like what kind of crazy computing stuff can we put in here?
01:35:50
◼
►
But it's like, you know, like the internet of things.
01:35:53
◼
►
Eventually it's just like,
01:35:54
◼
►
we're gonna put a smart chip in everything
01:35:56
◼
►
and we think that will make it better.
01:35:57
◼
►
And it probably won't in the beginning,
01:35:58
◼
►
but it just becomes so cheap that you just do it
01:36:01
◼
►
because you can and you just try to like find a use for it.
01:36:04
◼
►
And eventually, hopefully we will find,
01:36:06
◼
►
in the same way that electricity came around to everything.
01:36:08
◼
►
And you know, like everything didn't have electricity.
01:36:10
◼
►
Oh, I need electricity for a light bulb.
01:36:12
◼
►
Well, what about electricity in the thing
01:36:14
◼
►
that heats your house?
01:36:16
◼
►
You don't need electricity for that,
01:36:17
◼
►
Shovel cold and what about electricity in the thing that cooks your food? Well, you just put wood in the stove
01:36:22
◼
►
What about you know toasting your bread? I just put it in the oven. Why does it need to be in everything?
01:36:27
◼
►
It's just gonna make everything worse and in the beginning it did but eventually everything's got freaking electricity
01:36:31
◼
►
So that's gonna be the same with
01:36:33
◼
►
With CPUs not everything has CPUs now, but it is inevitable
01:36:37
◼
►
They will in the same way they all got electricity because and we'll have to endure
01:36:41
◼
►
These stupid years where it makes everything worse
01:36:45
◼
►
You know like I'm I'm absolutely sure that the first electric stoves were hated by everybody who was used to the quote-unquote real stoves
01:36:53
◼
►
that didn't have electricity, but eventually we worked it out and even even today some people still have giant gas stoves, but
01:36:58
◼
►
No computers coming watch out
01:37:01
◼
►
Yeah, I don't know I as I said last time and now that I've spent some time wearing a mechanical watch
01:37:09
◼
►
it is really nice to have something that does not need to be charged or have software updates.
01:37:16
◼
►
Like it's so nice because everything else in my life now has to be charged and require software
01:37:22
◼
►
updates. And by the way, works 97% of the time, but not that last 3%. Even the crappy mechanical
01:37:32
◼
►
ones, that's what I'm talking about. When the compute comes everywhere, it'll be so small that
01:37:35
◼
►
you won't need to charge it all the time. Like it'll probably charge itself from the motion of
01:37:38
◼
►
your wrist or something and you won't need to update it with software because it will
01:37:40
◼
►
do so few things and it will be a fixed set of functionality but there will still be a
01:37:44
◼
►
CPU in there.
01:37:45
◼
►
Like in the same way that half of these vacuums you're testing probably have some microprocessor
01:37:49
◼
►
somewhere or something, you never need to update it, you're never going to update it,
01:37:51
◼
►
it just does what it's going to do, you don't even know it's there, you don't have to think
01:37:54
◼
►
about charging it because you plug it in, but it's in there.
01:37:57
◼
►
In the same way all of our cars have a bazillion computers in them now, for the most part we're
01:38:01
◼
►
not running software, well Marco is now, but most of us are not running software updates
01:38:04
◼
►
on our cars, but they're just, they're filled with CPUs.
01:38:08
◼
►
So that's the progression.
01:38:11
◼
►
If you're still thinking about it
01:38:12
◼
►
and having to charge it and run software updates,
01:38:14
◼
►
that's clearly like on the leading edge
01:38:17
◼
►
of adding computers to things.
01:38:19
◼
►
When we stop even knowing there's a computer in it,
01:38:22
◼
►
that's the trailing edge of adding computers to things.
01:38:23
◼
►
I kinda don't know if cars are on the trailing edge
01:38:26
◼
►
because cars have this whole other revolution
01:38:27
◼
►
of having their interiors become computerized,
01:38:29
◼
►
but the engines have long since been computerized
01:38:32
◼
►
and that ship has kind of sailed,
01:38:33
◼
►
now we're computerizing the whole rest of the car. I'm trying to think of another example
01:38:36
◼
►
of something in our house, maybe washing, maybe dishwashers or washing machines that
01:38:41
◼
►
used to just be like circuit boards with a bunch of fixed circuits and stuff, and eventually
01:38:44
◼
►
they just all got CPUs. And we don't think about it. And you don't update them, and you
01:38:48
◼
►
don't have to charge them, and it's not a hassle, and they don't crash, because what
01:38:51
◼
►
they do is so stupid and so simple, and, you know, for the most part. I don't know. Maybe
01:38:56
◼
►
we'll come up with a better example.
01:38:57
◼
►
- Yeah, that's fine.
01:38:59
◼
►
Like the stuff that's basically like a sealed box
01:39:02
◼
►
where you can't get a firmware update for your dishwasher.
01:39:06
◼
►
I'm sure it's possible for service people to do it,
01:39:08
◼
►
but that isn't something that consumers are expected
01:39:10
◼
►
to ever do or even able to do,
01:39:13
◼
►
because what they do is so simple and basic,
01:39:15
◼
►
like you hope there would be no need for such a thing.
01:39:18
◼
►
But where the danger of being annoying and unreliable
01:39:21
◼
►
comes in is when you have something as complicated
01:39:24
◼
►
as an app platform.
01:39:26
◼
►
you know, like a device that has an app platform,
01:39:28
◼
►
like a smartwatch, like that, that is complicated.
01:39:31
◼
►
So now you're expected to have like a smartwatch,
01:39:34
◼
►
a phone, maybe a tablet, certainly a computer,
01:39:37
◼
►
or one of those things, you know,
01:39:39
◼
►
so like you have all these devices,
01:39:40
◼
►
and then your cars are getting smarter,
01:39:42
◼
►
they have software that, whether it gets updated or not,
01:39:46
◼
►
it probably needs to.
01:39:47
◼
►
Like my car now does not have over-the-air updates
01:39:51
◼
►
the way Tesla does, but it has plenty of software bugs
01:39:55
◼
►
that should be fixed.
01:39:56
◼
►
Like, they just don't get fixed, you know?
01:39:59
◼
►
- Well, yeah, the platform thing is interesting
01:40:01
◼
►
because I think we're in the process
01:40:02
◼
►
of trying to figure out what things should be platforms
01:40:05
◼
►
and what things shouldn't.
01:40:06
◼
►
I think like, for the most part,
01:40:08
◼
►
thus far we've decided that washing machines
01:40:09
◼
►
should not be application platforms.
01:40:11
◼
►
I think we're all pretty much in agreement there so far,
01:40:14
◼
►
but people are willing to try things out.
01:40:15
◼
►
Should watches be application platforms?
01:40:17
◼
►
Should phones?
01:40:18
◼
►
Should televisions?
01:40:21
◼
►
We're finding out the answers to those things now.
01:40:22
◼
►
I think we pretty much found out phones, yes,
01:40:24
◼
►
They should probably be application platforms too.
01:40:26
◼
►
Televisions, jury kinda maybe still out.
01:40:29
◼
►
Watches, jury still out.
01:40:31
◼
►
Cars, I think you're gonna figure that out for us, Marco.
01:40:36
◼
►
I mean, maybe like that's not really, you know,
01:40:38
◼
►
everything is potentially one, but they can't all be.
01:40:42
◼
►
There is no future where everything is an app platform
01:40:44
◼
►
in the way that we think of app platforms today,
01:40:46
◼
►
but everything will have CPU.
01:40:48
◼
►
Everything could be getting magic wireless software updates.
01:40:51
◼
►
You know, again, as the price of computing drops to zero,
01:40:54
◼
►
as the power consumption of computing drops to zero,
01:40:56
◼
►
as it becomes just so damn cheap and so power, you know,
01:41:01
◼
►
and like ubiquitous wireless networking everywhere
01:41:04
◼
►
with low power, you just put it in everything.
01:41:07
◼
►
And if you can come up with the sort of the wireless
01:41:11
◼
►
internet enabled equivalent of the dumb embedded CPU
01:41:13
◼
►
that's in your rice cooker that does the fuzzy logic
01:41:16
◼
►
to fair it when to stop cooking your rice,
01:41:18
◼
►
if that has some little minor bug,
01:41:20
◼
►
or even they just want to patch something
01:41:22
◼
►
because the International Date Authority decides
01:41:23
◼
►
we're going to skip January 15th in the year 2027
01:41:26
◼
►
for some reason or whatever,
01:41:28
◼
►
that all the devices in your house
01:41:30
◼
►
will wirelessly get updates to handle that date thing
01:41:33
◼
►
and you won't think about it, that'll be great.
01:41:35
◼
►
Like that's a potential cool future
01:41:38
◼
►
and it's eminently possible,
01:41:39
◼
►
but it still doesn't make you rugs, cooker and app platform
01:41:42
◼
►
because that just doesn't make any sense,
01:41:44
◼
►
practically speaking because what would you use it for?
01:41:47
◼
►
You just want it to be reliable
01:41:48
◼
►
and like you said with the BMW,
01:41:49
◼
►
it may have bugs and you would like it if those bugs could be fixed but you don't want to deal
01:41:52
◼
►
with that crap. Nobody wants to deal with it. You just want it to happen automagically with no
01:41:56
◼
►
possibility of error. Like the rules for embedded systems are so different than the rules for things
01:42:02
◼
►
that are app platforms and then when we're out there on the bleeding edge like the Apple Watch
01:42:05
◼
►
and smartphones and our PCs perpetually on the bleeding edge that's where things get all
01:42:10
◼
►
unreliable and crappy and it's just a whole different set of rules there. And getting back
01:42:13
◼
►
to the Swift discussion, if they can try to drag those leading edge platforms towards more safety
01:42:19
◼
►
at the price of more restrictions, as long as they do it in the same way and
01:42:23
◼
►
understand what the consequences can be, unlike these sort of unintended
01:42:26
◼
►
consequences of trying to drag the general-purpose Mac platform to be like
01:42:29
◼
►
a smartphone with sandboxing, then I think things can work out eventually.
01:42:33
◼
►
Probably will mostly be dead, but I plan to live for a long time so we'll see.