PodSearch

ATP

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:00 ◼   ► but it's...

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 ◼   ► - Wow.

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:33 ◼   ► (laughing)

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:30 ◼   ► It's not...

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:35 ◼   ► Whatever.

00:10:36 ◼   ► Just chomp it down.

00:10:37 ◼   ► It's fine.

00:10:38 ◼   ► Goodness.

00:10:39 ◼   ► All right.

00:10:40 ◼   ► Well, anyway, yeah, you should check out Audible.

00:10:44 ◼   ► All right.

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:26 ◼   ► of.

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:02 ◼   ► port.

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:17 ◼   ► Really?

00:18:18 ◼   ► No, it's not.

00:18:19 ◼   ► Oh no, it's SD and microSD.

00:18:20 ◼   ► Yeah.

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:21 ◼   ► Anyway.

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:26 ◼   ► - Goodness.

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:04 ◼   ► that.

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:01 ◼   ► - Wow.

00:23:02 ◼   ► - What a low bar that we've set.

00:23:04 ◼   ► Oh God.

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:23 ◼   ► - Breaking.

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

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:23 ◼   ► 90s.

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:05 ◼   ► say

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:42 ◼   ► that right?

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:48 ◼   ► Right.

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:15 ◼   ► them.

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:42 ◼   ► Agreed.

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:04 ◼   ► overridden?

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:04 ◼   ► it.

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:15 ◼   ► keyword.

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:51 ◼   ► No

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:04 ◼   ► by default.

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:19 ◼   ► dangerous.

00:51:21 ◼   ► And so it seems to me that the academic answer is unequivocally that classes should be final

00:51:31 ◼   ► by default.

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:07 ◼   ► Yay.

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:24 ◼   ► Go ahead.

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:14 ◼   ► (laughing)

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:46 ◼   ► features.

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:02 ◼   ► do that.

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:25 ◼   ► Ding.

01:12:26 ◼   ► Yeah.

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:43 ◼   ► All right.

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:01 ◼   ► 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:47 ◼   ► Accidental.

01:21:48 ◼   ► Accidental.

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 ◼   ► - Yes.

01:22:01 ◼   ► - As in, what does this mean for WebObjects?

01:22:03 ◼   ► - Yeah.

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:30 ◼   ► can't we?

01:23:31 ◼   ► Maybe not.

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:39 ◼   ► - The what?

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:12 ◼   ► little.

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:12 ◼   ► Oh, yeah.

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:53 ◼   ► - Why?

01:27:55 ◼   ► Like, Apple had to make it like that.

01:27:56 ◼   ► You don't.

01:27:57 ◼   ► (laughs)

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:13 ◼   ► of a watch.

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:56 ◼   ► (laughing)

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:04 ◼   ► All right.

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:09 ◼   ► Yeah.

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:30 ◼   ► out?

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:44 ◼   ► purse.

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:35 ◼   ► Right?

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.