PodSearch

The Talk Show

139: ‘How Many Fingers Should This Baby Have?’ With Special Guests Craig Federighi and John Siracusa

 

00:00:00 ◼   ► I always end up seeking back to figure out what part I missed where the podcast started,

00:00:06 ◼   ► and then I realize it just starts.

00:00:11 ◼   ► That is how it goes, Craig.

00:00:12 ◼   ► It is.

00:00:15 ◼   ► So this is a great thrill for me to be speaking to you.

00:00:21 ◼   ► Craig Federighi, Senior Vice President of Software Engineering at—what's the company?

00:00:29 ◼   ► Apple.

00:00:30 ◼   ► Apple.

00:00:31 ◼   ► Apple.

00:00:32 ◼   ► Yes.

00:00:33 ◼   ► And we are talking on the occasion of the open sourcing of Swift, which went live last

00:00:42 ◼   ► week.

00:00:43 ◼   ► What day was it last week?

00:00:44 ◼   ► It was last Thursday, wasn't it?

00:00:47 ◼   ► It's been huge.

00:00:48 ◼   ► Yeah.

00:00:49 ◼   ► Yeah, but it was incredibly exciting for us.

00:00:52 ◼   ► Yeah, so we're speaking, as we speak, it's about a week later.

00:00:55 ◼   ► So how do you think this first week of Swift as an open source project has gone?

00:01:00 ◼   ► Yeah, really, really well.

00:01:02 ◼   ► I mean, the level of activity on GitHub is off the charts.

00:01:07 ◼   ► I mean, we've had really high aspirations for Swift from the beginning, but at every

00:01:12 ◼   ► step it's been pretty amazing for us how much bigger it's gone than we could have ever hoped.

00:01:18 ◼   ► And I think already on GitHub, we're a more active project than I think all the other

00:01:23 ◼   ► languages that are on GitHub, which is just incredible for first week. I think over 60,000

00:01:31 ◼   ► people that have taken a clone of the project. So it's pretty amazing. And the team is just

00:01:40 ◼   ► ecstatic over the whole thing.

00:01:42 ◼   ► Yeah, there's different ways for a big company, especially a big company, to do a quote unquote

00:01:46 ◼   ► open source project. There's sort of like, yes, technically it's open source, but it's

00:01:50 ◼   ► really just sort of a zip file with a open source license and there it goes,

00:01:56 ◼   ► you know, have at it. And then there's the actively engaging in a community

00:02:03 ◼   ► manner with the outer world. And so when you guys announced that WWDC Swift would

00:02:10 ◼   ► be open source, I think there were some skeptics who thought maybe it was going

00:02:13 ◼   ► to be a, well technically it's open source and there it is, but this is

00:02:17 ◼   ► really like full throttle, fully engaged with the the world outside Cupertino.

00:02:23 ◼   ► Yeah, I mean it's funny, I guess there there always will be skeptics, but anyone

00:02:28 ◼   ► who's been watching our team in the context of like the LLVM world, Clang,

00:02:34 ◼   ► LLDB, and our WebKit team would see how how much developing in the open is in

00:02:42 ◼   ► in the spirit of those teams.

00:02:45 ◼   ► And so the Swift team has been among the most engaged with our developer community of any

00:02:51 ◼   ► group in Apple, even prior to open sourcing in terms of from the first launch of our announcement

00:02:58 ◼   ► of Swift 1.0 in the app store, I mean at the WWDC, and how much they were engaging with

00:03:05 ◼   ► all the feedback that was coming in and modifying the language right up to 1.0 and then beyond.

00:03:12 ◼   ► And this is really an extension of how the only way they really have ever wanted to work.

00:03:18 ◼   ► And so, yeah, they are very excited to be working completely in the open.

00:03:23 ◼   ► And it really is a case where as all the features in Swift that we'll be announcing officially

00:03:30 ◼   ► to the world at our next developer conference, you can sort of see them unfold before your

00:03:36 ◼   ► eyes and the time leading up to that as they're working on them in the open on GitHub.

00:03:42 ◼   ► like everything else Apple does.

00:03:44 ◼   ► It's very, very similar to everything else we do.

00:03:47 ◼   ► That's correct.

00:03:48 ◼   ► The thing that to me is most telling-- and I know that GitHub

00:03:51 ◼   ► makes it easy to track all these changes

00:03:53 ◼   ► and see how many people are involved.

00:03:55 ◼   ► But to me, if you just want a quick look at just how much

00:03:58 ◼   ► this is a collaboration between the Swift team at Apple

00:04:04 ◼   ► and the outside world, it's the Swift evolution mailing list,

00:04:09 ◼   ► where you guys have been upfront about this

00:04:13 ◼   ► right from Swift 1.0 in 2014,

00:04:16 ◼   ► that this is not a finished language.

00:04:18 ◼   ► You didn't go and finish a language,

00:04:21 ◼   ► and here it is, have at it.

00:04:23 ◼   ► It's, we're still working on this.

00:04:26 ◼   ► A lot of what we're gonna be working on

00:04:27 ◼   ► is tell us what you need,

00:04:30 ◼   ► and here on the mailing list,

00:04:32 ◼   ► there are people actively engaging,

00:04:34 ◼   ► and employees from Apple, Chris Latner

00:04:36 ◼   ► and the people on his team,

00:04:38 ◼   ► are fully engaging with these ideas and proposals

00:04:42 ◼   ► that are coming from outside the company.

00:04:44 ◼   ► Already one week into it being an open source project.

00:04:47 ◼   ► - Oh yeah, I mean, I think our team

00:04:50 ◼   ► is a really seasoned team in the world

00:04:53 ◼   ► of developing languages.

00:04:55 ◼   ► And we know that a language really

00:04:58 ◼   ► can't be developed in a vacuum.

00:05:00 ◼   ► It is a product of how people use it

00:05:04 ◼   ► and the problems that people are trying to solve.

00:05:06 ◼   ► And so we knew from the outset with SWIFT 1.0

00:05:10 ◼   ► that we could come up with the language that,

00:05:12 ◼   ► a first step you have to crystallize your basic ideas

00:05:15 ◼   ► and have a starting point,

00:05:17 ◼   ► but we knew we needed feedback then

00:05:19 ◼   ► to work toward the language that ultimately SWIFT has

00:05:23 ◼   ► and has become and will become in the future,

00:05:25 ◼   ► but that we needed to have this kind of open dialogue

00:05:29 ◼   ► and open sourcing is, as you say,

00:05:32 ◼   ► just really accelerating and deepening the kind of feedback

00:05:36 ◼   ► that we're getting.

00:05:37 ◼   ► And so it's really energizing for us.

00:05:40 ◼   ► And I think it's really exciting for a lot of the developers

00:05:43 ◼   ► in our community as well to be a part of it.

00:05:46 ◼   ► - What are the other reasons to go open source

00:05:50 ◼   ► with a new programming language?

00:05:53 ◼   ► - Well, you know, when we talked about it just briefly

00:05:56 ◼   ► at WWDC, I think we laid out the big ones,

00:05:59 ◼   ► which are for us, Swift is, we think,

00:06:06 ◼   ► the primary programming language that developers

00:06:10 ◼   ► should be taught to programming in, actually.

00:06:12 ◼   ► I mean, if you're gonna learn computer science,

00:06:14 ◼   ► Swift is a fantastic learning language.

00:06:17 ◼   ► And if you're a developer who is going to invest

00:06:20 ◼   ► a huge part of your career in mastering Swift

00:06:24 ◼   ► and developing code in Swift,

00:06:26 ◼   ► you're gonna want the ability to use that code

00:06:29 ◼   ► in every context possible.

00:06:30 ◼   ► And you're gonna wanna use your skill in that language

00:06:32 ◼   ► in all the environments in which you have to work

00:06:34 ◼   ► to do your job.

00:06:35 ◼   ► So whether you're scripting your build system or writing web services or, of course, writing

00:06:43 ◼   ► your mobile applications, we want to make sure that you can invest in Swift in that

00:06:49 ◼   ► way and know that it's going to be available to you everywhere.

00:06:52 ◼   ► And so we saw open sourcing as a critical element to make Swift reach its potential

00:06:58 ◼   ► to be the language, the major language for the next 20 years of programming in our industry.

00:07:06 ◼   ► It's a really ambitious goal.

00:07:08 ◼   ► It is.

00:07:09 ◼   ► It is.

00:07:10 ◼   ► But I think at every point along the way, because this has been our vision from before

00:07:15 ◼   ► we first unleashed Swift on the world, but at every step, actually, the reaction has

00:07:24 ◼   ► really outdone our expectations.

00:07:26 ◼   ► So maybe our goal isn't so outlandish.

00:07:31 ◼   ► Do you think that-- I would say that for education purposes,

00:07:34 ◼   ► it really has to be open source, because there's really no way

00:07:37 ◼   ► that a language is going to take root as a teaching language

00:07:41 ◼   ► if it's proprietary to an Apple platform or any other vendor's

00:07:48 ◼   ► platform.

00:07:49 ◼   ► Right.

00:07:50 ◼   ► We had a lot of universities who would

00:07:53 ◼   ► teach a specialized mobile programming course

00:07:56 ◼   ► or an iOS programming course.

00:07:57 ◼   ► And in that context, of course, they teach Swift

00:08:00 ◼   ► and Stanford has an outstanding course

00:08:03 ◼   ► that's on iTunes U about programming in Swift

00:08:05 ◼   ► to program on iOS.

00:08:08 ◼   ► But when it comes to bringing it into the core curriculum

00:08:11 ◼   ► that every student in the university has to take

00:08:13 ◼   ► to let's say, learn computer science,

00:08:16 ◼   ► making it open source, having it available to every student

00:08:18 ◼   ► on whatever platform they're gonna use to do their work

00:08:21 ◼   ► is we think ultimately a huge enabler.

00:08:26 ◼   ► And so many of the people we talked to,

00:08:29 ◼   ► the professors wanted to use the language in these ways,

00:08:34 ◼   ► but they needed it to be open source for this to happen.

00:08:38 ◼   ► And so we're really excited

00:08:40 ◼   ► to follow through with them on this.

00:08:42 ◼   ► - Why not open source it?

00:08:45 ◼   ► What were the downsides that were debated

00:08:48 ◼   ► before you decide, you know, made the decision

00:08:51 ◼   ► to go open source with it.

00:08:52 ◼   ► - You know, there really weren't,

00:08:55 ◼   ► you know, we of course talked it over at length.

00:09:01 ◼   ► We had a tough time coming up

00:09:03 ◼   ► with a significant reason not to do it.

00:09:06 ◼   ► It was more a when question, you know, is it now?

00:09:10 ◼   ► And we knew after 1.0 that we weren't quite there,

00:09:14 ◼   ► that we wanted to get that first round of feedback,

00:09:17 ◼   ► begin to stabilize the definition of the language.

00:09:20 ◼   ► But as we got close to WWDC this last year,

00:09:23 ◼   ► we realized we were where we needed to be,

00:09:27 ◼   ► to take a step that we knew was gonna happen.

00:09:30 ◼   ► It was gonna be this year,

00:09:30 ◼   ► or it was gonna be the following year.

00:09:32 ◼   ► And we realized we were where we needed to be.

00:09:35 ◼   ► And so we moved ahead,

00:09:38 ◼   ► and the hunger out there was so great,

00:09:41 ◼   ► we thought, let's do it now.

00:09:45 ◼   ► But the downsides are really limited.

00:09:47 ◼   ► I mean, I think it's inevitable but positive

00:09:51 ◼   ► that Swift will be used in all kinds of contexts

00:09:54 ◼   ► outside of Apple.

00:09:55 ◼   ► And that's kind of the point.

00:09:56 ◼   ► So that's fine.

00:09:58 ◼   ► It's clear we're gonna get a lot of people wanting

00:10:02 ◼   ► to do things with the language that aren't directly related

00:10:05 ◼   ► to Apple's line of business.

00:10:08 ◼   ► And that's okay, right?

00:10:10 ◼   ► That's actually fine as well.

00:10:12 ◼   ► So there weren't a lot of downsides,

00:10:16 ◼   ► and we think the upsides are tremendous.

00:10:18 ◼   ► - One of the areas that I would,

00:10:22 ◼   ► I think it's definitely,

00:10:23 ◼   ► I see so much excitement about it already

00:10:25 ◼   ► is in terms of being cross-platform

00:10:27 ◼   ► is the use of Swift on servers.

00:10:30 ◼   ► And a lot of that is certainly gonna be Linux.

00:10:33 ◼   ► And you guys have already done the port to Linux.

00:10:35 ◼   ► - That's right.

00:10:37 ◼   ► - And that's an area where I feel like we,

00:10:41 ◼   ► I have no idea.

00:10:42 ◼   ► I feel like it's going to be used, but I just,

00:10:44 ◼   ► it's like, it's so early,

00:10:45 ◼   ► we don't know where that's going to be.

00:10:46 ◼   ► But do you see that happening,

00:10:48 ◼   ► that it's gonna be used for a lot of server-based development

00:10:50 ◼   ► that's really outside Apple's platforms?

00:10:54 ◼   ► - Oh, totally, yeah.

00:10:55 ◼   ► I mean, you know, from really the outset,

00:10:59 ◼   ► IBM, for instance, jumped all over Swift

00:11:01 ◼   ► for building their mobile apps,

00:11:04 ◼   ► and almost immediately they were coming back to us with,

00:11:08 ◼   ► we really wanna use this on the server.

00:11:10 ◼   ► How can we get this on the server?

00:11:12 ◼   ► And of course with an Apple,

00:11:15 ◼   ► there's tremendous passion for Swift

00:11:17 ◼   ► and our own iCloud team has been, you know,

00:11:20 ◼   ► completely chomping at the bit to be able to apply it

00:11:22 ◼   ► in many and many of the things they do.

00:11:24 ◼   ► So I think it's gonna be the first,

00:11:28 ◼   ► among the first kind of breakout uses of Swift.

00:11:31 ◼   ► And of course, these days, so many mobile applications

00:11:34 ◼   ► are part mobile app, part server code.

00:11:38 ◼   ► And in a lot of cases, you at the very least

00:11:40 ◼   ► want to share your knowledge.

00:11:41 ◼   ► But very often, you want to share parts of your code,

00:11:44 ◼   ► parts of your model layer, some of your utility libraries.

00:11:47 ◼   ► And having Swift enabling you to do that

00:11:50 ◼   ► is going to be huge for a lot of our community.

00:11:53 ◼   ► Yeah, I can definitely see that.

00:11:55 ◼   ► That, to me, is sort of the building for the future version

00:12:00 ◼   ► or aspects of Swift versus, say, Objective-C,

00:12:03 ◼   ► which has roots from 20 or even 30 years ago.

00:12:07 ◼   ► And the fact that the cloud, or whatever you want to call it,

00:12:12 ◼   ► but client software running on a device,

00:12:14 ◼   ► talking to servers somewhere off on the internet,

00:12:18 ◼   ► is part of, I would say, almost certainly

00:12:21 ◼   ► the overwhelming majority of apps

00:12:23 ◼   ► that are being written for these platforms.

00:12:25 ◼   ► That having a language that makes sense

00:12:27 ◼   ► in both ends of the communication is huge.

00:12:31 ◼   ► Well, exactly.

00:12:32 ◼   ► Exactly.

00:12:33 ◼   ► And if you look at where I think it

00:12:36 ◼   ► is for a lot of developers prior to Swift,

00:12:40 ◼   ► they probably were using Objective-C.

00:12:44 ◼   ► If they had high performance code, they had to write.

00:12:46 ◼   ► Part of Objective-C is C. And so they were dropping down

00:12:49 ◼   ► into C to do some of the more optimized work, which

00:12:52 ◼   ► can be almost another language.

00:12:55 ◼   ► There's a real continuum there within the environment.

00:12:58 ◼   ► They might have been using a scripting language

00:13:01 ◼   ► for part of what they do.

00:13:02 ◼   ► And then they might be using a server-side language,

00:13:04 ◼   ► like Java.

00:13:05 ◼   ► And Swift is uniquely capable of spanning

00:13:09 ◼   ► from really easy and natural kind of scripting,

00:13:13 ◼   ► expressive uses.

00:13:14 ◼   ► It's a great application programming language.

00:13:16 ◼   ► But it was also designed to be a great systems language

00:13:19 ◼   ► and be really fast so that you can

00:13:20 ◼   ► do C kind of high performance work without compromises

00:13:24 ◼   ► in Swift.

00:13:25 ◼   ► And then it's going to work in the cloud as well.

00:13:29 ◼   ► So I think it's going to really unify the environment

00:13:33 ◼   ► for a lot of developers.

00:13:35 ◼   ► would you describe a systems language? Because this is right from the, one of my notes here,

00:13:41 ◼   ► from the Swift programming language. It says Swift is intended to be "the first industrial quality

00:13:47 ◼   ► systems programming language that is as expressive and enjoyable as a scripting language, designed to

00:13:52 ◼   ► scale from hello world to an entire operating system." What is a systems programming language?

00:14:00 ◼   ► Well, there's some low-level bits and some matters of spirit, I think.

00:14:08 ◼   ► And in terms of low-level bits, Swift has a very predictable memory management model,

00:14:15 ◼   ► a very contained runtime.

00:14:18 ◼   ► If you look at traditional scripting languages or languages like Java, they run garbage collectors.

00:14:27 ◼   ► You really can't control memory in a significant way.

00:14:32 ◼   ► Swift builds on our ARC technology that first came to Objective-C to provide really high

00:14:39 ◼   ► performance and really predictable and manageable memory management, which means that if you

00:14:43 ◼   ► wanted to write everything from an operating system kernel to a high performance graphics

00:14:49 ◼   ► library, you could do that without inheriting a huge per process memory footprint overhead.

00:14:56 ◼   ► You see that when you see how Apple's OS and apps are able to run in a lower memory footprint

00:15:04 ◼   ► and we're able to ship devices with different memory footprints than some of our competitors

00:15:09 ◼   ► who use languages that don't have this characteristic.

00:15:12 ◼   ► But Swift is also designed so that when it can be fast, it's as fast as can be.

00:15:20 ◼   ► So we aren't taking the overhead of dynamic dispatch for every call, but yet we can provide

00:15:27 ◼   ► dynamism when needed.

00:15:31 ◼   ► We can optimize, if you use an array in Swift, we can be every bit as optimal and do auto

00:15:39 ◼   ► vectorization and parallelization in ways that you would expect from optimized C code,

00:15:47 ◼   ► are very hard to do if you were trying to optimize Ruby or Python or even an

00:15:53 ◼   ► Objective-C, you know, NSRA built on top of the foundation classes. And so you can

00:15:58 ◼   ► go very, very low level and get very predictable peak performance out of your

00:16:03 ◼   ► hardware. Yeah, so in other words, it's at least compared, let's just compare it to

00:16:08 ◼   ► Objective-C. That Objective-C, there's so many great things we could say about it.

00:16:12 ◼   ► it's served, you know, Apple so incredibly well. It still will for the foreseeable

00:16:18 ◼   ► future in so many ways, but there's this big but, which is that sometimes you need

00:16:22 ◼   ► to, let's say, drop down into C or C++, and now you're losing all of the stuff

00:16:31 ◼   ► that you love about Objective-C because you need to drop down temporarily for

00:16:35 ◼   ► performance reasons. And Swift, you don't need to do that. You can write the

00:16:39 ◼   ► performance code right in Swift.

00:16:42 ◼   ► That's right.

00:16:43 ◼   ► I mean, Swift, I think when we first introduced Swift, we said we were imagining a world where

00:16:48 ◼   ► we took what we loved about Objective-C without carrying forward the baggage of C. But what

00:16:54 ◼   ► that meant is Swift has to replace C in its role in Objective-C programming.

00:17:01 ◼   ► And it does that really well while bringing all of these higher levels of abstraction

00:17:08 ◼   ► higher productivity programming techniques to writing that kind of high performance systems

00:17:12 ◼   ► code, but also so great for app code.

00:17:18 ◼   ► So one thing that Swift is not, I mean, and I think we've already covered this, but it's

00:17:22 ◼   ► not Objective-C with prettier, better syntax.

00:17:27 ◼   ► And it's the syntax of Objective-C that people find off-putting at least at first.

00:17:34 ◼   ► And I know that that's a debate that people who love Objective-C and have used it for

00:17:39 ◼   ► decades, it's a never-ending argument.

00:17:42 ◼   ► But at least at first, even if you really, really love Objective-C, I feel like you can't

00:17:48 ◼   ► avoid the fact that at first it looks weird.

00:17:52 ◼   ► Uh-huh.

00:17:53 ◼   ► I'll admit, I'm an Objective-C lover.

00:17:56 ◼   ► And there were plenty of good debates internally about, should we have a small talk inspired

00:18:03 ◼   ► syntax, should we stick with something like Objective-C. But it is a, in the end, it can

00:18:15 ◼   ► go either way.

00:18:16 ◼   ► And what we were able to retain in Swift are the sort of literate nature of APIs that Objective-C

00:18:25 ◼   ► enabled, the readability of code with the labeled arguments.

00:18:29 ◼   ► And we brought all of that to Swift while at the same time having a syntax that is just

00:18:34 ◼   ► much more concise and, at this point with the sort of evolution of people's expectations

00:18:39 ◼   ► around programming languages, just much more natural for them.

00:18:43 ◼   ► Like, is part of the thinking there that in terms of the small talk-inspired dynamic runtime,

00:18:51 ◼   ► that you didn't need a new language to do that because you already have Objective-C?

00:18:58 ◼   ► and that you can go, you know, that for the future,

00:19:01 ◼   ► for the next 20 years, that that sort of model

00:19:05 ◼   ► of looking at frameworks and programming languages

00:19:09 ◼   ► isn't the best way to go from here going forward.

00:19:12 ◼   ► - No, I would really separate, I know it's,

00:19:15 ◼   ► I would separate the syntax from some of the underlying

00:19:20 ◼   ► aspects of the runtime and the programming model.

00:19:25 ◼   ► Swift, some of my favorite features from Objective-C

00:19:31 ◼   ► are things like protocols and categories, which in Swift

00:19:37 ◼   ► are called extensions, and those literate APIs,

00:19:43 ◼   ► as well as first class classes with class methods.

00:19:49 ◼   ► All of these things that are so important for us

00:19:51 ◼   ► to build great APIs and great extensible frameworks

00:19:56 ◼   ► were brought to Swift along with things

00:20:00 ◼   ► like labeled arguments.

00:20:03 ◼   ► And slowly we've also been bringing back

00:20:07 ◼   ► much of the dynamism.

00:20:08 ◼   ► Now there's some things that are possible in Objective-C.

00:20:11 ◼   ► Most of the dynamism that you really want

00:20:15 ◼   ► is the ability to figure out what class is this really,

00:20:18 ◼   ► to be able to cast the class dynamically

00:20:20 ◼   ► a particular protocol, to be able to do a kind of response to select or perform, select

00:20:26 ◼   ► or check.

00:20:28 ◼   ► All of these things are possible in Swift today.

00:20:31 ◼   ► And there's some other things that aren't, but that certainly we consider important to

00:20:34 ◼   ► ultimately bring to the language.

00:20:37 ◼   ► So this thing about a dynamic programming model is still very important to us.

00:20:43 ◼   ► Now there's some very unsafe things that people do in Objective-C, and I've been guilty of

00:20:48 ◼   ► of this myself where you walk the Objective-C runtime

00:20:50 ◼   ► and hack the method table and that's cool,

00:20:54 ◼   ► but it is highly unsafe and doesn't lead

00:20:56 ◼   ► to very maintainable, scalable, large programs,

00:20:58 ◼   ► some of those techniques, but the vast, vast majority

00:21:00 ◼   ► of what makes Objective-C great and dynamic

00:21:02 ◼   ► is either part of Swift now or certainly part

00:21:06 ◼   ► of our ongoing ambition for the language.

00:21:09 ◼   ► But the thing we didn't wanna bring from Objective-C

00:21:12 ◼   ► is that in Objective-C, you're paying the overhead

00:21:16 ◼   ► of that dynamism all the time.

00:21:19 ◼   ► You're trying to use an array or some class

00:21:23 ◼   ► and you've got the compiler with both hands

00:21:25 ◼   ► tied behind its back in terms of opportunities

00:21:27 ◼   ► for optimization, and then you're forcing the developer

00:21:31 ◼   ► to then modify the way they've written their code

00:21:34 ◼   ► to maybe drop down to C for something

00:21:35 ◼   ► where performance matters.

00:21:37 ◼   ► For Swift, because it's safer, has more type information,

00:21:41 ◼   ► it gives the compiler what it needs to optimize when it can,

00:21:45 ◼   ► But that alone doesn't stand in the way of all the,

00:21:49 ◼   ► in my opinion, all the dynamism that matters.

00:21:52 ◼   ► - In layman's terms, and I'm, you know,

00:21:55 ◼   ► probably way more on the layman's side.

00:21:57 ◼   ► It's been a long time since I've programmed regularly,

00:22:01 ◼   ► but it, you know, for people listening,

00:22:05 ◼   ► I think that the big difference is that with Objective-C,

00:22:10 ◼   ► and what you mean, and you know,

00:22:12 ◼   ► people might not even know what a runtime is,

00:22:13 ◼   ► but more or less what it means is you compile the app,

00:22:15 ◼   ► starts running and a lot of the stuff gets decided within the app while it's

00:22:20 ◼   ► running and with Swift by by doing these things at compile time and knowing more

00:22:26 ◼   ► of the type information forcing you to to be a little more specific about the

00:22:31 ◼   ► type information up front it it it enables the compiler to do more

00:22:37 ◼   ► efficient things before the app is even running because it's it's happening at

00:22:42 ◼   ► at the time that the app is compiled.

00:22:44 ◼   ► That's right.

00:22:45 ◼   ► That's right.

00:22:46 ◼   ► And then it permits all kinds of optimizations,

00:22:48 ◼   ► because maybe if the compiler can determine ahead of time

00:22:52 ◼   ► that absolutely this object you're about to message

00:22:58 ◼   ► is of a certain type, and we know

00:23:00 ◼   ► you've done whole module optimization,

00:23:02 ◼   ► and we know what the result of that method is,

00:23:06 ◼   ► sometimes the compiler could even inline the implementation

00:23:08 ◼   ► and even involve the overhead of a function call.

00:23:11 ◼   ► So let alone a dynamic method dispatch.

00:23:14 ◼   ► And so that's part of how you can

00:23:17 ◼   ► get these incredible hand optimized C kinds of performance

00:23:22 ◼   ► numbers out of what you get to write as very high level code.

00:23:30 ◼   ► So Swift, I think, has a really excellent balance there.

00:23:34 ◼   ► But the key is we still have a runtime

00:23:36 ◼   ► where you can look at your classes and introspect them.

00:23:41 ◼   ► And there's more of that coming.

00:23:44 ◼   ► (laughing)

00:23:48 ◼   ► Which partly is on an open roadmap,

00:23:51 ◼   ► and partly is, you know, in terms of the frameworks

00:23:54 ◼   ► for the operating system, obviously is the sort of thing

00:23:56 ◼   ► that you're not gonna be able to talk about in advance,

00:23:57 ◼   ► because that's not the stuff that's open source.

00:24:00 ◼   ► That's right.

00:24:02 ◼   ► I mean, some of it, honestly, you will see us

00:24:04 ◼   ► bringing up over the course of the coming months

00:24:09 ◼   ► in the context of the open source project

00:24:11 ◼   ► because certain things that our team will take on,

00:24:16 ◼   ► will bring them forward as proposals

00:24:20 ◼   ► to the open source community

00:24:21 ◼   ► and then you'll see us start to implement them.

00:24:23 ◼   ► So I don't wanna jump the gun and pre-announce everything

00:24:26 ◼   ► that the team is thinking, but as soon as they,

00:24:30 ◼   ► and they've already pre-announced a bunch of the things

00:24:32 ◼   ► And big part of the focus we wanted to make sure

00:24:35 ◼   ► was clear right out of the gates with Swift

00:24:38 ◼   ► was that the goal for Swift 3 was really to stabilize

00:24:43 ◼   ► the binary interface and to refine the APIs

00:24:47 ◼   ► and finalize our API guidelines and all of those things

00:24:50 ◼   ► because we want, I think it's the next important step

00:24:54 ◼   ► is to really stabilize the language

00:24:57 ◼   ► and the environment for our community.

00:25:00 ◼   ► And that's a big task.

00:25:01 ◼   ► one of the things that's been so great about Objective-C

00:25:04 ◼   ► is it has this great stability

00:25:09 ◼   ► where that have enabled us to write frameworks

00:25:12 ◼   ► with binary compatible interfaces,

00:25:13 ◼   ► release over release over release,

00:25:15 ◼   ► something that languages like C++ really couldn't get right.

00:25:20 ◼   ► And we absolutely need to bring that to Swift.

00:25:24 ◼   ► So we've brought forward some of those goals,

00:25:28 ◼   ► but there are other things, of course,

00:25:29 ◼   ► that will be added to the 3.0 ambitions

00:25:34 ◼   ► as time goes on over the coming months?

00:25:36 ◼   ► - One of the complaints I've seen,

00:25:39 ◼   ► and part of this is just it's impossible to avoid,

00:25:42 ◼   ► I think, with how early in its evolution

00:25:45 ◼   ► Swift was unveiled to the world.

00:25:47 ◼   ► But what I've seen from developer friends

00:25:51 ◼   ► and just commentary on the internet

00:25:53 ◼   ► is that it's hard right now

00:25:55 ◼   ► to write a large-scale application in Swift.

00:25:59 ◼   ► Apple has more people working on Cocoa apps than any other company in the world for obvious

00:26:07 ◼   ► reasons.

00:26:09 ◼   ► How has the feedback from the internal developers, the people who work for you, the engineers

00:26:16 ◼   ► who work for you with extensive experience shipping user-facing apps shaped the direction

00:26:21 ◼   ► of Swift from 1.0 to what's on the roadmap for 3.0?

00:26:27 ◼   ► Of course, there are elements.

00:26:29 ◼   ► We have all types here within Apple, right?

00:26:31 ◼   ► Just like there are people that are liking the external community.

00:26:40 ◼   ► They start out with the, "I love Objective-C. I don't want to change," to, "Okay, hold on.

00:26:45 ◼   ► Maybe there's something to this Swift thing," to, "Let me give it a try," to, "Oh my God,

00:26:49 ◼   ► I love it."

00:26:51 ◼   ► We've gone through all the phases internally.

00:26:55 ◼   ► We've had some really great adoption by teams like the team that does the dock and window

00:27:02 ◼   ► management on OS X, who've implemented all their new features for El Capitan in Swift

00:27:09 ◼   ► and started mass converting all of their code and say that they just couldn't imagine going

00:27:15 ◼   ► back and that they're more productive with it.

00:27:18 ◼   ► Part of what our internal teams need to deal with, though, is that they're working on,

00:27:25 ◼   ► say, the current version of Swift 2.0 while it's not done yet.

00:27:30 ◼   ► And so it's--

00:27:32 ◼   ► I mean, while it's not even WWDC level done yet, right?

00:27:37 ◼   ► And they're working on the interfaces

00:27:41 ◼   ► in terms of our internal frameworks

00:27:42 ◼   ► that haven't been modernized for Swift.

00:27:45 ◼   ► And so it can be--

00:27:47 ◼   ► they get it rough.

00:27:48 ◼   ► They've got to really love it to make that leap,

00:27:51 ◼   ► because they're working on a very, very bleeding edge

00:27:54 ◼   ► environment when we use it internally. Thankfully with Swift 2.0 now well out the door,

00:28:01 ◼   ► that's stabilized things a good bit and they're really open to it. But there's been just a lot of

00:28:09 ◼   ► feedback and a lot of it has helped with the impedance, making sure the impedance between

00:28:16 ◼   ► Objective-C and Swift is absolutely minimized because of course we have and will continue to

00:28:21 ◼   ► to have and continue to continue writing more Objective-C code.

00:28:26 ◼   ► And so the ability of Swift and Objective-C code

00:28:31 ◼   ► to work together completely naturally is a huge focus.

00:28:35 ◼   ► And a bunch of things like generic collections,

00:28:39 ◼   ► support for lightweight generics in Objective-C

00:28:43 ◼   ► were a big pain point internally and something

00:28:46 ◼   ► that we fixed in the language and is now

00:28:48 ◼   ► great for all of our app developers externally.

00:28:52 ◼   ► So it's been a not dissimilar road for us internally

00:28:58 ◼   ► to what you see outside, but in terms of Swift

00:29:02 ◼   ► and writing big apps, it's certainly the case

00:29:05 ◼   ► that when Swift 1.0 came out, heck,

00:29:07 ◼   ► we didn't support incremental compilation

00:29:09 ◼   ► in the very first update, and so that was gonna be

00:29:12 ◼   ► a limiting factor for productivity

00:29:14 ◼   ► for people that had big apps.

00:29:17 ◼   ► a lot of that stuff has changed.

00:29:18 ◼   ► And then in 2.0, having a good error handling model,

00:29:22 ◼   ► having availability checks so you could span API versions,

00:29:26 ◼   ► these sorts of things,

00:29:28 ◼   ► I think have really addressed the vast majority

00:29:31 ◼   ► of the pain points that we were experiencing

00:29:34 ◼   ► that I think the community was experiencing

00:29:36 ◼   ► about writing larger apps.

00:29:37 ◼   ► And so much about Swift is actually inherently better

00:29:41 ◼   ► for building big apps because it makes it,

00:29:45 ◼   ► handles modules and namespaces

00:29:49 ◼   ► in a way more naturally than Objective-C. It makes the API contracts a little

00:29:54 ◼   ► more clear, the code more maintainable, so

00:29:57 ◼   ► we're very comfortable.

00:30:00 ◼   ► Objective-C's namespace management was more or less, "Let's just all agree

00:30:04 ◼   ► to put unique initials." Right?

00:30:07 ◼   ► Yeah, it's amazing it's taken us this far, but yes, yes, that has basically been the

00:30:12 ◼   ► answer.

00:30:12 ◼   ► So, yes, exactly. It is, you know, I don't think...

00:30:16 ◼   ► Maybe the bar wasn't that high, but we have vaulted over it.

00:30:21 ◼   ► How do you manage, as the chief mofo in charge of all this, how do you manage the enthusiasm that you clearly have for Swift?

00:30:30 ◼   ► And what to me seems like a sincere belief that Swift is the way forward with the necessary conservativeness that you need, you know,

00:30:39 ◼   ► you know, so that there still has to be a lot of objectives he written.

00:30:44 ◼   ► Like, how aggressive can you be about putting teams on,

00:30:47 ◼   ► "Sure, go ahead and do that in Swift."

00:30:49 ◼   ► You know, it's really, I mean, people here are idealistic yet really pragmatic,

00:30:55 ◼   ► and I think you see that as an Apple characteristic

00:30:59 ◼   ► in many, many elements of what we do.

00:31:03 ◼   ► And so, teams know with the nature of what we're trying to get done

00:31:08 ◼   ► in their area any given year, the nature of their code base, whether Swift is the right answer for

00:31:16 ◼   ► them or where it's the right answer. Even teams where, for one reason or the other, they can't

00:31:23 ◼   ► jump right on Objective-C, or rather, Objective-C conversion to Swift now, they then use Swift

00:31:30 ◼   ► heavily for writing all their unit tests, which is great because then, at least as they're introducing

00:31:36 ◼   ► new APIs, they're experiencing their own APIs in Swift and living on, you know, sort of eating

00:31:44 ◼   ► their own dog food in that regard. We do have some constraints internally which we're addressing,

00:31:49 ◼   ► but because we, I mean, it's a, maybe there's something in our closet a little bit, but we

00:31:56 ◼   ► still support running 32-bit apps on the Mac. And the 32-bit runtime doesn't actually support Swift

00:32:03 ◼   ► right now. And so what that means is if we've implemented a framework that's

00:32:09 ◼   ► available to 32-bit code, we actually can't write it in Swift. And if that code,

00:32:18 ◼   ► if that framework is used across iOS and OS X, as many of our frameworks are, that

00:32:23 ◼   ► introduces a little stumbling block as well. So you know, teams recognize what's

00:32:28 ◼   ► practical and what's not practical and find ways to use Swift wherever they can.

00:32:32 ◼   ► There's no shortage of enthusiasm.

00:32:35 ◼   ► I... this has been so geeky and so fun.

00:32:41 ◼   ► Sorry about that.

00:32:42 ◼   ► No! In the best possible way.

00:32:45 ◼   ► I really enjoyed... I loved... I saw you did a whole round of interviews last week and I read them all and I thought it was great.

00:32:51 ◼   ► And I didn't want to cover the same ground and I don't think we did.

00:32:54 ◼   ► I think this was... this is truly, truly eye-opening to me and I really...

00:32:57 ◼   ► I certainly appreciate your time,

00:32:59 ◼   ► but I really appreciate the openness that you've had here.

00:33:03 ◼   ► Is there anything else you wanna say

00:33:05 ◼   ► before we wrap up the segment?

00:33:06 ◼   ► Anything else you wanted to talk about with Swift?

00:33:08 ◼   ► - I just wanna say how, you know, to the world,

00:33:13 ◼   ► or at least the subset of the world

00:33:15 ◼   ► that listens to your podcast, which must be most of them,

00:33:17 ◼   ► that how proud I am of the team that's made Swift possible.

00:33:22 ◼   ► You know, I mean, of course there's Chris Latner,

00:33:24 ◼   ► but he's part of an incredible team

00:33:25 ◼   ► with folks like Ted Kremenek and Doug Gregor.

00:33:29 ◼   ► And even, you know, people, Swift is,

00:33:32 ◼   ► while we have our incredible compiler team,

00:33:35 ◼   ► we've also got people who have been writing deep frameworks

00:33:39 ◼   ► and apps within Apple for, in some cases,

00:33:44 ◼   ► since the beginning of Next Step.

00:33:46 ◼   ► I mean, people like Ali Ozer,

00:33:47 ◼   ► who you may know from his talks at WWDC,

00:33:51 ◼   ► has been so vital in shaping the language

00:33:54 ◼   ► and how the language fits our frameworks

00:33:56 ◼   ► and fits the needs of our developers.

00:33:57 ◼   ► And I'm just so thrilled with the work that all of them do

00:34:01 ◼   ► and the passion that they put into making Swift a success.

00:34:04 ◼   ► And I just wanna get that out there for everyone

00:34:06 ◼   ► 'cause we're, and there are hundreds more behind them.

00:34:11 ◼   ► It's been an incredible effort by our team.

00:34:13 ◼   ► - Would you agree with this?

00:34:17 ◼   ► I think that Apple is in a unique position to,

00:34:20 ◼   ► if Swift achieves what you guys have set out to do,

00:34:24 ◼   ► which is to make it like the default language

00:34:26 ◼   ► that people might learn to program on

00:34:28 ◼   ► for the next few decades,

00:34:30 ◼   ► Apple's in a unique position to make that happen

00:34:32 ◼   ► because you have these platforms, especially iOS,

00:34:36 ◼   ► but the Mac, the watch,

00:34:38 ◼   ► anything else that might be coming in the future,

00:34:40 ◼   ► or TV OS. - TV, let's not forget

00:34:41 ◼   ► about the TV.

00:34:42 ◼   ► - That are so popular and are such a draw

00:34:49 ◼   ► that they've made Objective-C,

00:34:52 ◼   ► like the second or third most popular programming language

00:34:55 ◼   ► on some of these, the lists of what books people buy,

00:34:58 ◼   ► which I think to someone like you,

00:34:59 ◼   ► who's been, started in the next days,

00:35:02 ◼   ► if you would have found out that in the year 2015,

00:35:05 ◼   ► Objective-C is the second most popular language,

00:35:07 ◼   ► you'd be like, what?

00:35:08 ◼   ► - I wouldn't have believed it.

00:35:09 ◼   ► - Right. - I would not have believed it.

00:35:11 ◼   ► - A language that there's some initial reluctance of people

00:35:13 ◼   ► to get on board with.

00:35:15 ◼   ► Now there's this language that is so approachable

00:35:19 ◼   ► and really almost has like at a syntax level,

00:35:22 ◼   ► you know, and when you're talking about

00:35:24 ◼   ► like hello world type stuff,

00:35:25 ◼   ► really almost looks like pure pseudo code.

00:35:28 ◼   ► - Yeah.

00:35:29 ◼   ► - That Apple is in a unique position

00:35:30 ◼   ► where the draw is there with the platforms

00:35:34 ◼   ► to really, really make this explode in popularity.

00:35:37 ◼   ► - Yeah, I mean, I couldn't say it any better.

00:35:42 ◼   ► I think we, when we created Swift,

00:35:46 ◼   ► we, while we wanted it, of course, to be a great language,

00:35:50 ◼   ► we also, from the outset, wanted it to be a great language

00:35:53 ◼   ► for our platforms and the fact that it,

00:35:57 ◼   ► and embody the lessons that we learned from creating

00:36:02 ◼   ► so many deep frameworks and great apps over so many years.

00:36:06 ◼   ► And what that's meant is on day one,

00:36:09 ◼   ► Swift was, it wasn't a restart for the community.

00:36:13 ◼   ► It wasn't a, hey, well, let me learn

00:36:15 ◼   ► whole new set of frameworks, let me wait for Apple to create a whole new set of frameworks.

00:36:19 ◼   ► Swift has been this automatic transition for people who wanted to, maybe who were new to

00:36:24 ◼   ► our platform and wanted to get started.

00:36:26 ◼   ► The whole world was open to them on our platform there, and I think that's been so huge to

00:36:30 ◼   ► driving the energy around it.

00:36:33 ◼   ► And then others have been drawn in just by the greatness of Swift as it is.

00:36:36 ◼   ► I mean, it's amazing, these Swift language conferences where people talking about different

00:36:41 ◼   ► functional programming paradigms and Swift and all these different things you can do

00:36:44 ◼   ► with the language just based on what an amazing new language it is. So you bring those two

00:36:48 ◼   ► communities together and it's magic right now.

00:36:54 ◼   ► Thank you so much, Craig. I really appreciate the time.

00:36:58 ◼   ► Yeah, thank you, Jon. It's an honor to speak with you. So thank you so much.

00:37:03 ◼   ► Where's Craig? Did I miss him?

00:37:09 ◼   ► You know what, since that ran as the first segment,

00:37:12 ◼   ► I might as well just jump right into a sponsor read,

00:37:15 ◼   ► which I was definitely not going to do in the middle of talking

00:37:19 ◼   ► to Craig Federighi.

00:37:21 ◼   ► He totally should have.

00:37:22 ◼   ► He would have just sat there patiently.

00:37:25 ◼   ► I feel like I could have done anything.

00:37:27 ◼   ► He was incredibly gracious.

00:37:29 ◼   ► He was absolutely-- I mean, I expected him to be nice,

00:37:31 ◼   ► but he's very nice.

00:37:36 ◼   ► Let me tell you about our good friends at Casper.

00:37:39 ◼   ► You guys know Casper.

00:37:40 ◼   ► They're the company whose URL I frequently get wrong and I won't today.

00:37:45 ◼   ► These guys make obsessively engineered mattresses

00:37:49 ◼   ► and they sell them at incredibly fair prices.

00:37:51 ◼   ► Just the right sink, just the right bounce.

00:37:54 ◼   ► You don't have to sit there and go through their website

00:37:55 ◼   ► and pick three different types of mattresses.

00:37:59 ◼   ► Do you want springs? Do you want memory foam?

00:38:01 ◼   ► Do you want latex foam?

00:38:03 ◼   ► Now, these guys are mattress experts.

00:38:05 ◼   ► They're like the apple of mattresses where they figured it out themselves and they sell one type of mattress. It's their own custom

00:38:11 ◼   ► Blend of latex foam and memory foam that has just the right sink just the right bounce

00:38:15 ◼   ► So you don't door about that all you do is pick what size

00:38:19 ◼   ► What size you want you want do you want to do what you want?

00:38:22 ◼   ► You want a queen size you want king size you want a twin size?

00:38:25 ◼   ► Whatever you need as you do you go to the website you order it

00:38:28 ◼   ► comes to your house in a little box put it in a room where you want it you open it up and it makes a

00:38:33 ◼   ► noise and it just soaks up the air and there it is. Now you say I don't want to

00:38:37 ◼   ► buy a mattress without trying it. It's risk-free. You get a hundred days to try

00:38:42 ◼   ► sleeping on this on your actual bed in your actual house. A hundred days and if

00:38:46 ◼   ► you don't like it it's painless return. You just go to their website tell them

00:38:50 ◼   ► you want to send it back. They'll take care of it. They'll send somebody

00:38:53 ◼   ► to your house and get this mattress out of your house. It couldn't be easier.

00:38:57 ◼   ► There's no hard sell if you decide to send it back. Could not be easier.

00:39:01 ◼   ► Mattresses, they're made in America and the prices are unbelievable. 500 bucks for a twin size

00:39:06 ◼   ► mattress up to $950 for a king size mattress. If you've shopped for a premium king size mattress

00:39:11 ◼   ► in the last few years, you know how great a price point that is. I think it's fair to say that that's

00:39:16 ◼   ► about half the price that you would pay for a premium mattress at like a retail mattress store.

00:39:22 ◼   ► So really, really great. Could not be easier. You don't have to go to the store. You don't have to

00:39:26 ◼   ► get this mattress home. You don't have to wait. It couldn't be easier. Where do you go to find out

00:39:31 ◼   ► more and let me get this right. Casper.com/talkshow. Casper.com/talkshow.

00:39:38 ◼   ► If you want to get a mattress and talk about great holiday gift ideas, boy, buying

00:39:42 ◼   ► somebody a mattress is about as good as it gets. Put one under the Christmas tree.

00:39:46 ◼   ► Use that URL and you will save 50 bucks off any of those prices I just told you about.

00:39:51 ◼   ► So go get your kids new mattresses for Christmas at Casper.com.

00:39:58 ◼   ► So here's the deal.

00:39:59 ◼   ► So people are probably wondering,

00:40:00 ◼   ► how did Craig Federighi end up on the talk show?

00:40:04 ◼   ► And what happened was Apple got in touch with me

00:40:07 ◼   ► when they started doing the--

00:40:08 ◼   ► I guess it was a couple of days, actually,

00:40:12 ◼   ► before Swift, the open source thing, was actually announced.

00:40:15 ◼   ► And when they started reaching out to the press,

00:40:18 ◼   ► they asked whether I'd be interested in having

00:40:20 ◼   ► him on the podcast.

00:40:21 ◼   ► And I was like, yeah.

00:40:24 ◼   ► You should have said, let me check.

00:40:25 ◼   ► Let me check my schedule.

00:40:27 ◼   ► "No, Moltz might be on that weekend. I can't bump him."

00:40:30 ◼   ► I was like, "Hell yeah." No real ground rules. It was very similar to when Phil Schuler

00:40:39 ◼   ► was on the live show back at WWDC. It wasn't like they wanted questions in advance or anything

00:40:44 ◼   ► like that. Their only request was that it be limited to somewhere around 20 minutes.

00:40:50 ◼   ► So I think the fact that we went about 30 or 35 minutes was probably pretty good for

00:40:54 ◼   ► me.

00:40:55 ◼   ► multiplier is acceptable in their time limits.

00:40:59 ◼   ► Well, I was absolutely watching the clock while we talked, and it felt like when we were rolling up around 20,

00:41:04 ◼   ► it really felt like he was having a good time. He was very comfortable. And I think that was definitely, you know,

00:41:09 ◼   ► Apple PR's concern would be, you know, they want to limit his exposure in case it was not comfortable,

00:41:15 ◼   ► which I think is reasonable.

00:41:19 ◼   ► Yeah, I wonder if they would have cut you off. Like, not that you want to run that experiment, but they actually said,

00:41:24 ◼   ► "Do you know we gotta wrap this up?" or "No more questions."

00:41:28 ◼   ► Probably, because Bill Evans from Apple PR was listening in.

00:41:33 ◼   ► He was there. So I would suspect that if I went nuts and just kept him hanging,

00:41:38 ◼   ► he probably would have texted me or something like that.

00:41:40 ◼   ► It was like, "Hey, come on." It would have been friendly.

00:41:44 ◼   ► Yeah, we're just talking about open sourcing Swift. I don't know how bad it could get, right?

00:41:48 ◼   ► You're just talking about programming, right? A couple of nerds having a conversation.

00:41:52 ◼   ► Yeah. Well, I'll tell you, I would love to hear your thoughts on the interview,

00:41:56 ◼   ► because, and this is really, you know, I'm telling you right now, you were my,

00:42:00 ◼   ► is this the right term? You were my spirit animal going into the interview.

00:42:03 ◼   ► I thought, okay, I've only got 20 or 30 minutes. In my mind, if I,

00:42:08 ◼   ► if I can make Syracuse a half happy with this interview,

00:42:11 ◼   ► then I'll consider my job well done.

00:42:13 ◼   ► That type of interview was tough, I think, because,

00:42:17 ◼   ► so you've got Craig making the rounds to the tech press to talk about open

00:42:20 ◼   ► sourcing Swift, you know, essentially what his job is

00:42:24 ◼   ► doing that press tour to it's to tell everyone how great it is that

00:42:29 ◼   ► Apple is doing this thing, right?

00:42:31 ◼   ► Well, twofold. I would say twofold.

00:42:33 ◼   ► First, it's to tell everybody how great Swift is.

00:42:35 ◼   ► And then second is how great it is that they're making it open source.

00:42:39 ◼   ► Right. But like his job on that press store is not to do what I think

00:42:44 ◼   ► a lot of people might want out of an interview,

00:42:47 ◼   ► whether it be podcast or text, which is especially programmers,

00:42:51 ◼   ► and especially the direction that you took your interview with Greg,

00:42:54 ◼   ► getting more technical and everything, is people want to have,

00:42:57 ◼   ► not in a mean way, but in a sort of Usenet, old-style way,

00:43:01 ◼   ► an argument about programming with a guy who is in charge

00:43:05 ◼   ► of a really big platform that a lot of people program for.

00:43:08 ◼   ► Like, it's not like a mean one, but you want to debate whether...

00:43:12 ◼   ► I don't know what you want to... You just want to talk to the guy who's in charge.

00:43:15 ◼   ► now finally I get to sort of, you know, complain about square brackets or tabs versus spaces

00:43:21 ◼   ► or my pet peeve in Swift or the App Store or whatever, you know what I mean? Like, and

00:43:27 ◼   ► I think that's more pronounced with Apple people because Apple has in the past tended

00:43:31 ◼   ► not to make the important decision makers, especially the important technical people,

00:43:37 ◼   ► available to the public in any way. So there was no other venue for you to, you know, air

00:43:44 ◼   ► your grievances, it's like you got to talk to the people who were the most polished and

00:43:47 ◼   ► the highest level and if your concern was about some minor feature of some framework

00:43:53 ◼   ► or ADPI and you couldn't corner someone in a hallway, WWDC, there was no venue for that,

00:43:58 ◼   ► so I think, I mean that's changing now as you discussed in the interview, but a lot

00:44:03 ◼   ► of people might go into this thinking that they're going to hear, like they want it to

00:44:07 ◼   ► be more adversarial, but like it's, A, I think it's impossible to be adversarial with Craig

00:44:11 ◼   ► because he's the nicest person in the universe, and if he ever yells at people in meetings,

00:44:15 ◼   ► you would never know it from seeing anything he does in public. He seems just like a super

00:44:20 ◼   ► nice guy, enthusiastic and upbeat and positive all the time, so you're not going to have

00:44:24 ◼   ► that with him. And B, that's not the purpose of the press tour, so it's a waste of time

00:44:27 ◼   ► for you to do that. You should use that time much more valuably to engage in interesting

00:44:33 ◼   ► conversation that's still on topic, and I think you did that.

00:44:36 ◼   ► Yeah, it's the same way I approached the interview with Schiller, where it's... there were definitely

00:44:39 ◼   ► questions that in theory I would like to ask, like if I could get them on the stand under

00:44:44 ◼   ► oath and make them answer questions, there are very interesting questions that I would like to ask

00:44:49 ◼   ► that if I did ask and they weren't under oath that I don't think they would answer and I don't want

00:44:54 ◼   ► to waste time on questions that they're not going to answer. So for example, I'm not going to try to

00:44:59 ◼   ► pick Federighi's mind about, you know, whether they need a new kernel to have like a real-time

00:45:06 ◼   ► operating system for the car. Because it's not going to be a

00:45:10 ◼   ► fruitful afternoon of conversation. Exactly. And in

00:45:14 ◼   ► addition to the fact that he obviously isn't going to answer

00:45:17 ◼   ► that, and he can't talk about it. And even if I wanted to get

00:45:21 ◼   ► cute and say, you know, theoretically, of course, you

00:45:24 ◼   ► know, but you know, that there's these real time considerations

00:45:27 ◼   ► for something like a car that you don't have with these

00:45:29 ◼   ► consumer devices like phones and blah, blah, blah, he's not going

00:45:32 ◼   ► to get into it. And the second thing in addition to wasting

00:45:34 ◼   ► precious time is I feel like asking questions like that would immediately raise their shields.

00:45:39 ◼   ► Like, wow, he just asked a stupid question that I can't answer. Now I've got to be careful that I

00:45:43 ◼   ► that he's not going to, you know, I want them to feel like, hey, this is going well. And it's

00:45:48 ◼   ► they're not necessarily softball questions, but that they're questions that are the sort of thing

00:45:53 ◼   ► I was hoping to talk about. Yeah. And the thing is in this in this particular realm, specifically

00:45:57 ◼   ► in the open source effort, we've seen through their actions that they are being much more open

00:46:02 ◼   ► with Swift and the open source effort than they have ever been before in terms of

00:46:06 ◼   ► telling you what they're going to do in the future and having public roadmaps and doing development

00:46:10 ◼   ► in the open. You kind of brought this up in the interview with like how Swift's development is

00:46:15 ◼   ► out in the open and Craig said how LLVM was and everything, but the contrast that you could have,

00:46:20 ◼   ► you know, maybe this would have put them on the defensive, is the contrast is something like

00:46:23 ◼   ► the Darwin open source releases. Darwin has been open source from the beginning, but it just hasn't

00:46:28 ◼   ► been developed in the same way and maybe it can't be for a variety of reasons because there's just

00:46:31 ◼   ► too much proprietary stuff revealing their plans for, you know, whatever devices and

00:46:36 ◼   ► stuff they're going to make in the future. But they're so much more open, and he was

00:46:42 ◼   ► more open here saying, "Oh yeah, we're going to add these features, and this is what we're

00:46:45 ◼   ► going to, you know, we're going to have more things like this by the time WWDC rolls around."

00:46:49 ◼   ► When has any Apple -- they wouldn't even tell you if they're going to have a new battery

00:46:54 ◼   ► charger in time. You know, they could tell you anything about the future. Not that he

00:46:58 ◼   ► he was promising specific things, which sort of,

00:47:00 ◼   ► in the vague sort of, this is kind of what we're thinking,

00:47:03 ◼   ► kind of what we're planning,

00:47:04 ◼   ► because I think it's understood,

00:47:05 ◼   ► especially within the realm of this open source thing.

00:47:07 ◼   ► It's like, you can see it happening.

00:47:08 ◼   ► Like if it's not available at WWDC, it won't be a mystery.

00:47:11 ◼   ► Why?

00:47:12 ◼   ► You'll see every single check-in,

00:47:13 ◼   ► every single debate on the mailing list.

00:47:14 ◼   ► And when WWDC comes around, it'll either be readier, it won't.

00:47:17 ◼   ► And when everyone can see that,

00:47:19 ◼   ► no one's gonna be like, you promised this thing by WWDC

00:47:22 ◼   ► and we still can't do it.

00:47:23 ◼   ► Why are you, you know, it's like,

00:47:24 ◼   ► we'll just look at the mailing list,

00:47:25 ◼   ► look at the source code.

00:47:27 ◼   ► it didn't get done or there was debate about how it should be done or whatever.

00:47:31 ◼   ► So having that stuff in the open just makes it so much easier to have those

00:47:35 ◼   ► conversations that there are no gotchas. It's like just you can watch it happening.

00:47:39 ◼   ► It's not magic. Right. It's not like, OK, it's

00:47:43 ◼   ► early December, as promised before the end of the year, we've made this thing open

00:47:47 ◼   ► source. Here's the zip file with all the source.

00:47:50 ◼   ► And there's an Apache or whatever.

00:47:52 ◼   ► I've whatever license. What are they licensed to be using?

00:47:54 ◼   ► I think Apache 2.0.

00:47:56 ◼   ► They're using it, you know, it's got an open source license to have at it.

00:48:00 ◼   ► And here's where we plan to, here's our roadmap for the first Swift 3.0.

00:48:03 ◼   ► And then they go into radio silence.

00:48:05 ◼   ► And then early June at WWDC, we find out whether that matched or not.

00:48:10 ◼   ► Like you said, from the point from here to there every single day,

00:48:13 ◼   ► there are going to be these debates.

00:48:14 ◼   ► I mean, to me, I mentioned it in the interview that the Swift evolution

00:48:18 ◼   ► mailing list is remarkable because you really have to like,

00:48:22 ◼   ► look at the email addresses to see who's from Apple and who's not,

00:48:25 ◼   ► because there's really serious and very thoughtful proposals coming from outside Apple.

00:48:31 ◼   ► And it's very clear that people inside Apple are giving them their full consideration.

00:48:36 ◼   ► It is truly a collaborative relationship, right?

00:48:40 ◼   ► You know, eight days into it.

00:48:42 ◼   ► Yeah, definitely.

00:48:43 ◼   ► I'm assuming it will calm down a little bit.

00:48:46 ◼   ► The volume has been tremendous.

00:48:47 ◼   ► I had to switch to the digest form of that mailing list because it was just filling my,

00:48:51 ◼   ► you know, email in by even though I'm filtering into a folder, it was just too many emails

00:48:54 ◼   ► in a day.

00:48:55 ◼   ► tried taking the digest version of it.

00:48:57 ◼   ► But I'm assuming the traffic will die down a little bit.

00:48:59 ◼   ► But you're right.

00:49:00 ◼   ► It used to-- the old model with the open source,

00:49:03 ◼   ► Darwin was the big one where they gave you a big dump.

00:49:05 ◼   ► And then I don't know how many people even contributed

00:49:08 ◼   ► or even could contribute.

00:49:10 ◼   ► And then you wouldn't see anything from them

00:49:12 ◼   ► until the next major version.

00:49:14 ◼   ► I think just the other day, they finally

00:49:15 ◼   ► put out the El Capitan version of the Darwin open source

00:49:19 ◼   ► stuff.

00:49:19 ◼   ► And so if they'd come out with this big source dump,

00:49:21 ◼   ► even if they had been accepting feedback,

00:49:24 ◼   ► If you didn't see anything from Apple until WWDC, it would just be like

00:49:28 ◼   ► like a typical write-only sort of black hole for information.

00:49:32 ◼   ► Like they'd have discussions with you and you could say things, but you never knew what Apple's going to do.

00:49:35 ◼   ► You just have to sit around and wait and wait and wait.

00:49:37 ◼   ► And then at June, there'd be a bunch of slides and people would applaud or not.

00:49:40 ◼   ► Here, it all happens in real time in front of you.

00:49:43 ◼   ► I guess the open question is still how often do the people at Apple

00:49:48 ◼   ► push their changes back up to the repository? How much development?

00:49:51 ◼   ► But that's true of any open source thing.

00:49:52 ◼   ► you can have your local clone of repository

00:49:55 ◼   ► and do a bunch of changes to it

00:49:56 ◼   ► and not push them back up to the main repository

00:49:59 ◼   ► for a while.

00:50:00 ◼   ► To some degree, there has to be development going on

00:50:04 ◼   ► in Apple that doesn't immediately get pushed out

00:50:08 ◼   ► to the public.

00:50:09 ◼   ► I mean, I don't know if there's a vetting process involved

00:50:11 ◼   ► in that or just the internal coordination of deciding

00:50:15 ◼   ► in their particular, what they're going to do

00:50:17 ◼   ► versus what the community is doing.

00:50:20 ◼   ► I'm sure they'll navigate it just fine,

00:50:21 ◼   ► but it's just like any other open source thing.

00:50:24 ◼   ► If there does come a point where the community

00:50:26 ◼   ► wants to pull Swift heavily in one direction

00:50:28 ◼   ► and Apple wants to pull it at another,

00:50:29 ◼   ► you could end up with a fork,

00:50:30 ◼   ► but we're so far from that now.

00:50:31 ◼   ► Now everyone is kumbaya

00:50:33 ◼   ► and everyone's excited to be working on Swift

00:50:35 ◼   ► and Swift is this one thing

00:50:36 ◼   ► and Apple is clearly in the driver's seat

00:50:38 ◼   ► having invented it and having the platform

00:50:39 ◼   ► where it's most useful.

00:50:40 ◼   ► So I think things will be smooth sailing,

00:50:43 ◼   ► as smooth as they can be in open source

00:50:45 ◼   ► for the foreseeable future.

00:50:46 ◼   ► - Yeah, and I think it must help

00:50:51 ◼   ► in a certain degree that just about every programming language I know of,

00:50:56 ◼   ► and certainly all the ones people are passionate about,

00:50:58 ◼   ► have somebody who was the dictator in charge,

00:51:03 ◼   ► who invented it and infused it with their personal,

00:51:08 ◼   ► "Here's what I think this programming language should be like."

00:51:11 ◼   ► All the great programming languages to me,

00:51:13 ◼   ► I think have this opinionated root or origin.

00:51:18 ◼   ► And Chris Latner is obviously that individual with Swift.

00:51:22 ◼   ► And I think it's very clear, both publicly and from what

00:51:26 ◼   ► I've heard privately, that what has happened

00:51:29 ◼   ► was always his intention, that it would go open source.

00:51:31 ◼   ► And it's not like it took this long because there

00:51:34 ◼   ► was a debate internally.

00:51:35 ◼   ► It really was what Craig said in the interview, which

00:51:38 ◼   ► was, didn't make sense to go open source right out

00:51:40 ◼   ► of the bat.

00:51:42 ◼   ► It's still too liquid.

00:51:43 ◼   ► Wait till it solidifies a little bit.

00:51:45 ◼   ► And then at that point, it was just not a matter of if,

00:51:47 ◼   ► but when I think was his exact words.

00:51:49 ◼   ► And I think it really helps that Latner was on board

00:51:52 ◼   ► with that from the beginning in terms of wanting

00:51:55 ◼   ► to have this sort of, it's not like somebody else

00:51:58 ◼   ► at Apple is forcing him and his team to participate in this.

00:52:02 ◼   ► - Well, the unspoken part of that is like,

00:52:05 ◼   ► all right, so it didn't make sense to go

00:52:07 ◼   ► because 2.0 was too new.

00:52:09 ◼   ► Why would it be bad?

00:52:11 ◼   ► Obviously pre-1.0 is like, you have a secret

00:52:14 ◼   ► and in the typical Apple, I'm keeping a secret

00:52:16 ◼   ► and so I can come to W3C and say,

00:52:17 ◼   ► we have a new programming language. So pre 1.0, you can, or you know, pre-announcement,

00:52:21 ◼   ► you can say that's the reason it's not open source, because it was a secret, and we didn't

00:52:24 ◼   ► even know if we could do it, and we had to decide internally, and so that makes sense.

00:52:28 ◼   ► Once everybody knows Swift is a thing, why is it not open source at that point? And it's

00:52:32 ◼   ► like, oh, it's too new, we're not ready, we really need to work it out. Why do you need

00:52:35 ◼   ► to work it out? Why can't you work it out when it's in the open? Why does it have to

00:52:39 ◼   ► be closed source while you're working these things out? And I would say that Swift right

00:52:42 ◼   ► now is still, by the standards of most other mature programming languages, still heavily

00:52:46 ◼   ► in flux. I mean, for crying out loud, they're ripping out plus plus and minus minus at this

00:52:50 ◼   ► point and thinking about what they're going to do with like, you know, people are proposing

00:52:54 ◼   ► new keywords like this is incredibly liquid. So why? Why was it closed source between the

00:53:00 ◼   ► announcement and now? And the answers that are pretty obvious, like they don't think

00:53:04 ◼   ► they need to say them because people basically know supporting an open source project has

00:53:08 ◼   ► overhead, right? Like you can work, you can go much faster when you don't have to worry

00:53:11 ◼   ► about other people's input. That sounds bad. And it's like, oh, you're being like, there

00:53:15 ◼   ► is a lot of overhead, especially for a company like Apple, in terms of intellectual property

00:53:21 ◼   ► and making sure this is dividing the line between what's open and what's not.

00:53:25 ◼   ► It's a lot of work to do all the things that are required to be a good maintainer of an

00:53:30 ◼   ► open source project.

00:53:31 ◼   ► And they just, you know, it would have made them go slower, right?

00:53:35 ◼   ► So now they're at the point where the trade-off is worth it, that they're okay with going

00:53:41 ◼   ► a little bit slower.

00:53:42 ◼   ► Of course, the input is a little bit more valuable because in that beginning part, so

00:53:46 ◼   ► much basic stuff didn't work.

00:53:48 ◼   ► Craig mentioned that you have incremental compilation.

00:53:50 ◼   ► It was like you just want it to hold together.

00:53:54 ◼   ► Is this feasible at all?

00:53:56 ◼   ► Can we ship something?

00:53:57 ◼   ► Can we get it working enough in Xcode so the playgrounds don't crash all the time?

00:54:03 ◼   ► That's basically, I would assume, the answer that wasn't given there is that it's not like

00:54:07 ◼   ► they...

00:54:08 ◼   ► And of course, the internal debate, which is not going to tell you about the details

00:54:10 ◼   ► of the internal debate. But yeah, you can go much faster when you don't have to worry about

00:54:16 ◼   ► the outside world's opinions or input and you don't have to support them and you don't have to

00:54:19 ◼   ► maintain a source repository with clean source code and a mailing list and all the other things

00:54:25 ◼   ► that go with that. Yeah, I think it is sort of a one, two, like a two-step process. Like,

00:54:35 ◼   ► first step was Swift 1.0. This is good enough to show you guys and let you guys start playing

00:54:40 ◼   ► with even though, let's face it, you can't start working with it yet.

00:54:43 ◼   ► We'll get it into a shape where it's, you know, you can start using it.

00:54:48 ◼   ► And I've been asking around and I do, there are, you know, it's not just in Apple, there

00:54:51 ◼   ► are, you know, real developers at real, you know, apps that, you know, people out there,

00:54:56 ◼   ► you know, top apps, to borrow a phrase from Raiders of the Lost Ark.

00:55:01 ◼   ► There are top apps that have new parts of it, you know, maybe not entirely written in

00:55:05 ◼   ► Swift.

00:55:06 ◼   ► That's probably still very rare.

00:55:07 ◼   ► New features are being written in Swift in real apps

00:55:10 ◼   ► that you're using today.

00:55:12 ◼   ► But I think stage two is this is where, I think,

00:55:15 ◼   ► Latner and his team think.

00:55:16 ◼   ► We had this vision for what we would start with,

00:55:20 ◼   ► and we're not there yet.

00:55:21 ◼   ► And this is the point where the fundamental aspects

00:55:25 ◼   ► of the language, we're settled on now.

00:55:27 ◼   ► And now we're willing to start listening to how we can make

00:55:29 ◼   ► it better to suit your needs.

00:55:32 ◼   ► Yeah.

00:55:34 ◼   ► Like I said, I think the language is just so young

00:55:37 ◼   ► in the grand scheme of things.

00:55:40 ◼   ► If you want to do a human analogy,

00:55:44 ◼   ► maybe it can sit up now.

00:55:47 ◼   ► It doesn't need to be held in one of those big tube things.

00:55:49 ◼   ► It can sit up.

00:55:50 ◼   ► Occasionally, it toddles over.

00:55:51 ◼   ► It falls over a little bit.

00:55:52 ◼   ► It can sit up.

00:55:53 ◼   ► But this is the best and the worst part,

00:55:58 ◼   ► because it's kind of like there's so much potential.

00:56:02 ◼   ► But Craig talked about Swift 3.0 and how they're really working on getting the ABI nailed down and everything.

00:56:08 ◼   ► And that's just got to be terrifying because you know the standards of binary compatibility that Apple aspires to.

00:56:14 ◼   ► Like with Objective-C, I think Marco has brought this up in ATP View Times, like you could have built an iPhone app for the original iPhone.

00:56:21 ◼   ► And in theory, if you stayed to, you know, still well supported APIs, that binary would still run.

00:56:28 ◼   ► They don't... Apple is not in the habit of breaking backward compatibility for binary libraries and everything that frequently,

00:56:36 ◼   ► which is surprising for a company that is so gung-ho about

00:56:39 ◼   ► moving on from the past in hardware design and software design. They're really good about that.

00:56:43 ◼   ► So nailing that stuff down like that, like 3.0 is not that far away, and it's like,

00:56:47 ◼   ► boy, you really only get one shot at doing this right, because there's not gonna be another

00:56:52 ◼   ► 64 to 30... 32 to 64-bit transition for them to use to paper over like they did with like, you know,

00:56:57 ◼   ► the Objective-C stuff where they're like, "Well, when we're going 32-64, it's going to break

00:57:01 ◼   ► anything anyway, so now is our chance to do something a little bit differently." There's

00:57:04 ◼   ► not going to be a 64-128 transition in the foreseeable future, so they really have to

00:57:09 ◼   ► get their ABI something that doesn't have some terrible mistake that ties their hands in the

00:57:14 ◼   ► future, and that is supportable for literally decades. Right, or maybe now if it's not a

00:57:19 ◼   ► mistake, it's like not like missing some sort of thing that everybody thinks is okay today, but

00:57:26 ◼   ► five, six, seven years ago from now, everybody thinks, oh, man, that's it would be so great

00:57:30 ◼   ► if we didn't have that, if we weren't stuck with that decision.

00:57:33 ◼   ► Or there's going to be some language feature that is much more difficult to support with the

00:57:37 ◼   ► ABI as it's designed. Or, you know, I'm even just going to say, oh, well, it doesn't, you know,

00:57:40 ◼   ► the way quantum computers work in 50 years is different than that. But even just like

00:57:44 ◼   ► you decide there's a particular language feature that they're like, we don't have time for it.

00:57:48 ◼   ► Concurrency is a great example in the Swift 3.0, like Swift evolution mailing list and roadmap or

00:57:53 ◼   ► or whatever, they're like language level concurrency,

00:57:57 ◼   ► it's not planned for 3.0, we don't have time for it,

00:57:59 ◼   ► it's too big a feature,

00:58:00 ◼   ► if we're gonna save that as post 3.0.

00:58:01 ◼   ► But they're gonna have the ABI nailed down.

00:58:03 ◼   ► So I really hope there's nothing about,

00:58:06 ◼   ► you know, language level concurrency features

00:58:09 ◼   ► that would be easier to do with a different API.

00:58:11 ◼   ► Not that it's gonna preclude them doing this,

00:58:13 ◼   ► and I'm assuming like based on past experience

00:58:16 ◼   ► that they're looking for an ABI

00:58:18 ◼   ► that were really, really solid,

00:58:19 ◼   ► but thus far everything until now has been communication

00:58:23 ◼   ► from Apple about Swift to Zoom, we're going to break your crap all the time.

00:58:26 ◼   ► We are not maintaining source compatibility.

00:58:28 ◼   ► We're adding keywords, we're removing things, we're changing how operators work.

00:58:33 ◼   ► And their solution to this has been like, we're going to use Xcode

00:58:36 ◼   ► to translate your old code to your new code for you,

00:58:38 ◼   ► but we're not going to support your old code.

00:58:40 ◼   ► Like, just forget it, because they don't want to be held back by the past.

00:58:44 ◼   ► It's kind of the nightmare of, you know, come out with a language

00:58:48 ◼   ► and then let literally thousands of developers start writing real applications

00:58:52 ◼   ► with it and shipping them to customers, and then be like, "Oh my god, we can never

00:58:56 ◼   ► change this part of the language because so many people have all this code out there.

00:59:00 ◼   ► We set it out to loosen the world.

00:59:03 ◼   ► Now we can never take away plus plus and minus minus.

00:59:04 ◼   ► It'll break everyone's apps."

00:59:05 ◼   ► And Apple's like, "No, we reserve the right to change how this language looks on the page

00:59:11 ◼   ► to make your source code that you think is perfectly good syntactically invalid so it

00:59:15 ◼   ► won't even compile.

00:59:16 ◼   ► And the way we're going to manage that is by giving you tools to translate your source

00:59:19 ◼   ► code."

00:59:20 ◼   ► That's one of my favorite changes in the,

00:59:23 ◼   ► I guess it's the, it just came out in the Swift evolution

00:59:26 ◼   ► or maybe the new version of Swift that they released

00:59:28 ◼   ► as they open sourced it, where they got rid of these

00:59:30 ◼   ► plus plus and minus minus operators.

00:59:32 ◼   ► And again, just to take a big step back,

00:59:36 ◼   ► and I read the interviews that Federighi did

00:59:37 ◼   ► with like Mashable and a few other outlets last week.

00:59:41 ◼   ► I was half happy and half worried,

00:59:43 ◼   ► 'cause I was happy because his interviews

00:59:45 ◼   ► with like Ars Technica and Mashable covered the basics

00:59:50 ◼   ► know, and it was like a foundation of what Apple's official stance was towards this open sourcing of

00:59:54 ◼   ► Swift. And I thought that means I don't have to waste time talking about those things with him,

00:59:58 ◼   ► and we can go deeper. But then I thought, what if that's all he wants to talk about is this,

01:00:02 ◼   ► he doesn't want to get nerdy at all. And I was like, because I kind of want some of this stuff

01:00:05 ◼   ► to be a little technical. But then the way the interview went, absolutely no problem getting

01:00:11 ◼   ► them to go technical. I just worry now that maybe it's a little bit over, over people's heads for

01:00:16 ◼   ► everybody who listens to the show. And so just here's one example I don't want to over explain,

01:00:21 ◼   ► but the plus plus minus minus operators are one that's very easy for even a non-programmer to

01:00:25 ◼   ► understand. And in every language, geez, I know since C you've been able to take a variable. Let's

01:00:32 ◼   ► say the variable is x and if x is an integer and it's currently equal to four, if you write in your

01:00:38 ◼   ► source code x++, that turns the variable to 5. It just adds 1 to the

01:00:45 ◼   ► variable. And I've never really given a lot of thought to it, but like it seems

01:00:50 ◼   ► like every language, just about every C-style syntax language since has taken

01:00:56 ◼   ► that and kept it. And Swift had it, and then in the where we're going it was

01:01:01 ◼   ► like we're gonna get rid of it, and here's why. And I thought the explanation

01:01:05 ◼   ► for Y was terrifically cogent.

01:01:07 ◼   ► You know, it was like, yeah, that's sort of like unreadable.

01:01:11 ◼   ► And it'd be a lot easier if you just set X plus equals one,

01:01:16 ◼   ► so that you know it's adding one to it.

01:01:18 ◼   ► - So there's the nuance of post decrement and pre decrement

01:01:22 ◼   ► where you can have plus plus X versus X plus plus,

01:01:25 ◼   ► which means different things

01:01:25 ◼   ► in a lot of different languages, including C.

01:01:27 ◼   ► Python, by the way, doesn't have plus plus or minus minus.

01:01:30 ◼   ► And this is a great example of a language feature

01:01:34 ◼   ► that they're changing based on a proposal for essentially cultural reasons, cultural and like human factors reasons.

01:01:42 ◼   ► Not technical, not like performance or interoperability with Objective-C, or the ability to do something that you previously couldn't do.

01:01:51 ◼   ► This is purely, it's user interface for programming languages essentially.

01:01:55 ◼   ► Does this construct cause more problems than it solves?

01:02:01 ◼   ► How much longer is plus equals one versus plus plus?

01:02:04 ◼   ► Pre and post, it's really easy to get rid of that because that is very confusing.

01:02:08 ◼   ► But, you're like, well, plus plus and minus minus are just, you know, so common, as you noted,

01:02:14 ◼   ► in so many other languages, wouldn't we keep that just because it's an idiom that people are familiar with?

01:02:18 ◼   ► And then the debate, if you can look through this in the manual, it's just like, well,

01:02:21 ◼   ► in what context do you find yourself wanting to do that?

01:02:24 ◼   ► Well, when I do a for loop and I say, you know, i equals zero, i less than whatever, i plus plus,

01:02:28 ◼   ► And then the Swift answer is, well, we don't want people doing those kind of loops.

01:02:32 ◼   ► We want to have a way to iterate over collections more naturally.

01:02:35 ◼   ► So if we say you don't have to do a classic style for loop,

01:02:38 ◼   ► when do you think you're going to use the plus plus?

01:02:42 ◼   ► You know, and so that's how this debate goes.

01:02:44 ◼   ► And this is the level they're talking about.

01:02:46 ◼   ► That's why I say this is the little baby that can barely sit up at this point,

01:02:49 ◼   ► because they're still considering fundamental things

01:02:51 ◼   ► like how many fingers should this baby have, right?

01:02:54 ◼   ► And, you know, is it going to be a biped, right?

01:02:56 ◼   ► Or should it have fur or not?

01:02:57 ◼   ► Like, that's the level they're debating at this point,

01:03:01 ◼   ► and I think it's wonderful because the worst thing in the world

01:03:04 ◼   ► that can happen is for the very early decisions made

01:03:07 ◼   ► by a very small group of people not exposed to the wider world

01:03:10 ◼   ► to become cemented and become unchangeable and to say,

01:03:14 ◼   ► "This is it, and we can't change this because it's too late

01:03:16 ◼   ► because too many people are programming it."

01:03:18 ◼   ► Unless you get everything perfect on your first try,

01:03:20 ◼   ► which you never ever will,

01:03:22 ◼   ► all you're doing is like baking in the warts, you know?

01:03:24 ◼   ► It's nice for the language to have time to grow and change and make mistakes and learn from them and become a different language

01:03:31 ◼   ► Eventually than it was this year or last year. Yeah

01:03:34 ◼   ► um

01:03:36 ◼   ► to take another step back just just in a little uh,

01:03:39 ◼   ► Glossary as we go for non-programmers the abi the binary

01:03:44 ◼   ► Um apple, what is it? What does abi even stand for application binary binary?

01:03:48 ◼   ► right

01:03:50 ◼   ► that is effectively so

01:03:54 ◼   ► Source code is in a text file. You write your Swift in a text file. It goes into the compiler, and the compiler turns it into the binary output.

01:04:02 ◼   ► So the .app, the little actual executable inside the .app bundle, that's the binary.

01:04:08 ◼   ► Or if it's a framework or a library, it's the compiled code that the machine reads natively.

01:04:13 ◼   ► And what they're promising is that Swift 3.0, which is scheduled for, I think they say late 2016, which I sort of interpret, I read between the lines, Mac OS 10.12.

01:04:24 ◼   ► probably, and iOS 10.

01:04:29 ◼   ► From that point forward, that binary interface is going to be compatible with future versions,

01:04:37 ◼   ► with Swift 4, Swift 5, Swift 6 going forward.

01:04:40 ◼   ► And like you said, there's high stakes to commit to that.

01:04:44 ◼   ► Yeah, and it's most important for someone like Apple who makes a bunch of libraries that they ship with their machines,

01:04:50 ◼   ► and your binary needs to know how to call into those libraries.

01:04:53 ◼   ► How to find the functions and how to call them,

01:04:56 ◼   ► how to present the arguments of those functions,

01:04:59 ◼   ► expect where to get the return value from,

01:05:01 ◼   ► all those little details that right now have been in flux.

01:05:06 ◼   ► And they have to nail them down so that you'll ship your binary,

01:05:10 ◼   ► they'll ship their libraries,

01:05:11 ◼   ► and then they'll come up with a new version of the OS.

01:05:13 ◼   ► And if you don't revise your application, you want it to still work.

01:05:16 ◼   ► You don't have to recompile it every time that, you know.

01:05:18 ◼   ► If they change the ABI,

01:05:19 ◼   ► it would mean that people would have to recompile

01:05:21 ◼   ► their stuff.

01:05:22 ◼   ► And like I said, historically speaking,

01:05:23 ◼   ► Apple has not done that on iOS

01:05:24 ◼   ► and has rarely done it on iOS 10.

01:05:26 ◼   ► And 32 to 64 bit transitions are a great time

01:05:29 ◼   ► to require that because you're like,

01:05:30 ◼   ► well, your 32 bit application will keep working,

01:05:32 ◼   ► but eventually we're not even gonna support,

01:05:34 ◼   ► you know, 32 bit max anymore.

01:05:36 ◼   ► So we're just gonna be 64 bit from now on

01:05:38 ◼   ► and your application will just age out of the ecosystem

01:05:41 ◼   ► if you don't update it.

01:05:42 ◼   ► And if you do update it, hey, guess what?

01:05:43 ◼   ► You gotta recompile anyway, so no big deal.

01:05:45 ◼   ► - What was the gist of what Craig was talking about there

01:05:47 ◼   ► with the, it was something about when I was asking

01:05:50 ◼   ► where they're using Swift internally,

01:05:52 ◼   ► and one of the things that they,

01:05:54 ◼   ► where it's holding them up,

01:05:55 ◼   ► and they can't just switch to Swift,

01:05:57 ◼   ► is that they need to,

01:05:58 ◼   ► they still need to support 32-bit on Mac OS X.

01:06:02 ◼   ► - Yeah, I couldn't tell whether that was just

01:06:06 ◼   ► a sly allusion to the fact that 32-bit support

01:06:09 ◼   ► is going away everywhere, that it hasn't, you know,

01:06:12 ◼   ► any remaining holdouts to 32-bit support

01:06:14 ◼   ► will be disappearing,

01:06:15 ◼   ► and they've been doing that over the years,

01:06:16 ◼   ► just going 64-bit everywhere they possibly can.

01:06:19 ◼   ► It's just where they can stop supporting entirely.

01:06:21 ◼   ► The other option is there's no reason

01:06:23 ◼   ► they can't make Swift work with the 32-bit things.

01:06:25 ◼   ► - Right, right now Swift is 64-bit only though.

01:06:27 ◼   ► Is that correct? - Yeah, I mean,

01:06:29 ◼   ► as far as I know, yeah.

01:06:30 ◼   ► And there's no reason they couldn't make it work

01:06:32 ◼   ► with 32-bit, like, you know, sure they could,

01:06:35 ◼   ► but is it worth it?

01:06:35 ◼   ► So it's just a question of are they just shutting that door

01:06:39 ◼   ► and when is it safe for them to shut that door?

01:06:42 ◼   ► And in terms of backward compatibility even,

01:06:44 ◼   ► like all, you know, the iOS device is going 64-bit,

01:06:47 ◼   ► you can still run 32-bit apps on that,

01:06:48 ◼   ► but you don't wanna have both 32-bit and 64-bit apps

01:06:51 ◼   ► running on your device at the same time,

01:06:52 ◼   ► because then you've gotta load two versions

01:06:54 ◼   ► of all the libraries into memory and everything.

01:06:55 ◼   ► So there are lots of good reasons to just forget about 32,

01:06:58 ◼   ► and like I said, just let it age out of the ecosystem.

01:07:00 ◼   ► That's what I would imagine Apple would do,

01:07:03 ◼   ► but he's talking about the past

01:07:05 ◼   ► in terms of what was holding people back.

01:07:07 ◼   ► - Here's where it would really help if we had a chat room,

01:07:10 ◼   ► but I, 'cause the question has just popped into my head now,

01:07:13 ◼   ► and I therefore did not do any research before the show,

01:07:16 ◼   ► is, and I'm guessing this is true,

01:07:18 ◼   ► I'm guessing watchOS is 64-bit only,

01:07:20 ◼   ► and tvOS almost certainly is 64-bit only.

01:07:23 ◼   ► There's absolutely no reason why tvOS

01:07:26 ◼   ► would have 32-bit support,

01:07:28 ◼   ► since the first device that tvOS runs on

01:07:30 ◼   ► is a 64-bit device.

01:07:32 ◼   ► So on tvOS, and I'm guessing watchOS,

01:07:35 ◼   ► it's probably possible to go Swift,

01:07:38 ◼   ► you know, use Swift for the frameworks and libraries

01:07:41 ◼   ► in the operating system.

01:07:42 ◼   ► I don't even know. So you're right. It would be good to have a chair. I don't even know what other that the Apple

01:07:48 ◼   ► No, Tuesday a 8 and the first 64-bit was a 7. Yeah

01:07:53 ◼   ► Yeah, like I like I said

01:07:57 ◼   ► I would imagine the way forward is to travel not to waste its time on 32-bit

01:08:02 ◼   ► But who knows like it depends on which?

01:08:04 ◼   ► roadmap

01:08:04 ◼   ► like if you graph those things out and say when can we finally drop 32-bit support both practically speaking and like politically speaking not

01:08:11 ◼   ► annoying our partners or whatever

01:08:13 ◼   ► Who made like 32-bit games for iOS and don't want to like rebuild them for 64? When can we do that?

01:08:18 ◼   ► When is it safe?

01:08:18 ◼   ► And then the other question is when do we want to really start ramping up on Swift?

01:08:22 ◼   ► Now Swift needs to ramp up before 32-bit goes away

01:08:25 ◼   ► Maybe you have to put in the work to do a 32-bit support

01:08:29 ◼   ► But it totally seems like the Apple move to just be like Swift is going to hasten the demise of anything

01:08:34 ◼   ► supporting 64-bit

01:08:36 ◼   ► Yeah, it just seems to me that anything new from when like at least from when the a7 what was that the 5s shipped

01:08:43 ◼   ► Yeah from that point forward. It just seems like anything that doesn't have legacy support is 64-bit only

01:08:48 ◼   ► So, you know from both from new platform perspective like watch and TV to Swift itself that you know

01:08:56 ◼   ► If it's a new language that came out in

01:08:58 ◼   ► 2014 why in the world would it have 32-bit support? It's you know

01:09:05 ◼   ► Anchored to the past. Yeah, and the same thing for new frameworks of their writing new frameworks using Swift Swift only frameworks Swift native frameworks

01:09:12 ◼   ► How they're rewriting foundation in Swift, you know, like but for new stuff where there is no there is no non Swift version of this library

01:09:19 ◼   ► It's just it's been Swift from day one. It's a brand new library. Maybe it's a big new library

01:09:22 ◼   ► That's gonna be a tentpole feature of a future WOEDC and they're gonna tell people how to use it

01:09:27 ◼   ► If it's Swift only and Swift doesn't do 32 for 32-bit

01:09:32 ◼   ► No 32-bit app can use this thing unless they're again unless they're gonna

01:09:35 ◼   ► Bend over backwards to do some crazy way for the you know, the libraries to bridge from 32 to 64

01:09:41 ◼   ► But yeah

01:09:42 ◼   ► I just think it's all 64

01:09:44 ◼   ► Going forward and and what he was giving you a glimpse in his things that Apple had already gone through

01:09:48 ◼   ► Right, like why aren't it why isn't everybody using so well Swift is really young Swift doesn't support 32-bit

01:09:53 ◼   ► These are all reasons that teams that inside Apple that may be interested in Swift

01:09:57 ◼   ► Couldn't use it because it just wasn't practically doesn't wasn't practical at that point

01:10:01 ◼   ► but it becomes more practical every day.

01:10:03 ◼   ► - I really, I thought one of the most astute things he said

01:10:07 ◼   ► was, here I'm looking at my transcript here.

01:10:09 ◼   ► I mean, people here are idealistic yet really pragmatic.

01:10:13 ◼   ► And I think you see that as an Apple characteristic

01:10:15 ◼   ► in many, many elements of what we do.

01:10:17 ◼   ► And I really do think that.

01:10:19 ◼   ► I think that it's almost idealistic yet really pragmatic,

01:10:24 ◼   ► gets to the heart of what I like best about Apple,

01:10:30 ◼   ► you know, in the long run and overall.

01:10:32 ◼   ► And I feel like that really exemplifies it in terms of,

01:10:36 ◼   ► sure, we're really excited about Swift

01:10:37 ◼   ► and it'd be fun to be writing more,

01:10:38 ◼   ► but we've got to write an awful lot of new stuff

01:10:41 ◼   ► still in Objective-C for these very, very pragmatic reasons.

01:10:44 ◼   ► - Yeah, and this is the overarching, like,

01:10:47 ◼   ► you may be excited about Swift,

01:10:48 ◼   ► but there's sort of a company cultural imperative

01:10:53 ◼   ► to, for example, not break binary compatibility

01:10:56 ◼   ► without a good reason, because it's bad for the platform,

01:10:59 ◼   ► and if there's any possible way you can avoid it, like it's bad for the ecosystem, it makes developers angry

01:11:06 ◼   ► and you only get a certain number of those, and you don't want to like cash them in just on a whim, right?

01:11:14 ◼   ► so even though a lot of people may be very excited about using this new technology

01:11:18 ◼   ► if there's an overriding concern, you know, larger than your little project, larger than your little feature or your application

01:11:24 ◼   ► or whatever it is you're doing inside Apple and the Dictate is

01:11:27 ◼   ► you can't use it because you need to support 32-bit, and you need to support 32-bit because we're committed to not breaking binary compatibility

01:11:34 ◼   ► until a big company-wide decision happens at a level way above your pay grade, and only then will it be okay.

01:11:41 ◼   ► So like, the idealistic and pragmatic, as an organization, yes, but like, within the organization I imagine is distributed, where

01:11:47 ◼   ► the lower you go down the org chart, the more people are inclined to be idealistic and want to do something crazy and new,

01:11:52 ◼   ► and the higher you go in the org chart, the more people have to be pragmatic and say "there's a bigger picture here",

01:11:56 ◼   ► And even though you may be excited to use it

01:11:57 ◼   ► on your little project, we decided at the top

01:12:01 ◼   ► when it's time to do these big moves

01:12:02 ◼   ► that are gonna impact, again, literally thousands

01:12:05 ◼   ► of developers and thousands, is it millions of apps?

01:12:07 ◼   ► I don't even wanna think about it.

01:12:09 ◼   ► - It might be, I don't even know.

01:12:11 ◼   ► It's kinda bizarre to think about a million apps,

01:12:13 ◼   ► but it's possible.

01:12:14 ◼   ► One of the areas I wanted to get to,

01:12:16 ◼   ► and when I found out, it was nice,

01:12:18 ◼   ► one of the things that was nice about this interview

01:12:20 ◼   ► was that I knew about it at least a week in advance.

01:12:24 ◼   ► It was actually a little bit more than a week in advance

01:12:25 ◼   ► by the time we found a date that worked for both of us.

01:12:29 ◼   ► And so I felt like I had plenty of time to prepare,

01:12:33 ◼   ► which was great.

01:12:34 ◼   ► And so one of the ways that I prepared

01:12:36 ◼   ► it was I went to people who know a lot more

01:12:38 ◼   ► about programming than I do.

01:12:40 ◼   ► And it's specifically a lot more about programming

01:12:41 ◼   ► for Apple platforms than I do.

01:12:43 ◼   ► And tried to get some questions from them.

01:12:47 ◼   ► And one of the things that I asked about,

01:12:49 ◼   ► but it's, and I knew this,

01:12:51 ◼   ► but I was interested in hearing it from developer friends

01:12:53 ◼   ► is this whole angle that Swift is not just Objective-C with a modern friendly syntax.

01:13:00 ◼   ► It is a very different language with very different primary priorities.

01:13:07 ◼   ► And there are certainly some things, it certainly looks better, and it certainly is a much more

01:13:13 ◼   ► approachable syntax. And I feel like at a fundamental level, that's basically why there's

01:13:17 ◼   ► there's so much excitement around Swift.

01:13:18 ◼   ► Is there's a lot of people who just took one look at

01:13:23 ◼   ► or take one look at Objective-C

01:13:24 ◼   ► and they're like, I don't get it.

01:13:26 ◼   ► And then they take a look at Swift and they're like, wow,

01:13:28 ◼   ► that looks like the language I already know,

01:13:30 ◼   ► whether it's JavaScript or C or I don't know,

01:13:35 ◼   ► even Java to some degree, maybe.

01:13:38 ◼   ► It's a lot more similar to those style languages

01:13:40 ◼   ► than it is to Objective-C.

01:13:41 ◼   ► But there are things about Objective-C

01:13:44 ◼   ► and the way that the next now Coco and Coco Touch frameworks,

01:13:49 ◼   ► all these things that have derived from the next origins,

01:13:54 ◼   ► the way that these frameworks take advantage

01:13:56 ◼   ► of the dynamic aspects of Objective-C

01:13:58 ◼   ► that people who are really good at it,

01:13:59 ◼   ► people who've been writing for these frameworks

01:14:02 ◼   ► for a long time love, and Swift sort of

01:14:05 ◼   ► isn't really what they were looking for

01:14:07 ◼   ► in a next generation language.

01:14:09 ◼   ► And I thought his answer to that surprised me, I thought.

01:14:13 ◼   ► I mean, it was on message in terms of like,

01:14:17 ◼   ► the dynamic things that people wanted to do

01:14:20 ◼   ► with Objective-C will eventually be possible with Swift

01:14:22 ◼   ► if they're not now and that this is an ongoing thing

01:14:24 ◼   ► and they're working on it and yada yada

01:14:25 ◼   ► and essentially all the dynamism,

01:14:28 ◼   ► which is a word that you like to use,

01:14:29 ◼   ► all the dynamism that Apple thinks is important

01:14:32 ◼   ► will be available in Swift without the downsides

01:14:34 ◼   ► that he also went over extensively,

01:14:36 ◼   ► that you've got to pay for that all the time.

01:14:38 ◼   ► - Yeah, I thought that was interesting.

01:14:39 ◼   ► And I thought it was, I'm not sure,

01:14:43 ◼   ► I guess I kind of was worried that he would dodge that question and instead it seemed like he'd dove right into it and it's

01:14:48 ◼   ► Obvious so obvious from his answer that they have

01:14:51 ◼   ► discussed this internally

01:14:53 ◼   ► extensively

01:14:54 ◼   ► well, this is an interesting time for Swift because a lot of things that have been true of Swift from the beginning are now starting to

01:15:02 ◼   ► become come more into the public consciousness

01:15:04 ◼   ► Mostly because more people are using it more people are aware that it even exists as excited as we all were whatever was two years

01:15:09 ◼   ► to go to see Swift at

01:15:11 ◼   ► CWDC

01:15:13 ◼   ► It's not really a thing for people

01:15:15 ◼   ► Broadly speaking until you know a certain point like can actually use this to make iOS and Mac apps

01:15:21 ◼   ► Okay, then it becomes one level of thing and then the open source is the next level is like hey

01:15:24 ◼   ► this is maybe of interest to the entire world of programmers right and so now a lot of people are looking at Swift and

01:15:31 ◼   ► They're going to I think start realizing things that have been true about Swift from the very beginning you mentioned the syntax thing which is

01:15:38 ◼   ► kind of a sideshow because

01:15:40 ◼   ► The syntax is, you know, even though it's a thing that people notice when you look at it, and there is a certain, I don't know, like a,

01:15:48 ◼   ► like a flavor, like you can tell, does this feel like a modern thing or does this feel old and weird?

01:15:54 ◼   ► Does it look like, you mentioned, like does it look like JavaScript? Does it look like whatever language the kids are learning these days, right?

01:15:59 ◼   ► But that is mostly not important. I mean, there's some aspect where you have to sort of keep up with the Joneses and not look like you're really old.

01:16:07 ◼   ► But then the other aspect of it in terms of the language itself is how many things do I have to worry about?

01:16:12 ◼   ► And Objective-C asks developers to worry about things, used to before Arc, asked them to worry about memory management,

01:16:19 ◼   ► where they had to call "retain and release".

01:16:21 ◼   ► And to a modern young programmer, that just seems barbaric, because like I said, it'd be coming from, you know...

01:16:27 ◼   ► I guess JavaScript is a great example, because a lot of people know web stuff and JavaScript is everywhere,

01:16:33 ◼   ► but even things like C# or Java on the server,

01:16:36 ◼   ► it just seems barbaric to have to deal with that,

01:16:38 ◼   ► or to have direct access to memory with pointers.

01:16:40 ◼   ► And then Arc made that a little bit better,

01:16:42 ◼   ► but still, what are all these asterisks all over the place?

01:16:44 ◼   ► That doesn't really make any sense.

01:16:46 ◼   ► If you don't know C,

01:16:47 ◼   ► I think a surprising number of developers now

01:16:51 ◼   ► find that if you're a GUI application developer,

01:16:55 ◼   ► the reason is for you to know C

01:16:57 ◼   ► to figure out how to make a sheet come up

01:16:59 ◼   ► when someone pushes the button.

01:17:01 ◼   ► There's not a lot of those,

01:17:02 ◼   ► and it just seems like why do I have to worry about all this crap?

01:17:04 ◼   ► So, from the developer's perspective,

01:17:06 ◼   ► Swift is exciting because it's like, I want to make an iOS app

01:17:10 ◼   ► because iOS apps are cool and I like iPhones and all this other stuff,

01:17:14 ◼   ► but it's kind of annoying that I got to worry about all this stuff.

01:17:16 ◼   ► And Swift says, now you don't have to worry about that stuff anymore.

01:17:19 ◼   ► And the syntax looks nicer too.

01:17:21 ◼   ► And so that is the public face of Swift and the excitement

01:17:24 ◼   ► over finally a more modern language,

01:17:27 ◼   ► both in terms of appearance and aesthetics,

01:17:29 ◼   ► but also in terms of how many things do I have to be concerned with when writing a program

01:17:34 ◼   ► that seemed to me to be beneath the concern of me as like a programmer of a GUI app or

01:17:41 ◼   ► whatever.

01:17:42 ◼   ► Yeah, and I think a lot of that is historical in terms of when languages, C is the primary

01:17:47 ◼   ► example because so much has, you know, if you draw the family tree of programming languages,

01:17:52 ◼   ► there's an awful lot of languages that derive from C. And in that era, you know, I guess

01:17:58 ◼   ► what late sixties or early seventies when C was invented?

01:18:01 ◼   ► I, I, I pretty sure the first edition of the KNR was like 1971.

01:18:08 ◼   ► So late sixties, early seventies.

01:18:10 ◼   ► The computers were so incredibly slow. I mean, just,

01:18:15 ◼   ► just mind bogglingly slow by our standards today. You know, it's, you know,

01:18:20 ◼   ► like the, the whole, you know,

01:18:22 ◼   ► the entire Apollo mission was done with less computing power than your Apple

01:18:25 ◼   ► watch has. I mean, it's just ridiculous. And so you needed to squeeze every single cycle

01:18:30 ◼   ► out of the CPU that you could. And that meant being, as a programmer, writing at an incredibly

01:18:35 ◼   ► low level where you're managing all the memory by hand. Because if it works, then it's incredibly

01:18:41 ◼   ► efficient. And then if it doesn't work, you just have to fix it. You have to fix the bugs.

01:18:46 ◼   ► But the retain release stuff is a perfect example of that. And I know when I first started

01:18:53 ◼   ► trying to go away from it. And it was funny because it's an interesting example of Apple,

01:18:58 ◼   ► you know, going down an alley and then deciding against it, which was at some point in the last

01:19:03 ◼   ► decade, they introduced garbage collection to cocoa. Pretty sure it was like in the early years

01:19:10 ◼   ► of Bertrand. It was definitely after Avi Tevainian had left. And I know there was a lot of reluctance

01:19:19 ◼   ► from people who got it and people who didn't have, who at least didn't think they had problems dealing

01:19:24 ◼   ► with the manual retain release memory management, didn't like garbage collection at all. And it

01:19:29 ◼   ► turns out Apple didn't like it either. And they eventually got rid of it.

01:19:32 ◼   ► **Matt Stauffer:** Yeah. All the, all the people who thought,

01:19:34 ◼   ► oh, I'd retain release is fine. I don't need this garbage collection. Like one of the big reasons

01:19:39 ◼   ► to even consider garbage collection is just, like I said, you know, objectivity started to look old

01:19:45 ◼   ► and crappy. Why do I have to worry so much about memory when programming for this platform? It makes

01:19:49 ◼   ► the platform feel older and more primitive and less capable. I can program for Android

01:19:54 ◼   ► or for Windows or for whatever and I don't have to worry about this and like really I

01:19:58 ◼   ► just want to make my app right? I want to decide I want to write the code that's going

01:20:02 ◼   ► to make my app do the things my app does. I don't care about memory like can't you just

01:20:05 ◼   ► take care of that for me? And so the only reason they would go down the garbage collection

01:20:10 ◼   ► path is like well here's one way we can make people not have to worry about retain release

01:20:13 ◼   ► and it was like well you put in the retains and releases but they won't do anything or

01:20:17 ◼   ► or whatever, and garbage collection for a variety of reasons was difficult to go with

01:20:22 ◼   ► Objective-C in particular because it is a superset of C, and because it's very difficult

01:20:27 ◼   ► for a garbage collector to know enough information about the C-ish parts of your program, which

01:20:31 ◼   ► may be right in the Objective-C or may be in data that's coming out of C libraries,

01:20:36 ◼   ► to know enough to do the right thing with that stuff, and so it was kind of not technically

01:20:41 ◼   ► infeasible but like never a completely closed solution where you could be like, "I feel

01:20:45 ◼   ► like 100% of the time we will do the right thing here.

01:20:48 ◼   ► And, you know, and eventually, like, they launched it, it was out there,

01:20:53 ◼   ► you could use it, they dogfooded it on some teams,

01:20:55 ◼   ► and then eventually pulled it back, right?

01:20:57 ◼   ► And this is what I was getting at before with, like,

01:20:59 ◼   ► things that have been true about Swift in the beginning

01:21:00 ◼   ► that are just now going to be coming into the public eye.

01:21:03 ◼   ► The other aspect of Swift, setting aside both the syntax

01:21:06 ◼   ► and the modernization in terms of,

01:21:08 ◼   ► look at this language that does more modern things

01:21:10 ◼   ► that lets the developers not worry about the things

01:21:12 ◼   ► they're not worried about,

01:21:13 ◼   ► and express themselves in a more compact, elegant form,

01:21:16 ◼   ► just solving the problem they want to solve,

01:21:19 ◼   ► you mentioned it looked more like pseudocode,

01:21:20 ◼   ► that's because you're not, like in pseudocode,

01:21:22 ◼   ► you're not concerned with the little details,

01:21:24 ◼   ► you're just like, here's the algorithm, here's roughly the steps,

01:21:27 ◼   ► I don't want to be concerned about the details, right?

01:21:28 ◼   ► It does all that, but the other thing that's big about Swift,

01:21:32 ◼   ► and this is an interesting contrast to what you just mentioned about, like,

01:21:34 ◼   ► C being made in the day when computers were slow,

01:21:36 ◼   ► and it was discussed by Craig as well when he was talking about

01:21:40 ◼   ► the just-in-time compilers, the JIT and everything,

01:21:42 ◼   ► It is essentially a bet against virtual machines with cycle counting garbage collectors.

01:21:50 ◼   ► It is a bet against the things that Java does and C# and Android, which is Dalvik, the virtual machine,

01:21:57 ◼   ► or all the JavaScript engines that run all our web browsers.

01:22:01 ◼   ► JavaScript is in a tough spot because it's like they're stuck finding a way to make JavaScript fast,

01:22:07 ◼   ► because it's everywhere in web browsers and no one really controls that platform.

01:22:10 ◼   ► And so that's why we've had to put all this brainpower

01:22:12 ◼   ► into making JavaScript fast.

01:22:14 ◼   ► But garbage collectors was going more in that direction.

01:22:18 ◼   ► But as you mentioned in the description of Swift,

01:22:21 ◼   ► it's supposed to span from an operating system up

01:22:23 ◼   ► to a scripting system.

01:22:25 ◼   ► And once you get down to low level,

01:22:27 ◼   ► you can't have a garbage collector doing

01:22:30 ◼   ► unpredictable things at unpredictable times.

01:22:33 ◼   ► And even if it's predictable, you can't have the garbage

01:22:35 ◼   ► collector take these pauses to walk your trees of things

01:22:38 ◼   ► to find out what needs to be collected.

01:22:40 ◼   ► Even, you know, there's a lot of great technology

01:22:42 ◼   ► in the Java world of making garbage collectors

01:22:44 ◼   ► that don't induce pauses or are more predictable,

01:22:47 ◼   ► but nothing is as predictable as something

01:22:50 ◼   ► that is entirely deterministic like Arc,

01:22:52 ◼   ► something that is determined at compile time

01:22:55 ◼   ► where they'll put in, essentially put in

01:22:57 ◼   ► the retains and releases for you.

01:22:59 ◼   ► And there's debate as to whether theoretically,

01:23:02 ◼   ► can garbage collection approach the reliability

01:23:06 ◼   ► and performance characteristics needed

01:23:07 ◼   ► for the kernel of an operating system, I think Microsoft just had various projects to try to make

01:23:11 ◼   ► a sort of memory managed operating system or whatever,

01:23:13 ◼   ► but Swift is a bet heavily in the other direction, and

01:23:16 ◼   ► this bet was made when Arc came out for Objective-C,

01:23:19 ◼   ► not so much it was Swift, but doubling down with Swift is that

01:23:23 ◼   ► to make a language that fulfills the goal set out for Swift,

01:23:26 ◼   ► we have to not have this virtual machine

01:23:30 ◼   ► and garbage collection that does all the stuff, we have to basically

01:23:34 ◼   ► nail things down more, figure things out at compile time, make everything about it deterministic,

01:23:40 ◼   ► only then will it become possible to match both the performance and the sort of the predictability

01:23:47 ◼   ► of C code so you can write your operating system kernel, your audio subsystem, or I don't know,

01:23:52 ◼   ► your real-time operating system for your car, we'll see about that, but you can write that type of

01:23:56 ◼   ► code without wondering when, you know, when the garbage collector is going to pause you for a

01:24:02 ◼   ► for a second to walk some tree or when something's going to get collected or how much memory

01:24:06 ◼   ► is going to be available at any given time based on when the collector ran, based on

01:24:09 ◼   ► what code ran before you called into this code.

01:24:11 ◼   ► All right, even when you're running on a modern computer that is very fast and maybe that

01:24:15 ◼   ► pause isn't even a full second, maybe it's just, you know, 200 milliseconds, but a fraction

01:24:22 ◼   ► of a second. In certain contexts, that pause just kills the user experience. I mean, and

01:24:30 ◼   ► That's not to badmouth Android, but it's--

01:24:32 ◼   ► I mean, I've heard from a lot of people

01:24:34 ◼   ► that dealing with a garbage collected system

01:24:36 ◼   ► is one of the reasons why Android spent years trying

01:24:39 ◼   ► to get to what iOS users thought was a smooth user interface

01:24:43 ◼   ► right from the get-go.

01:24:44 ◼   ► Because the garbage collector would run while you're

01:24:46 ◼   ► scrolling a list or something like that,

01:24:47 ◼   ► and you'd get these little stutters or pauses.

01:24:49 ◼   ► And they were fractions of a second,

01:24:51 ◼   ► not like a whole second long pause,

01:24:53 ◼   ► but just a little fraction of a second.

01:24:56 ◼   ► And in a real-time situation, if it's

01:24:58 ◼   ► kind of camera-based thing running on a car or something like that you really don't want to have

01:25:02 ◼   ► an unpredictable even fifth of a second pause and they have pause-free collectors but the whole

01:25:08 ◼   ► point is if you give up pausing essentially what you're either doing is having in the degenerate

01:25:12 ◼   ► case having something like reference counting happening in a small case like the you know

01:25:16 ◼   ► generational collectors and and the long-lived versus short-lived objects like you can you can

01:25:20 ◼   ► avoid pausing but if you avoid pausing you basically build up garbage uh and it this is

01:25:25 ◼   ► This was also mentioned by Craig, the idea that they can run...

01:25:27 ◼   ► I don't know if it's kind of an excuse of why they put a little RAM in their iOS devices,

01:25:31 ◼   ► but that they can fit their stack,

01:25:35 ◼   ► they can fit their operating system and their framework and their libraries

01:25:37 ◼   ► in a smaller memory footprint, what did they say?

01:25:40 ◼   ► Probably, reading from his thing here,

01:25:43 ◼   ► "with different memory footprints than some of our competitors

01:25:47 ◼   ► whose languages don't have this characteristic."

01:25:49 ◼   ► Basically, what he's saying is, Android, they have to ship more RAM in their devices

01:25:52 ◼   ► because they build up too much garbage,

01:25:53 ◼   ► and that's basically the choice you have.

01:25:55 ◼   ► Either something has to decide

01:25:57 ◼   ► which memory is available for use,

01:26:00 ◼   ► which memory are we done with

01:26:01 ◼   ► and we can use again for something else,

01:26:02 ◼   ► or which memory is still in use.

01:26:04 ◼   ► And Arc does that by,

01:26:06 ◼   ► Arc, which underlies Objective-C and Swift,

01:26:09 ◼   ► does that by, as it runs, it says,

01:26:11 ◼   ► I'm using this, now it's available,

01:26:12 ◼   ► now I'm using this, now it's available,

01:26:13 ◼   ► now I'm using, like, in the code path,

01:26:15 ◼   ► along with the executing code.

01:26:17 ◼   ► And garbage collection is, I just plow bravely forward,

01:26:19 ◼   ► and something else, the garbage collector,

01:26:21 ◼   ► occasionally figures out what is available for everybody else and what isn't.

01:26:24 ◼   ► Hopefully you can do that without disturbing the other guy

01:26:26 ◼   ► who's plowing bravely forward, but sometimes you have to stop him from going,

01:26:29 ◼   ► and if you want to have a pause-free one that doesn't stop the ongoing code

01:26:33 ◼   ► to figure out what's available, it has to necessarily leave some stuff on the floor

01:26:37 ◼   ► and say, "I'm not sure if this isn't used yet.

01:26:40 ◼   ► I can't find out without stopping the guy that's running over there,

01:26:43 ◼   ► so I'm just going to leave it off the side."

01:26:45 ◼   ► What it boils down to is you never know based on, you know,

01:26:49 ◼   ► you've got these two things, the collector and the program.

01:26:52 ◼   ► You never know at any given point,

01:26:53 ◼   ► when I'm at this point in the code,

01:26:55 ◼   ► how much memory is gonna be available in this process?

01:26:58 ◼   ► Like, well, if the collector ran here,

01:26:59 ◼   ► then maybe it'll be here, but if the collector is behind,

01:27:01 ◼   ► 'cause it's running on a different core,

01:27:02 ◼   ► then maybe this much will be available, whatever.

01:27:04 ◼   ► And you just end up with a little bit of extra garbage,

01:27:06 ◼   ► and the overhead of the virtual machine itself,

01:27:08 ◼   ► and all that stuff.

01:27:08 ◼   ► This is even before you get into like executing byte code,

01:27:11 ◼   ► like Java does versus native and all that other stuff.

01:27:14 ◼   ► Swift and Arc and Objective-C are a bet heavily against

01:27:17 ◼   ► the virtual machines, like Java virtual machines,

01:27:19 ◼   ► C# Virtual Machine, and certainly anything like the JIT craziness that we've had to do

01:27:23 ◼   ► for JavaScript to make that fast.

01:27:24 ◼   ► Yeah, garbage collection, the analogy works, and so I can see why that stuck as the terminology.

01:27:32 ◼   ► But you know, like any analogy, it breaks down at a certain level. And in the real world,

01:27:37 ◼   ► the garbage that you keep, like here in Philadelphia, we get garbage collected once a week. The

01:27:45 ◼   ► you know, the fact that by Tuesday we've got six days of garbage in the house isn't a problem

01:27:50 ◼   ► because we don't generate that much garbage and it just sits tied up in bags in our garage.

01:27:54 ◼   ► Whereas on a computing device, uncollected garbage is taking memory, and memory is a precious

01:28:03 ◼   ► resource. It's almost like you're in a studio apartment, you know, and you have uncollected garbage.

01:28:07 ◼   ► Yeah, and the thing is, again, good garbage collectors take advantage of this to try to

01:28:13 ◼   ► to be smart about like what if I'm in a tight loop and inside this loop I do something with

01:28:17 ◼   ► some amount of memory but on the next iteration of the loop I'm totally done with it. I don't

01:28:21 ◼   ► need a new set of memory I can just keep reusing that same region of memory over and over again

01:28:25 ◼   ► in this tight loop. I don't need to allocate and get rid of it like I just need to know

01:28:29 ◼   ► say I'm using it okay now I'm done I'm using it I'm done I'm using it and I'm done rather

01:28:34 ◼   ► like say you're just creating a new object in loop every time a very naive old style

01:28:37 ◼   ► garbage collector like oh you're making a new object you need some memory for that object

01:28:41 ◼   ► I mean, we've got the memory for that object.

01:28:42 ◼   ► Okay, here you go, I gave you the memory for your object.

01:28:43 ◼   ► You make it, and you go to the next iteration of loop,

01:28:45 ◼   ► and the garbage collector hasn't run yet,

01:28:46 ◼   ► and it's like, oh, you're making a new object.

01:28:48 ◼   ► You need some memory for that object,

01:28:49 ◼   ► and a programmer manually managing memory

01:28:52 ◼   ► would never allocate new memory.

01:28:53 ◼   ► It's like, I've got the memory from the old object.

01:28:55 ◼   ► I'm done with it.

01:28:56 ◼   ► I'm not using it anymore.

01:28:56 ◼   ► Just take this, right?

01:28:58 ◼   ► And so--

01:28:58 ◼   ► - A good programmer might not.

01:29:00 ◼   ► (laughing)

01:29:01 ◼   ► I think we've all run into code

01:29:02 ◼   ► that was written like that, though.

01:29:04 ◼   ► - But this is the problem

01:29:04 ◼   ► with the really primitive garbage collectors

01:29:06 ◼   ► back in the day, and the garbage collectors became smarter.

01:29:08 ◼   ► It's like, oh, well, for a smarter garbage collector,

01:29:11 ◼   ► we can divide the world up into objects that are short-lived

01:29:13 ◼   ► and objects that hang around for a long time.

01:29:15 ◼   ► And let's make these different pools

01:29:16 ◼   ► about these short-lived objects

01:29:18 ◼   ► and the ones that hang around.

01:29:19 ◼   ► And let's try to, you know,

01:29:20 ◼   ► what you're trying to do is get to the point

01:29:22 ◼   ► where if you gave this to, you know,

01:29:25 ◼   ► if you gave this to an assembly language programming,

01:29:26 ◼   ► you showed the assembly language,

01:29:28 ◼   ► they wouldn't look at it and go,

01:29:29 ◼   ► this is the stupidest code I've ever seen in my life.

01:29:31 ◼   ► Like, it's just incredibly wasteful of resources.

01:29:33 ◼   ► You know, you want them to look at it and go,

01:29:35 ◼   ► oh, oh yeah, no, that's pretty much as efficiently

01:29:37 ◼   ► you could have written it. Like you're not allocating tons of memory and then leaving it

01:29:43 ◼   ► allocated and not reusing it because you don't know that you can look at it and say well here

01:29:47 ◼   ► I am I'm looking at the assembly code I can tell this memory is never accessed again why are you

01:29:51 ◼   ► keeping it around? Well the garbage collector doesn't know that yet or whatever. So this is

01:29:55 ◼   ► this is a kind of a philosophical debate can garbage collection ever be as efficient and as

01:30:01 ◼   ► as predictable as manual memory management.

01:30:04 ◼   ► And Arc and what underlies Swift and Objective-C with Arc

01:30:09 ◼   ► is trying to say we're going to try to automate the part

01:30:12 ◼   ► where we say retain this, do stuff with it, release it,

01:30:15 ◼   ► retain this, do stuff with it, release it,

01:30:17 ◼   ► so that the developer doesn't have to write it,

01:30:19 ◼   ► but so that the compiler writes it,

01:30:20 ◼   ► so that if we were to look at the assembly code,

01:30:22 ◼   ► we can see a predictable pattern.

01:30:24 ◼   ► Because there is some overhead to doing all of those,

01:30:27 ◼   ► you know, bumping up the retain counts and releasing,

01:30:30 ◼   ► Like that's in your running code.

01:30:32 ◼   ► It's the code that the garbage collector code

01:30:33 ◼   ► doesn't need to do.

01:30:34 ◼   ► It doesn't need to increment retain counts

01:30:35 ◼   ► and decrement retain counts.

01:30:36 ◼   ► It can just run

01:30:37 ◼   ► because it knows the garbage collector

01:30:38 ◼   ► is gonna take care of that.

01:30:39 ◼   ► And so the bet with Arc and Swift is

01:30:42 ◼   ► it is more efficient and predictable to do that work in line

01:30:46 ◼   ► because then we know exactly when that work will be done

01:30:48 ◼   ► and we can be smarter about it.

01:30:50 ◼   ► Like we can, in the binary that we generate,

01:30:54 ◼   ► look at it and say, are we being smart

01:30:55 ◼   ► or are we being stupid here?

01:30:56 ◼   ► Versus if you're running the garbage collector,

01:30:58 ◼   ► you're like, well, now there's two things in play here.

01:31:00 ◼   ► there's the program and then there's the garbage collector

01:31:02 ◼   ► and the program looks okay

01:31:03 ◼   ► in terms of what it's doing semantically,

01:31:05 ◼   ► but how will the garbage collector interact with this?

01:31:08 ◼   ► How would it deal with the memory

01:31:10 ◼   ► and know when to make it available for reuse or whatever?

01:31:13 ◼   ► - I don't know if I'll be able to find it.

01:31:15 ◼   ► I did, I remember reading on, what's that website, Quora.

01:31:20 ◼   ► I remember reading a Quora page where somebody asked

01:31:23 ◼   ► why do Android devices tend to ship

01:31:25 ◼   ► with so much more RAM than iOS devices?

01:31:27 ◼   ► And like the top voted answer was, I don't know who wrote it,

01:31:31 ◼   ► but it was more or less, you know,

01:31:32 ◼   ► that because Android is garbage collected,

01:31:35 ◼   ► it's effectively Java.

01:31:36 ◼   ► It's Java running in Google's handmade rip off of Java.

01:31:41 ◼   ► There's no way you can convince everybody of this.

01:31:51 ◼   ► And I do think there is a factor in this

01:31:53 ◼   ► where Apple just wants to use less RAM because it's cheaper

01:31:56 ◼   ► and they save money and this is one of the ways

01:31:58 ◼   ► that they get to 38, 39% profit margins.

01:32:03 ◼   ► But there really is a factor there

01:32:06 ◼   ► that from an effective standpoint,

01:32:08 ◼   ► like an Android device that ships with three gigs of RAM

01:32:12 ◼   ► has about as much effective RAM for you as the user

01:32:15 ◼   ► using the device as an iOS device with one gigabyte of RAM.

01:32:18 ◼   ► - Yeah, and this is, like I said,

01:32:19 ◼   ► this is before we even considered the idea of bytecode,

01:32:22 ◼   ► although Apple's going that direction

01:32:23 ◼   ► with its bitcode thing, but not quite.

01:32:24 ◼   ► But anyway, the idea in the Java virtual machine, or any kind of virtual machine that you produce is

01:32:31 ◼   ► binary code for the virtual machine.

01:32:34 ◼   ► And the virtual machine is this hypothetical thing that is not your actual CPU, and then

01:32:39 ◼   ► the virtual machine itself will execute that code natively on the CPU.

01:32:44 ◼   ► Like, so the whole idea with Java is like, "Oh, you can make this one Java bytecode application

01:32:48 ◼   ► and send it to an x86 device, and a PowerPC device, and an alpha device,

01:32:52 ◼   ► and this same quote-unquote binary because it's bytecode will run on all of them because they all have Java virtual machines

01:32:57 ◼   ► and those Java vulture machines will execute natively on the individual platforms

01:33:01 ◼   ► but you just have one binary that was the write once run anywhere type of thing

01:33:05 ◼   ► for I'm not sure what the Dalvik design is but I think they have I think they still have bytecode

01:33:12 ◼   ► but either way like the idea of a virtual machine is you have a

01:33:15 ◼   ► you don't have a real target architecture you have a virtual machine and that's what you're you're coded to

01:33:20 ◼   ► and then you have to eventually get to native code.

01:33:22 ◼   ► So it's just more stuff between you

01:33:24 ◼   ► and seeing how this is gonna actually execute

01:33:26 ◼   ► on your actual hardware.

01:33:27 ◼   ► - Yeah, and I do think, I think that's a keen observation

01:33:30 ◼   ► that this whole segment of the show,

01:33:31 ◼   ► that Swift is a bet that there is something better,

01:33:36 ◼   ► there's a better way to,

01:33:38 ◼   ► better way to get all the advantages

01:33:39 ◼   ► of those garbage collected virtual machines

01:33:42 ◼   ► and avoid all of the overhead.

01:33:45 ◼   ► - Yeah, and the meta thing and that bet,

01:33:47 ◼   ► like again, theoretically in computer science,

01:33:49 ◼   ► you can have all these debates about,

01:33:50 ◼   ► is it theoretically possible to have a pause-free garbage

01:33:52 ◼   ► collector that has better performance?

01:33:53 ◼   ► Because like I said, there are advantages to the garbage

01:33:55 ◼   ► collector because it doesn't have to have that inline code

01:33:57 ◼   ► that messes with the memory management.

01:33:59 ◼   ► In the actual execution of the program,

01:34:01 ◼   ► it can just go forward as fast as it can.

01:34:03 ◼   ► And if the garbage collector could do its job and keep up

01:34:06 ◼   ► with it and not disturb it, that would be great.

01:34:08 ◼   ► But the other part of this is the idea that computing power--

01:34:16 ◼   ► not just CPU power or whatever, but if you

01:34:18 ◼   ► if you were to graph anything having to do with computing power in terms of

01:34:21 ◼   ► How fast can we get to memory? How much memory do we have?

01:34:24 ◼   ► What is the single threaded integer performance of a CPU? I think I saw a chart about like

01:34:27 ◼   ► Single threaded integer performance of intel CPUs over the past 10 years or whatever

01:34:32 ◼   ► And the curve is not a hockey stick going up anymore like in in the in our youth in the heyday of

01:34:38 ◼   ► CPU architectures every year there'd be a new chip and it would be like twice as fast and and you know

01:34:42 ◼   ► Your code would just get magically fast. You didn't have to recompile it

01:34:45 ◼   ► You didn't have to use any new technology like that the clock speed would double and the you know the the number of

01:34:51 ◼   ► Execution units would double and just everything was was roses every year. I

01:34:55 ◼   ► Remember and this is as late as the 90s

01:34:58 ◼   ► I had an internship at a Windows software development place and I was writing you know

01:35:04 ◼   ► Dawson Windows code and everybody had a 486 and

01:35:08 ◼   ► The Pentiums were just coming out. So I don't know what year this would have been probably around 95

01:35:14 ◼   ► Maybe 94 somewhere around there and the one guy got one first one of the engineers got one first and it was so ridiculously

01:35:22 ◼   ► Faster than everybody else and it gave us good kit

01:35:24 ◼   ► I mean, you know usually programmers get good good devices because they really you know

01:35:29 ◼   ► You even if you're like a penny-pinching manager

01:35:31 ◼   ► If it takes a long time for the code to compile getting your engineers machines that compile code faster is worth it

01:35:37 ◼   ► This guy's machine was so much faster that we would people would wait

01:35:41 ◼   ► until he was like away from his desk and then use his computer to compile stuff because it was took less time than waiting for

01:35:47 ◼   ► It to compile at your own desk. Yeah, I remember just like seeing doom running from like

01:35:51 ◼   ► First time I saw doom run on the pendium. This is before the edge of video cards. This is all in the CPU

01:35:56 ◼   ► It was just magic how much faster it was you just and it was the same program

01:36:00 ◼   ► Like it was the same program and just for free your everything you did got faster, right?

01:36:04 ◼   ► So when we were in that part of the hockey stick curve

01:36:06 ◼   ► like the graph I saw looked like it had that part of the hockey stick curve where it's like going up up up and

01:36:11 ◼   ► Then it starts to level off and it becomes kind of like a mound. You know, we're going the slope is decreasing over time

01:36:16 ◼   ► and

01:36:17 ◼   ► If we were still on that hockey stick

01:36:19 ◼   ► I think it's inevitable that VMS and any sort of higher abstraction thing would have won because it's like yeah

01:36:26 ◼   ► it's a little bit slower and

01:36:28 ◼   ► Yeah, you can get behind and we may be using more memory than they're supposed to but just everything is on this big hockey stick

01:36:33 ◼   ► and it doesn't matter, your concerns are pointless, they will be dwarfed by the inexorability of progress.

01:36:40 ◼   ► And progress has slowed for two reasons.

01:36:42 ◼   ► One, the move to mobile has pushed everybody back down that chart a little bit,

01:36:48 ◼   ► and we kind of think we're back in the hockey stick era where it's like,

01:36:51 ◼   ► "Oh, Apple's doubling their CPU speeds every day,"

01:36:53 ◼   ► but all they did was they just got shoved back down the hockey stick,

01:36:56 ◼   ► because these things are these tiny little CPUs with small batteries and thermal envelopes

01:37:03 ◼   ► that don't allow for fans or anything like that.

01:37:05 ◼   ► So we're kind of back in the olden days,

01:37:08 ◼   ► but that means we're also back in performance.

01:37:10 ◼   ► So on the iPhone CPUs, they used to be like dishwasher CPUs.

01:37:15 ◼   ► Like, they were terrible.

01:37:16 ◼   ► And they've been slowly catching up to,

01:37:19 ◼   ► now like with the iPad Pro, it's like, this is a modern MacBook CPU,

01:37:22 ◼   ► but not surpassing the desktop.

01:37:25 ◼   ► - No. - Right?

01:37:26 ◼   ► So everything is slower,

01:37:29 ◼   ► and that's been a huge advantage for Apple,

01:37:32 ◼   ► having a native platform like back in the day where everything was Objective-C, which is a C-based language,

01:37:37 ◼   ► to be able to just get the iPhone 1 out the door and working.

01:37:40 ◼   ► Like, that's why the BlackBerry people thought it was a fake demo, because it seemed impossible.

01:37:44 ◼   ► Yeah, and then we see things like the watch where we're pushed back to, "Wow, this is really slow again."

01:37:51 ◼   ► Yeah, and then the other aspect of this is Moore's Law.

01:37:54 ◼   ► Moore's Law can't continue forever.

01:37:57 ◼   ► the density of transistors on a CPU doubling every 18 months, well eventually you get down

01:38:04 ◼   ► to like quarks and gluons. Like you can't, you know, having the size of things, the math starts

01:38:09 ◼   ► to get really funky really fast and as far as we are aware you can't keep subdividing matter

01:38:14 ◼   ► forever. Eventually you get down to fundamental particles and way before you get down to fundamental

01:38:18 ◼   ► particles everything becomes screwy in terms of the laws of physics and quantum mechanics.

01:38:22 ◼   ► So lithography sizes, like we continue to march forward,

01:38:26 ◼   ► but there is an end in sight where you're gonna have

01:38:30 ◼   ► to come up with a new technology, like quantum computing,

01:38:32 ◼   ► or you know, like just, it's not as if this hockey stick

01:38:37 ◼   ► can't go on forever.

01:38:38 ◼   ► And so the bet with Swift is the era of time

01:38:41 ◼   ► that we're in now where progress on computing power

01:38:45 ◼   ► and performance has for both like practical reasons,

01:38:48 ◼   ► you know, in terms of how much harder is it for Intel

01:38:51 ◼   ► to make their top end CPUs faster every year,

01:38:53 ◼   ► and how long does it take to get to the next process node

01:38:55 ◼   ► for making feature sizes smaller in CPUs,

01:38:58 ◼   ► and because of the move to mobile and wearable

01:39:00 ◼   ► and who knows what else,

01:39:02 ◼   ► that this is a good time to say,

01:39:05 ◼   ► I don't think the hardware is gonna make it

01:39:08 ◼   ► so that those virtual machines are better suited

01:39:12 ◼   ► to Apple's needs than the solution

01:39:14 ◼   ► that represented by Swift and Arc with Objective-C.

01:39:17 ◼   ► And so let's say, you know,

01:39:20 ◼   ► Swift is the language from the next 20 years, and in the next 20 years we feel like this is the best technical solution.

01:39:24 ◼   ► Until quantum computers or whatever, this is what we're going with.

01:39:27 ◼   ► And Apple is essentially begging the company on that.

01:39:30 ◼   ► And it's been a good bet so far, because like I said, I think it gave them a huge advantage during the iPhone era, essentially, the iOS device era,

01:39:39 ◼   ► where it was very difficult for the competitors to catch up with them until the CPUs did start climbing up that hockey stick and said,

01:39:44 ◼   ► Now we can support a Java virtual machine

01:39:47 ◼   ► and have a responsive GUI,

01:39:49 ◼   ► just put a little more RAM in there.

01:39:52 ◼   ► - It occurs to me,

01:39:54 ◼   ► and I don't want to spend a lot of time

01:39:55 ◼   ► speculating about a car on this episode at least,

01:39:58 ◼   ► but one of the things that makes me laugh

01:39:59 ◼   ► about the car idea is that it's like the one team at Apple

01:40:04 ◼   ► that's writing software that the computing part

01:40:07 ◼   ► of the device doesn't have to really worry

01:40:12 ◼   ► about battery life.

01:40:13 ◼   ► I mean, the car itself obviously is going to have to worry about battery life tremendously,

01:40:17 ◼   ► but the amount of the battery that goes towards propelling a multi-ton device is everything.

01:40:26 ◼   ► And the little computer that lights up the dashboard and maybe does whatever else with

01:40:30 ◼   ► the sensors and stuff is kind of insignificant.

01:40:33 ◼   ► But it's really the exception to where things are going.

01:40:35 ◼   ► The watch, to me, is the better example of where things are going, where the computing

01:40:42 ◼   ► devices getting smaller and smaller. I mean, and you know, I don't know what the idea would

01:40:46 ◼   ► be, but surely they're going to be making devices that make the watch look big, you

01:40:50 ◼   ► know, in the years to come. And so they're never going to get out of the need, I don't

01:40:54 ◼   ► think in the foreseeable future to have really efficient code that runs on really what everybody

01:41:04 ◼   ► would consider to be a painfully slow processor because we keep the desire to keep making

01:41:09 ◼   ► things smaller and smaller and have little fingernail sized things that that do clever stuff is

01:41:13 ◼   ► inevitable

01:41:16 ◼   ► Yeah, and really you have to view it kind of as like as epochs in history

01:41:19 ◼   ► Like there was there was the part where you're growing up which was awesome where computers would get faster more powerful

01:41:24 ◼   ► Just like everything about them would get better just year after year and it was amazing, right?

01:41:28 ◼   ► And if you get starry-eyed and extrapolate from that you'd be like by the time we're adults computers will be infinitely fast and have more

01:41:34 ◼   ► Memory you the size of a planet, right?

01:41:36 ◼   ► But no, that's not how it works. We start reaching the limits of you know

01:41:39 ◼   ► silicon wafer lithography and all the other and instruction level parallelism and all the other sort of

01:41:44 ◼   ► very difficult problems that make it harder to make you know, or even just like heat dissipation with the the megahertz wars like

01:41:52 ◼   ► You know, what are we using now? The three four gigahertz CPUs. They had three four six gigahertz CPUs a long time ago, too

01:41:58 ◼   ► Why are we not using 700 gigahertz CPUs? Like we're bringing to the limits of the current way. We do computation

01:42:03 ◼   ► and so

01:42:06 ◼   ► We're kind of in it's not a dead period like we're making progress and we're doing interesting things

01:42:09 ◼   ► And we're going the other direction saying well

01:42:11 ◼   ► We're not making a lot of progress on the top end, but we can shrink these suckers down really small now

01:42:15 ◼   ► Isn't that pretty awesome?

01:42:16 ◼   ► You can have a smartphone or a smartwatch

01:42:17 ◼   ► But there will have that

01:42:19 ◼   ► Inevitably come a time where we come out of this slower period and go up into another hockey stick and again whether it's quantum computing

01:42:24 ◼   ► Or whatever whether we're all dead or not like there will be further progress

01:42:27 ◼   ► It's not the end of progress

01:42:28 ◼   ► but if you're Apple and you're trying to figure out how to make

01:42:33 ◼   ► the development platform for right now and for the next 20 years you have to sort of bet like what is the best fit for

01:42:39 ◼   ► this and it's you know Apple have the benefit of

01:42:41 ◼   ► everyone else going first and going with virtual machines whether it be Java or C# or the common language runtime at Microsoft and

01:42:48 ◼   ► seeing how JavaScript has worked out in the browser and they've essentially said

01:42:52 ◼   ► Because of both mobile and the slowdown in the top-end performance increase

01:42:56 ◼   ► We believe this is the best bet for the next 20 years or so because they saw everyone else go before them

01:43:02 ◼   ► And so that that's where we are with this

01:43:04 ◼   ► I don't think you know Swift is not if so if it's a language for the next hundred years it could be

01:43:08 ◼   ► But again the beauty of these details not being in Swift itself is there's nothing in the language itself that dictates that it couldn't be

01:43:15 ◼   ► Run on top of a virtual machine. It's just that's not the correct solution for Apple right now

01:43:19 ◼   ► And that's not what they're doing. Yeah, all right

01:43:21 ◼   ► Let me tell you about our next friend of the show and it's our good friends at wealth front

01:43:25 ◼   ► These guys have been sponsoring a show the last few episodes. They are here's what they give you a low-cost automated

01:43:31 ◼   ► investment service.

01:43:32 ◼   ► It makes it super easy to invest your money the right way.

01:43:36 ◼   ► You just put money into Wealthfront account,

01:43:38 ◼   ► and then they manage the portfolio.

01:43:41 ◼   ► They ask you a couple of questions about how risk

01:43:44 ◼   ► averse you are, how aggressive you want to be.

01:43:48 ◼   ► Because you can obviously invest in money

01:43:49 ◼   ► that goes into the stock market.

01:43:51 ◼   ► It could go down.

01:43:51 ◼   ► It's not a bank account.

01:43:54 ◼   ► So they ask you a couple of questions

01:43:56 ◼   ► to see how comfortable you are with risk,

01:43:57 ◼   ► and then they just take it from there, and that's it.

01:44:00 ◼   ► They literally say whether you're just starting out,

01:44:03 ◼   ► you can, I think you can open an account with just 500 bucks.

01:44:06 ◼   ► If you wanna put millions of dollars in there,

01:44:08 ◼   ► you can do it too.

01:44:09 ◼   ► That seems crazy to me, but you know,

01:44:13 ◼   ► really it scales all the way from, you know,

01:44:14 ◼   ► you being $500 put in a market to millions of dollars,

01:44:18 ◼   ► you can do it.

01:44:19 ◼   ► Why would you use them

01:44:20 ◼   ► instead of a traditional money manager?

01:44:22 ◼   ► Basically what Wealthfront is,

01:44:23 ◼   ► is an automated service that replaces a human money manager.

01:44:27 ◼   ► The big reason to do it is that, number one,

01:44:30 ◼   ► they're just putting money into index funds anyway,

01:44:32 ◼   ► which is really a smart long-term strategy.

01:44:35 ◼   ► If you read anything about the ways

01:44:37 ◼   ► that people can actually invest for success in the long term,

01:44:41 ◼   ► putting the money into index funds is the way to go.

01:44:43 ◼   ► That's pretty much what Wealthfront does,

01:44:44 ◼   ► but they balance it between different index funds

01:44:47 ◼   ► based on monitoring systems all the time,

01:44:50 ◼   ► monitoring the market all the time,

01:44:52 ◼   ► and moving money around between different index funds

01:44:54 ◼   ► to keep your risk at the right level.

01:44:57 ◼   ► And the big thing is is that Wealthfront charges way lower fees than traditional money managers

01:45:04 ◼   ► 1.0 1% is about the average but some of the some of the money managers out there charge up to 3% and

01:45:10 ◼   ► That's of what you have under management

01:45:12 ◼   ► So if you have you know ten thousand dollars under management

01:45:16 ◼   ► They they take a fee of 3% of your money not like your profits, but your money that's in there

01:45:21 ◼   ► Wealthfront's

01:45:23 ◼   ► fee is just 0.25 percent and

01:45:27 ◼   ► They only start charging that

01:45:30 ◼   ► above

01:45:31 ◼   ► $10,000 so if you

01:45:33 ◼   ► Only, you know, once you get $10,000 in your account, that's when they start charging their

01:45:38 ◼   ► 0.25

01:45:40 ◼   ► Fee and if you use the code that I have here for you, they actually bump that up to

01:45:45 ◼   ► 15,000 and so if you have 15,000 and then one put one more dollar in there

01:45:51 ◼   ► They charge the fee on that one dollar that's over fifteen thousand keep going from there

01:45:56 ◼   ► Go to here's where you go to find out more wealth front comm slash the talk show

01:46:02 ◼   ► and again

01:46:03 ◼   ► You can start with just 500 bucks and they even say right here that that's really how most of the people who sign up for

01:46:09 ◼   ► Worldfront do it put a little money in there see how it works

01:46:11 ◼   ► And then when you see how it works and you like the results, that's when you put your quote unquote real money in

01:46:17 ◼   ► So go to wealthfront.com slash the talk show

01:46:20 ◼   ► You'll actually save money because you get that you get bumped up to fifteen thousand dollars before they even start charging you a nickel

01:46:26 ◼   ► So go check them out. And here's the part where I have to try to stay out of prison for compliance purposes

01:46:32 ◼   ► I have to tell you that wealthfront incorporated is an SEC registered investment advisor

01:46:37 ◼   ► Brokerage services are offered through wealthfront brokerage corporation

01:46:42 ◼   ► Member fin ra and si PC. This is not a solicitation to buy or sell securities investing in securities involves risks

01:46:51 ◼   ► And there is the possibility of losing money past performance is no guarantee of future results

01:46:56 ◼   ► Please visit wealthfront comm to read their full disclosure

01:47:00 ◼   ► So far so good. Nobody from the SEC has gotten on me about this

01:47:04 ◼   ► It's only a matter of time till they find you

01:47:10 ◼   ► Anything else on Swift and and the Federighi interview?

01:47:14 ◼   ► I hope they do more of those things and I think we're are we working our way down the ladder?

01:47:20 ◼   ► I guess we kind of are like Schiller

01:47:22 ◼   ► come to talk show and now

01:47:24 ◼   ► Federighi and like we keep going down to like Chris Latner is on like open source

01:47:30 ◼   ► Podcast talking about programming languages with nerds then eventually you get like individual

01:47:34 ◼   ► Developers on like the UI kit team

01:47:37 ◼   ► Doing interviews. Well, maybe they won't go that far but I don't know

01:47:39 ◼   ► I like the idea because as you go down the chain people

01:47:42 ◼   ► You would think would be both in the position and enthusiastic about talking about more small technical details, right?

01:47:49 ◼   ► The old Apple the idea was there's only we speak with one voice from the top

01:47:54 ◼   ► And and that one voice doesn't say too much and now now we're kind of moving down the ladder

01:48:00 ◼   ► well

01:48:00 ◼   ► We speak with multiple voices from the top tiers and so they can talk about a little bit different things like, you know

01:48:07 ◼   ► Phil Schiller is not going to talk to you about, you know, runtime casting things into protocols,

01:48:12 ◼   ► right? But Craig Freddie really will. So as you keep going down, the conversations get

01:48:17 ◼   ► more interesting to narrower audiences, as opposed to always just being like the big picture,

01:48:22 ◼   ► what is Apple doing type of stuff. So I enjoy that.

01:48:24 ◼   ► >> The thing I've detected, what I would define the new Apple, the difference between old Apple

01:48:29 ◼   ► and new Apple, is that they remain committed to secrecy on future products for the exact same

01:48:36 ◼   ► reasons they always have been, that they don't want competitors to know and that from a marketing

01:48:40 ◼   ► perspective they feel that being able to unveil these things as a surprise is an advantage and

01:48:45 ◼   ► that gets them a lot of publicity around their events and announcements that they wouldn't have

01:48:49 ◼   ► if they were blabbing about everything in advance. And I think also just the good old-fashioned

01:48:54 ◼   ► under-promise over-deliver, that if you keep talking about stuff in the future all the time,

01:49:00 ◼   ► inevitably some of these things are going to ship late and then you've disappointed people in terms

01:49:05 ◼   ► and you know but for stuff that's already shipped and talking about decisions they've already made

01:49:11 ◼   ► and the stuff that's out there i think that's where the difference is and i feel like old

01:49:14 ◼   ► apple was if we're misunderstood screw them i don't we don't care you know you either get it

01:49:19 ◼   ► or you don't and i feel like new apple at an executive level really is it's it's the openness

01:49:28 ◼   ► is coming from the frustration i think of being misunderstood and feeling like if we could just

01:49:33 ◼   ► explain ourselves we'd be less misunderstood and I wish that we could do that.

01:49:37 ◼   ► If only like we all of our commentary on our blogs and podcasts and everything only had a username

01:49:42 ◼   ► but they had no way to contact us like the App Store. Would that be frustrating Apple? Like if

01:49:48 ◼   ► people were misunderstanding you but there was just no way you could find who this John Gruber

01:49:51 ◼   ► guy was to talk to him about it. I mean that's a good contrast in terms of the organizations like

01:49:56 ◼   ► they'll talk a lot about the roadmap for Swift and Swift 3 and engage with the community about what

01:50:02 ◼   ► what would be best about this programming language that now is going to be much bigger than Apple itself and as a community project,

01:50:07 ◼   ► but no one will talk to you about the App Store, even if you have an app, you know, it's just

01:50:10 ◼   ► such a contrast in terms of, if I could just talk to a person who would be reasonable with me, like surely we could

01:50:17 ◼   ► work this out. You hear all the crazy stories about like an app that's in review, whoever, or they think you're violating someone's copyright,

01:50:24 ◼   ► when it's like, no, you don't understand,

01:50:25 ◼   ► it's the opposite there, and violating mine, and just

01:50:28 ◼   ► Things that you feel like can be worked out between two reason people who just talked to each other on the phone that nevertheless take

01:50:33 ◼   ► Months, I just want to an unsatisfying conclusion that what was there was a an apps

01:50:38 ◼   ► Oh, I know it was when what was the app that that quit the App Store?

01:50:42 ◼   ► Which one sketch? Well, no the one that was recent so sketch

01:50:47 ◼   ► announced that they were leaving the App Store and

01:50:50 ◼   ► Again, I don't know. I don't want to call it the straw that broke the camel's back

01:50:54 ◼   ► I don't know that it's gonna mean that anything is gonna happen

01:50:57 ◼   ► But to me it was just emblematic of the problems and especially in the Mac App Store

01:51:01 ◼   ► Because sketch was to my mind the prototypical modern

01:51:06 ◼   ► Mac

01:51:09 ◼   ► Productivity app it's it's beloved. It's so popular. I mean an Apple obviously knows it's popular

01:51:15 ◼   ► They ship with like the the watch OS

01:51:17 ◼   ► SDKs they ship

01:51:20 ◼   ► Photoshop templates for watch UI design and sketch templates for watch UI design

01:51:25 ◼   ► So, and I think those are the only two, you know, obviously anybody who uses a different graphics program could open up the PSDs and convert them or something like that.

01:51:32 ◼   ► But the two that Apple ships, you know, that you can just download from apple.com are for sketch and Photoshop.

01:51:38 ◼   ► So to put it on the same pedestal as Photoshop is, you know, it's pretty good.

01:51:43 ◼   ► And they've won Apple Design Awards and they've been heavily promoted in the App Store.

01:51:48 ◼   ► And for them to leave the App Store to me is just, wow, if they're not happy in the App Store, who is?

01:51:54 ◼   ► That's when Apple's narrative doesn't fit anymore because if you're an Apple and you want to have a narrative to make yourself feel better about

01:52:00 ◼   ► App Store complaints you'd be like well

01:52:02 ◼   ► These are just kind of like the same way you talk about the complaints about you know

01:52:05 ◼   ► I don't need Arc, retain release is fine. Like well, these are just the old people like we love them

01:52:09 ◼   ► They're loyal to our platform. They've been there a long time

01:52:11 ◼   ► Your Adobe's your Microsoft's or whatever, but really the future of the platform is about new blood. It's about new developers developers

01:52:19 ◼   ► We haven't heard of like say someone makes a new graphics application. That's not Adobe

01:52:24 ◼   ► That's from a smaller team that grows up on our platform that we were the first and only

01:52:28 ◼   ► Platform that they targeted that that is native to us that you know, like that's what Apple wants like oh these this

01:52:35 ◼   ► Fresh young faces like new talent essentially that because that's the future of the platform

01:52:40 ◼   ► The future of the platform is not old crusty people who've been shipping on the Apple platforms for 30 years, right?

01:52:45 ◼   ► It's new people and so a new company you've never heard of comes along and makes this great graphics application

01:52:51 ◼   ► that is, you know, taking the world by storm and Apple saying putting it up alongside Photoshop and they say

01:52:56 ◼   ► Yeah, you know we're out. We can't take this app store stuff anymore

01:53:00 ◼   ► Then you can't just say well really the app store is great for everybody's just you old crusty people who are used to the old

01:53:04 ◼   ► Ways, you know it breaks the narrative

01:53:06 ◼   ► Yeah

01:53:06 ◼   ► One of the ways that sketch again is like to me a poster child of what Apple wants

01:53:10 ◼   ► Third-party apps to be is like exactly what you said

01:53:13 ◼   ► It's Mac only and it's not Mac only because they you know

01:53:16 ◼   ► It's because they've how does a small team build an app that in some ways can

01:53:21 ◼   ► Compete toto Photoshop. It's because they're leveraging all of this great graphic stuff built into Mac OS X

01:53:29 ◼   ► Same thing with pixel mater same thing with acorn

01:53:32 ◼   ► From our pal Gus, you know that these apps written these graphics apps written by really small teams

01:53:39 ◼   ► I mean Gus is the only developer at flying meat. I mean, it's a one-person team there

01:53:44 ◼   ► He can make an app that credibly stands as a professional image editor because he's leveraging

01:53:50 ◼   ► it wouldn't even make any sense to go cross-platform because it's it's all built on this system stuff and

01:53:56 ◼   ► That's what Apple wants for multiple reasons one

01:53:59 ◼   ► that's why they give you these API's and they

01:54:02 ◼   ► are happy to see them used and then they know that when they add new features to the operating system like

01:54:09 ◼   ► What's the thing on the new retina 5k max where there's more colors on the monitor the deep p3?

01:54:15 ◼   ► Go or color gamut or whatever. It's called right so then these apps. I think sketch one of these apps

01:54:20 ◼   ► I know I just saw in the release notes on the App Store one of them

01:54:23 ◼   ► Just released an update that has support for it already

01:54:25 ◼   ► Whereas in the old days when you're you know like and not to badmouth Adobe

01:54:30 ◼   ► But like with Adobe stuff where they're cross-platform

01:54:32 ◼   ► They couldn't adopt like a new great new Mac technology like this deep color on the 5k

01:54:38 ◼   ► I'm ax because they have this graphics engine that is a level of abstraction and it's based on what's available on Mac and Windows

01:54:46 ◼   ► And if Windows doesn't have it

01:54:48 ◼   ► Maybe there's you know

01:54:49 ◼   ► It's gonna take them longer to be able to adopt it because then you've got these files that have you know

01:54:54 ◼   ► Deep color that don't show up on Windows or something like that

01:54:57 ◼   ► It's just a perfect example of doing it the right way and then here they are getting out

01:55:04 ◼   ► anyway

01:55:04 ◼   ► The one thing that stuck out to me on this and you like your example of wouldn't it be great if you could just talk

01:55:09 ◼   ► To somebody and work this out was in the hubbub over sketch leaving the app store. I was reading Michael sigh

01:55:15 ◼   ► Had a great blog post like a roundup blog post with like, you know

01:55:20 ◼   ► eight nine ten different reactions from around the web and he just noted at the end of the

01:55:24 ◼   ► Noted without any further comment that he has an update to a Mac app that's been pending review

01:55:30 ◼   ► It's just a bug fix update to one of his apps that was pending review for 59 days

01:55:35 ◼   ► What does that what kind of sense does that make here's a bug fix for my users and 59 days later

01:55:42 ◼   ► It's still waiting to go into review

01:55:44 ◼   ► Yeah, and even that you could say it's like prioritization or whatever and you might feel bad about it

01:55:48 ◼   ► But the ones that just really drive me nuts is where like it's a misunderstanding like it's a romantic comedy level

01:55:53 ◼   ► misunderstanding and and and it's just like

01:55:57 ◼   ► Listen to me, you know, like it's like in a romantic comedies stories

01:56:01 ◼   ► But like I think it just if these two people just got together and explain this one thing

01:56:04 ◼   ► Like the whole rest of the movie would be pointless, right?

01:56:06 ◼   ► And this is like this in the App Store

01:56:07 ◼   ► But there's no one for you to talk to like you you send your little message in a bottle and then you wait and then

01:56:11 ◼   ► You wait and then you wait and this inscrutable reply comes back. It's like no you didn't understand me

01:56:15 ◼   ► You did you even read what I wrote like it's is this an automated system. Is there a human there?

01:56:20 ◼   ► Can I talk to somebody somebody who is both empowered and able to understand like there's like there's a language barrier like they don't you know

01:56:26 ◼   ► I think the one about copyright was that like where some a bunch of scammers are putting up applications that appeared to come from a

01:56:32 ◼   ► Different developer and then Apple would flag the legitimate developer to say they were violating the copyright

01:56:36 ◼   ► It was like what whatever was that?

01:56:38 ◼   ► stuff like that is very frustrating like and that essentially what that comes down to is like like in a romantic comedy just merely a

01:56:44 ◼   ► lack of communication and how can Apple be doing so well and

01:56:47 ◼   ► improving so much in its communication like

01:56:50 ◼   ► Keeping the advantages like you said of like keeping your product secret and not and not showing everything you're even thinking of making because my people

01:56:57 ◼   ► are disappointed but also

01:56:59 ◼   ► Being open to feedback and having a community where human beings talk to other human beings doesn't mean they're always gonna agree and doesn't mean

01:57:05 ◼   ► People outside Apple are telling Apple what to do

01:57:08 ◼   ► But just to make sure everyone's all on the same page and obviously it's a much more advantageous for a programming language

01:57:14 ◼   ► Which is less of a competitive advantage for Apple then like its individual features or whatever but the App Store

01:57:20 ◼   ► Like it's just it's it's so clearly a different philosophy

01:57:24 ◼   ► dictating the the public face of that part of the organization than the other and I know it's all one big place and

01:57:30 ◼   ► Apple tries to speak with one voice, but I

01:57:33 ◼   ► You know, it just it's becoming

01:57:35 ◼   ► increasingly clear where the lines are in terms of like the new Apple that you were describing and

01:57:44 ◼   ► The old Apple that's it's still inside there and and you know who knows like who's to say that that is or isn't appropriate for

01:57:50 ◼   ► The individual things is just a difference in like what department am I talking to what is the subject that?

01:57:56 ◼   ► We're that we're even talking about

01:57:58 ◼   ► And how then does Apple talk about it?

01:58:00 ◼   ► 59 days in review what the hell

01:58:13 ◼   ► I guess I could take another break here.

01:58:15 ◼   ► And do you want to talk anything else about Swift?

01:58:18 ◼   ► I guess the other thing,

01:58:19 ◼   ► one other thing I thought about was Swift.

01:58:21 ◼   ► I know Apple's, they've said this for a while,

01:58:23 ◼   ► but you know, Federighi's had this

01:58:24 ◼   ► in his talking points all week long,

01:58:26 ◼   ► which is that they really, really think

01:58:28 ◼   ► that Swift could be the default go-to programming language,

01:58:33 ◼   ► not just for their platforms

01:58:35 ◼   ► and writing apps for their platforms,

01:58:37 ◼   ► but just like, you know,

01:58:38 ◼   ► high school kids who are learning to program,

01:58:40 ◼   ► middle school kids.

01:58:41 ◼   ► I mean, I don't even know why I wait till high school,

01:58:42 ◼   ► but kids learning to program computer science courses

01:58:46 ◼   ► in college, you know, why not, you know,

01:58:49 ◼   ► that they see Swift as the language

01:58:51 ◼   ► that could take that role, which to me is it,

01:58:53 ◼   ► I believe it, I really think that they mean it,

01:58:57 ◼   ► but that's such an incredibly ambitious goal

01:59:01 ◼   ► for a programming language.

01:59:02 ◼   ► - Yeah, I think it sounds more reasonable

01:59:04 ◼   ► when you think about, well,

01:59:05 ◼   ► what are those people learning with now?

01:59:08 ◼   ► Because I can tell you it's not C,

01:59:09 ◼   ► Like, I think most of the time it's Java or JavaScript,

01:59:14 ◼   ► which I guess is JavaScript probably isn't terrible

01:59:17 ◼   ► because it's a pretty simple language.

01:59:18 ◼   ► - Really, do you think CompSci is JavaScript

01:59:21 ◼   ► or do you think just--

01:59:21 ◼   ► - I think Java, Java I think is the most common

01:59:24 ◼   ► teaching language at this point.

01:59:26 ◼   ► Some schools like, you know, I think MIT still has something

01:59:29 ◼   ► with Scheme and Lisp and all that business.

01:59:31 ◼   ► But the days of them teaching C

01:59:34 ◼   ► is your first programming language,

01:59:35 ◼   ► I think are long gone and C++ same type,

01:59:38 ◼   ► Like, what is a better teaching language is what it gets to.

01:59:40 ◼   ► Like, if not Swift, then what?

01:59:42 ◼   ► And if Java is the answer, I think Swift has fewer,

01:59:47 ◼   ► well, it's difficult.

01:59:48 ◼   ► When they say that, like, Swift is gonna be a language,

01:59:50 ◼   ► then which Swift do you want them to teach?

01:59:52 ◼   ► Do they want us to teach Swift one?

01:59:53 ◼   ► Oh, no, no, no, Swift two?

01:59:54 ◼   ► Oh, no, like, again, it's barely sitting up at this point.

01:59:57 ◼   ► So this is obviously a long-term plan.

01:59:58 ◼   ► But once Swift settles down, being a more modern language,

02:00:02 ◼   ► it's either gonna be Swift or something like Python

02:00:06 ◼   ► or JavaScript that's an even higher level language.

02:00:08 ◼   ► because learning languages don't need to care about performance and stuff like that.

02:00:11 ◼   ► So you can get away with using, not I'm gonna say a toy language,

02:00:15 ◼   ► but a much much higher level language that you just want them to deal with the concepts.

02:00:19 ◼   ► And I think the only thing that will hold Swift back is,

02:00:22 ◼   ► Swift is a complicated language, Swift has a lot of features, right?

02:00:27 ◼   ► And a lot of the features in Swift I think make more sense in the context of understanding simpler languages first.

02:00:34 ◼   ► Swift is not a simple language, there is a lot to it.

02:00:37 ◼   ► It's very powerful.

02:00:38 ◼   ► There's a lot of concepts and things in there.

02:00:40 ◼   ► Not details that you don't care about,

02:00:41 ◼   ► like memory management and crap.

02:00:43 ◼   ► Well, there's a little tiny bit of that

02:00:44 ◼   ► if you really want to get into it, but.

02:00:46 ◼   ► - All right, what do they have?

02:00:46 ◼   ► Like an unsafe pointer type?

02:00:48 ◼   ► - Yeah, like they've got the go ahead,

02:00:50 ◼   ► screw yourself abilities in there,

02:00:53 ◼   ► but you wouldn't teach that.

02:00:54 ◼   ► But even just the concepts of the way it handles,

02:00:58 ◼   ► all the different prototypes and class extensions

02:01:01 ◼   ► and inheritance and when do I use a class

02:01:03 ◼   ► and when do I use a struct

02:01:04 ◼   ► and value types versus reference types.

02:01:06 ◼   ► And there's a lot of things in there that aren't in much simpler languages,

02:01:09 ◼   ► like back in the old days, TCL, you know, or like a logo with a little turtle,

02:01:15 ◼   ► or even something like Python.

02:01:17 ◼   ► I mean, I guess every language has its grotty corners,

02:01:19 ◼   ► but Swift is already a pretty full-featured language,

02:01:22 ◼   ► and it's going to get even fuller featured with time.

02:01:25 ◼   ► So that may hold it back from being a teaching language,

02:01:28 ◼   ► because in some respects, a teaching language,

02:01:30 ◼   ► you don't even need it to be a real language.

02:01:31 ◼   ► I mean, I guess you need it to execute for your exercises and stuff,

02:01:33 ◼   ► but you're not teaching them,

02:01:35 ◼   ► here's the programming language you're gonna use when you enter the industry, like it's not a vocational school.

02:01:38 ◼   ► You're teaching them concepts, which is why MIT can teach Lisp and Scheme and everything and ML or whatever,

02:01:43 ◼   ► and it's like, I don't care if you can use this, we're just trying to teach you conceptually how this works,

02:01:48 ◼   ► and why Python, again, Python is another language that many people have said looks like pseudocode,

02:01:51 ◼   ► especially since there's no curly braces and the indentation is mandatory.

02:01:54 ◼   ► You can go to your algorithms book and see the algorithms for red black trees and you can write it in Python

02:01:58 ◼   ► and it looks a lot like it did in your algorithms book that didn't have, you know, the algorithms book just has English words,

02:02:03 ◼   ► It's not a programming book at all right so I think the road to Swift being a teaching language may be difficult

02:02:10 ◼   ► but if I had to pick

02:02:12 ◼   ► Do you want to teach this course in Java or in Swift?

02:02:14 ◼   ► I think Swift would be better if only because jobs get even more weirdness in terms of like primitives versus you know

02:02:20 ◼   ► Auto-boxing and object types and all sorts of weird crap like that so I've never written Java, so I'm speaking from a position of

02:02:29 ◼   ► admitted some level of ignorance, but I've you know everything I've ever seen of Java is

02:02:34 ◼   ► It's just it's so verbose. Oh

02:02:38 ◼   ► It it really I find it very off-putting

02:02:42 ◼   ► Yeah

02:02:43 ◼   ► and there's a lot of like there's a lot of weirdness in Java that has to do with like

02:02:47 ◼   ► Yeah

02:02:47 ◼   ► I think it was a funny part of speaking of things that would sound weird in the future a funny part of Craig video reason

02:02:52 ◼   ► You're here when you were saying

02:02:55 ◼   ► Or server-side languages like Java. Java was not made as a server-side language. It was a language for set-top boxes, right?

02:03:01 ◼   ► Well, and in fact, it's what everybody programs on to write Android apps, right? Oh, you know, well, it's well, that's yeah

02:03:07 ◼   ► But like its origins were for set-top boxes and then eventually its second life was oh, these are gonna be applets

02:03:14 ◼   ► They're gonna run in your browser. Like it was the opposite of server-side

02:03:17 ◼   ► It was gonna be code that we send from a server to your client and runs in people's web browsers

02:03:21 ◼   ► And then it had its third life as you know what we're just gonna have this as a memory managed language on a server because

02:03:26 ◼   ► It's faster than all those scripting languages, and it doesn't require a manual memory management like C++

02:03:31 ◼   ► It always struck me and I know that it came from Sun and that Sun was a you know typical laid-back

02:03:37 ◼   ► Valley you know corporation

02:03:40 ◼   ► Isn't it funny that you have to talk about Sun in the past tense and it even feels like the past tense now kids don't

02:03:45 ◼   ► Even know what Sun is

02:03:48 ◼   ► You know, I know that's where it started, but the syntax of it looked so corporate to me

02:03:52 ◼   ► It looked like the type of programming language that was written by like IBM programmers who still wore like a shirt and tie to work

02:03:58 ◼   ► and and like the type of people who like

02:04:00 ◼   ► They your email is configured and you can't even change it so that you have like a 12 line

02:04:05 ◼   ► Legal disclaimer in your signature, you know that you know, if you've gotten this email by mistake

02:04:10 ◼   ► You're legally obligated to delete it and notify us immediately, you know

02:04:14 ◼   ► It just looks like that type of programming language

02:04:16 ◼   ► where just to have a simple class, you've got like 12 lines of bullshit boilerplate for everything.

02:04:21 ◼   ► Yeah, I never like trying to do Hello World and having to make like a class that I mean,

02:04:26 ◼   ► there's a certain symmetry to it like that it is kind of like if you compare it to C++ or something

02:04:33 ◼   ► like that, it was trying to make a more rationalized world and I think as one of the

02:04:38 ◼   ► first languages to really break out and be successful in doing that, I definitely feel

02:04:42 ◼   ► I feel like it has a, I have respect for it as making a substantial leap over what came

02:04:46 ◼   ► before it.

02:04:47 ◼   ► I have respect for it, but it's, I didn't like it.

02:04:49 ◼   ► I, when I went to Drexel in the 90s and majored in computer science, we learned Pascal at

02:04:54 ◼   ► first, like the first year courses were Pascal.

02:04:59 ◼   ► And people used to complain, some people, not largely, but people, there were complaints

02:05:03 ◼   ► like on the mailing list, like students complained into the faculty that, you know, why are we

02:05:08 ◼   ► learning Pascal?

02:05:09 ◼   ► No, there's no jobs in Pascal.

02:05:11 ◼   ► wants C programmers and the professors, if they would respond.

02:05:15 ◼   ► Or I guess it wasn't mailing lists, it was the news groups we had for the computer science

02:05:20 ◼   ► department.

02:05:21 ◼   ► And they would just be like, "We're not running a vocational school here.

02:05:23 ◼   ► If you learn how to program, you'll be able to program in any language."

02:05:26 ◼   ► Which is true.

02:05:27 ◼   ► I mean, it's not like you learn how to program in C and then you don't know how to program

02:05:33 ◼   ► in another language.

02:05:34 ◼   ► You just have to learn the syntax.

02:05:35 ◼   ► But like when I took object-oriented programming, it was C++.

02:05:40 ◼   ► And I thought, wow, object-oriented programming

02:05:42 ◼   ► sucks.

02:05:44 ◼   ► That's what I took away from object-oriented programming

02:05:47 ◼   ► in college.

02:05:47 ◼   ► I was like, wow, this is bullshit.

02:05:51 ◼   ► Yeah.

02:05:52 ◼   ► And that's the thing about teaching languages,

02:05:55 ◼   ► is you're trying to teach concepts.

02:05:59 ◼   ► And they may be concepts that are pretty new.

02:06:02 ◼   ► But you have to have an embodiment of those concepts

02:06:04 ◼   ► to teach them, because you do want people

02:06:05 ◼   ► to write code that executes.

02:06:06 ◼   ► And every embodiment comes with its own BS.

02:06:09 ◼   ► whatever that BS may be, whether it may be,

02:06:12 ◼   ► oh, it started out as a series of macros on top of C.

02:06:15 ◼   ► And so it's got some C grottiness in there.

02:06:18 ◼   ► Or this language is obsessed with performance.

02:06:21 ◼   ► So there's a lot of crap that you don't quite understand

02:06:23 ◼   ► that complicates things, but it's needed for performance.

02:06:26 ◼   ► Or Java-like, this was originally made for set-top boxes,

02:06:30 ◼   ► and later was used for web applets,

02:06:31 ◼   ► and there's this whole bytecode thing that's going on.

02:06:34 ◼   ► And they tried to make a new portable framework

02:06:36 ◼   ► that works everywhere.

02:06:37 ◼   ► So why the hell does FileIO look all crazy?

02:06:40 ◼   ► Well, it has to work everywhere and can't rely on any--

02:06:43 ◼   ► it's like there's a virtual machine,

02:06:45 ◼   ► and it's not using the native libraries in the platform,

02:06:48 ◼   ► and everything is all verbose.

02:06:51 ◼   ► And that baggage is not part of what

02:06:53 ◼   ► they're trying to teach you.

02:06:54 ◼   ► But you have to end up learning it as part of the course.

02:06:56 ◼   ► And if things go awry, the course

02:06:58 ◼   ► can end up being more about that baggage,

02:07:01 ◼   ► or get distracted and think that baggage is part

02:07:03 ◼   ► of the essential concept, like you said,

02:07:04 ◼   ► thinking that C++ is object-oriented programming.

02:07:07 ◼   ► two very separate different things and if that's it and it was mine too, it's the first object

02:07:11 ◼   ► oriented language I learned with C++, it really warps your world view and you can't help if you're

02:07:17 ◼   ► teaching that course to be influenced by the language you're choosing, so I'm glad that

02:07:22 ◼   ► people upgraded from C and C++ to Java because it was a significant step up in terms of the BS that

02:07:27 ◼   ► you have to learn and deal with, but Java has its own BS and Swift has its own BS too, especially now

02:07:32 ◼   ► that it's changing every year, that if you teach the course one year your previous assignments won't

02:07:36 ◼   ► won't even compile the next year.

02:07:38 ◼   ► Like maybe it's not time to jump on the Swift bandwagon yet.

02:07:41 ◼   ► But over time, yeah, you need to upgrade

02:07:44 ◼   ► the language you're using to teach.

02:07:45 ◼   ► And hopefully they get better over time and have less BS.

02:07:49 ◼   ► - Here's the thing, I guess I think I had it in my notes

02:07:52 ◼   ► for the interview with Craig Federighi.

02:07:55 ◼   ► And I don't think I got to it.

02:07:56 ◼   ► And I think it was because it just seemed like a dead end

02:08:00 ◼   ► to try to get it out of him.

02:08:01 ◼   ► But that, I don't know how I would have asked it,

02:08:06 ◼   ► But the basic idea being that a lot of times

02:08:08 ◼   ► a programming language is, it starts to fuel

02:08:12 ◼   ► the creator of the language's personal itch.

02:08:14 ◼   ► Perl is a perfect example of that.

02:08:16 ◼   ► Say what you want about Perl.

02:08:17 ◼   ► Me and you, I know you still write Perl as your job, right?

02:08:21 ◼   ► - Still do.

02:08:23 ◼   ► - And everything I've ever done of any consequence

02:08:26 ◼   ► programming-wise is written in Perl.

02:08:28 ◼   ► My reference markdown implementation is Perl.

02:08:31 ◼   ► I wouldn't, I still, I like it.

02:08:36 ◼   ► And I think for me personally, because most of what I want to do is string manipulation,

02:08:41 ◼   ► that's why Perl is great.

02:08:42 ◼   ► But the fact that it's so great at string manipulation was the fact that Larry Wald

02:08:46 ◼   ► wanted to do things like that.

02:08:47 ◼   ► And if you read back to when he created it, he was writing these little glue scripts for

02:08:52 ◼   ► -- what was it, like the NSA or something like that?

02:08:55 ◼   ► It was some kind of government --

02:08:56 ◼   ► >> I think it was NASA.

02:08:58 ◼   ► I think you're off by one letter in that acronym.

02:09:02 ◼   ► But he was like, you know, had these automated things that need to run and FTP the results

02:09:06 ◼   ► up to a certain server and that it was automating them with scripts and he was like, wow, this

02:09:09 ◼   ► is terrible.

02:09:10 ◼   ► It used to be a lot easier if I just made my own little scripting language that made

02:09:13 ◼   ► this easier to do and then it grew from there.

02:09:15 ◼   ► And all sorts of other languages have origins like that.

02:09:18 ◼   ► And I just wonder whether is it a problem that Swift is being steered by someone who's

02:09:24 ◼   ► a systems designer who writes, you know, the LLVM and CLang and writes these compilers?

02:09:31 ◼   ► Is there a problem having a language written by the compiler guy?

02:09:34 ◼   ► Because you're making things, you're trying to make things easier for the compiler

02:09:37 ◼   ► and optimize things from the compiler as opposed to making a language that makes it

02:09:41 ◼   ► more possible to be expressive as a GUI app designer.

02:09:46 ◼   ► Well, that foundational bet on, you know, Arc essentially versus a virtual machine

02:09:52 ◼   ► is at the core, I feel like, of the design at Swift because it's baked in entirely.

02:09:57 ◼   ► And that is definitely from a compiler writer's perspective.

02:09:59 ◼   ► and Craig touched on this as well.

02:10:01 ◼   ► If you are writing a compiler, dealing with a language

02:10:06 ◼   ► that makes it so you can't add certain obvious optimizations

02:10:10 ◼   ► because according to the semantics of the language,

02:10:12 ◼   ► you can't be sure that this thing,

02:10:14 ◼   ► I can't be sure what method is gonna get called here.

02:10:16 ◼   ► I'm not gonna know until runtime.

02:10:18 ◼   ► At compile time, I have no idea.

02:10:20 ◼   ► So like Craig said, the compiler has hands tied

02:10:23 ◼   ► behind its back, both hands sometimes,

02:10:25 ◼   ► and it's just like, well, nothing I can do about it.

02:10:26 ◼   ► I just gotta put in this code to execute this at runtime.

02:10:30 ◼   ► I'll look up the method and we'll execute it

02:10:31 ◼   ► and you can try to do some optimizations.

02:10:33 ◼   ► And the whole fact that there's a runtime

02:10:34 ◼   ► that all your code gets turned into calls

02:10:36 ◼   ► to the C library for Objective-C message send

02:10:38 ◼   ► and we can optimize the hell out of that

02:10:40 ◼   ► with assembly code or whatever.

02:10:41 ◼   ► But the bottom line is we can't inline it

02:10:43 ◼   ► 'cause we don't even know what the hell

02:10:45 ◼   ► method's gonna be like.

02:10:46 ◼   ► That there's dynamism in the language

02:10:48 ◼   ► that the compiler can't handle.

02:10:50 ◼   ► So if you're a compiler guy, you're like,

02:10:52 ◼   ► boy, this is really frustrating.

02:10:53 ◼   ► I know I can make this go faster.

02:10:55 ◼   ► I know I can make this safer.

02:10:57 ◼   ► I know I can make it so I can guarantee

02:10:59 ◼   ► that this is always gonna be initialized.

02:11:01 ◼   ► Nothing a programmer can do

02:11:02 ◼   ► to end up with this half initialized object

02:11:04 ◼   ► that's gonna cause a segfault

02:11:05 ◼   ► because they didn't realize through this chain of code

02:11:07 ◼   ► that they're halfway through the initializers

02:11:08 ◼   ► and they call a method

02:11:09 ◼   ► and it tries to read some object attribute

02:11:11 ◼   ► that has garbage data in it because it wasn't initialized.

02:11:13 ◼   ► I can fix that in the language.

02:11:14 ◼   ► And I can say, this language guarantees

02:11:16 ◼   ► that by the time this object is constructed,

02:11:18 ◼   ► all this stuff has been initialized.

02:11:20 ◼   ► It's guaranteed by the language.

02:11:21 ◼   ► It's guaranteed by the compiler.

02:11:22 ◼   ► That bug is gone from everybody's code.

02:11:24 ◼   ► or calling a method on a thing that doesn't exist, that bug is gone for me, I can guarantee that, right?

02:11:29 ◼   ► And so it's not just that he's like, I just want to make it good for the compiler,

02:11:32 ◼   ► the compiler guy also sees all the places where, you know, where bugs happen, where programs fall down,

02:11:38 ◼   ► and he can solve that, and I think what you're getting at is like, okay, but if you mostly write compilers and you don't write GUI apps,

02:11:42 ◼   ► maybe you're making a language that makes it more difficult to write UIKit, or AppKit, or some, like, one of these great GUI libraries that helps

02:11:51 ◼   ► application developers make the applications that they make for the Mac and for iOS.

02:11:55 ◼   ► And I think, I mean, there's two things giving people that impression. One is,

02:12:01 ◼   ► there is a match between the language and the libraries in terms of, and culturally as well as

02:12:08 ◼   ► technically. And early in Swift's life, one of the main requirements of Swift is you have to be able

02:12:13 ◼   ► to call into Objective-C and all that, you have to be able to interact, you have to be able to write

02:12:17 ◼   ► an application partially in Swift and partially in Objective-C, or it's a non-starter.

02:12:20 ◼   ► And it can't be, it may not be optimal, but it can't be terrible to drop into an object,

02:12:25 ◼   ► you know, to call into an object of C library.

02:12:28 ◼   ► And like Craig said, you can't wait around to be like, well, we've got a new language

02:12:31 ◼   ► and then a whole new set of libraries and a whole new set of, like, you can't just start

02:12:33 ◼   ► from scratch.

02:12:34 ◼   ► There's too much value and investment in what, in all the existing frameworks and libraries.

02:12:39 ◼   ► And then you'd still be in a case where you have dual libraries, like a whole separate

02:12:43 ◼   ► stack for Swift and, you know, it's not, so you have to do, have to have that interaction

02:12:47 ◼   ► with it.

02:12:48 ◼   ► is going to be a little bit weird.

02:12:49 ◼   ► Like all the crazy annotations they have

02:12:51 ◼   ► in Objective-C libraries to get better interfaces

02:12:53 ◼   ► with Swift and you have to think really hard about like--

02:12:55 ◼   ► - Carbon and Cocoa?

02:12:57 ◼   ► - Yeah, well, I mean, they eventually settled that, right?

02:13:00 ◼   ► But you know, during the transition,

02:13:01 ◼   ► you gotta do what you gotta do in a transition.

02:13:03 ◼   ► I think that transition makes Swift look bad

02:13:05 ◼   ► because if it was a top to bottom Swift stack,

02:13:08 ◼   ► it would be clear, hey, how do I use Swift

02:13:10 ◼   ► to make a GUI app?

02:13:11 ◼   ► Right now it's, hey, how do I use Swift

02:13:13 ◼   ► to use Objective-C libraries to make a GUI app?

02:13:16 ◼   ► And there's this drive by people writing code, like,

02:13:19 ◼   ► I just want to be pure Swift.

02:13:21 ◼   ► But you can't really be pure Swift at this point.

02:13:23 ◼   ► Like, they feel like it's a defeat to say,

02:13:25 ◼   ► well, I'm using Swift, but I'm basing everything

02:13:27 ◼   ► on NSObject because I just want those type of semantics.

02:13:30 ◼   ► Like, it feels dirty, it doesn't feel pure Swift.

02:13:32 ◼   ► And it's not going to be pure Swift top to bottom

02:13:34 ◼   ► for a long time, just because of the reality

02:13:36 ◼   ► of the situation they're in.

02:13:38 ◼   ► And the second thing I think that is helping,

02:13:40 ◼   ► that you have to take into mind is that,

02:13:42 ◼   ► yes, Swift is a language written by a compiler guy

02:13:46 ◼   ► that does a lot of things that make it easier to write a compiler

02:13:50 ◼   ► and then make it easier to make code that's guaranteed to be safe.

02:13:54 ◼   ► But that guy had to pitch his language to an organization filled with people

02:13:58 ◼   ► who make GUI applications.

02:14:00 ◼   ► He had to convince, like, Alioser that, you know,

02:14:03 ◼   ► this new language that I came up with in my basement or whatever,

02:14:06 ◼   ► I think should be the language for the next 20 years of Apple,

02:14:09 ◼   ► and it's an awesome way to write iOS and Mac apps.

02:14:12 ◼   ► He had to make that case.

02:14:14 ◼   ► It's not like he's not the dictator of Apple, right?

02:14:17 ◼   ► He didn't say, "I came up with Swift

02:14:19 ◼   ► and we're gonna use it."

02:14:20 ◼   ► And I feel like the people he had to make that case to

02:14:23 ◼   ► know what the heck they're doing

02:14:25 ◼   ► and it had to have been a good case.

02:14:26 ◼   ► - Yeah, have no problem standing up for their,

02:14:29 ◼   ► you know, for their own thoughts and-

02:14:31 ◼   ► - And yeah, he's not their boss.

02:14:32 ◼   ► - Right.

02:14:33 ◼   ► - So I've, you know, it's very uncomfortable

02:14:37 ◼   ► in the phase we are now where it's so clear

02:14:40 ◼   ► that there are barriers to making this work

02:14:42 ◼   ► and Swift isn't done yet

02:14:43 ◼   ► and all these other things that are true,

02:14:45 ◼   ► but I'm not really ready to bang the gavel on anything

02:14:47 ◼   ► having to do with like, well,

02:14:49 ◼   ► Swift is not as well suited

02:14:51 ◼   ► for making GUI apps as Objective-C was.

02:14:53 ◼   ► You could say that the current version of Swift

02:14:55 ◼   ► is not as well suited as Objective-C

02:14:58 ◼   ► for using Objective-C libraries to write GUI apps.

02:15:01 ◼   ► But I feel like as the culture and capabilities

02:15:04 ◼   ► and actual code as in Swift top to bottom,

02:15:07 ◼   ► like let's start with foundation

02:15:08 ◼   ► and all the other libraries start getting built up,

02:15:12 ◼   ► I feel like those same teams that made,

02:15:14 ◼   ► like, you know when they made UIKit,

02:15:14 ◼   ► they kind of like repented for the sins of AppKit

02:15:17 ◼   ► and did it better?

02:15:19 ◼   ► There's one more chance to do that right now.

02:15:20 ◼   ► All those same, the great minds behind UIKit and AppKit,

02:15:24 ◼   ► some of those same minds are going to be the great minds

02:15:27 ◼   ► behind the Swift native frameworks

02:15:29 ◼   ► for writing GUI applications in the future.

02:15:31 ◼   ► And I think that'll be a good thing.

02:15:33 ◼   ► - Yeah, I agree.

02:15:33 ◼   ► And I think that the other thing too

02:15:35 ◼   ► about being the compiler guy is that it put Latner

02:15:40 ◼   ► and his team and the people he works with,

02:15:42 ◼   ► in a position where they're really intimately familiar

02:15:45 ◼   ► with the things that cause problems

02:15:49 ◼   ► in shipping applications.

02:15:51 ◼   ► And maybe some of those problems are things

02:15:54 ◼   ► that a true expert in Objective-C would never do.

02:15:57 ◼   ► And therefore they feel a little frustrated

02:15:59 ◼   ► like that the language,

02:16:00 ◼   ► not that it's being catered to dummies,

02:16:02 ◼   ► but that by making certain things that were possible,

02:16:05 ◼   ► no longer possible,

02:16:07 ◼   ► you prevent a whole class of possible bugs,

02:16:10 ◼   ► but at the same time you also prevent certain clever

02:16:14 ◼   ► but dangerous techniques that people had taken advantage

02:16:18 ◼   ► of significantly.

02:16:19 ◼   ► And that Apple is making the decision

02:16:20 ◼   ► that that trade-off is worth it

02:16:22 ◼   ► because they're in a position where they literally know

02:16:25 ◼   ► from like crash reports and code

02:16:28 ◼   ► that's actually been shipping that being able

02:16:30 ◼   ► to not do this anymore is actually going to cut off

02:16:34 ◼   ► this sort of problem won't even be possible anymore.

02:16:37 ◼   ► - Or just making it harder.

02:16:38 ◼   ► Like, I mean, the idea of a half initialized object,

02:16:40 ◼   ► like, you know, making that impossible in the language, you can do that fine.

02:16:45 ◼   ► The idea of calling a method that doesn't exist on an object, like, at runtime,

02:16:49 ◼   ► you thought you had an object of this type, but really you casted it to the wrong thing.

02:16:53 ◼   ► Like, in Swift you can forcibly cast things to the wrong thing and try to send them,

02:16:58 ◼   ► you know, the wrong method call, right?

02:17:00 ◼   ► Like the whole idea of like looking up a class name by a string,

02:17:03 ◼   ► like all these capabilities, this dynamism that Craig talked about that they're adding,

02:17:07 ◼   ► they're adding it so it'll be possible to do these things,

02:17:10 ◼   ► But it's not like the right or preferred way to do things.

02:17:13 ◼   ► And it certainly isn't the default. And if you do it,

02:17:15 ◼   ► it's going to stand out in your code

02:17:17 ◼   ► because you're going to have to make--

02:17:18 ◼   ► it doesn't stand out in Objective-C code

02:17:20 ◼   ► when you're iterating over this heterogeneous collection

02:17:21 ◼   ► and just sending every object the message blindly.

02:17:24 ◼   ► And if they're nil, it'll just be a no op.

02:17:25 ◼   ► And if they're the wrong class, it'll blow up at runtime

02:17:28 ◼   ► because it'll be like, object blah doesn't

02:17:30 ◼   ► respond to the message blah.

02:17:31 ◼   ► You'll find that out at runtime.

02:17:33 ◼   ► But if you look at the loop, it's

02:17:34 ◼   ► like, oh, this is just looping over the contents of an NSRA

02:17:36 ◼   ► and sending a message to every single item.

02:17:38 ◼   ► Looks good to me.

02:17:39 ◼   ► If you try to do something that potentially dangerous in Swift,

02:17:42 ◼   ► I think it would look scarier.

02:17:44 ◼   ► I think it would look like I am going to now call a method

02:17:47 ◼   ► that the compiler cannot absolutely 100% guarantee

02:17:50 ◼   ► is going to work.

02:17:52 ◼   ► And because that's not the default,

02:17:53 ◼   ► and because it will require more code and look scarier,

02:17:56 ◼   ► it is sort of culturally saying that in the Swift world,

02:17:59 ◼   ► we don't do stuff like that.

02:18:00 ◼   ► We don't be like, oh, the program will take care of it.

02:18:02 ◼   ► I'm sure every object in this collection

02:18:03 ◼   ► will respond to this message.

02:18:04 ◼   ► I'm sure it will be fine.

02:18:05 ◼   ► Or they'll just do response to selector,

02:18:07 ◼   ► and then they'll call it or whatever.

02:18:09 ◼   ► In Swift, the default wants to be,

02:18:11 ◼   ► if you just see straightforward Swift code,

02:18:13 ◼   ► it's gonna work and not fall victim

02:18:15 ◼   ► to this whole classes of errors

02:18:17 ◼   ► that could potentially happen in Objective-C

02:18:20 ◼   ► because too much was determined at runtime.

02:18:22 ◼   ► - Let me take a moment here and thank our next sponsor.

02:18:26 ◼   ► It's our good friends,

02:18:27 ◼   ► longtime friends of the show, Squarespace.

02:18:29 ◼   ► You guys know Squarespace.

02:18:30 ◼   ► It's a build it, you're all in one,

02:18:33 ◼   ► build your own website platform.

02:18:37 ◼   ► What type of websites can you make with Squarespace?

02:18:39 ◼   ► Well, better question would be what types can't you?

02:18:41 ◼   ► You just go there and sign up and immediately

02:18:44 ◼   ► you can just get right started and say,

02:18:46 ◼   ► what are you trying to build?

02:18:48 ◼   ► You wanna build a store?

02:18:50 ◼   ► And you go to store and then they'll show you

02:18:52 ◼   ► a bunch of templates, for example,

02:18:53 ◼   ► stores that you start with and then you say,

02:18:55 ◼   ► yes, this is exactly the sort of template,

02:18:58 ◼   ► this is the type of store I wanna make.

02:18:59 ◼   ► Then you open that up and you just start editing

02:19:02 ◼   ► what you see that replace the images with your image,

02:19:04 ◼   ► replace the text with your text.

02:19:06 ◼   ► You wanna build a blog though,

02:19:08 ◼   ► if that's what you're looking to build or host a podcast,

02:19:11 ◼   ► you just write down when you sign up,

02:19:13 ◼   ► it's just like, I'm gonna create a blog,

02:19:14 ◼   ► I'm gonna host a podcast, here's some templates.

02:19:16 ◼   ► I like this template, use this one,

02:19:18 ◼   ► but I wanna change this to this and this to this,

02:19:20 ◼   ► and you start changing things right there in the browser.

02:19:24 ◼   ► Total WYSIWYG really could not be more obvious,

02:19:29 ◼   ► it's so visual.

02:19:31 ◼   ► They have all sorts of hooks there,

02:19:33 ◼   ► if you want to insert your own code,

02:19:35 ◼   ► you wanna get in there at the code level

02:19:36 ◼   ► and change it at that level, you can do that too.

02:19:39 ◼   ► But fundamentally, it's a GUI,

02:19:41 ◼   ► it's a graphical user interface way to design websites,

02:19:45 ◼   ► and they have templates for so many different types of sites

02:19:48 ◼   ► it's ridiculous.

02:19:50 ◼   ► It doesn't just spit, at the end,

02:19:54 ◼   ► it doesn't just spit out a bunch of HTML files

02:19:56 ◼   ► that you then put in a folder

02:19:58 ◼   ► and upload to a web host or whatever.

02:19:59 ◼   ► They're the hosting platform too.

02:20:01 ◼   ► It's all in one.

02:20:02 ◼   ► You build it, you make it.

02:20:04 ◼   ► You can even get your own domain name on it

02:20:06 ◼   ► and you can get the domain name for free

02:20:08 ◼   ► if you pay for a year in advance.

02:20:10 ◼   ► Just could not be easier.

02:20:12 ◼   ► Online commerce, the sales stuff,

02:20:14 ◼   ► they handle all the tricky stuff,

02:20:16 ◼   ► all the encryption and the credit cards and stuff like that.

02:20:19 ◼   ► Really, really impressive.

02:20:20 ◼   ► Plans start at a ridiculous eight bucks a month.

02:20:24 ◼   ► And like I said, you get a free domain name registration

02:20:26 ◼   ► for your site if you sign up for a year in advance.

02:20:30 ◼   ► And the demo is no credit card required.

02:20:32 ◼   ► You just go there and just start like typing and playing.

02:20:35 ◼   ► You just go to squarespace.com and just start.

02:20:38 ◼   ► And it, you know, you're actually there making a website.

02:20:43 ◼   ► Could not be easier.

02:20:44 ◼   ► Use the offer code Gruber, my last name, G-R-U-B-E-R,

02:20:48 ◼   ► and you will get 10% off your first purchase

02:20:50 ◼   ► with Squarespace.

02:20:51 ◼   ► If you're listening to this show,

02:20:52 ◼   ► 'cause John is on it, you can use their code.

02:20:54 ◼   ► It's ATP and you'll get the same 10% off.

02:20:56 ◼   ► So Squarespace, build it beautiful.

02:20:58 ◼   ► If you need to build a website,

02:20:59 ◼   ► just go check out Squarespace.

02:21:01 ◼   ► Spend an hour there.

02:21:02 ◼   ► you'll probably end up saving yourself days of work.

02:21:04 ◼   ► - That's very nice of you to give our code.

02:21:08 ◼   ► - Oh, it's, we're all in it together.

02:21:09 ◼   ► - It's so short and easy to remember.

02:21:11 ◼   ► I hope that's our actual code.

02:21:12 ◼   ► - No, I know it is.

02:21:12 ◼   ► I was listening to your show today and I took note of it.

02:21:15 ◼   ► - There you go.

02:21:16 ◼   ► You're doing homework.

02:21:17 ◼   ► - I wanted to see what you guys said

02:21:19 ◼   ► about the smart battery case.

02:21:21 ◼   ► I feel like I have my last couple of shows,

02:21:24 ◼   ► like I had Joanna Stern on last week,

02:21:27 ◼   ► and we've just been like a couple of days away.

02:21:30 ◼   ► like we could have, you know, a couple of days later

02:21:32 ◼   ► and we could have, Joanna and I could have gone long

02:21:35 ◼   ► on the battery case.

02:21:36 ◼   ► I kind of had a feeling that that's what they were gonna make

02:21:41 ◼   ► 'cause I didn't know, I didn't tell me,

02:21:43 ◼   ► but after the show when we were still on the air,

02:21:46 ◼   ► Joanna said, "Hey, has Apple been in touch with you

02:21:48 ◼   ► about anything?"

02:21:49 ◼   ► I was like, "No, not yet."

02:21:50 ◼   ► And she goes, "They are with me."

02:21:51 ◼   ► And all they wanted to know was what color iPhone I have

02:21:54 ◼   ► and that they're gonna send me something, you know,

02:21:57 ◼   ► to review at the end of the week.

02:21:59 ◼   ► And I remember that somebody at Apple,

02:22:04 ◼   ► when I went and got my iPad Pro review unit,

02:22:08 ◼   ► it was at a briefing in New York,

02:22:09 ◼   ► and I was asked which size iPhone do I use,

02:22:13 ◼   ► the iPhone 6s or the 6s Plus, and I said 6s,

02:22:16 ◼   ► and they were like, good, we might have something

02:22:18 ◼   ► for you later, you know, a couple of weeks.

02:22:21 ◼   ► And I filed that away at that point,

02:22:23 ◼   ► and I thought, what in the world would they make

02:22:25 ◼   ► that would apply to the 6s and not apply to the 6s Plus?

02:22:28 ◼   ► And the only thing I could think of is a battery pack.

02:22:31 ◼   ► That's the only, either a battery pack or,

02:22:34 ◼   ► I guess it would have to be a case.

02:22:35 ◼   ► Cause if it was a battery pack,

02:22:36 ◼   ► it would apply to anything with a lightning port.

02:22:38 ◼   ► So I figured it had to be a battery case.

02:22:40 ◼   ► - Well, it could have been any kind of case,

02:22:42 ◼   ► but I suppose, you know.

02:22:44 ◼   ► - Yeah, but why would they make it?

02:22:46 ◼   ► To me, a battery case was specifically the sort of thing

02:22:48 ◼   ► that they would make only for the 6S and not the 6S,

02:22:51 ◼   ► not the plus for the obvious reason

02:22:53 ◼   ► that the plus already gets plenty of battery.

02:22:55 ◼   ► - They need to make the same battery case for the plus.

02:22:58 ◼   ► Just like, just a huge lump on the back of it

02:23:01 ◼   ► that have been last two days.

02:23:02 ◼   ► - It would be, you could actually sit there

02:23:05 ◼   ► and do like arm curls with it, I think.

02:23:07 ◼   ► It was actually like build your biceps.

02:23:09 ◼   ► - So how was your, one of the things I saw

02:23:11 ◼   ► is our friend Cable Sasser,

02:23:13 ◼   ► his case was like cracking along the top,

02:23:15 ◼   ► maybe he just got the defective one,

02:23:17 ◼   ► I'm assuming yours is fine.

02:23:18 ◼   ► - What color did he get?

02:23:19 ◼   ► - He got the black one or the charcoal, whatever.

02:23:21 ◼   ► - So they sent me the white one,

02:23:22 ◼   ► and that's the only one I have experience with.

02:23:25 ◼   ► So mine didn't crack.

02:23:26 ◼   ► And what I did is I got mine Tuesday morning.

02:23:31 ◼   ► So it was the day that they announced it.

02:23:34 ◼   ► They had already sent one to me by FedEx.

02:23:36 ◼   ► So it was like FedEx guy showed up at like 10 AM

02:23:38 ◼   ► and I had it.

02:23:39 ◼   ► And I pretty much left it on my phone

02:23:42 ◼   ► until I got my review out.

02:23:45 ◼   ► Which it was obviously, it was a couple of days late.

02:23:48 ◼   ► I let you read it before you guys did ATP.

02:23:50 ◼   ► I was like, it'll be up by the time

02:23:52 ◼   ► your show is on the air.

02:23:54 ◼   ► - You're truly the Douglas Adams.

02:23:55 ◼   ► Well, I can't say that Doug is Adam's tech running because he wrote for Mac for all their Mac user back in the day, too

02:24:00 ◼   ► But yeah, those deadlines are great as they wish best your own self-imposed self-declared deadlines

02:24:04 ◼   ► No one was pressuring you to say that you're like, oh no problem. Yeah, I had a Wednesday night school thing

02:24:09 ◼   ► it was

02:24:10 ◼   ► some kind of

02:24:12 ◼   ► You know showing it the I don't know some kind of projects the kids made at 530 at Jonas's school and I thought oh, that's great

02:24:19 ◼   ► I'll just make sure I'm finished by then and I'll have a little self-imposed deadline and I didn't get it up till Friday

02:24:23 ◼   ► Yeah, the idea was that the deadline that you were sure you were gonna make it because you had to because you had a school

02:24:29 ◼   ► thing right

02:24:30 ◼   ► And it turns out when you're self-employed you don't have to do anything

02:24:32 ◼   ► You know what? It was the the more I thought about it

02:24:36 ◼   ► You know as often happens that writing to me writing is thinking and the more I wrote about it

02:24:41 ◼   ► The more I realized that it was it there are interesting things to pursue and think about and talk about it

02:24:47 ◼   ► You know, sometimes you start writing

02:24:49 ◼   ► I didn't think it was going to be nearly as long as it was, and I didn't think it was.

02:24:52 ◼   ► That's like the longest thing you've written in a long time, was about a battery case.

02:24:55 ◼   ► Well, that's why it's so... but to me, there's so many little interesting things about it.

02:25:00 ◼   ► But one of the things I did to motivate myself to finish, I didn't really like

02:25:04 ◼   ► having it on my iPhone, but I kept it on my iPhone until I got the review out.

02:25:08 ◼   ► So I actually did use it non-stop, pretty much, other than like to play with, you know,

02:25:14 ◼   ► the insertion and removal and some, you know, certain things you want to do testing it.

02:25:19 ◼   ► I would but for the most part I had my phone in it from Tuesday till Friday

02:25:23 ◼   ► So I didn't see any kind of cracking or anything like that

02:25:25 ◼   ► Yeah, maybe taking it in and out causes the cracking

02:25:28 ◼   ► I could I mean you would think it was some sort of widespread defect

02:25:31 ◼   ► We would have heard about it by now, but it happens when you get the first ones of anything like who knows?

02:25:35 ◼   ► Well, yeah, I think I think it's I think the first ones of anything

02:25:38 ◼   ► It's it's likely that it was probably just so maybe some kind of

02:25:42 ◼   ► You know, maybe there was a batch that got a bad batch of the whatever the substance the silicone

02:25:48 ◼   ► What do they call it? Whatever the substance is on the outside?

02:25:50 ◼   ► Yeah, or maybe there was a coating that was supposed to be put on that wasn't put on right anyway

02:25:54 ◼   ► I wouldn't I wouldn't if you're thinking of getting one

02:25:55 ◼   ► I wouldn't let this stop you because if there's something like that happens, it is bringing back to the Apple still

02:25:59 ◼   ► They could be a new one. They'll work it out

02:26:00 ◼   ► I will say this I'm from ATP you guys were saying and I know somebody else

02:26:04 ◼   ► I think it was Joanna actually in a review

02:26:07 ◼   ► She I think she got a white one and said don't buy the white one because it's already stained

02:26:10 ◼   ► And you guys said don't buy the white one

02:26:12 ◼   ► I have the white one and I used it non-stop for four days and

02:26:17 ◼   ► It still looks mint condition didn't pick up pick up any stains. So I don't very you're very clean, right?

02:26:22 ◼   ► I guess it's tissue boxes on your feet and you lick yourself clean like a cat and so there's no

02:26:26 ◼   ► residue what I heard actually after that show is the opposite of people who got the the black one and said it picks up pocket

02:26:32 ◼   ► Lint like if you have lint and stuff in your pocket and you put the thing in you take it out to cover with white

02:26:35 ◼   ► Stuff so it's like white and black cars like choose your poison. Both of them are gonna have something in the environment

02:26:41 ◼   ► It's gonna stand out more on them. I couldn't tell it is obviously very very

02:26:46 ◼   ► similar to their non battery silicone cases in terms of the substance that

02:26:51 ◼   ► it's made out of but it's maybe not quite the same it actually felt a little

02:26:56 ◼   ► grippier to me the the battery case to me felt grippier than the non battery

02:27:01 ◼   ► case but on the other hand the one that I had handy which was one that Apple

02:27:05 ◼   ► gave me with my review unit a couple months ago for the iPhone 6s was blue

02:27:11 ◼   ► and this was only white and black and maybe there's some I know with the watch

02:27:15 ◼   ► Straps there's definitely a little difference in how they feel, you know the sport bands

02:27:20 ◼   ► There's the different colors have different levels of like flexibility different weights, too. Yeah different weights even

02:27:27 ◼   ► and

02:27:30 ◼   ► I may know that might therefore be true with these two. Maybe the white is somehow grippy

02:27:34 ◼   ► Or maybe the white non battery case is grippy or two. I thought it was a little a little too grippy

02:27:38 ◼   ► I thought you know and in terms of it actually being thicker therefore was a little harder to get in and out of jean pockets

02:27:44 ◼   ► thickness aside, the grippiness made it a little, you know, a little bit too much friction,

02:27:49 ◼   ► in my opinion. Yeah, that's always the balance, because one of the complaints about other third

02:27:54 ◼   ► party battery cases is they make it slipperier, because a lot of them are hard plastic or hard

02:27:58 ◼   ► shiny plastic, and then so you end up dropping it also because it's a bigger, more awkward shape

02:28:02 ◼   ► sometimes. But if you make it too grippy, it's hard to slide in and out of a pants pocket,

02:28:06 ◼   ► so you just want to find that medium. And yeah, I totally believe that the black and white ones

02:28:10 ◼   ► could feel different. And they look in the pictures, I've never actually touched one of

02:28:14 ◼   ► these things but they look in the pictures like it could also be potentially that whatever material

02:28:18 ◼   ► they're making it out of is thicker you know in the parts that don't have battery in them it's

02:28:22 ◼   ► just thicker so it could be squishier it is a little thicker it's definitely like so if you

02:28:26 ◼   ► stack it side by side with the the you know so it's resting on like the volume buttons or the

02:28:33 ◼   ► power on off switch stack it on the side and compare it side by side with the silicone case

02:28:38 ◼   ► it's definitely a little thicker it stands up a little bit more the sides are thicker on this than

02:28:43 ◼   ► on the silicone case. And if you think about it, it makes sense because it's actually a lot more

02:28:46 ◼   ► rigid. It's, you know, you can kind of put the phone, I think there's a recommended way like the

02:28:51 ◼   ► with the silicone cases, they recommend to put it in like certain angle first, but it doesn't really

02:28:55 ◼   ► matter. You can just put any side in first and then just sort of squish the other side over the

02:29:02 ◼   ► edge of the iPhone. With this, you have to slide it in like it's in between the two sides is like

02:29:07 ◼   ► like a rail, it slides in like that.

02:29:10 ◼   ► And the sides are definitely thicker.

02:29:12 ◼   ► I don't know what, I think it's because

02:29:14 ◼   ► it's meant to be more rugged.

02:29:16 ◼   ► I think it is sort of a, you know,

02:29:18 ◼   ► they're only advertising it as a battery case,

02:29:20 ◼   ► but I think it's also Apple's answer to

02:29:22 ◼   ► what if you want a more protective case

02:29:24 ◼   ► for drops and stuff like that.

02:29:27 ◼   ► - Yeah, I mean, once you're gonna have

02:29:28 ◼   ► that giant thing on there anyway,

02:29:29 ◼   ► there's no sense trying to skimp around the edges

02:29:31 ◼   ► to try to make it look spelt, 'cause it's not gonna.

02:29:33 ◼   ► - Right.

02:29:34 ◼   ► I thought on the ATP, I thought you were the only one

02:29:36 ◼   ► it was really reasonable. Marco and Casey made me a little angry with their take on

02:29:41 ◼   ► it. I thought Marco was way too dismissive about it. What did he call it? He said it

02:29:45 ◼   ► looks like an engineering prototype.

02:29:47 ◼   ► Yeah.

02:29:48 ◼   ► Like, I do. And this is the thing that gets me is I thought I did a pretty good job of

02:29:51 ◼   ► my article. And then on Twitter, there's a handful of people, "Oh, of course, John

02:29:54 ◼   ► Gruber likes it." I was like, "I didn't... It wasn't really an overly positive review."

02:29:59 ◼   ► And I ended it with saying that I don't want to use it. And I called it weird and funny

02:30:03 ◼   ► looking and ungainly. It wasn't like I was entirely complimentary. It was like, I just

02:30:09 ◼   ► want to understand why they made it.

02:30:11 ◼   ► Yeah, or just like, especially in things like this, where it's like a visceral reaction

02:30:16 ◼   ► based on appearances, there's usually, and I would use lots of car analogies on ATP,

02:30:22 ◼   ► coming from the car world, like, stuff like that can be polarized on, like the physical

02:30:26 ◼   ► shape of an object whose purpose is mostly not dictated by its shape. People have strong

02:30:32 ◼   ► opinions about, you know, a Porsche 911 versus a Corvette versus a Mustang, like, these are

02:30:37 ◼   ► very different looking things, and in the grand scheme of things, there are engines

02:30:40 ◼   ► and wheels, and aerodynamics aside, there are lots of features of cars that look the

02:30:45 ◼   ► way they look for just aesthetic design reasons, so anything like that, where you look at a

02:30:51 ◼   ► picture of something, as so many people did on the internet, look at a picture of this

02:30:54 ◼   ► thing, and just have this negative gut reaction to it, and these articles come flying, like

02:30:59 ◼   ► what's happening to Apple design or whatever, you really want to understand like, what is

02:31:05 ◼   ► a reasonable rationale for this?

02:31:07 ◼   ► And you could come to the conclusion that there is no rationale, that this is just like,

02:31:11 ◼   ► it's the simplest thing that they could possibly do, and, you know, they were just lazy, or

02:31:17 ◼   ► didn't have time, or like, or whatever, but with Apple, knowing everything we know about

02:31:22 ◼   ► Apple, like, that just doesn't seem plausible, because no one was demanding that they release

02:31:26 ◼   ► a battery case.

02:31:28 ◼   ► It's like and who really cares in the grand scheme of things, right?

02:31:31 ◼   ► But this is what they came out with so you want to think about it like and so that's why I was going into the philosophy

02:31:36 ◼   ► Like is is there an explanation because this is an area where Apple won't talk to the press for the most part

02:31:40 ◼   ► It's like oh, let's have someone from Apple's design studio

02:31:43 ◼   ► You're not Johnny I've because he's busy but someone lower level make the rounds to the tech press. No, not really

02:31:48 ◼   ► That's not gonna happen right and nor should they because like aesthetics

02:31:51 ◼   ► It's like look this is the product we have and we'll see what the reaction to it is

02:31:54 ◼   ► But we think it's it makes sense in some way and how could they think this makes sense?

02:31:58 ◼   ► So I was going back through what have they said in the past publicly about past designs that could conceivably apply to this design

02:32:05 ◼   ► Well, they're true or not. Who knows we're just speculating but the bottom line is

02:32:08 ◼   ► If you think it's ugly you think it's ugly

02:32:11 ◼   ► Don't buy it buy one that you think is not ugly, right?

02:32:15 ◼   ► I mean and the other thing I feel like maybe in my article I didn't cover this enough. It's afterwards is it?

02:32:22 ◼   ► If you're wondering why it doesn't look just like a mophie

02:32:26 ◼   ► Whatever juice pack air whatever their thinnest one is which is of course the one that Apple if Apple is gonna go that direction

02:32:32 ◼   ► They'd make the thin it. They're not gonna make one of these you know the cases that have three thousand

02:32:36 ◼   ► What's the unit milliamp hours milliamp hours

02:32:41 ◼   ► It's so much easier to write MAH

02:32:44 ◼   ► Why doesn't it look like those which is really like sort of the standard for all of them well of course

02:32:51 ◼   ► they're not gonna make one like that because if they thought that was the right way to do it,

02:32:54 ◼   ► they don't have to do anything. They're already there. The Apple store, you know,

02:32:58 ◼   ► are filled with these battery cases that look like that. The only reason for them to make one

02:33:01 ◼   ► is if they had an idea that was different. Well, and also, like, I think this is a factor. Like,

02:33:06 ◼   ► they know a lot of people buy battery cases. Why shouldn't they have one? And not because,

02:33:12 ◼   ► like, they just they need to get that money or whatever. But it's, it's like, as a, it's the

02:33:17 ◼   ► same thing with diversifying the phone line. Why don't they make a big phone? Why shouldn't they

02:33:20 ◼   ► make a smaller phone, why don't they make something in colors? It's like if it's something

02:33:23 ◼   ► that people want and they're buying it anyway, why shouldn't Apple make a really good one?

02:33:28 ◼   ► Why rely on third parties to fill that role? And so battery cases have apparently passed

02:33:32 ◼   ► into the realm of things that are important enough and that while they purchase enough

02:33:35 ◼   ► that Apple feels like it should have a first party solution. And so they do. I mean, I

02:33:39 ◼   ► still have questions about the case in terms of how they came up with this compromise because

02:33:43 ◼   ► it's like if you're going to be this bulky, like you said the same thing, like why not

02:33:46 ◼   ► extend the battery up to the top and bottom, why not go edge to edge with it?

02:33:52 ◼   ► Like why not match the capacity of similar thickness battery cases?

02:33:56 ◼   ► And you know Apple has its explanations, which may or may not be rationalizations, but in

02:34:01 ◼   ► the end a lot of it really does come down to design, because you have to pick a size

02:34:06 ◼   ► and a shape and that dictates how much battery life you have, and let's say someone was really

02:34:10 ◼   ► wedded to this design and they thought aesthetically it was beautiful and perfect and pure and

02:34:15 ◼   ► what they wanted, then the aesthetic design could dictate the size of the battery as opposed

02:34:19 ◼   ► to the other way around. It's hard to know without actually talking to the people behind

02:34:23 ◼   ► the design. All we can do out here is speculate, and really on ATP, I wasn't going to dismiss

02:34:28 ◼   ► anyone else's theories about like that there was time crunch or that, you know, like they

02:34:34 ◼   ► didn't put in the effort they normally would. For all I know, maybe this was rushed and

02:34:37 ◼   ► I don't know what's going on inside Apple, right? But is there a plausible explanation

02:34:42 ◼   ► that, uh, that they say this was actually designed with the same care as every other Apple thing is

02:34:46 ◼   ► designed with, or we're led to believe every other Apple thing is designed with, is that even

02:34:50 ◼   ► plausible? And I can come up with causal explanations for it. So in the absence of any

02:34:54 ◼   ► other information, you just have to kind of like say which one of those do you think is more likely?

02:34:58 ◼   ► I think it's so, the hump is so striking that I think it really had to be the result. I think it

02:35:05 ◼   ► would be so, I think the, I really doubt that it was the first idea they came up with. It's so

02:35:10 ◼   ► unusual and it is at first glance I think almost it's almost impossible to

02:35:15 ◼   ► say that it's not a little repulsive at first it just looks swollen in a way you

02:35:22 ◼   ► know like you know like when you get stung by a bee and and you know like you

02:35:29 ◼   ► get stung on your thumb and your thumb swells up to the base of your thumb

02:35:33 ◼   ► swells up to the size of a golf ball like it looks painful when you see

02:35:36 ◼   ► somebody with an injury that's swollen, it's like, ooh, you feel it.

02:35:40 ◼   ► That's what it looks.

02:35:41 ◼   ► It looks swollen, which is not a good look, at least at first.

02:35:45 ◼   ► But I found myself after a few days, I kind of got used to it.

02:35:48 ◼   ► It's just I stopped thinking of it as being supposed to look like a regular case

02:35:53 ◼   ► and that it just looks like it has a battery on the back.

02:35:56 ◼   ► Yeah, and like I would another possibility again, having not actually ever

02:35:59 ◼   ► touched one of these, I can't say.

02:36:00 ◼   ► Although maybe you can tell me what you think about this.

02:36:02 ◼   ► like a lot of Oxo Good Grips, like, kitchen things look kind of weird-looking and ugly too,

02:36:10 ◼   ► but they're good to hold. And so if you prioritize how good is this thing to hold,

02:36:15 ◼   ► not saying this is what they did, because I think the back of it is not shaped like any part of the

02:36:18 ◼   ► human hand. Human hand doesn't have like rounded rectangle divots in it or anything, but maybe

02:36:23 ◼   ► some ask, like you said, holding your pinky under the lump instead of under the bottom of the thing,

02:36:28 ◼   ► Like that could be a factor in it. Like it doesn't mean that they're right

02:36:32 ◼   ► So you're just trying to delve like what motivated this why because as you said it's so it's so striking that it it seems clear

02:36:39 ◼   ► that

02:36:40 ◼   ► This was an intentional thing

02:36:42 ◼   ► You don't accidentally make this battery case if you if you wanted to do something lazy would just look like every other battery case and I

02:36:46 ◼   ► Think Apple would make something look more like they make hell they make silicone cases look pretty much like every other silicone case

02:36:52 ◼   ► It's just why does that Bob one because they want to make a nice one and why shouldn't you buy the Apple one if you're?

02:36:56 ◼   ► In the Apple store like it makes perfect sense

02:36:58 ◼   ► In addition to putting your pinky underneath,

02:37:02 ◼   ► the putting your index finger on top of it

02:37:04 ◼   ► is pretty good too.

02:37:05 ◼   ► And it does sort of, in a weird way,

02:37:08 ◼   ► it makes it feel as though you're holding a smaller device.

02:37:11 ◼   ► Like you know that it's thicker,

02:37:13 ◼   ► but it's like you have these,

02:37:14 ◼   ► like from going back to like the old iPhone days

02:37:16 ◼   ► with the first few generations

02:37:18 ◼   ► when they were physically smaller

02:37:19 ◼   ► and it was a lot easier to kinda get your index fingers

02:37:22 ◼   ► on top while you still had some kind of reasonable,

02:37:24 ◼   ► you know, and it felt like you could hold it more securely

02:37:27 ◼   ► your fingers wrapped around it. Your fingers can wrap around the hump in a way that gives you a

02:37:32 ◼   ► secure hold. If I were going to, and I knew in advance that I could pack it, if I knew that I

02:37:37 ◼   ► were going to be using my iPhone camera to record, I don't know, like while I'm riding on a roller

02:37:42 ◼   ► coaster or something like that, I would put it in this case. Like battery, even if the battery was

02:37:47 ◼   ► completely depleted and I wasn't going to get one percent of charge from it, I would put my iPhone

02:37:52 ◼   ► in that case to hold it while I'm going down a rollercoaster because I feel like I can

02:37:58 ◼   ► get like a way more secure grip on that because of the material that it's made of and because

02:38:02 ◼   ► of the hump the hump actually gives you like a good place to put fingers.

02:38:06 ◼   ► How many trips to Disney do you have to take before you realize it is incredibly dangerous

02:38:10 ◼   ► to take movies with your iPhone on a rollercoaster?

02:38:11 ◼   ► I have a million signs like do not try to take movies.

02:38:14 ◼   ► I wouldn't I wouldn't do it and it's not even because I wouldn't do it just because I it

02:38:20 ◼   ► It would just ruin, it would, like imagining me dropping my iPhone on a rollercoaster at

02:38:26 ◼   ► Disney would, just the thought of it puts me in such a bad state.

02:38:29 ◼   ► It's not that, it's getting hit in the face at 90 miles an hour with someone else's phone.

02:38:34 ◼   ► Because like you do it at the top of the loop or whatever, it's Six Flags there.

02:38:37 ◼   ► So I guess Disney, I don't know how they manage it at Disney, but at Six Flags they had you

02:38:41 ◼   ► going through like metal detectors, so like nothing in your pockets, like literally, it

02:38:45 ◼   ► It was like going through the TSA.

02:38:46 ◼   ► Like, you know, no car keys, no phones of any kind,

02:38:51 ◼   ► just like nothing because--

02:38:53 ◼   ► - Well, and it has six flags,

02:38:54 ◼   ► the roller coasters go way faster too.

02:38:56 ◼   ► - Yeah, I was just saying,

02:38:57 ◼   ► like the roller coaster's going 60, 70, 80 miles an hour,

02:39:00 ◼   ► and your phone is essentially stationary

02:39:02 ◼   ► 'cause it's like falling from above,

02:39:04 ◼   ► and your face meets that essentially stationary phone,

02:39:07 ◼   ► that's not a good experience for anybody.

02:39:09 ◼   ► You can kill somebody with one of those things,

02:39:10 ◼   ► so kids, no taking movies on roller coasters.

02:39:13 ◼   ► - I'm not saying it as though I would do it.

02:39:14 ◼   ► I'm just saying that if I were in a precarious situation

02:39:19 ◼   ► and needed to have a grip on my phone.

02:39:20 ◼   ► - You should do something else that people can relate to.

02:39:22 ◼   ► How about going yachting?

02:39:23 ◼   ► If you're going yachting, if you were doing Duran Duran,

02:39:26 ◼   ► now it's too old, they don't get that.

02:39:27 ◼   ► If you're in the video for "Rio"

02:39:28 ◼   ► and you're on the front of the yacht

02:39:30 ◼   ► and you want to take a movie of it,

02:39:31 ◼   ► 'cause it's really cool looking,

02:39:33 ◼   ► bring the iPhone battery case.

02:39:35 ◼   ► - I thought you had a good point on the ATP

02:39:38 ◼   ► about it looking like a sci-fi,

02:39:40 ◼   ► like if you just paved a hallway with them.

02:39:42 ◼   ► Like use them as the tiles,

02:39:44 ◼   ► the subway, you know, like the way that the subway, a hallway in the subway station has tiles.

02:39:48 ◼   ► Tile it with these, it would look like a great, you know, like you're in a set of like a one of

02:39:54 ◼   ► Ridley Scott's, you know, classic sci-fi. Yeah, or like 60-70 sci-fi, you know, do like, you know,

02:40:00 ◼   ► I mean, even 2001 era, but an alien or just, you know, anything like Buck Rogers, like they,

02:40:05 ◼   ► I guess that's the way that, you know, the future was going to be like white and clean and smooth

02:40:09 ◼   ► shapes everywhere. Yeah, but like, you know, some kind of inexplicable ridges and textures,

02:40:16 ◼   ► though, you know. Yeah, like on a stormtrooper, like the stormtrooper's got the little thermos

02:40:21 ◼   ► on his back, you know, what the hell's that for? I'm sure someone with a technical readout

02:40:24 ◼   ► book knows, but like, it was always smooth and white, but there was these lumps, and

02:40:28 ◼   ► they seemed purposeful, and it looked like futurey. I actually, and it might just be

02:40:31 ◼   ► because I've got Star Wars on the mind this week, but I actually thought, or as soon as

02:40:35 ◼   ► I saw it. I thought, boy, this is a real stormtrooper-y looking thing, because it even has a little

02:40:41 ◼   ► bit of black around the cutout for the camera. In a way that it's not white, but sort of

02:40:48 ◼   ► like an off-white, and yeah, the ridges, the extra ridges, some of them seem, which seem

02:40:52 ◼   ► maybe a little inexplicable. There's a certain stormtrooper-y-ness to it.

02:40:57 ◼   ► It was a wait for the next version to look like the surface of the Star Destroyer, with

02:41:01 ◼   ► little greeblies or whatever they are all over, like little pipes and everything all

02:41:04 ◼   ► I'm thinking of other ways this case could have existed like

02:41:07 ◼   ► You never see the back of a Nexus 7 like the old Nexus 7s

02:41:11 ◼   ► I don't think so, which is like it was like rubber and it had like cross hatching. Oh, yeah

02:41:16 ◼   ► I know what you mean little divots come this could have like little lumps on it

02:41:20 ◼   ► Like well think of a golf ball world has little you know

02:41:23 ◼   ► Concave things or it could be the opposite. It could have convex things like a bunch of like bumps on it

02:41:30 ◼   ► I mean, they could have been textured in so many different ways again

02:41:33 ◼   ► It's just a completely aesthetically speaking because it's not or maybe there would be some functional grip there

02:41:37 ◼   ► But this one is there's one lump, but the surface treatment is essentially smooth. These all seem like

02:41:43 ◼   ► Intentional aesthetic choices that that weren't necessarily for gone conclusions that there is some kind of philosophy behind this design

02:41:52 ◼   ► Yeah, I texture is gonna come back at some point

02:41:57 ◼   ► I feel like we're in an era when texture has sort of fallen out of favor

02:42:01 ◼   ► Perhaps largely driven by Apple, but it'll it'll come back eventually

02:42:05 ◼   ► You remember the what was it?

02:42:07 ◼   ► I figure which case it was the ones with the holes cut out on it the colored ones with the holes cut out from Apple

02:42:12 ◼   ► Colored what cases? Oh, yeah. Yeah. Yeah the ones for the

02:42:16 ◼   ► 5c

02:42:19 ◼   ► Right, and yeah, so it would show the words through it and we were complaining about how it didn't like Center on the words correctly

02:42:24 ◼   ► But that was essentially textured because you had these holes in the case that would feel like you'd feel them with your fingers. Yeah

02:42:29 ◼   ► I was gonna be yeah, it would be good for another show

02:42:35 ◼   ► I was gonna say cuz you know everything they make that was made out of this

02:42:38 ◼   ► I don't even know if they call it bead blasted anymore

02:42:40 ◼   ► But it's this aluminum that has the same feel the phones have this aluminum

02:42:44 ◼   ► The Mac books have this feel the even my iMac has the same is made out of the same stuff

02:42:49 ◼   ► But eventually they're gonna switch to a new material from aluminum

02:42:53 ◼   ► Yeah, we talked about that in ATP a few times especially with respective phones the aluminum and glass thing is going to seem as

02:43:00 ◼   ► barbaric as CRT

02:43:02 ◼   ► Video displays due to us now

02:43:05 ◼   ► Like you mean it was this big heavy glass thing with like lead on it and electron gun

02:43:09 ◼   ► Like how thick was the glass and like that just seems barbaric, right?

02:43:12 ◼   ► Aluminum glass phones like the idea that you know for our grandkids the idea that if you dropped your phone on the sidewalk that it

02:43:18 ◼   ► it would break, it's gonna sound idiotic.

02:43:20 ◼   ► It's gonna sound like we were using

02:43:21 ◼   ► the glass shampoo bottles from Prell again.

02:43:23 ◼   ► Like, why would you bring glass into the shower?

02:43:25 ◼   ► That's so stupid, why didn't you use plastic, right?

02:43:27 ◼   ► But right now--

02:43:29 ◼   ► - Or like when eyeglasses were made out of glass.

02:43:32 ◼   ► - Yeah, shatter and just go into your eyeball.

02:43:35 ◼   ► It's like you're doing the best with the materials you have.

02:43:38 ◼   ► And aluminum and glass,

02:43:39 ◼   ► like it took them a while to get to that.

02:43:40 ◼   ► And lots of plastic,

02:43:42 ◼   ► and plastic is pretty good material too,

02:43:43 ◼   ► especially for radio reception and titanium.

02:43:46 ◼   ► But like they went with aluminum and glass

02:43:47 ◼   ► 'cause I feel like it's just a higher quality experience.

02:43:50 ◼   ► Like it feels nicer and more expensive.

02:43:51 ◼   ► Glass obviously on the screen is better than plastic

02:43:53 ◼   ► as we learned from the iPod Nano,

02:43:54 ◼   ► like the plastic is gonna scratch.

02:43:56 ◼   ► So you want something that's scratch resistant

02:43:58 ◼   ► for the screen and then aluminum for the back.

02:44:00 ◼   ► It's just, I mean, 3GS was plastic,

02:44:02 ◼   ► but the, you know, and they use glass for the 4 and 4S

02:44:07 ◼   ► and like, but aluminum and glass

02:44:08 ◼   ► is a pretty solid combo right now.

02:44:10 ◼   ► And to get better than it,

02:44:11 ◼   ► you basically need something that's not gonna shatter.

02:44:15 ◼   ► So it has to be more flexible for the display.

02:44:17 ◼   ► And for the back part, I guess you'd

02:44:19 ◼   ► probably have to go with something that's

02:44:21 ◼   ► equal strength but lighter.

02:44:22 ◼   ► So graphite composite plus really hard, flexible screens.

02:44:27 ◼   ► Or as I've always said, get the thing down to the size

02:44:29 ◼   ► and weight of a credit card.

02:44:30 ◼   ► And it really doesn't much matter

02:44:32 ◼   ► what material you make it out of because you drop your credit

02:44:34 ◼   ► card on the pavement and you pick it back up.

02:44:36 ◼   ► Nothing's going to happen to it.

02:44:37 ◼   ► It weighs too little that air resistance becomes a factor

02:44:41 ◼   ► that doesn't even fall that fast.

02:44:42 ◼   ► And if it does, it's flexible enough

02:44:44 ◼   ► that it's not gonna shatter or break.

02:44:46 ◼   ► - Yeah, I thought of an idea,

02:44:47 ◼   ► I was thinking about drops today.

02:44:48 ◼   ► I was watching Jonas play Destiny

02:44:50 ◼   ► and he jumped off a giant cliff

02:44:52 ◼   ► and it seemed like he should have taken damage and didn't.

02:44:55 ◼   ► I was like, how come you don't take damage?

02:44:56 ◼   ► And he goes, oh, you just,

02:44:57 ◼   ► you have like some kind of jets on your feet or something.

02:44:59 ◼   ► You know, like a jet, you play the game, so you know.

02:45:01 ◼   ► - You need to give me his PSN name, I'll help him out.

02:45:04 ◼   ► Or he'll help me out, we'll see.

02:45:06 ◼   ► - Yeah, I'll hook you up.

02:45:07 ◼   ► And I thought, oh, that's clever.

02:45:08 ◼   ► And then I watched it, you know,

02:45:09 ◼   ► so it's more or less like your Boba Fett.

02:45:11 ◼   ► You jump off a thing and at the very end,

02:45:12 ◼   ► you just put on your jet pack a little bit to slow down.

02:45:14 ◼   ► I thought, you know, that would be a clever thing

02:45:16 ◼   ► for an iPhone to have.

02:45:17 ◼   ► If you dropped it, if it had like a little--

02:45:20 ◼   ► - That is the Jetsons era solution to this problem.

02:45:23 ◼   ► You know what we could do if everything had jets.

02:45:26 ◼   ► - Just to slow down just enough--

02:45:26 ◼   ► - Just a puff of air at the last moment would keep it from--

02:45:29 ◼   ► - And to gently land.

02:45:31 ◼   ► But you're right, you know, something like that.

02:45:33 ◼   ► But something's got to, I think the other thing

02:45:34 ◼   ► that's gonna seem barbaric is the way that

02:45:36 ◼   ► with everything made out of aluminum, that they're,

02:45:40 ◼   ► Like, can you even imagine how much raw aluminum Apple is sending to China every single day

02:45:47 ◼   ► that's just being cut into these shapes by the CNC machines?

02:45:53 ◼   ► Well, I mean, the great thing about aluminum is all the shavings and scraps and crap that come off of the machine,

02:45:57 ◼   ► like all the material that is removed, that can just go back into the whole recycling thing,

02:46:00 ◼   ► because, you know, it just, it's not waste in the sense that you can just recycle that,

02:46:04 ◼   ► melt it back down, and put it into another ingot and it comes back to you.

02:46:08 ◼   ► But it's a tremendous amount of stuff that they're just cutting which is an incredibly difficult process

02:46:13 ◼   ► Yeah, yeah

02:46:15 ◼   ► I mean like but it's it's what they settled on and we saw we all we all saw the development of like how can you?

02:46:20 ◼   ► Make a sturdy laptop that's also thin with it doesn't creak or crack or break or feel cheap

02:46:24 ◼   ► and they try lots and lots of different things and

02:46:27 ◼   ► Boy, this one with the original MacBook Air that the machined out piece of aluminum just seems great

02:46:32 ◼   ► I mean eventually they'll get to the point where they're kind of getting to that now with the MacBook one where it's like

02:46:36 ◼   ► Strength of materials at this thickness? Do I feel like I can take this MacBook?

02:46:41 ◼   ► I'm sorry. The MacBook one is ATB parlance for the MacBook that only has one port on the side of it

02:46:45 ◼   ► Just it's just called the MacBook. Anyway

02:46:47 ◼   ► Can I bend this over my knee? Because it looks like I might be able to bend this over my knee and I'm just not a

02:46:52 ◼   ► comfortable feeling like eventually aluminum becomes no good because

02:46:56 ◼   ► It's certain thin, you know thickness if it gets very thin you can bend it and it stays bent and that's not really a good thing

02:47:04 ◼   ► That's why you think about things like carbon fiber where they bend but spring back and they're also very light and very strong

02:47:10 ◼   ► It's awesome. Well, they switched this year to a new aluminum for the phones

02:47:14 ◼   ► So though they look the same the 6s and 6s plus are made from this new

02:47:19 ◼   ► 7000 series whatever they want to call it, but it's Apple's new fancy-pants

02:47:23 ◼   ► version of aluminum

02:47:26 ◼   ► And who knows maybe they have you know, maybe maybe this it'll be a take a lot longer than I think

02:47:30 ◼   ► It may be a couple years from now. They're gonna have 8000 series of aluminum

02:47:33 ◼   ► I don't know, but I kind of feel like by upgrading the aluminum they've used that they're sort of approaching

02:47:39 ◼   ► This is as good as it's going to get and well

02:47:42 ◼   ► Yeah, but it's like they're they're holding back the tide in that one because it's kind of like samurai swords where you can pick like

02:47:47 ◼   ► flexibility or hardness and you want you know hardness on the on the edge the sharp edge because you wanted to

02:47:53 ◼   ► Be sharp and be able to cut through things

02:47:55 ◼   ► But if it's that hardness through the whole blade the blade will shatter when you hit something so you need a core that's flexible

02:47:59 ◼   ► Right so going with it with the aluminum like it's not they're making up these new things so you can make aluminum

02:48:04 ◼   ► You can decide do I want it to be very strong and hard or do I want it to be?

02:48:09 ◼   ► Like malleable and flexible and not not that it's gonna shatter or anything

02:48:13 ◼   ► But like with the aluminum what they're doing now is well

02:48:16 ◼   ► We still want to make the phones really thin we want to make them harder to bend and so can we make it so this?

02:48:21 ◼   ► Is stronger aluminum hopefully maintain the weight, but at a certain point like it you know like aluminum foil certain point

02:48:28 ◼   ► It's gonna bend and what you need is a material that springs back and aluminum is not going to spring back

02:48:33 ◼   ► So you will reach a limit in thickness where aluminum is just a non-starter because if you just keep saying

02:48:41 ◼   ► We'll just make it so strong that you can't bend it that will you won't be able to do that at a certain point

02:48:45 ◼   ► It'll just be too darn thin

02:48:46 ◼   ► So the material revolution will come eventually and I'm sure Apple has been for many years now researching

02:48:51 ◼   ► What will replace aluminum if anything in our things is it time to try to do a carbon fiber foam because it would be great

02:48:57 ◼   ► for radio reception and it would spring back better than aluminum does and we wouldn't

02:49:02 ◼   ► have to worry about bendgate as much but you know can we manufacture it in the design so

02:49:07 ◼   ► we want to we can't you can't machine carbon fiber you have to mold it and it's really

02:49:10 ◼   ► complicated and super expensive and so I think I'll be waiting a while.

02:49:13 ◼   ► From the land of fantasy rumors based on like patent fillets and stuff there's the liquid

02:49:17 ◼   ► metal stuff that people have been fantasizing about for years so who knows maybe there's

02:49:21 ◼   ► something like that too.

02:49:23 ◼   ► or in the Jetson puffer jet thing, you can have that material where you can bend it,

02:49:28 ◼   ► but if you subject it to some sort of like, if you put it back in heat or you're like

02:49:31 ◼   ► apply electricity to it, it goes back into the original shape. Remember that?

02:49:34 ◼   ► Yeah, I do remember that.

02:49:36 ◼   ► Yeah, the circuit boards inside don't really like bending too much either, by the way.

02:49:40 ◼   ► All right, let me take one last break here and then we can talk about Star Wars. I want

02:49:45 ◼   ► to tell you about our last sponsor. It's our good friends at Harry's. Now the holiday season

02:49:49 ◼   ► is here. This show will be airing tomorrow, December 14. I think it's up till December

02:49:55 ◼   ► 18. Free shipping is over. But if you order up to the 18th,

02:50:00 ◼   ► holiday shipping, economy shipping for the holidays ends on the 18th. So you got a couple

02:50:05 ◼   ► of days. You're probably listening to it if you're a fan of the show, because I feel like

02:50:09 ◼   ► there's going to be big news that Craig Federighi was on the show. You've got till December 18.

02:50:14 ◼   ► You can order it. You can pay for economy shipping. It'll get there before Christmas.

02:50:19 ◼   ► What a great gift if there's any kind of men, fathers, brothers, husbands in your life.

02:50:24 ◼   ► You can just buy them the holiday kit.

02:50:26 ◼   ► They've got these holiday kits with razor blade, with the handle, with some shaving cream and stuff.

02:50:34 ◼   ► They sent me one that had this facial stuff.

02:50:37 ◼   ► You know, you clean your face with it.

02:50:40 ◼   ► I like it. It's good. My skin looks good with it.

02:50:43 ◼   ► Really cool stuff. Awesome packaging.

02:50:47 ◼   ► This is one of those things you give him a gift if you want to give somebody a gift with razor and stuff like that

02:50:50 ◼   ► Give them these Harry's things and they open it up. It looks great makes you look like you have good taste

02:50:55 ◼   ► go there check out these holiday kits and

02:50:59 ◼   ► Really great prices to

02:51:02 ◼   ► High quality blade high quality shaving creams and lotions and gels whatever you want in the thing

02:51:09 ◼   ► So go there save yourself the hassle. I hate Christmas shopping good. God almighty. This is like the most right

02:51:16 ◼   ► I it's the worst so I'm just you just buy people stuff from sponsors of the show and then you're done with it

02:51:21 ◼   ► Get them a mattress and get them a shaving kit from from Harry's

02:51:24 ◼   ► Where do you go to find out more?

02:51:27 ◼   ► go to

02:51:29 ◼   ► Harry's calm and then use this code talk show know the and their code either use that code and

02:51:35 ◼   ► You'll save five bucks off your order and remember you got to the 18th December 18th 2015 and you can still get it

02:51:43 ◼   ► Express shipping for the holidays

02:51:46 ◼   ► You're worried about that?

02:51:49 ◼   ► I'm worried to death about that.

02:51:51 ◼   ► I've had two things on my mind the last week, Jon.

02:51:53 ◼   ► I've found out I was stressing over this interview with Craig Federighi.

02:51:57 ◼   ► I wanted to do a good job with that, and I don't want to have any Star Wars spoilers.

02:52:03 ◼   ► Now I've got this interview out of the way.

02:52:05 ◼   ► We've got a nice little post-interview discussion with me and you about it.

02:52:09 ◼   ► I feel a great sense of relief.

02:52:11 ◼   ► Right now, as I speak to you on Sunday, December 13th, I'm now breaking out into a sweat,

02:52:17 ◼   ► worrying about spoilers for The Force Awakens.

02:52:19 ◼   ► At least you can just hide in your house.

02:52:21 ◼   ► I've got to go to an office, though, with people who may be watching the trailers and

02:52:24 ◼   ► reading every single thing they can find out about these things.

02:52:27 ◼   ► And as you approach a date, you're right, it's like when you get close to an Apple event.

02:52:30 ◼   ► Like the day before, that's when the real leaks start coming, like, "Oh, you know,

02:52:35 ◼   ► here's what's actually going to come out," and you find out after the fact that actually

02:52:37 ◼   ► that you know seven hour before thing was 100% true.

02:52:41 ◼   ► (laughing)

02:52:42 ◼   ► - My friend Moises Cholou, he's down in Austin,

02:52:45 ◼   ► he's a big film fan.

02:52:48 ◼   ► He's trying to get in, he's trying to angle his way

02:52:50 ◼   ► into the press screening down there,

02:52:51 ◼   ► which is Tuesday morning.

02:52:53 ◼   ► But I think the big one is in Los Angeles tomorrow,

02:52:57 ◼   ► I think it's on Monday.

02:52:58 ◼   ► So I feel like, and the critics I think usually know

02:53:02 ◼   ► to keep their spoilers to themselves,

02:53:04 ◼   ► but that it's not just like a,

02:53:05 ◼   ► it's not a critics only screening,

02:53:07 ◼   ► Like all sorts of, anybody who's anybody in Hollywood

02:53:10 ◼   ► can go to the screening on Monday night

02:53:12 ◼   ► and blab about whatever the secrets are.

02:53:15 ◼   ► So now I don't know what to do.

02:53:16 ◼   ► - And you just gotta like,

02:53:18 ◼   ► just think about like the stupid think pieces

02:53:20 ◼   ► that are gonna be like,

02:53:21 ◼   ► I can't believe they did this thing in Star Wars

02:53:23 ◼   ► and people gotta have a big think piece

02:53:25 ◼   ► about what it means for the franchise.

02:53:26 ◼   ► Like no one's even seen the movie.

02:53:27 ◼   ► You don't have to think pieces on it.

02:53:29 ◼   ► And that's gonna make people go.

02:53:31 ◼   ► Like that's gonna make people wanna read the story

02:53:35 ◼   ► and I don't wanna know.

02:53:36 ◼   ► And I can't hide from the world like I can I can ignore the internet

02:53:39 ◼   ► But if there's people of the office who have read the think pieces and are discussing how amazing it is the Jar Jar Binks comes back

02:53:44 ◼   ► And destroys everybody like I don't want to hear about it

02:53:46 ◼   ► Right and I'm so worried that it will it'll pop up in one of those

02:53:52 ◼   ► You know like you get to the bottom of an article on most

02:53:55 ◼   ► News sites today, and they have these all other things around the web you might want to know

02:54:01 ◼   ► I

02:54:03 ◼   ► I'm so worried that the head, you know, and like you said, that they're just gonna put the spoiler right in the goddamn headline

02:54:08 ◼   ► and it'll be right there in front of the house.

02:54:10 ◼   ► Of course it'll be because it'll be a think piece that assumes everybody already knows the spoiler and it's like,

02:54:14 ◼   ► "Now I want to discuss this spoiler," right?

02:54:16 ◼   ► I have, I don't know, it's almost like worse that I've been successful at keeping myself almost entirely spoiler-free.

02:54:24 ◼   ► And I also have a good ability, you know, maybe it's a bad ability in the long run,

02:54:32 ◼   ► but in certain aspects, but at least for this movie, I can willfully forget some things.

02:54:37 ◼   ► >> I don't have that ability.

02:54:39 ◼   ► >> [LAUGH] So I can't even think, there's been at least two minor spoilers that I've

02:54:47 ◼   ► encountered in the last few weeks. And as I speak to you right now, I can't bring them to mind.

02:54:53 ◼   ► And I think I could if I tried, but there's a weird ability in my mind to compartmentalize,

02:54:59 ◼   ► where I've kept them away. And when I see them in the movie, I'll be like, "Oh yeah, I knew that,

02:55:03 ◼   ► but I'd forgotten it. But I remember that I knew it. I can do that."

02:55:06 ◼   ► I'm trying to just not think about the things I already know, the few tidbits. Because if I

02:55:12 ◼   ► think about them, I'll figure crap out. So I just avoid that part of my mind. Don't even think

02:55:17 ◼   ► about that. I don't know if that's going to work. But it's the same type of thing. Once I see it in

02:55:21 ◼   ► the movie, I'd be like, "Yeah, I could have derived that from the information I had at hand, but

02:55:25 ◼   ► I didn't want to.

02:55:26 ◼   ► So here's what I've done.

02:55:27 ◼   ► I just to be clear, I did watch the first trailer.

02:55:31 ◼   ► And then I as soon as it was over, I was excited.

02:55:35 ◼   ► And then I hit play again and watched it again.

02:55:38 ◼   ► And then I thought, shit, why did I watch that?

02:55:40 ◼   ► I shouldn't have watched that.

02:55:41 ◼   ► I feel like I've already had things spoiled.

02:55:43 ◼   ► And I know that J.J.

02:55:45 ◼   ► Abrams is sort of an anti spoiler director.

02:55:48 ◼   ► And largely, it seems so far they've kept a lot of stuff under wraps.

02:55:52 ◼   ► It really seems like I could be wrong.

02:55:54 ◼   ► Maybe there's other websites where like the whole thing is spoiled. I haven't seen it. I

02:55:59 ◼   ► Trusted him to make a trailer that didn't really have spoilers. I wouldn't say that it did

02:56:04 ◼   ► I think it was a good trailer, but I still regretted it. I still regretted it

02:56:08 ◼   ► I regret that I've seen the stupid lightsaber with the the

02:56:11 ◼   ► Side blades. Yeah, I mean so I watched the first trailer too

02:56:16 ◼   ► Just because I was so desperate to know like what is this gonna be like?

02:56:19 ◼   ► Like what is what is it even gonna look like?

02:56:21 ◼   ► like because it was all bets were off like who knows where they were gonna go with this franchise it could have

02:56:26 ◼   ► Was it gonna look like the trailer for Prometheus and be like dark and gritty was it gonna look like?

02:56:31 ◼   ► Tomorrow and be happy and like like Howard what is there?

02:56:36 ◼   ► What was their take on Star Wars gonna be so I felt like I had to watch the first trailer

02:56:39 ◼   ► But after that, I've been often like so far

02:56:42 ◼   ► my barriers held up pretty well through a series of filters and people who are nice to me and everything but

02:56:47 ◼   ► the one the one place has been tearing down a little bit television shows I almost almost anyone to tell you this but

02:56:53 ◼   ► I

02:56:55 ◼   ► discovered by 30 seconds skipping through ads on my TiVo as

02:56:58 ◼   ► The 30 seconds skip went by occasionally a frame

02:57:01 ◼   ► That my mind would register as Star Wars would come by and it was enough for me to know that oh my god

02:57:08 ◼   ► They're running. They're running Star Wars TV ads. I don't know if you knew this but on television there are ads for this movie

02:57:13 ◼   ► I did and it's my my weakness for sports

02:57:16 ◼   ► got me. I was watching, I watched the Dallas Cowboys Redskins on Monday Night

02:57:21 ◼   ► Football and apparently it seemed to me as though that Disney had

02:57:28 ◼   ► purchased a commercial in every, at least one commercial, in every single

02:57:32 ◼   ► commercial break. Like a true carpet-barbing marketing campaign and

02:57:37 ◼   ► it's there, you know, there's, I took to like skipping through the commercials

02:57:43 ◼   ► like with my this is like you couldn't do it but I just skipped through the commercials

02:57:49 ◼   ► with my good eye closed and so I was only using my you're listening with your good ear my damaged

02:57:58 ◼   ► left eye which I could still see certain things and had like a sense of some things that were

02:58:03 ◼   ► going on and like oh that's a red lightsaber but it's like at least the details were blurred out

02:58:08 ◼   ► yeah when I saw that the single frames I got nothing from it and I was I was satisfied with

02:58:13 ◼   ► that because every like because most of the time I would see zero frames and like once every five

02:58:18 ◼   ► shows I would see one frame depending on where it landed but the other day the very first commercial

02:58:23 ◼   ► like the very first commercial in the commercial break was a Star Wars one and I got like half a

02:58:27 ◼   ► sentence out I'm like oh damn it like because you know you're not you gotta find the remote you gotta

02:58:31 ◼   ► pick it up you gotta you know what I mean like I was I was too slow on the draw I was like in the

02:58:35 ◼   ► old west I got I got shot I really don't know how this week is gonna go especially once people start

02:58:41 ◼   ► I got my tickets. My first screening is Thursday night, which seems like cheating to me.

02:58:46 ◼   ► If it premieres on Friday, I don't know how I'm going to a 10 o'clock Thursday screening.

02:58:51 ◼   ► I mentioned that too when someone was saying it was because of that--

02:58:54 ◼   ► I don't know if that's true. After that Aurora shooting in Colorado,

02:58:57 ◼   ► the midnight showing stopped being a midnight.

02:58:59 ◼   ► I feel like that was happening before that, but who knows?

02:59:02 ◼   ► So it's like--

02:59:04 ◼   ► So my 10 o'clock Thursday night screening is a midnight screening,

02:59:08 ◼   ► there's like an asterisk, which is we know it's not really a midnight.

02:59:11 ◼   ► Right. And like they do 7 p.m. screens like the midnight show is now at 7 p.m.

02:59:15 ◼   ► It's like it's like, you know, Christmas creep or anything.

02:59:17 ◼   ► I assume the midnight showing will be like the Wednesday before.

02:59:19 ◼   ► Yeah. Or it's like the Saturday night, seven o'clock mass.

02:59:22 ◼   ► If you're Catholic, it's like, well, we're calling it Sunday.

02:59:25 ◼   ► It's Sunday somewhere.

02:59:27 ◼   ► Yeah. So my showing is on Thursday as well.

02:59:29 ◼   ► Yeah. So, you know, then Friday, I'm going to spoil it.

02:59:33 ◼   ► I'm going to spoil everything for everybody else.

02:59:35 ◼   ► I'll just feel so much better if I make it into that.

02:59:38 ◼   ► And like I said the the most dangerous time I said this in the account for the most dangerous time is when you're waiting in

02:59:42 ◼   ► Line to go theater and people are coming out of the theater

02:59:45 ◼   ► Especially if it's a theater that doesn't exit them out the back

02:59:47 ◼   ► Like if the people who are done seeing the movie walk piece past the people who are still waiting to see the movie super dangerous

02:59:53 ◼   ► Yeah, yeah famous everybody has famous. Maybe it's even

02:59:57 ◼   ► Apocryphal stories of waiting in line for the Empire Strikes Back and then some

03:00:03 ◼   ► Dipshit runs by and purposefully screams at the top of his lung Darth is Luke's father

03:00:09 ◼   ► Yeah, and in the age of internet trolling

03:00:11 ◼   ► I remember seeing this terrible YouTube video of someone driving a car past that people lined up waiting for like whatever was the

03:00:17 ◼   ► Fifth book or some Harry Potter book where something dramatic happens

03:00:21 ◼   ► other people didn't expect and so people are waiting a line at the bookstore and get like an opening night to buy the copy of

03:00:26 ◼   ► The book and someone like films it for YouTube and drives past and yells a phrase that I'm not gonna yell because it will spoil

03:00:31 ◼   ► Harry Potter for a bunch of little kids listening to this but yells it to the entire line and

03:00:35 ◼   ► The worst part is like they don't know if it's true

03:00:38 ◼   ► He could the person could be making stuff up

03:00:40 ◼   ► But in your heart of hearts like as you're reading the book as they approached you're like that guy was right and he wrote it

03:00:47 ◼   ► For me, don't be that person. That's that's the worst thing ever

03:00:50 ◼   ► What's the only Star Wars movie that doesn't take have some part of it take place on tattooing?

03:00:55 ◼   ► Is it one of the fake ones?

03:00:59 ◼   ► No, it's not one of the Empire I guess right now all the fake ones have scenes on tattooing. Yeah, you're right

03:01:04 ◼   ► In special edition to the editing tattooing parts the Empire don't remember just so that they had a Khorasan to Jedi

03:01:13 ◼   ► Who knows what the hell they're adding?

03:01:14 ◼   ► That would have been the worst if they just like it in between a cutaway as big as circular white from Dagobah

03:01:20 ◼   ► they instead of going to the asteroid field they they cut to the

03:01:22 ◼   ► Some droids toodling around in the sand. Yeah or like

03:01:27 ◼   ► Like when they first start hunting for the Millennium Falcon like there's a phone call from Darth Vader to

03:01:32 ◼   ► The Boba Fett and job is palace like come here. I need you

03:01:36 ◼   ► Yeah, so what Lucas is really concerned about is like how did those bounty hunters all get on to the Death Star?

03:01:41 ◼   ► I want to see them remember. He did that change for Jedi

03:01:43 ◼   ► It's like that

03:01:44 ◼   ► He showed like a Vader's shuttle taking him from point A to point B

03:01:46 ◼   ► So we weren't confused about how he arrived like it closed it here or whatever. It's like right get it

03:01:50 ◼   ► They flew there in their spaceships. We don't need to see it. I

03:01:55 ◼   ► I think he had, I don't even want to get into what he added.

03:01:59 ◼   ► Some of the additions though, like there's the, when you get into the list of like what was taken out of the

03:02:04 ◼   ► "despecialized" or whatever you want to call it, the ones that were taken out of the "despecialized"

03:02:08 ◼   ► you know, "Shammysdat Prince" or the, you know, what was added to the "specialized"

03:02:12 ◼   ► everybody thinks of Han shooting first and all of these gratuitous things and the ridiculous

03:02:17 ◼   ► CGI backgrounds they put behind the windows of Bespin and all these things that really, really stand out

03:02:22 ◼   ► or the god-awful CGI stuff they added to Mos Eisley in A New Hope.

03:02:27 ◼   ► It's the little things though, like your anger, your boiling anger is over these big ugly changes

03:02:34 ◼   ► that really stand out and just don't add anything and take away some of the magic. But then when you

03:02:40 ◼   ► read some of the little things that Lucas had added, you're like, "What? This man went insane."

03:02:46 ◼   ► Like it's the little things that make you realize that he somehow lost his marbles.

03:02:50 ◼   ► The one I had forgotten about until I was reminded, I think, in some Slack channel somewhere,

03:02:54 ◼   ► I think they were talking to you about it, was the

03:02:56 ◼   ► Dagobah when R2 gets spit out of the big swamp creature,

03:03:01 ◼   ► and the actual line in the movie is "You're lucky you don't taste very good."

03:03:04 ◼   ► That's what Luke says to him, which is a good laugh line, you know, whatever, for a silly situation,

03:03:08 ◼   ► and he changed it to a less funny line.

03:03:10 ◼   ► Like, it's not like, he was like, "You're lucky you got out of there."

03:03:13 ◼   ► Like, no, no, the first one was better.

03:03:16 ◼   ► It was adding a little bit of levity, it was sarcastic, it was...

03:03:19 ◼   ► and Luke is kind of like sarcastic and a little bit cranky in that scene, so it's perfect.

03:03:24 ◼   ► It's like you're lucky you don't taste very good. You're lucky you got out of there. That's your

03:03:28 ◼   ► improvement. It's like, you know, when you bring someone in to punch up a script, this is the

03:03:31 ◼   ► opposite. This is the guy who unpunches it, punches it down. It's... that's a perfect example. Maybe

03:03:37 ◼   ► the canonical example. Maybe that's like the best example because it sounds inconsequential,

03:03:43 ◼   ► but it was a little funny, and then it's not funny at all. And it also was like, establishes

03:03:49 ◼   ► the characters. It is like, hey, Luke and R2 have a friendship, right? It's not just

03:03:57 ◼   ► a device that's owned by Luke. He's, you know, there's a rapport between these two. And you

03:04:02 ◼   ► know, everybody who's seen the first one knows that R2D2 is clearly a sort of sarcastic wise

03:04:08 ◼   ► ass, right? He's a wise ass robot. You don't know what he's saying, but you can tell from

03:04:12 ◼   ► 3PO's responses that he's a he's a wise ass.

03:04:15 ◼   ► And Luke is giving it back to him.

03:04:18 ◼   ► It actually is meaningful in some small way

03:04:21 ◼   ► in terms of shaping the relationship between the characters.

03:04:24 ◼   ► And it fits perfectly in that scene.

03:04:26 ◼   ► Like I think one of my favorite cuts in the Dagobah sequences

03:04:29 ◼   ► where like Luke is just like he just crashed his ship.

03:04:33 ◼   ► Everything's all crappy.

03:04:34 ◼   ► And it's like his droid was attacked by a monster and spit out.

03:04:37 ◼   ► And he's covered with water and his droids covered in mud.

03:04:40 ◼   ► He's like, I don't even know what we're doing here.

03:04:42 ◼   ► And R2, like to end the scene, R2 expels mud from one of his vents. The top goes

03:04:46 ◼   ► and like that basically sums it up. Like it just, it's like slapstick, slapstick

03:04:52 ◼   ► comedy, but also commentary on the situation. We're just, you know what? This is crap. We're,

03:04:58 ◼   ► we're not doing well here. So to wrap it up, what, what is your expectation going? Do you

03:05:05 ◼   ► think there's going to be a movie that makes you happy or do you think it's going to be another

03:05:09 ◼   ► disappointment.

03:05:10 ◼   ► Do you have show notes?

03:05:12 ◼   ► You should put the incomparable episode where we talked about this in the show notes.

03:05:15 ◼   ► I will.

03:05:16 ◼   ► It's an entire episode of the incomparable about anticipating The Force Awakens.

03:05:20 ◼   ► And to sum up what I said there, I'm of two minds about it.

03:05:24 ◼   ► On the one hand, when I dwell on it a little bit, I start to get depressed because I'm

03:05:28 ◼   ► like, "There's just no way that this can be as meaningful to me as the original three

03:05:34 ◼   ► movies are," which is fine.

03:05:35 ◼   ► Like, you know, whatever.

03:05:36 ◼   ► Like, I start to think that there's just no way this can be as meaningful to me,

03:05:40 ◼   ► because things you experience in your formative years always have a certain extra amount of impact.

03:05:45 ◼   ► But on the other hand, I say, "Well, but isn't it possible?"

03:05:50 ◼   ► It's not as if as an adult it is impossible to get to me.

03:05:53 ◼   ► It's impossible to be affecting, and what I try to do is think of

03:05:56 ◼   ► what media, movies, or whatever have seen as an adult that have, like, really stuck with me and affected me.

03:06:04 ◼   ► Just basically to put like what what is the bar like have I just become such a jaded individual that no movie can really get

03:06:09 ◼   ► To me and so I should just put that out of my mind that Star Wars is not gonna be like that and what I came

03:06:13 ◼   ► Back to was like a lot of the Miyazaki movies

03:06:15 ◼   ► I saw as an adult

03:06:16 ◼   ► Really stick with me and are meaningful and important movies that I would put right up there with Star Wars movies

03:06:22 ◼   ► And then maybe they're not as big because they I didn't see them in my former years

03:06:25 ◼   ► But I saw them as an adult and basically what I'm doing is I'm reassuring myself that

03:06:27 ◼   ► That a movie can get to me and so that's the top bar and then the other thing I have to say

03:06:33 ◼   ► Is like so it's you've decided that you as an adult are able to be affected by a movie

03:06:38 ◼   ► What if you watch this movie this new Star Wars movie and it's merely a pretty good movie

03:06:43 ◼   ► Are you okay with that? And what I used was a Star Trek movies like the recent reboot Star Trek's I

03:06:47 ◼   ► Enjoyed those and when I've rewatched them I said, you know what? This was a fun movie

03:06:51 ◼   ► But I don't really care that much about Star Trek. So there's way less baggage there

03:06:55 ◼   ► But what I've been trying to think about is if I go into this movie

03:06:58 ◼   ► It's not the most amazing movie ever saw but it's competently made it's fun. It's exciting. I have fun watching it

03:07:04 ◼   ► Do I say yeah, but it was Star Wars and it's supposed to be way better than that

03:07:09 ◼   ► Or do I am I able to enjoy it the same way that I could enjoy the Star Trek movies that I care way way less

03:07:16 ◼   ► about

03:07:16 ◼   ► and I don't know what the answer to that is, but really what I've come down to is I think I

03:07:21 ◼   ► Believe it is possible for for this movie to be really important and meaningful

03:07:26 ◼   ► I probably I think it probably won't be and

03:07:28 ◼   ► I'm trying to be okay with with it merely being a good fun movie and just me being so much so excited that it wasn't

03:07:36 ◼   ► Like the prequels I my big fear is I feel like

03:07:40 ◼   ► The big problem with the prequels was well

03:07:43 ◼   ► There's so many and we can we've talked we've talked about them at length on this show and others

03:07:47 ◼   ► But to me at a fundamental level

03:07:49 ◼   ► It's that that the characters were flat and the dialogue was flat and there is no camaraderie

03:07:54 ◼   ► And and no said and and and in plot wise and story wise there was no sense of mystery in fact the whole point of the

03:08:01 ◼   ► prequel trilogy was to explain all the mysteries that that the original thriller trilogy lied on and

03:08:07 ◼   ► I've said this before like it always seemed like the original trilogy could have you know and there were rumors from when we were kids

03:08:14 ◼   ► That Lucas, but the next three movies wouldn't be after the return of the Jedi

03:08:19 ◼   ► They would be before when Ben Kenobi and Anakin Skywalker were younger

03:08:24 ◼   ► And it always seemed like well, of course he could do that because my god

03:08:27 ◼   ► There's so much stuff that they could explain what the hell the Clone Wars were how the Emperor came to be how the Emperor

03:08:32 ◼   ► Empire came to be all of these things could you know could be a movie but the fact that they were were

03:08:38 ◼   ► mysteries or were only gently or vaguely alluded to

03:08:41 ◼   ► It gave a weight to the original trilogy that the prequels didn't have because all they tried to do is piss away and explain everything

03:08:49 ◼   ► Right down to explaining how the force worked

03:08:52 ◼   ► I don't think that's gonna be a problem

03:08:54 ◼   ► I feel like JJ one thing JJ Abrams knows how to do is have

03:08:57 ◼   ► engaging characters and a sense of camaraderie and and a good a

03:09:03 ◼   ► Good ear for dialogue. My big concern is that that the modern?

03:09:07 ◼   ► Needs or perceived needs in Hollywood of a big-budget action movie are such that there's no way, you know

03:09:17 ◼   ► It's still going to be filled with 110 minutes of CGI action chases

03:09:23 ◼   ► Yeah, I talked about that in the incomparable to in the context of like modern movie making sensibilities

03:09:30 ◼   ► Because this using the Star Trek again as example you've seen those right there. Yeah

03:09:35 ◼   ► Star Trek rather. Yeah, especially like the first one. Yeah, and so those definitely

03:09:43 ◼   ► Look at Star Trek with modern movie making sensibilities and I like them like I thought they were enjoyable

03:09:49 ◼   ► but but you have to say like those movies are

03:09:52 ◼   ► Star Trek as reimagined through the loan through the lens of a modern filmmaker and for the Star Wars things. I

03:09:59 ◼   ► I really fervently hope that

03:10:02 ◼   ► JJ is a big enough Star Wars fan that what they do what he does instead is

03:10:10 ◼   ► You know it this certain Star Wars magic that I want to feel in this movie

03:10:14 ◼   ► Not that it's any worse or better than modern movie making sensibilities

03:10:18 ◼   ► But it's a different set of sensibilities that inform the original trilogy

03:10:21 ◼   ► And I feel like those those still work and are still fresh

03:10:25 ◼   ► So I want this movie to feel like Star Wars first and foremost

03:10:28 ◼   ► I don't want it to feel like Star Wars as the scene through the lens of a modern filmmaker and this thing

03:10:35 ◼   ► It's a continuum. I'm not saying it's like you're on one side of it on the other

03:10:37 ◼   ► But I desperately want this and again I use Miyazaki as my example Miyazaki movies are about all sorts of different topics across decades

03:10:45 ◼   ► But they all feel like Miyazaki movies

03:10:47 ◼   ► So I'm okay with this movie being different from the original trilogy in fundamental ways

03:10:53 ◼   ► but it has to feel like Star Wars it shouldn't feel like a

03:10:56 ◼   ► Modern movie a modern reimagining of Star Wars. I want it to feel like Star Wars at least just these three

03:11:03 ◼   ► After that fine then totally reimagine everything about it, but I want these three movies seven eight nine to feel like Star Wars

03:11:10 ◼   ► Yeah, that's a good way to put it. I agree and there's it is it's almost like a branding thing

03:11:14 ◼   ► You know that there was a certain way that the the original series just lacked bombastic

03:11:21 ◼   ► scenes, I mean, I mean like the the the space battle in Return of the Jedi sort of I think set the

03:11:29 ◼   ► Set the stage for modern action movies and it was so awesome at the time and I do love it

03:11:33 ◼   ► It's one of the and it's one of my favorite things in the whole return of the Jedi. It's fantastic

03:11:37 ◼   ► the way that the ships are so dynamic and the camera moves around and stuff like that, but

03:11:43 ◼   ► It's it's if you just use a stopwatch and measure how much of the movie is taken up by that battle

03:11:49 ◼   ► It's actually very little because it was so incredibly hard for them to do it

03:11:53 ◼   ► You know that the computer controlled where everything was actually like a an actual model

03:11:58 ◼   ► And in the modern filmmaking where it's once you have all this stuff set up you can just let like

03:12:03 ◼   ► You know like it's I got the way that transformer movies work where they're really just two hour CGI

03:12:10 ◼   ► Chases through us, you know where transformers are throwing themselves into skyscrapers

03:12:15 ◼   ► Yeah, and like you're trying to think about what is it that makes something feel like Star Wars a lot of it is

03:12:20 ◼   ► The limitations of motion control cameras and and the you know the 70s and 80s, right?

03:12:26 ◼   ► That defined the look of the space battles because what could you do with the mode control camera?

03:12:30 ◼   ► We can do this move that move that move in this move and we can optically composite them together and that kind of defines it

03:12:35 ◼   ► But also stuff that didn't have anything to do with technology like how it scored how there's like music behind everything and how it's orchestral

03:12:41 ◼   ► Like that's not the modern way movies are scored. That is that is an older way movies are scored

03:12:46 ◼   ► Like it's not that's not done and you know, John Williams doesn't put an orchestra behind

03:12:52 ◼   ► the Transformers movie during like every scene like Star Wars movies are practically musicals for the amount of music that's in them and the type

03:12:58 ◼   ► Of music is a weird old style of music so you can go a long way towards making a movie feel like Star Wars

03:13:04 ◼   ► without you know like yes, you can do anything in CG, but

03:13:09 ◼   ► Make it feel kind of like Star Wars now

03:13:11 ◼   ► You can you can do a twist not like in the trailer that we both saw the the camera movement around the Millennium Falcon

03:13:17 ◼   ► Falcon when it's doing all these strange maneuvers you couldn't really do that

03:13:20 ◼   ► feasibly with the motion-drill camera especially with the crazy backgrounds

03:13:23 ◼   ► and everything you can do it with CG but in some sense it still feels Star Wars

03:13:27 ◼   ► because lots of those swoopy moves where the camera was following the ship and

03:13:31 ◼   ► the ship was twirling around this is just like that cranked up a little bit

03:13:36 ◼   ► more it isn't it's a difference between that and like the like the fancy the

03:13:41 ◼   ► fancy way that Han piloted the Falcon into the asteroid crater in Empire

03:13:46 ◼   ► Strikes Back, where it was like this exuberant, like, straight up, straight down, paperclip,

03:13:52 ◼   ► you know, like, U-motion, you know, it's a show-off type of guy.

03:13:59 ◼   ► Accompanied by an ascending and descending scale in the soundtrack from John Williams

03:14:03 ◼   ► with like the flutes or whatever going in there, like, that's totally a Star Wars type

03:14:06 ◼   ► thing. And comparing it to, like, remember, did you watch the Battlestar Galactica reboot?

03:14:10 ◼   ► Yeah, I did.

03:14:11 ◼   ► Remember they used to do this thing that made it look like the Vipers or whatever were being

03:14:16 ◼   ► filmed by someone with a handheld camera far away so it would shake and then they would do the really dramatic zoom in

03:14:22 ◼   ► Yeah

03:14:22 ◼   ► It's like to acquire the ship and then try to get it centered in the frame

03:14:25 ◼   ► Like someone trying to catch like a long Hail Mary pass like a bad cameraman trying to say where the hell is the football?

03:14:31 ◼   ► I got it zoom in they don't do that these days

03:14:33 ◼   ► I saw that big Hail Mary and like they were headed the camera back the whole time

03:14:36 ◼   ► Don't they follow the ball anymore? Whatever the hell happened to NFL films where you get to see the thing spiraling towards you

03:14:40 ◼   ► Where is that tech anyway?

03:14:43 ◼   ► Yeah, you can you can make something

03:14:45 ◼   ► Feel like Star Wars and be modern without making it look like Bao Stark or like to be like all of a sudden

03:14:51 ◼   ► Everything is handheld shaky cam and there was shaky cam in the trailer

03:14:54 ◼   ► So I'm like, I'm not saying you can't use shaky cam. You totally can't I just I just overall

03:14:58 ◼   ► I want the movie to feel like Star Wars, right?

03:15:01 ◼   ► And part of that to me is that it has to you have to let certain scenes

03:15:05 ◼   ► Just just let them breathe and don't worry about whether there's a lot going on. Like give us something that's a mystery

03:15:11 ◼   ► Give us something that's new and then just let us figure it out

03:15:14 ◼   ► Like some of my favorite scenes in the original trilogy are just like r2d2 by himself

03:15:18 ◼   ► Just off in the desert on Tatooine and you just slowly watch the r2d2 roll across the desert

03:15:24 ◼   ► But there's it it's engaging because you're like well, where the hell is this robot going?

03:15:29 ◼   ► Yeah, like Empire my favorite one like this. There's so many scenes that end like with with the mud being spit out

03:15:37 ◼   ► That's the end of that scene before they cut to a different one

03:15:39 ◼   ► It's like, but wait, how does that conclude?

03:15:41 ◼   ► It doesn't have to conclude with a line or an event or a call to action

03:15:45 ◼   ► that can end with the feeling or just showing like,

03:15:48 ◼   ► some, you know, Yoda walking off into the misty swamp

03:15:51 ◼   ► and Luke just saying stay at the camp, like

03:15:53 ◼   ► something else is going to happen, but you're left with the feeling.

03:15:56 ◼   ► How are the characters feeling this morning?

03:15:58 ◼   ► Are they dejected? Are they hopeful? Are they cautious? Are they afraid?

03:16:01 ◼   ► That's so much more important than ending every scene with a call to action

03:16:06 ◼   ► that leads to the next scene.

03:16:07 ◼   ► We have to do the whatever and then go show the whatever.

03:16:09 ◼   ► And you know, it's just as I get excited about this movie Amy keeps reminding me of

03:16:14 ◼   ► the movie AI and

03:16:17 ◼   ► You know, which was written by Stanley Kubrick. I think he even got a producer credit, but it came out after he had died

03:16:24 ◼   ► But the you know

03:16:27 ◼   ► the basic story is that it was a movie he had been to Kubrick had been developing for a long time many years and

03:16:33 ◼   ► decided that he didn't want to direct it that Spielberg should direct it because it needed a warmth a

03:16:39 ◼   ► Human empathy that he knew that his movies lacked that it coldness would be the wrong way to approach it

03:16:44 ◼   ► And so he called up Steven Spielberg and said, you know, what do you think about that? I got this movie

03:16:49 ◼   ► Would you want to work with me and Spielberg is a huge Kubrick fan and they'd been friends over the phone for years

03:16:53 ◼   ► I was like, okay, and then the poor guy died, but Spielberg made it anyway, and we're going to see it opening night

03:17:00 ◼   ► Of course

03:17:00 ◼   ► I could not wait and I'm going to see it opening night and I just paused and we had another friend with it

03:17:04 ◼   ► Was me Amy and my friend Don and I just said I just want to tell you guys

03:17:07 ◼   ► I just want to make a prediction right here

03:17:08 ◼   ► I think there's a very strong chance that we're about to see the greatest movie that's ever

03:17:13 ◼   ► Had you not seen any other Spielberg movies like yeah, he's got human worth, but he's also a little sappy

03:17:19 ◼   ► That's what I said going into CA

03:17:22 ◼   ► Seriously, I said in all seriousness. I wanted it. Like I wanted the the being right points

03:17:29 ◼   ► Before we did I think we might be going to I believe there's a good chance that we might be going to see the greatest movie

03:17:35 ◼   ► That's ever been made. I mean not that AI was

03:17:38 ◼   ► Incredibly terrible, but it was not it it missed the mark. I think most people agree

03:17:43 ◼   ► I don't think it makes it's not a bad movie, but it is certainly bad given the pedigree of the

03:17:48 ◼   ► Filmmaker so that's why that's what a B keeps reminding me of with the force awakens

03:17:54 ◼   ► Well, but you're not making strong predictions about no

03:17:56 ◼   ► We're cautiously optimistic, but like this has everything going for it like the thing

03:18:00 ◼   ► I think about in this movie that the things that have faded it to exist is I mean obviously the reason exists at all is

03:18:06 ◼   ► Lucas sells gets him out of the picture so we don't to worry about his picadillos messing with things. You know what I mean

03:18:11 ◼   ► Yeah

03:18:11 ◼   ► And who do they get to direct it the guy who's basically admitted so many times before this like that

03:18:17 ◼   ► He's a super big Star Wars fan

03:18:19 ◼   ► Like when he when he directed Star Trek

03:18:22 ◼   ► I'm like that's kind of a shame because he's always said what a big Star Wars fan he is and I'm sure he likes Star

03:18:26 ◼   ► I'm sure he'll do a good job, but boy wouldn't it be great if he could do Star Wars

03:18:30 ◼   ► But now that he's done Star Trek

03:18:31 ◼   ► There's no way he's gonna do Star Wars cuz the same guy's not gonna get the same guy to do Star Trek and Star Wars

03:18:34 ◼   ► Well, he got to like essentially warm up on the lesser franchise Star Trek, right?

03:18:39 ◼   ► and finally and hone his craft over a

03:18:42 ◼   ► Series of movies and television shows over the years and then you could say like he's at the top of his game now

03:18:48 ◼   ► Fulfilling his childhood fantasy as any one child, you know child at a similar age to direct a new Star Wars movie

03:18:54 ◼   ► and he's the guy doing it, right? Now, I've heard there's been creative tensions between him and

03:18:59 ◼   ► the people who are running the franchise, and that kind of makes me worry about the future of this or whatever,

03:19:04 ◼   ► but, like, boy, the star is really aligned for both us and J.J. Abrams to have. I like J.J. Abrams,

03:19:09 ◼   ► I like his other movies,

03:19:10 ◼   ► I like that he got to practice on Star Trek, and I really hope that he, like,

03:19:14 ◼   ► uses all his skills and all his powers and the Godfather parlance to just, like, put everything he has into this, this,

03:19:21 ◼   ► It's his childhood dreams as well as ours tied up into this movie, and I really hope it comes together.

03:19:27 ◼   ► So I'm optimistic. We'll see how it goes.

03:19:31 ◼   ► Anyway, John Siracusa, thank you for your time. This has been extremely generous of you. We've gone on a long time.

03:19:38 ◼   ► Craig didn't take all my time. This would have been, you know...

03:19:42 ◼   ► No, I told you you weren't going to get cheated out of time.

03:19:45 ◼   ► John was worried when I asked him to do the show that he'd get shortchanged on time because of the Craig Federighi segment.

03:19:50 ◼   ► segment, not to worry. Yeah, well, just make it a three hour show, whatever.

03:19:54 ◼   ► Yeah, big, long, big, long, healthy. It's like a holiday meal, big, long, healthy meal.

03:19:59 ◼   ► I should thank all of our sponsors. We've got Harry's. Go to them, buy their shaving

03:20:02 ◼   ► stuff. Wealthfront, you can invest your money. Squarespace, you can build your own website.

03:20:07 ◼   ► And Casper, you can buy a mattress, which I again, I'm telling you what a holiday gift

03:20:11 ◼   ► idea that would be. John Siracuzzi, you can find him on his weekly podcast with the other

03:20:17 ◼   ► guy's ATP that's accidental tech podcast at ATP FM and he's just at Syracuse on

03:20:26 ◼   ► Twitter anything else no I think you covered it there we go thank you John

03:20:30 ◼   ► thank you