The Accidental Tech Podcast

205: People Don't Use the Weird Parts


00:00:00   so let's start with some follow-up why [TS]

00:00:02   did chris lattner decide to leave Apple [TS]

00:00:04   last week we talked about this and we [TS]

00:00:07   tried to list all the reasons we could [TS]

00:00:09   think of why he might be leaving and I [TS]

00:00:11   think we covered most of the major [TS]

00:00:14   threads of speculation and didn't really [TS]

00:00:15   get a listener feedback about anybody [TS]

00:00:17   did reply was mostly voting for one of [TS]

00:00:18   the things we talked about but here's [TS]

00:00:21   the thing i was topic unless there's [TS]

00:00:22   some kind of like secret doomsday thing [TS]

00:00:25   about Apple that only Chris knows it's [TS]

00:00:27   not actually that important that we [TS]

00:00:29   figure out like why he left apple or [TS]

00:00:31   what was in his heart of hearts like [TS]

00:00:32   aside from just being busy bodies are [TS]

00:00:34   just wanting to know like a gossip type [TS]

00:00:35   stuff and second pragmatically speaking [TS]

00:00:39   this is just not the type of thing that [TS]

00:00:41   people who leave Apple talk about or you [TS]

00:00:43   know if they do talk about it's like [TS]

00:00:45   years and years later after everyone no [TS]

00:00:46   one cares anymore or you know like it's [TS]

00:00:48   not a big deal [TS]

00:00:49   so even if there was some deep dark [TS]

00:00:51   reason it's not like we would know about [TS]

00:00:53   it until years from now and honestly the [TS]

00:00:55   straightforward boring explanation is [TS]

00:00:56   probably the right one anyway so you [TS]

00:00:59   know I don't know what do you think [TS]

00:01:00   Chris that sounds about right to me John [TS]

00:01:02   would you ever buy an electric car in [TS]

00:01:07   white if you weren't such a jerk [TS]

00:01:11   why are you so mean to be barca no no [TS]

00:01:13   I'm fine red cars there you get all [TS]

00:01:16   yellow thank you get them yellow that's [TS]

00:01:18   bold [TS]

00:01:19   my guess alright we obviously need to [TS]

00:01:22   talk about what's happening right now so [TS]

00:01:23   ATP is not interested in interview show [TS]

00:01:26   but in extraordinary circumstances weird [TS]

00:01:30   things can happen and so in today's [TS]

00:01:33   episode we have an extraordinary [TS]

00:01:34   circumstance former apple employee Chris [TS]

00:01:37   lander was like nice enough to join us [TS]

00:01:39   on the show and so this is going to be [TS]

00:01:42   three people interviewing one person [TS]

00:01:43   which is to say the least a bit peculiar [TS]

00:01:46   and it's something that we've never [TS]

00:01:47   really done before so this could be a [TS]

00:01:50   little bit of a rough ride but we're [TS]

00:01:52   gonna try to make our best of it and and [TS]

00:01:54   i'll just say right up front [TS]

00:01:56   thank you so much Chris for coming on [TS]

00:01:57   the show and we definitely appreciate it [TS]

00:01:59   to kind of kick all this off would you [TS]

00:02:01   mind giving us like a nickel tour of who [TS]

00:02:03   is crystalline okay well I can try [TS]

00:02:07   I'm a programmer and [TS]

00:02:10   of coding i have for a long time I am [TS]

00:02:13   most widely known for starting lbm and [TS]

00:02:16   getting it off the ground and handing it [TS]

00:02:18   off to other smarter people i started [TS]

00:02:20   playing which is the C C++ objective c [TS]

00:02:23   compiler and likewise got to the point [TS]

00:02:25   where it was thriving and then let other [TS]

00:02:28   smarter people run it and then started [TS]

00:02:31   Swift and got Swift going and it [TS]

00:02:33   recently got past three dough and it has [TS]

00:02:36   an amazing community and has a great [TS]

00:02:38   team of people running it and now I'm [TS]

00:02:40   ready to jump to the next thing and so I [TS]

00:02:43   guess the short version of what i'd like [TS]

00:02:45   to do is tackle really hard problems and [TS]

00:02:48   do things that most people think you're [TS]

00:02:50   impossible [TS]

00:02:51   so we're gonna go back in time a little [TS]

00:02:53   bit and i hope that you could tell us [TS]

00:02:57   how you ended up coming to apple like if [TS]

00:02:59   you can remember back that far like you [TS]

00:03:01   know you [TS]

00:03:02   lvm you started before you or an apple [TS]

00:03:04   right so how did you end up an apple [TS]

00:03:06   yeah isn't it a great question so i [TS]

00:03:07   started working out via aim at the [TS]

00:03:09   University of Illinois it was a research [TS]

00:03:12   project and the it really was kind of [TS]

00:03:17   hope for and designed to be fully [TS]

00:03:19   general and production quality and all [TS]

00:03:21   those great things that you want as a [TS]

00:03:24   graduate student for people to use your [TS]

00:03:25   code but it also wasn't it was had a lot [TS]

00:03:30   of the great architectural ideas maybe [TS]

00:03:32   but it wasn't fully baked it wasn't [TS]

00:03:34   wouldn't solve all the world's problems [TS]

00:03:37   and by the time I got to graduate [TS]

00:03:41   the question was what do I do next and [TS]

00:03:43   of course my dream was to continue [TS]

00:03:44   pushing forward and build it out to be [TS]

00:03:47   something real and to do that i would [TS]

00:03:49   have to go to a place that would allow [TS]

00:03:50   me to work on it and I was really [TS]

00:03:52   fortunate to build relationships with [TS]

00:03:54   folks at Apple they took a chance on me [TS]

00:03:56   and I jumped apple and started building [TS]

00:03:59   out of them is my job was it was totally [TS]

00:04:02   a dream of mine so that's how you have [TS]

00:04:04   to graduate [TS]

00:04:05   did you get your degree and then go to [TS]

00:04:06   apple yeah yeah that was nice [TS]

00:04:09   otherwise how do you ever get a job yeah [TS]

00:04:11   you can get a job that degree we all [TS]

00:04:12   know that no yeah yeah so [TS]

00:04:15   how would you explain lvm to somebody [TS]

00:04:17   who doesn't know stuff about compilers [TS]

00:04:19   because like we all just rattle off the [TS]

00:04:21   LEM compiler building tool kit or [TS]

00:04:23   whatever like but how would you explain [TS]

00:04:25   that to someone bizarre other listeners [TS]

00:04:27   of programmers who isn't into may be [TS]

00:04:29   familiar with how compiler works [TS]

00:04:30   sure so I mean first we start with what [TS]

00:04:32   does the compiler a compiler is the [TS]

00:04:35   thing that takes the code the programmer [TS]

00:04:37   writes and turns it into something [TS]

00:04:39   machine can understand and so there's [TS]

00:04:41   lots of different kinds of computers [TS]

00:04:43   with lots of different kinds of [TS]

00:04:44   processors most programmers don't have [TS]

00:04:47   to think about that or know about that [TS]

00:04:49   and they wanted program and think in a [TS]

00:04:51   much higher level than what the the [TS]

00:04:53   actual processor can do and so the [TS]

00:04:55   compiler job is to transform what what [TS]

00:04:58   the human wrote and to something the [TS]

00:05:00   machine can understand then lvm is a [TS]

00:05:04   modular system for building different [TS]

00:05:06   kinds of compilers because there's lots [TS]

00:05:08   of different reasons why people would [TS]

00:05:10   want to use compiler technology and I [TS]

00:05:12   think album was most successful over the [TS]

00:05:14   years because was built as reusable [TS]

00:05:16   components kind of like a framework and [TS]

00:05:20   then the framework can be used to solve [TS]

00:05:22   lots of different problems and one of [TS]

00:05:24   the fun things about lvm is that it was [TS]

00:05:26   eventually over the years used to solve [TS]

00:05:28   problems that we had never even imagined [TS]

00:05:29   which is really exciting [TS]

00:05:31   so one example of that the type of [TS]

00:05:33   problem is a remember from passwd sees [TS]

00:05:36   the idea that the xcode ID the GUI that [TS]

00:05:40   you programs used to to make their [TS]

00:05:41   applications that very often in that [TS]

00:05:44   gooey you need to do things that have an [TS]

00:05:46   understanding of the code but when the [TS]

00:05:48   compiler is big monolithic thing the [TS]

00:05:50   best you can kind of do is compile [TS]

00:05:52   everything in the background and spit [TS]

00:05:53   out some stuff but when it's a modular [TS]

00:05:55   toolkit you can take those pieces and [TS]

00:05:58   just use the part that understands like [TS]

00:06:00   the syntax tree or whatever and [TS]

00:06:01   integrate them was that the first use of [TS]

00:06:04   lvm is something other than like you [TS]

00:06:08   know a complete like a straight-up [TS]

00:06:09   compiler that you just point your code [TS]

00:06:11   and produces output like you know in [TS]

00:06:13   other words integrating it into [TS]

00:06:14   applications or was there some use [TS]

00:06:15   before that [TS]

00:06:17   well i think the the first use and [TS]

00:06:19   production was in the opengl stack which [TS]

00:06:22   end of shipping and a late software [TS]

00:06:24   update for tiger [TS]

00:06:25   and as well as in leopard which is 10 [TS]

00:06:28   dot 4 in 10 5 [TS]

00:06:30   there was using a completely invisible [TS]

00:06:33   way to translate to basically repack [TS]

00:06:36   data and uploaded to the GPU and so when [TS]

00:06:39   you need to [TS]

00:06:40   when you're making opengl calls to say [TS]

00:06:42   GL vertex 3 f or whatever the the [TS]

00:06:45   low-level GL call is those verses need [TS]

00:06:49   to be transformed into a very specific [TS]

00:06:51   data format the GPU can understand and [TS]

00:06:53   you have a whole bunch of different [TS]

00:06:54   kinds of calls that can be used to [TS]

00:06:56   produce for tech surge in other geometry [TS]

00:06:58   data but you also have a matrix of [TS]

00:07:00   different kinds of GPUs you need to [TS]

00:07:02   support and they all have different [TS]

00:07:03   formats and different capabilities and [TS]

00:07:05   requirements and so Alabama's used to [TS]

00:07:07   generate very small chunks of code to do [TS]

00:07:09   that and it was part of the 64-bit bring [TS]

00:07:12   up in the leopard timeframe and so that [TS]

00:07:14   was probably the first completely [TS]

00:07:16   invisible use of it the that used and [TS]

00:07:19   proved a lot of the kind of code [TS]

00:07:21   generation technologies so forgive me [TS]

00:07:24   one more lvm related things are going to [TS]

00:07:26   go from what is the compiler all I down [TS]

00:07:27   to the nitty-gritty stuff here my vague [TS]

00:07:30   recollection of what you just described [TS]

00:07:31   the whole video driver thing was that [TS]

00:07:33   there were files on disk in the shipping [TS]

00:07:36   us that were basically lvm bytecode like [TS]

00:07:39   these little bc files and they would get [TS]

00:07:42   slurped up and converted to machine code [TS]

00:07:45   appropriate for the GPU and spaz is that [TS]

00:07:48   am i right about that yeah you're [TS]

00:07:49   absolutely right and so it basically the [TS]

00:07:51   we look at is the the code files the lvm [TS]

00:07:55   the ship with the OS were little [TS]

00:07:57   snippets of code that then at runtime or [TS]

00:08:00   recombined and optimized across and so [TS]

00:08:03   that was kind of the library of [TS]

00:08:04   primitives that the opengl runtime used [TS]

00:08:07   to assemble what it was trying to do [TS]

00:08:09   alright so my question about this and [TS]

00:08:11   maybe you kind of alluded to with either [TS]

00:08:12   a slip of the tongue or reviewing [TS]

00:08:14   understanding is what is the difference [TS]

00:08:16   between llvm bytecode and what Apple [TS]

00:08:18   currently brands as bit code [TS]

00:08:21   oh well DRS first or quote is a [TS]

00:08:23   historical it's a technical and [TS]

00:08:26   historical cuz I'm confused by the [TS]

00:08:28   branding and I'm also confused by the [TS]

00:08:29   tech so lvm prior to lv m2 dot oh and [TS]

00:08:35   these version numbers of the open-source [TS]

00:08:36   version numbers not related to the apple [TS]

00:08:38   version [TS]

00:08:38   numbers and their confusingly different [TS]

00:08:40   for not very interesting reasons but [TS]

00:08:43   before to do used a really horrible [TS]

00:08:46   encoding in binary the was branded [TS]

00:08:50   bytecode because that's what java use [TS]

00:08:52   had a whole bunch of problems and there [TS]

00:08:54   was an extensible it was fragile with [TS]

00:08:57   the ilbm was changing and didn't have [TS]

00:09:00   compatibility and so in the lvm to do [TS]

00:09:04   timeframe which josh is probably don't [TS]

00:09:08   know ten ten years ago or more it's been [TS]

00:09:10   a long time ago now I redesign the whole [TS]

00:09:15   thing and it now uses this quote-unquote [TS]

00:09:17   bit code format and use bit code as a [TS]

00:09:20   term for two reasons one of which was it [TS]

00:09:22   was different than bytecode and so the [TS]

00:09:24   two could be side-by-side in the [TS]

00:09:25   directory tree for a while and the [TS]

00:09:27   second reason is that the encoding is a [TS]

00:09:29   bitstream format instead of a byte [TS]

00:09:30   stream but that that's the origin of the [TS]

00:09:34   term bit code you can find documentation [TS]

00:09:36   in this file format is actually a very [TS]

00:09:38   general encoding format that you can use [TS]

00:09:41   for xmltype purposes it's a [TS]

00:09:43   self-describing file format and multiple [TS]

00:09:46   different things can be encoded in a bit [TS]

00:09:48   code that was definitely some confusion [TS]

00:09:50   about that because when Apple presented [TS]

00:09:51   it when they presented it as like the [TS]

00:09:53   required was like the watch apps have to [TS]

00:09:54   be a bit code Marco you would know this [TS]

00:09:56   watch's required iOS is still optional [TS]

00:09:59   and TV is required and they would have [TS]

00:10:02   you send you put your stuff in bit code [TS]

00:10:04   and there's a lot of speculation early [TS]

00:10:06   on about what that meant like in terms [TS]

00:10:09   of does that mean that what you're [TS]

00:10:12   uploading is not a finished binary and [TS]

00:10:14   therefore it's like this machine [TS]

00:10:15   agnostic and could be targeted any CPU [TS]

00:10:17   and the more prosaic version like it [TS]

00:10:21   doesn't mean its CPU agnostic all it [TS]

00:10:23   means is that Apple has slightly more [TS]

00:10:25   freedom to like change instructions on [TS]

00:10:28   the sea views they do target [TS]

00:10:30   how would you characterize the what what [TS]

00:10:32   what advantages are there of compiling [TS]

00:10:36   something to bit code and then uploading [TS]

00:10:38   it somewhere vs sending someone a binary [TS]

00:10:40   sure there's a good there's a couple of [TS]

00:10:41   different advantages for that one of [TS]

00:10:43   which is that the compiler keeps getting [TS]

00:10:46   better and so the compiler learns a new [TS]

00:10:47   optimization at [TS]

00:10:49   can be applied to existing applications [TS]

00:10:51   without application developers and [TS]

00:10:52   reupload their their app that's one [TS]

00:10:55   small thing other things is our the [TS]

00:10:58   apple just periodically add new [TS]

00:10:59   instructions to its at cps one example [TS]

00:11:02   this historically was the the [TS]

00:11:06   hilariously named swift check that [TS]

00:11:08   launched which was the first designed [TS]

00:11:11   in-house 32-bit ARM chip this was the [TS]

00:11:15   iphone 5 if I recall that's right [TS]

00:11:17   so in this chip they added an integer [TS]

00:11:20   divided instruction and all the chips [TS]

00:11:22   before that didn't have the ability to [TS]

00:11:24   do an integer divided in hardware you [TS]

00:11:26   had to actually open code it and there's [TS]

00:11:28   a library function to do that and so [TS]

00:11:30   that and the other instructions they [TS]

00:11:32   added were a pretty big deal and use [TS]

00:11:35   pervasively and the only way to tackle [TS]

00:11:37   then in and handle that and use it [TS]

00:11:39   effectively was to introduce an entire [TS]

00:11:41   new slice and so if you're an app [TS]

00:11:43   developer back then you had the v7 slice [TS]

00:11:45   which was all the older ships and then [TS]

00:11:48   you have to be 7s slice as for swift [TS]

00:11:50   which was the slice that included the [TS]

00:11:55   injured but now this is a pain for app [TS]

00:11:57   developers is paying for Apple everybody [TS]

00:12:00   has it has to convince all the [TS]

00:12:01   developers to take it seriously and if [TS]

00:12:03   it doesn't if app developers don't [TS]

00:12:04   support it then the new hardware doesn't [TS]

00:12:05   benefit from it and so--but code allows [TS]

00:12:08   that kind of thing to go completely away [TS]

00:12:10   with the code [TS]

00:12:11   apple just recompile the applications in [TS]

00:12:13   the store and say haha this this device [TS]

00:12:16   has an integer divided instruction and [TS]

00:12:18   it can it works perfectly with the [TS]

00:12:20   thinning kind of architecture they have [TS]

00:12:21   for deploying resources to specific [TS]

00:12:24   device types and all kind of looks [TS]

00:12:26   together bit code is not a magic [TS]

00:12:30   solution though it doesn't you can take [TS]

00:12:32   a 32-bit app for example and run on a [TS]

00:12:35   64-bit device that that kind of [TS]

00:12:37   portability isn't something that can [TS]

00:12:38   give you [TS]

00:12:39   notably because that is something that's [TS]

00:12:41   visible and see and so as you're writing [TS]

00:12:44   C code you can write if death you know [TS]

00:12:47   pointers equals 32 and that's something [TS]

00:12:49   that big coke and abstract / and so it's [TS]

00:12:53   useful for very specific low-level kinds [TS]

00:12:55   of enhancements [TS]

00:12:57   but isn't a panacea that makes [TS]

00:12:59   everything magically portable at the [TS]

00:13:02   same thing i would assume for like [TS]

00:13:03   architecture changes especially there [TS]

00:13:04   was an Indian difference because Indian [TS]

00:13:05   this is visible from the sea world so if [TS]

00:13:07   you can't you can't target different [TS]

00:13:08   ending this [TS]

00:13:09   yep yeah so this is not something [TS]

00:13:11   magically Saul portability problems but [TS]

00:13:13   is it is very useful for specific [TS]

00:13:15   problems that Apple's face in the past [TS]

00:13:16   and then going back to the this life [TS]

00:13:19   thing that's like terminology like I'm [TS]

00:13:20   tamaco format where you get to put [TS]

00:13:22   different architectures worth of [TS]

00:13:23   executable or is that a different [TS]

00:13:25   yeah it is i think this technology that [TS]

00:13:26   goes all the way back to next when next [TS]

00:13:29   supported really heterogeneous different [TS]

00:13:31   architectures like pa-risc and and spark [TS]

00:13:33   and RBC and Intel all back and in the [TS]

00:13:37   next days and it allows you to compile [TS]

00:13:40   your application with multiple slices [TS]

00:13:42   they call them and then there's a tool [TS]

00:13:44   called lipo which sticks them together [TS]

00:13:46   and at runtime the OS pics the slice the [TS]

00:13:51   best matches your cpu and practice and [TS]

00:13:53   so an app developer can support many [TS]

00:13:55   different kinds of architectures and [TS]

00:13:57   then the OS just does the right thing [TS]

00:13:59   and so in today's world it's very common [TS]

00:14:01   to build an iOS app for example the for [TS]

00:14:05   both arms 64 and arm 32 and the way that [TS]

00:14:07   works in the native in the simplest [TS]

00:14:10   cases it's just too different binary is [TS]

00:14:13   that are stuck together and then the OS [TS]

00:14:15   X the right one to run all right i could [TS]

00:14:18   go on for this river but I want to [TS]

00:14:20   that's right all it's just uh is this [TS]

00:14:21   some pent-up relations about Bitcoin [TS]

00:14:24   biko but now I feel satisfied we can go [TS]

00:14:26   on to broader topics we sponsor tonight [TS]

00:14:30   by Squarespace squarespace.com use code [TS]

00:14:34   ATP to get ten percent off your first [TS]

00:14:36   purchase [TS]

00:14:36   it's the new year you might have a new [TS]

00:14:38   project you might have a new goal you [TS]

00:14:40   want to reach and that might involve [TS]

00:14:41   making a website make your next move [TS]

00:14:44   with a beautiful website from [TS]

00:14:46   Squarespace Squarespace sites are so [TS]

00:14:49   incredibly easy to make and they're [TS]

00:14:50   incredibly beautiful and the tools are [TS]

00:14:53   very powerful [TS]

00:14:54   this is a great combination that i [TS]

00:14:55   personally have never seen before in the [TS]

00:14:58   web building space until Squarespace the [TS]

00:15:00   amount of power you get with these tools [TS]

00:15:02   is just incredible you can make so many [TS]

00:15:04   different kinds of sites with so little [TS]

00:15:06   effort [TS]

00:15:07   nothing else comes close your site's [TS]

00:15:10   look professionally designed [TS]

00:15:11   regardless of your skill level with no [TS]

00:15:13   coding required although if you want to [TS]

00:15:15   jump in and help some of the code you [TS]

00:15:16   actually can but you don't have to and [TS]

00:15:18   it probably isn't a good use of your [TS]

00:15:19   time because Squarespace is such a great [TS]

00:15:22   platform right out-of-the-box whether [TS]

00:15:25   you're making website for you or for [TS]

00:15:26   somebody else if you make of somebody [TS]

00:15:28   else [TS]

00:15:29   Squarespace is the place you want to do [TS]

00:15:30   that because you shouldn't have to use [TS]

00:15:33   Squarespace and then you're done [TS]

00:15:35   they're not coming to you anymore [TS]

00:15:35   squares page will support if they need [TS]

00:15:37   help and able to figure things out on [TS]

00:15:39   their own because it's just so much [TS]

00:15:40   easier to use than whatever CMS you were [TS]

00:15:42   going to install on their server so [TS]

00:15:43   check out today go to squarespace.com [TS]

00:15:45   use code ATP to ten percent off your [TS]

00:15:48   first purchase when you decide to sign [TS]

00:15:50   up whether you're making a site for you [TS]

00:15:52   or somebody else make your next move [TS]

00:15:54   with squarespace ah so Chris how's your [TS]

00:16:00   transition from coding to being a [TS]

00:16:03   manager because from an outsider's point [TS]

00:16:04   of view it looked like you know you [TS]

00:16:06   arrived at Apple you were working [TS]

00:16:07   heavily on llvm like you said earlier [TS]

00:16:09   but over time I mean even just looking [TS]

00:16:11   at the resume on your website it seems [TS]

00:16:13   pretty clear that you are doing a lot [TS]

00:16:15   more managing lately then perhaps coding [TS]

00:16:18   or maybe maybe just worked around the [TS]

00:16:20   clock that would surprise me either but [TS]

00:16:21   it how how would you how did you feel [TS]

00:16:24   about your transition from from being [TS]

00:16:26   just a code monkey to being a manager [TS]

00:16:28   and I asked in part because at my face [TS]

00:16:31   my career I am still a code monkey but i [TS]

00:16:32   think it's not too far away that I might [TS]

00:16:34   become a manager and so I'm curious to [TS]

00:16:37   hear you know from from one code monkey [TS]

00:16:39   to another how did that transition go [TS]

00:16:41   and what did you learn from it [TS]

00:16:43   yeah that's that's kind of interesting [TS]

00:16:44   so I don't think it is a hard transition [TS]

00:16:47   I'm still writing code i still love [TS]

00:16:49   writing code that's something that I [TS]

00:16:51   think is a key part of my identity and [TS]

00:16:54   but on the other hand is it is very [TS]

00:16:58   strange so I started managing people at [TS]

00:17:00   Apple really pretty early on maybe [TS]

00:17:03   you're so after i joined i started [TS]

00:17:06   managing two or three people because [TS]

00:17:09   kind of the best person to to manage the [TS]

00:17:12   nascent lvm effort at the time and [TS]

00:17:16   initially it was mostly just being a [TS]

00:17:19   tech lead and [TS]

00:17:20   so if you're if you've ever driven a [TS]

00:17:22   project where you have co-workers that [TS]

00:17:25   don't report to you that your kind of [TS]

00:17:27   guiding them and helping make technical [TS]

00:17:29   decisions that's that's where started [TS]

00:17:31   over over time I my team grew and [TS]

00:17:35   eventually ended up picking up and [TS]

00:17:37   running kind of a second level manager [TS]

00:17:39   role where you're managing other [TS]

00:17:41   managers and each step along the way it [TS]

00:17:43   introduces new challenges and along the [TS]

00:17:46   way I told myself that managing [TS]

00:17:49   something that I had to do because that [TS]

00:17:52   was the best qualified to do it and I [TS]

00:17:54   didn't want anybody else to and that [TS]

00:17:57   coding was my real joy and passion and I [TS]

00:17:59   think the coding really is my joy and [TS]

00:18:01   passion but along the way [TS]

00:18:03   looking back I realize that I am [TS]

00:18:04   actually pretty good at managing and I [TS]

00:18:07   really do like building teams i like [TS]

00:18:10   working with people and I've never [TS]

00:18:11   considered myself to be a people person [TS]

00:18:13   just how it's just very very odd for me [TS]

00:18:16   to even think about that but actually do [TS]

00:18:19   understand how people work and can you [TS]

00:18:22   know really care about getting the most [TS]

00:18:24   out of people and working with them to [TS]

00:18:26   make them successful and so it's been [TS]

00:18:29   kind of a transition over time but I've [TS]

00:18:32   always hung onto coding and even though [TS]

00:18:34   i have a full time management job I [TS]

00:18:36   could like crazy and nights and weekends [TS]

00:18:38   and I'm not the kind of guy that likes [TS]

00:18:40   around idle and eaten and so I've always [TS]

00:18:43   just been busy so I mean you can get as [TS]

00:18:46   much of this history as you want to [TS]

00:18:47   Chris but how did you get Swift to [TS]

00:18:50   happen inside Apple because from the [TS]

00:18:53   outside its mysterious to us how big [TS]

00:18:57   important projects come to be like you [TS]

00:19:00   know whatever you name the headlining [TS]

00:19:02   things that are common Apple we hear [TS]

00:19:04   that Apple does a lot of things that [TS]

00:19:05   don't see the light of day [TS]

00:19:07   how did you get probably one of the [TS]

00:19:09   biggest things ever to come out of Apple [TS]

00:19:11   an entirely new language created [TS]

00:19:13   in-house had to get that to happen and [TS]

00:19:14   not just be some little thing that was [TS]

00:19:16   off to the side that fizzled often [TS]

00:19:18   disappear [TS]

00:19:18   sure well so i can tell you about Swift [TS]

00:19:21   but i don't think you should project [TS]

00:19:23   this onto every other project and apple [TS]

00:19:24   because i'm sure there are different so [TS]

00:19:26   you just talk about my experiences so [TS]

00:19:29   started in 2010 [TS]

00:19:31   you know it's kind of the timing is [TS]

00:19:35   suspicious because right after a blogger [TS]

00:19:37   wrote something about how Apple need a [TS]

00:19:40   new programming language haha i'm not a [TS]

00:19:43   blogger ok [TS]

00:19:44   arstechnica wasn't a thing about blog [TS]

00:19:48   that was a prestigious website still is [TS]

00:19:50   ok ok hi I stand corrected [TS]

00:19:54   so I don't remember fight after i read [TS]

00:19:58   it exactly then that's that was a causal [TS]

00:20:00   link to starting working on swift or if [TS]

00:20:02   it was just because I just finish up [TS]

00:20:05   cleaning c++ support and we launched [TS]

00:20:07   client c++ and of course if you write [TS]

00:20:10   C++ good you know how ugly and horrible [TS]

00:20:12   it is but if you implement c++ it's a [TS]

00:20:15   whole nother level of the of challenges [TS]

00:20:17   and so getting that first release out [TS]

00:20:20   was it was a major accomplishment for [TS]

00:20:22   for the entire team and it was a major [TS]

00:20:23   major effort for a ton of people [TS]

00:20:26   involved and as is typical you get [TS]

00:20:29   something over the finish line and of [TS]

00:20:31   course it wasn't fully finished long [TS]

00:20:32   ways to go but a lot of the [TS]

00:20:33   intellectually interesting to me at [TS]

00:20:36   least pieces were we're done [TS]

00:20:38   that's why I started thinking about okay [TS]

00:20:40   what comes next [TS]

00:20:41   right and then implementing other [TS]

00:20:43   people's stuff like for example the see [TS]

00:20:46   the c++ the objective-c standards and [TS]

00:20:49   languages but there were there were you [TS]

00:20:53   know things that we weren't happy with [TS]

00:20:54   and things I wasn't happy with and so [TS]

00:20:56   what started out as just a let's let's [TS]

00:20:59   see what could be done right let's see [TS]

00:21:01   what a much simpler language that [TS]

00:21:03   doesn't need a preprocessor doesn't hate [TS]

00:21:05   try graphs doesn't need all the weird [TS]

00:21:08   things that have accumulated into c and [TS]

00:21:10   c++ over the years but let's see what we [TS]

00:21:13   can do and just try to build something [TS]

00:21:15   nicer [TS]

00:21:16   initially it was really just a me me [TS]

00:21:20   messing around and nobody knew about it [TS]

00:21:23   because it wasn't anything to know about [TS]

00:21:25   but eventually got a little bit more [TS]

00:21:28   serious and said hey well after playing [TS]

00:21:30   around a little bit i think that this [TS]

00:21:32   actually could make sense and so I [TS]

00:21:34   started talking to my management [TS]

00:21:36   I'm start talking again engineers are [TS]

00:21:39   working on playing and they seemed [TS]

00:21:41   excited about it we got a couple people [TS]

00:21:43   working on it part time and I can ask my [TS]

00:21:46   manager that it was interesting enough [TS]

00:21:47   that we could have a couple of people [TS]

00:21:50   work on it now this wasn't a major [TS]

00:21:53   commitment this was a ok well let's see [TS]

00:21:56   see what there is here and that started [TS]

00:21:59   a an internal demo schedule and other [TS]

00:22:02   things we set milestones in place and [TS]

00:22:04   tried to to to justify the investment [TS]

00:22:06   that was being put into it eventually [TS]

00:22:09   got to the point where there was an in [TS]

00:22:12   it was part of a long that it was posing [TS]

00:22:14   strategic questions so the strategic [TS]

00:22:17   questions were the form [TS]

00:22:18   ok what we have objective-c objective-c [TS]

00:22:21   is a great language it is probably [TS]

00:22:24   directly responsible for the iphone [TS]

00:22:27   being successful because it's really [TS]

00:22:31   high performance allows you to get your [TS]

00:22:33   job done it supports high-level [TS]

00:22:35   frameworks and beautiful way there's a [TS]

00:22:37   ton of stuff to love about objective-c [TS]

00:22:39   and while there are few things that are [TS]

00:22:41   ugly about it some at sides and [TS]

00:22:42   semicolons and other stuff like that you [TS]

00:22:44   know we can make objectively better and [TS]

00:22:46   so the question was always why not just [TS]

00:22:49   make objectively better right why don't [TS]

00:22:51   we just keep evolving objective-c and [TS]

00:22:54   why do we want to face potential [TS]

00:22:55   disruption in terms of moving the entire [TS]

00:22:57   development community to something new [TS]

00:23:00   and we kick that around for a long time [TS]

00:23:02   we talked about both sides and we came [TS]

00:23:05   to realize that yes we can and should [TS]

00:23:06   make objective-c better and we continue [TS]

00:23:09   to invest in objective-c we did things [TS]

00:23:11   like our for example which is a major [TS]

00:23:13   effort but we got dots [TS]

00:23:17   well so dot syntax / dated this ah yeah [TS]

00:23:20   dot dot syntax so the objective c 2 [TS]

00:23:23   features and the block syntax were all [TS]

00:23:25   kind of prior to this i worked on blocks [TS]

00:23:28   but [TS]

00:23:28   but it wasn't in this time for him and [TS]

00:23:32   so we were talking about okay well can [TS]

00:23:34   we just make objectively better and can [TS]

00:23:35   feature creep into the language that we [TS]

00:23:37   want for the fullness of time because we [TS]

00:23:39   can that be much less disruptive to the [TS]

00:23:41   community and we decided that yeah we [TS]

00:23:43   can we can move objective-c a lot closer [TS]

00:23:45   to what we want so we can get automatic [TS]

00:23:47   memory management with art for example [TS]

00:23:49   but we can't ever take away the problems [TS]

00:23:52   that lead to objective-c being unsafe [TS]

00:23:55   and the fundamental problem was [TS]

00:23:57   objectives he was built on top of C and [TS]

00:24:00   C inherently has pointers it has [TS]

00:24:02   initialize variables that has array of [TS]

00:24:05   overflow that has all these problems [TS]

00:24:06   that even if you have full control of [TS]

00:24:09   your compiler and tools back you just [TS]

00:24:11   can't fix right to fix to fix dangling [TS]

00:24:14   pointers you'd have to fix lifetime [TS]

00:24:15   issues and she doesn't have a framework [TS]

00:24:17   to to reason about that and retrofitting [TS]

00:24:20   that into a compatible way into the [TS]

00:24:21   system just one really work if you took [TS]

00:24:24   away see for objective-c you can't use [TS]

00:24:26   see arrays on the stack for example and [TS]

00:24:28   if you can do that there's entire [TS]

00:24:31   classes of applications that where the [TS]

00:24:33   performance just wouldn't be acceptable [TS]

00:24:34   and so we went around around around we [TS]

00:24:37   said okay [TS]

00:24:38   the only way that this can make sense in [TS]

00:24:42   terms of the cost of the destruction to [TS]

00:24:44   the community is if we make it a safe [TS]

00:24:47   programming language which means not [TS]

00:24:49   safe as in you can have no bugs but safe [TS]

00:24:51   in terms of memory safety while also [TS]

00:24:54   providing high performance and and [TS]

00:24:56   moving the programming model forward and [TS]

00:24:58   so that was really kind of the ideas [TS]

00:25:00   that that came together to make swift [TS]

00:25:03   being worth the investment and being [TS]

00:25:05   worth being disruptive to the community [TS]

00:25:08   so a lot of these kinds of pitches and [TS]

00:25:10   ideas were being held and very small [TS]

00:25:14   small small meetings and coming out of [TS]

00:25:19   WBC 2013 is one we in the executive team [TS]

00:25:23   decided okay let's let's really commit [TS]

00:25:25   to this and that's coming out of WC 2013 [TS]

00:25:28   is when the developer tools team came to [TS]

00:25:31   know about it and really started working [TS]

00:25:33   hard on it and Swift is Swift as a huge [TS]

00:25:36   huge effort by hundreds of people [TS]

00:25:39   and that's when all the work on bringing [TS]

00:25:41   up the debugger in the IDE support and [TS]

00:25:44   playgrounds and all the other things [TS]

00:25:45   that the charge into swift one auto [TS]

00:25:47   really started coming together and and [TS]

00:25:50   make happen so it's kind of house which [TS]

00:25:53   came to be lose again one step after [TS]

00:25:55   another building small things explaining [TS]

00:25:58   to people why make sense why was worth [TS]

00:26:00   it and then also I think that a major [TS]

00:26:02   important aspect of Swift being I guess [TS]

00:26:07   worth taking a risk on was that we told [TS]

00:26:11   people that we would not guarantee [TS]

00:26:12   source compatibility in window and that [TS]

00:26:16   was really interesting because that [TS]

00:26:19   actually was a big relief for people [TS]

00:26:20   because internally that meant that it [TS]

00:26:24   didn't have to be perfect when it [TS]

00:26:26   launched it meant that we could learn we [TS]

00:26:27   could adapt and that as long as we're [TS]

00:26:30   clear with the community about that that [TS]

00:26:31   that would allow us to get to ultimate [TS]

00:26:34   greatness and learn from actual usage [TS]

00:26:37   and practice i think that was a really [TS]

00:26:39   key piece to Swift coming in actually [TS]

00:26:42   making it to the market so strategically [TS]

00:26:45   speaking when you were doing like the [TS]

00:26:48   work to improve objective-c did you have [TS]

00:26:51   in mind the ability to potentially [TS]

00:26:53   leverage some of that work for swift [TS]

00:26:56   like we're like I'm trying to like the [TS]

00:26:58   strategy of how you get it done like [TS]

00:26:59   part of his personal relationships and [TS]

00:27:01   like knowing the right people [TS]

00:27:03   part of it is persuasion you have to [TS]

00:27:04   persuade them with your technical [TS]

00:27:05   arguments in your business arguments and [TS]

00:27:06   stuff like that but part of it was part [TS]

00:27:09   of it also laying the groundwork with [TS]

00:27:12   with efforts and technologies that have [TS]

00:27:15   multiple uses [TS]

00:27:16   yeah absolutely so so long for example [TS]

00:27:18   that is our it was really clear to me [TS]

00:27:21   that if if we get to memory safety we [TS]

00:27:23   had to have automatic memory management [TS]

00:27:24   and I don't know if you wanna go down [TS]

00:27:27   the GC vs arg rabbit hole or not that [TS]

00:27:29   part [TS]

00:27:30   arc seem like obviously the right models [TS]

00:27:32   me and to enter some other people and so [TS]

00:27:35   we said okay we need to get to an [TS]

00:27:38   automatic memory management model [TS]

00:27:41   objective-c isn't because objective-c at [TS]

00:27:43   the time had the are obviously garbage [TS]

00:27:45   collector which had numerous problems [TS]

00:27:47   and so we had to get objective-c to be [TS]

00:27:51   memory manage and so that's why ark was [TS]

00:27:53   who became a thing it became really high [TS]

00:27:56   priority and I think that it's a great [TS]

00:27:59   example of something with by itself had [TS]

00:28:01   a huge amount of value to the [TS]

00:28:02   objective-c community and then after [TS]

00:28:05   that we had similar other efforts like [TS]

00:28:07   modules for example that was a huge [TS]

00:28:09   thing that both improved build time but [TS]

00:28:12   was also absolutely essential to [TS]

00:28:14   enabling swift code to eventually just [TS]

00:28:16   say import UI kit and get everything and [TS]

00:28:19   so there's a number of things that [TS]

00:28:20   rolled out over the years and it was [TS]

00:28:22   really funny at the time because the [TS]

00:28:24   objective developers externally and even [TS]

00:28:27   internally to apple always accused the [TS]

00:28:29   compiler and languages team of taking [TS]

00:28:31   objective-c on this random walk and they [TS]

00:28:33   didn't know how to get together and [TS]

00:28:34   we're where's the strategy and why are [TS]

00:28:37   you guys working on this and why are you [TS]

00:28:38   working on some other syntactic sugar [TS]

00:28:40   for the thing i want and of course we [TS]

00:28:42   could never tell them but there was [TS]

00:28:44   there's a good reason and so on another [TS]

00:28:46   example that is the object literals [TS]

00:28:49   feature i think we introduce that in [TS]

00:28:50   2013 fire call work for Ray literals and [TS]

00:28:55   other things like that that was [TS]

00:28:58   interesting feature in that it was a [TS]

00:29:00   relatively small amount of engineering [TS]

00:29:03   work the broad objectives the objective [TS]

00:29:06   language much closer to Swift in terms [TS]

00:29:09   of having arrays and dictionaries [TS]

00:29:11   literals as part of the language but the [TS]

00:29:14   real reason for doing it is that it was [TS]

00:29:16   a small amount of work that move [TS]

00:29:18   directly forward which allowed the [TS]

00:29:19   compiler language team to focus on swift [TS]

00:29:21   because with was a very large amount of [TS]

00:29:25   work and that was you know at appeasing [TS]

00:29:28   community and your route solving real [TS]

00:29:31   problems but you know buying time to [TS]

00:29:34   actually pour into the multi-year [TS]

00:29:35   project of making this with language [TS]

00:29:36   happen [TS]

00:29:37   that's when you pull out the syntactic [TS]

00:29:39   sugar programmers love it takes [TS]

00:29:40   attendance implement here you go that [TS]

00:29:43   everyone applauded when they see the [TS]

00:29:44   slide ba I mean in all fairness that was [TS]

00:29:47   a really big deal anyway so it's kind of [TS]

00:29:49   building on on the Apple internal [TS]

00:29:51   reaction thing [TS]

00:29:53   you know with this this language in its [TS]

00:29:56   development and then its public release [TS]

00:29:58   is probably fairly unique language in [TS]

00:30:01   like the context in which was released [TS]

00:30:02   you have this this massive company [TS]

00:30:05   nobody probably had more absurd the [TS]

00:30:07   objective-c programmers an apple does [TS]

00:30:08   and see this massive company with tons [TS]

00:30:11   of internal programmers in a massive [TS]

00:30:13   internal code base that is using this [TS]

00:30:15   this other language you have this entire [TS]

00:30:17   community of iOS and mac developers and [TS]

00:30:21   then you have the entire world watching [TS]

00:30:24   every move apple makes and putting under [TS]

00:30:26   very very heavy scrutiny so the release [TS]

00:30:29   of his language in this context is [TS]

00:30:30   probably only very high pressure but [TS]

00:30:32   also like unique in that you you knew [TS]

00:30:36   that you were gonna face a lot of people [TS]

00:30:39   up front like most languages probably [TS]

00:30:41   start out with a few people using them [TS]

00:30:42   you know something some random quarter [TS]

00:30:44   the internet and eventually maybe [TS]

00:30:45   someone it maybe it slowly takes off [TS]

00:30:46   this was not that way and so what [TS]

00:30:50   considerations I guess when into that [TS]

00:30:52   and also how were you able to convince [TS]

00:30:55   people even inside of Apple to to use [TS]

00:30:59   swift and and how is how is that going [TS]

00:31:03   so I guess there's different answers [TS]

00:31:07   that four different phases we had no [TS]

00:31:12   idea that the reaction would be as [TS]

00:31:14   strong and as positive as it was and so [TS]

00:31:16   I think we were blown away and caught [TS]

00:31:18   unaware in some ways but otherwise I [TS]

00:31:24   think we did the right thing so for [TS]

00:31:26   example if you look at swift overtime so [TS]

00:31:29   if one and so if two are as similar to [TS]

00:31:32   objective sees we can make them so if [TS]

00:31:35   you look at the way that selectors are [TS]

00:31:36   named for example it was very there's a [TS]

00:31:40   very direct correlation if you look at [TS]

00:31:42   the way objective-c swift one was [TS]

00:31:45   explained to people it was explained to [TS]

00:31:47   people as it's just like objective c you [TS]

00:31:51   can use all your same patterns you can [TS]

00:31:52   use all same framework she can continue [TS]

00:31:54   doing object-oriented programming you [TS]

00:31:56   can do all these things but it also has [TS]

00:31:58   some cool new things like enums and [TS]

00:32:01   pattern matching and [TS]

00:32:02   these other things and so it's great [TS]

00:32:04   because it's just cleaned up syntax for [TS]

00:32:06   what you already know [TS]

00:32:07   plus it has some new cool stuff that you [TS]

00:32:09   can play with right and then you fast [TS]

00:32:11   forward a year or two and the Swift [TS]

00:32:13   community was really taking off [TS]

00:32:15   it was people were understanding what's [TS]

00:32:17   with those about Swift open sources also [TS]

00:32:20   enabled this and so 3 is really about so [TS]

00:32:23   it's becoming its own language that was [TS]

00:32:25   really true to itself and standing you [TS]

00:32:28   know stands by itself and that's where [TS]

00:32:30   you see the method call syntax for [TS]

00:32:32   example being radically changed and a [TS]

00:32:35   lot of things just kind of coming [TS]

00:32:36   together and really focusing and [TS]

00:32:40   polishing the language in terms of the [TS]

00:32:43   the rise of the community the the [TS]

00:32:45   external community and people using it [TS]

00:32:47   that was really really hard for us [TS]

00:32:50   because so my experience has been with [TS]

00:32:53   lv and with clang clang as a C and C++ [TS]

00:32:56   compiler and objective-c was completely [TS]

00:33:00   different than Swift because when we [TS]

00:33:02   open source and launch claim which was [TS]

00:33:05   at Apple everybody yond open source it [TS]

00:33:12   very early on and people said okay [TS]

00:33:13   you're nuts nobody can build a c++ [TS]

00:33:15   compiler that's that's not a thing why [TS]

00:33:18   are you even messing around with this [TS]

00:33:19   and you know we got one contributor to [TS]

00:33:22   the project and we had no users and then [TS]

00:33:25   we got you know month later we might get [TS]

00:33:26   another contributor or another person [TS]

00:33:28   part-time the setting and patches and it [TS]

00:33:31   was a very slow growth that that was [TS]

00:33:34   ultimately really great because it was [TS]

00:33:37   relatively low pressure was swift and [TS]

00:33:39   with the the way was launched it was [TS]

00:33:41   completely different because it went [TS]

00:33:43   from nobody knowing about to everybody [TS]

00:33:45   knowing about it overnight literally and [TS]

00:33:48   there being so much excitement so many [TS]

00:33:51   people that were nervous and had bad [TS]

00:33:53   reactions other people that were super [TS]

00:33:55   excited but a lot of people that were [TS]

00:33:57   suddenly hitting bugs and having [TS]

00:33:59   challenges and problems and why did you [TS]

00:34:01   do this and why didn't you do that and [TS]

00:34:03   you know some of that was misguided just [TS]

00:34:05   because they didn't know Swift yet but [TS]

00:34:07   other others other aspects were really [TS]

00:34:09   spot-on and that was 12 really started [TS]

00:34:12   learning about how people are using and [TS]

00:34:14   started [TS]

00:34:14   during moving Swift and Swift between [TS]

00:34:17   the WBC lon chance with one auto release [TS]

00:34:21   change dramatically and that was a [TS]

00:34:24   really really hard time for the entire [TS]

00:34:26   team because we really want to get it as [TS]

00:34:29   close as we could what we wanted but we [TS]

00:34:31   had a very short amount of time to do so [TS]

00:34:33   and I think that's been true first with [TS]

00:34:36   two and so with three as well where we [TS]

00:34:38   have really high goals for the team and [TS]

00:34:41   really high goals for what we want to [TS]

00:34:43   get done and that makes it a lot a lot [TS]

00:34:45   of pressure and a lot of stress but it's [TS]

00:34:49   I think worth it to serve and see the [TS]

00:34:52   community around Swift grow and see [TS]

00:34:55   people use it and see people learn it [TS]

00:34:57   and it's been a lot of fun so I'm [TS]

00:34:59   curious [TS]

00:35:00   I know when Swift first came out it was [TS]

00:35:02   hard to get a lot of adoption inside of [TS]

00:35:05   apple for various you know tooling [TS]

00:35:07   reasons uh among men maybe whatever else [TS]

00:35:09   was going on [TS]

00:35:10   how is internal adoption going today [TS]

00:35:13   like re seeing meaningful adoption hours [TS]

00:35:15   at most i was programs were using it and [TS]

00:35:17   not anybody inside the White team itself [TS]

00:35:20   has specific goals they need to achieve [TS]

00:35:23   before there can be truly [TS]

00:35:24   across-the-board adoption at Apple's ABI [TS]

00:35:28   stability is the number one thing that [TS]

00:35:30   prevents framework developers for [TS]

00:35:31   example from adopting Swift so that's a [TS]

00:35:34   really important thing that's one of the [TS]

00:35:36   reasons it's always a really high [TS]

00:35:37   priority but switch has been adopted by [TS]

00:35:40   application developers and other things [TS]

00:35:42   the doc is publix with playgrounds app [TS]

00:35:45   is public the music app in iOS is [TS]

00:35:48   publicly known so they're they're [TS]

00:35:49   definitely some big big adopters more [TS]

00:35:52   broadly though that the big problem is [TS]

00:35:53   that i think and i will speak for [TS]

00:35:56   everybody but in many many people doing [TS]

00:35:59   objects development and Apple are [TS]

00:36:01   chomping at the bit they want to be [TS]

00:36:02   using Swift and so it's it's really [TS]

00:36:04   matter just getting the technology [TS]

00:36:06   problem-solve didn't get you know [TS]

00:36:07   checking out the things are holding [TS]

00:36:09   people back it's not about you know [TS]

00:36:12   people dragging their feet and not [TS]

00:36:14   wanting to use it makes sense that's [TS]

00:36:16   really also get it from from the outside [TS]

00:36:18   it's so hard to figure out you know is [TS]

00:36:20   is Apple internally like oh really [TS]

00:36:23   or for example internally like you said [TS]

00:36:25   like really excited and I'm sure that [TS]

00:36:26   there's some of both but [TS]

00:36:27   but that's really good to hear yeah and [TS]

00:36:29   i think it's also changed over time when [TS]

00:36:32   it first came out of course it was a [TS]

00:36:34   huge surprise for most of the software [TS]

00:36:36   team and so you know many people went [TS]

00:36:39   through the usual phases of matter and [TS]

00:36:42   no objective c why would have learned [TS]

00:36:44   this new thing objective-c is great and [TS]

00:36:45   objective-c is great so that that's [TS]

00:36:48   that's an objective statement right but [TS]

00:36:52   I think things have shifted over time [TS]

00:36:53   and as switches matured it's definitely [TS]

00:36:56   become a lot more appealing and one [TS]

00:36:58   other technology problem that is [TS]

00:37:00   hilarious but also really important is [TS]

00:37:03   the Apple frameworks that has to support [TS]

00:37:06   32 the mac apps in 37 mac apps have this [TS]

00:37:09   interesting challenge of they have [TS]

00:37:11   what's called the classic objective-c [TS]

00:37:13   runtime which doesn't support things [TS]

00:37:16   like non fragile instance variables and [TS]

00:37:18   things like that and so at some point [TS]

00:37:20   I'm the Swift team will need to make the [TS]

00:37:22   Swift runtime work in that mode or [TS]

00:37:24   figure out some other solution to adapt [TS]

00:37:27   it because until that happens it won't [TS]

00:37:29   be possible use Swift an appt get for [TS]

00:37:31   example [TS]

00:37:32   well that's fascinating so kind of [TS]

00:37:35   taking a more broad view do you could [TS]

00:37:40   you name either you're most proud [TS]

00:37:42   accomplishment during your time at Apple [TS]

00:37:44   that you can discuss publicly anyway or [TS]

00:37:46   if not you're most proud just won the [TS]

00:37:48   first one that jumps to mind [TS]

00:37:49   wow I don't have been really fortunate [TS]

00:37:53   to work on so many really important [TS]

00:37:55   projects and I mean I think that between [TS]

00:37:59   lvm and swift for example it's really a [TS]

00:38:03   hard call [TS]

00:38:03   I'm Swift I think impacts more people in [TS]

00:38:08   terms of the number of people would [TS]

00:38:10   actually know they're using it and want [TS]

00:38:13   to learn it and things like that but i [TS]

00:38:14   think the lvm has been picked up and use [TS]

00:38:17   so far across industry and its kind of [TS]

00:38:19   standardizing the world's compilers I [TS]

00:38:21   think that's probably more profound at [TS]

00:38:23   this point so it's really it's a start [TS]

00:38:27   calling and that they're there are a ton [TS]

00:38:29   of really really great opportunities [TS]

00:38:33   that I've had and spend a lot of fun [TS]

00:38:35   over many years now [TS]

00:38:36   also outside the open-source pieces [TS]

00:38:38   working with the expert team and working [TS]

00:38:41   with the other teams and developer tools [TS]

00:38:42   has been really phenomenal [TS]

00:38:43   I mean there's so many great people at [TS]

00:38:45   Apple and Android developer tools it's [TS]

00:38:47   just been a joy [TS]

00:38:48   so what do you expect to miss the most [TS]

00:38:51   about being an apple and I'm gonna take [TS]

00:38:53   I'm gonna let you expand on this but I'm [TS]

00:38:55   gonna take it off the table and so you [TS]

00:38:56   have to pick like your second choice [TS]

00:38:57   you're gonna say like you miss the [TS]

00:38:58   people because of course you do right [TS]

00:39:00   yes that is actually what i would say [TS]

00:39:02   right but everybody you know so you can [TS]

00:39:04   go ahead and tell us about all the great [TS]

00:39:05   people your example but besides that [TS]

00:39:07   what do you expect to miss most about [TS]

00:39:09   Apple the company working well so the [TS]

00:39:11   great thing about Apple and the thing [TS]

00:39:13   that I don't think that many people [TS]

00:39:14   really get about Apple is it is really [TS]

00:39:19   one of the few best place in the world [TS]

00:39:22   where you can work hard but also work on [TS]

00:39:25   products that ship and the ship to [TS]

00:39:29   millions of people so that your hard [TS]

00:39:31   work ends up mattering right there [TS]

00:39:33   there's a lot of places you can work [TS]

00:39:35   hard there's a lot of places that you [TS]

00:39:37   can work on interesting things but [TS]

00:39:40   there's also a lot of places end up not [TS]

00:39:42   shipping a lot or or if they ship it [TS]

00:39:45   very few people actually use it and so [TS]

00:39:47   apples really really magical in that [TS]

00:39:50   combines being you know being able to [TS]

00:39:53   work hard and in do great things with it [TS]

00:39:55   actually mattering and to me that that's [TS]

00:39:57   the thing that that is just so so [TS]

00:39:59   phenomenal about Apple so so moving on [TS]

00:40:03   to your new role at Tesla do you think [TS]

00:40:06   that Swift will still be a major part of [TS]

00:40:09   your work life in some way like you know [TS]

00:40:11   or will basically be like something you [TS]

00:40:13   do in the evenings and weekends because [TS]

00:40:15   we all know that that Silicon Valley [TS]

00:40:16   tech startups don't usually work people [TS]

00:40:18   too hard you're gonna have tons of free [TS]

00:40:19   time [TS]

00:40:20   yeah so this jump on making is [TS]

00:40:22   definitely do a cushy no easy that right [TS]

00:40:26   that that's what I'm looking for here uh [TS]

00:40:30   so i don't know we'll have to see i [TS]

00:40:33   haven't started yet and i think it's [TS]

00:40:36   going to be very challenging job and one [TS]

00:40:37   of the reasons I'm excited about it [TS]

00:40:39   because I really want to throw myself [TS]

00:40:40   into another heart technology problem [TS]

00:40:43   and so I'm really excited about that i [TS]

00:40:45   do expect to be involved with the design [TS]

00:40:47   of swift and helping helping with the [TS]

00:40:50   core team and helping Swift evolution [TS]

00:40:51   process and helping in and allow that [TS]

00:40:53   kind of respect but one of things to [TS]

00:40:55   keep in mind is that Swift was actually [TS]

00:40:57   really tiny slice of my job at apple and [TS]

00:41:01   so you know I had a very full schedule [TS]

00:41:05   dealing with lots of other stuff and it [TS]

00:41:08   was already kind of nights and weekends [TS]

00:41:09   project that i was coating on it and [TS]

00:41:12   contributing at the level that I was so [TS]

00:41:15   I'm hoping with all be a big change but [TS]

00:41:17   honestly i'll have to see obviously I [TS]

00:41:20   care a lot about Swift and I really want [TS]

00:41:22   to get to its go over world domination [TS]

00:41:25   so we're sponsor tonight by eero go to [TS]

00:41:28   eurocom at the ER o.com and use code ATP [TS]

00:41:32   when you order for free expedited [TS]

00:41:33   shipping Wi-Fi is broken [TS]

00:41:36   you probably have one Wi-Fi router with [TS]

00:41:38   if you're lucky a bunch of antennas on [TS]

00:41:40   that look hideous and you're trying to [TS]

00:41:43   cover your whole house with Wi-Fi but it [TS]

00:41:44   just doesn't reach every room [TS]

00:41:46   it just doesn't reach everywhere because [TS]

00:41:47   Wi-Fi is hard when you're recovering [TS]

00:41:49   from 1.0 solve this problem by having a [TS]

00:41:53   router system where they will they had [TS]

00:41:55   this little ear units nice attractive [TS]

00:41:56   it's tastefully designed there's not a [TS]

00:41:58   bunch of antennae sticking out of it and [TS]

00:42:00   you can buy one of them or you can buy [TS]

00:42:02   10 of them are a number in between and [TS]

00:42:04   that you put them around your house and [TS]

00:42:06   each one covers the area in Wi-Fi and [TS]

00:42:09   they all talk to each other [TS]

00:42:11   wirelessly so you don't have to run [TS]

00:42:12   wires love your house you can have your [TS]

00:42:14   entire house blanketed in Wi-Fi with 0 [TS]

00:42:16   and they talk to each other over this [TS]

00:42:18   mesh network so it's even faster than [TS]

00:42:20   previous if you ever use like an [TS]

00:42:21   extender and centers are very slow [TS]

00:42:23   it's even faster than that by a lot and [TS]

00:42:26   0 is true enterprise-grade quality and [TS]

00:42:28   performance they have everything you [TS]

00:42:30   need from encryption features two things [TS]

00:42:32   like parental controls and that they're [TS]

00:42:33   actually updating it over time they've [TS]

00:42:35   done over 12 updates since launch with [TS]

00:42:37   more to come to add features they have [TS]

00:42:39   an app for very easy setup and they have [TS]

00:42:41   incredible customer support if you need [TS]

00:42:43   it [TS]

00:42:44   they recommend 10 per thousand square [TS]

00:42:45   feet so typical home will have two or [TS]

00:42:47   three of them they got a three pack as a [TS]

00:42:49   pretty reasonable starting point for [TS]

00:42:50   most everybody there's a 30 day [TS]

00:42:52   money-back guarantee if you don't like [TS]

00:42:54   it or if you could buy too many you want [TS]

00:42:55   to return a couple of them if you [TS]

00:42:56   I'm not eating as many as you bought [TS]

00:42:58   check it out the reviews are stellar [TS]

00:43:00   they back this up go to 0 comments de ro [TS]

00:43:04   dah calm and use code ATP when you order [TS]

00:43:07   for free expedited shipping [TS]

00:43:09   thank you very much to ero for [TS]

00:43:10   sponsoring our show ah you know [TS]

00:43:16   obviously Swift is open-source I don't [TS]

00:43:17   know if you're aware that Chris but uh [TS]

00:43:18   huh i'm looking at yeah right at how do [TS]

00:43:21   you feel like it's been going so far in [TS]

00:43:23   i'm assuming similar to John you know [TS]

00:43:25   I'm gonna take away the obvious answer [TS]

00:43:27   it's going well but it may be too kind [TS]

00:43:29   of Q conversation what's been really [TS]

00:43:32   surprising about going open source and [TS]

00:43:35   and you can get a specific or as broad [TS]

00:43:37   as you'd like to be but I got to imagine [TS]

00:43:38   that that you guys had a bunch of [TS]

00:43:41   expectations about what going open [TS]

00:43:43   source would be like and i would imagine [TS]

00:43:44   some of them are accurate and some of [TS]

00:43:45   them weren't so how do you feel like the [TS]

00:43:47   Swift open source project has been going [TS]

00:43:48   yeah so I think that 22 to summarize [TS]

00:43:52   it's not just going well it's going far [TS]

00:43:54   better than we ever anticipated and that [TS]

00:43:56   caused problems so for context [TS]

00:44:02   I and many of the other people on the [TS]

00:44:03   team had quite a bit of open-source [TS]

00:44:05   experience so elevated claim for example [TS]

00:44:08   open-source they they were they are [TS]

00:44:12   vibrant and amazing communities with [TS]

00:44:14   hundreds of contributors and dozens of [TS]

00:44:18   companies are collaborating in public [TS]

00:44:20   and doing really amazing stuff even some [TS]

00:44:22   of the most staunch competitors you know [TS]

00:44:25   AMD AMD and intel and AMD and nvidia or [TS]

00:44:29   you know the these kinds of companies [TS]

00:44:30   that really you know don't get along on [TS]

00:44:33   the business side of things but the [TS]

00:44:35   engineers were great at working engineer [TS]

00:44:37   to engineer and solving problems and [TS]

00:44:39   stay focused on making things better so [TS]

00:44:42   with Swift we assume that would be very [TS]

00:44:45   similar to that but what we found is [TS]

00:44:48   that there was a major difference [TS]

00:44:49   between launching Swift and launching [TS]

00:44:51   something like playing for example which [TS]

00:44:53   is that when Swift losses open source [TS]

00:44:56   which was december third just over a [TS]

00:44:58   year ago in RI had I don't know a [TS]

00:45:02   million users and we're playing [TS]

00:45:06   started and every yond and didn't really [TS]

00:45:09   care and grew slowly Swift open-source [TS]

00:45:13   started and was amazingly fast moving [TS]

00:45:16   changing tons of people hundreds of [TS]

00:45:19   patches on the first day it was totally [TS]

00:45:20   crazy and we didn't really know what to [TS]

00:45:22   do and so I mean it's I i am like super [TS]

00:45:26   impressed with the the Swift open source [TS]

00:45:28   community and all the people involved in [TS]

00:45:30   the energy and just think it's just it's [TS]

00:45:32   hard it's hard to believe how great [TS]

00:45:34   everything is but it it really did [TS]

00:45:37   create problems because we had to figure [TS]

00:45:38   out things like how we're gonna stay up [TS]

00:45:40   on in terms of the patch volume [TS]

00:45:42   okay we're getting hundreds and hundreds [TS]

00:45:43   of emails a day to the Swift evolution [TS]

00:45:45   mailing list what are we going to do [TS]

00:45:47   about that [TS]

00:45:47   how do we balance apples goals for [TS]

00:45:52   pushing Swift forward with the goals of [TS]

00:45:53   the community which are somewhat more [TS]

00:45:55   chaotic and last directed and I think [TS]

00:45:58   that over last year we've learned a lot [TS]

00:46:00   and you can see that reflect in terms of [TS]

00:46:02   how the project is being managed and how [TS]

00:46:05   how things are being done but it's [TS]

00:46:07   always been super important to be not [TS]

00:46:10   just open source but I guess if you look [TS]

00:46:14   at an open source project there's [TS]

00:46:15   there's three kind of easy levels to to [TS]

00:46:18   look at it the first basic requirement [TS]

00:46:21   the ssi to be open sources to make your [TS]

00:46:23   code available right and so you can [TS]

00:46:25   produce tarballs periodically and that's [TS]

00:46:27   technically open source you can allow [TS]

00:46:31   contributions and if you do that through [TS]

00:46:33   pull requests or patches or whatever [TS]

00:46:35   then people can engage with it and make [TS]

00:46:38   the code better [TS]

00:46:39   there's open community so not only can [TS]

00:46:42   do you accept a patch but you actually [TS]

00:46:44   discuss things and talk about things in [TS]

00:46:47   public and then there's open design and [TS]

00:46:50   with Swift we went all the way and I [TS]

00:46:51   think it was totally the right thing to [TS]

00:46:53   do because we really want to benefit [TS]

00:46:54   from all the smart people in the world [TS]

00:46:56   and it was it and still is amazing but [TS]

00:47:00   it's also very challenging [TS]

00:47:01   yeah I can imagine so building upon the [TS]

00:47:05   open sourcing of Swift it was very [TS]

00:47:08   surprising to me and I think a lot of [TS]

00:47:09   the community that Apple chose to upload [TS]

00:47:12   the entire commit history it wasn't just [TS]

00:47:14   a here's day one initial commitment you [TS]

00:47:16   know 11 gazillion files and [TS]

00:47:18   the gazillion lines of code was that [TS]

00:47:21   plan from the start that you guys would [TS]

00:47:23   upload the entire history i would say it [TS]

00:47:25   was planned from the start that we'd [TS]

00:47:26   upload the entire history but it was [TS]

00:47:28   kind of assumed from the start that it [TS]

00:47:30   would be open source at some point [TS]

00:47:32   interesting and if you look at apple's [TS]

00:47:35   history i think that's that's in the [TS]

00:47:38   tool space I think that's fairly [TS]

00:47:40   straightforward lvm wasn't started at [TS]

00:47:44   Apple but almost almost everything Apple [TS]

00:47:49   does end up going public in the same [TS]

00:47:51   space [TS]

00:47:52   clang was started at apple and claimed [TS]

00:47:54   was contributed by Apple to the album [TS]

00:47:57   project and that included his full [TS]

00:48:00   revision history other projects like ldb [TS]

00:48:02   and lip c++ compiler RT and all these [TS]

00:48:06   other smaller projects were started at [TS]

00:48:09   apple and contribute to the open source [TS]

00:48:10   project so Swift it was kind of assumed [TS]

00:48:13   that that would happen at some point the [TS]

00:48:15   the real question was when when is the [TS]

00:48:17   right time for that to happen and if you [TS]

00:48:20   remember the days of Swift window Swift [TS]

00:48:23   1022 dunno in particular was a super [TS]

00:48:26   chaotic super learning as we went and [TS]

00:48:29   trying to keep up with the community and [TS]

00:48:30   trying to keep up with the pace and the [TS]

00:48:32   challenges that people were facing and [TS]

00:48:34   trying to get key pieces like the [TS]

00:48:36   air-handling model and protocol [TS]

00:48:37   extensions and all that kind of stuff [TS]

00:48:38   that it always been planned but one [TS]

00:48:41   didn't make it into Swift window and so [TS]

00:48:43   really focusing on that was the priority [TS]

00:48:45   and so we just decided that open [TS]

00:48:48   sourcing Swift at 10 for example would [TS]

00:48:50   be really actually bad for the Swift [TS]

00:48:53   community because there are major pieces [TS]

00:48:54   language that weren't there we would [TS]

00:48:57   have to spend a lot of time community [TS]

00:48:59   building and try to explain to people [TS]

00:49:00   the difference between what was not [TS]

00:49:03   there but should be there and what is [TS]

00:49:05   you know there and known broken and we [TS]

00:49:08   had to do a lot of that one swift was [TS]

00:49:10   eventually open source than in last year [TS]

00:49:13   right after Swift to toronto but it was [TS]

00:49:15   a much better place and the team could [TS]

00:49:16   actually handle the load of doing the [TS]

00:49:19   community and we didn't expect the kind [TS]

00:49:22   response we got but we knew that [TS]

00:49:23   building a vibrant open source community [TS]

00:49:25   is a lot of work and it's not something [TS]

00:49:26   to be under underestimated we want to [TS]

00:49:29   make sure that Swift to was out the door [TS]

00:49:31   and it wasn't kind of a resource [TS]

00:49:33   contention between do we finished with [TS]

00:49:36   two or do we start open source and that [TS]

00:49:39   and that's why I was announced to be [TS]

00:49:41   open source by the end of the year [TS]

00:49:42   because that meant that we can start [TS]

00:49:44   working on the open-source [TS]

00:49:45   infrastructure project bringing up all [TS]

00:49:47   the other stuff that takes to make [TS]

00:49:48   something open source after Swift is [TS]

00:49:50   complete so my recollection of the Swift [TS]

00:49:54   three in the planning stages was that [TS]

00:49:56   ABI compatibility was somewhere in the [TS]

00:50:00   list of I'm not gonna call them goals [TS]

00:50:03   but somewhere in the list of items that [TS]

00:50:05   were in contention for a swift 3 and at [TS]

00:50:07   some point along the development process [TS]

00:50:09   of Swift 3.avi comparability got [TS]

00:50:11   postponed and given what you just said [TS]

00:50:14   about the importance of ABI [TS]

00:50:15   compatibility for the framework people [TS]

00:50:17   inside apple or whatever [TS]

00:50:18   what can you say about that is the did [TS]

00:50:22   you learn lessons from ABI compatibility [TS]

00:50:25   being planned for the three or do you [TS]

00:50:27   think like it was never really hard and [TS]

00:50:29   fast goal and you totally made the right [TS]

00:50:31   call to delay it or are you disappointed [TS]

00:50:33   that it didn't make it [TS]

00:50:34   I'm i think many of those things I mean [TS]

00:50:37   we're disappointed that it got delayed [TS]

00:50:38   but it was totally the right time I [TS]

00:50:41   think that there's a couple of things to [TS]

00:50:43   learn from that one of which is software [TS]

00:50:44   schedule planning is hard but breaking [TS]

00:50:49   this [TS]

00:50:50   yeah so that that's definitely still [TS]

00:50:52   thing there's also that we didn't [TS]

00:50:55   anticipate the so the original plan [TS]

00:50:58   you're referring to was announced before [TS]

00:51:00   switch is open source or super sorry was [TS]

00:51:02   announced the same time so it was open [TS]

00:51:03   source and so we had no idea that the [TS]

00:51:06   community would descend on swift and [TS]

00:51:08   suddenly have all these new demands and [TS]

00:51:11   consume so much time and energy from [TS]

00:51:14   that have took away from programming to [TS]

00:51:16   do the community building peace so that [TS]

00:51:18   was part of it [TS]

00:51:19   another part of it is that even [TS]

00:51:21   stability is super important but it's [TS]

00:51:24   not as important as people think it is [TS]

00:51:26   for application developers it's really [TS]

00:51:28   important to apple but what we realized [TS]

00:51:32   in the three timeframe is that the thing [TS]

00:51:33   after developers would benefit from the [TS]

00:51:36   most was actually sourced ability so who [TS]

00:51:40   actually wants their application be [TS]

00:51:42   broken when they get new version of [TS]

00:51:43   xcode [TS]

00:51:44   well really nobody right and so and so [TS]

00:51:48   kind of halfway through the release we [TS]

00:51:49   pivoted and source can soar stability [TS]

00:51:52   became the goal and so I'm really [TS]

00:51:54   excited that ones with the three don't [TS]

00:51:56   want or so for comes out that I'm still [TS]

00:51:59   gonna be able to build with three code [TS]

00:52:00   and even if there are minor changes that [TS]

00:52:03   need to be made for one reason or [TS]

00:52:04   another that you can upgrade and you [TS]

00:52:07   have great compatibility with your old [TS]

00:52:09   code and you don't have to start the [TS]

00:52:11   migrator before you can do anything so [TS]

00:52:13   it's gonna be a great improvement for [TS]

00:52:14   people's lives [TS]

00:52:16   alright so moving on a little bit to [TS]

00:52:18   that kind of this branch topic here of [TS]

00:52:21   server-side Swift with on linux things [TS]

00:52:23   like this is is switched on the server [TS]

00:52:27   something that you know I i know it's [TS]

00:52:30   possible and there's like some seemingly [TS]

00:52:33   some early efforts now to get that going [TS]

00:52:35   it do you see this as like a major goal [TS]

00:52:38   first trip to the language and you're [TS]

00:52:40   not not any kind of official capacity [TS]

00:52:42   just like you as a person who who likes [TS]

00:52:44   and user Swift and has as a you know a [TS]

00:52:46   strong role in the community like is [TS]

00:52:50   server-side Swift a thing that you want [TS]

00:52:53   to be like a major thing to compete with [TS]

00:52:55   you know things like Python rails and [TS]

00:52:57   stuff on the server or is it intended [TS]

00:53:00   more to be kind of like a specialized [TS]

00:53:02   thing that is probably not going to be [TS]

00:53:03   in widespread use by like web and [TS]

00:53:05   back-end programmers so I think that [TS]

00:53:08   everybody involved with the project [TS]

00:53:11   wanted to be the way to do server [TS]

00:53:13   development and I think that to [TS]

00:53:17   understand that you have to understand [TS]

00:53:18   were just kind of entering phase 2 [TS]

00:53:21   Swift's world domination plan so this [TS]

00:53:27   will probably sound insane but maybe in [TS]

00:53:29   a few years it will sound less than [TS]

00:53:31   saying it but the way to look at it the [TS]

00:53:34   way i look at it and the way that many [TS]

00:53:36   other people have to look at it is that [TS]

00:53:37   we want swift be the next big thing [TS]

00:53:41   right we wanted to be more popular than [TS]

00:53:42   Java was or is we want to be more [TS]

00:53:45   popular than Python we want to be maybe [TS]

00:53:46   even more popular than see someday right [TS]

00:53:48   that's that would be a stretch but but [TS]

00:53:51   that would be great and so if if thats [TS]

00:53:54   problem solved how do you solve that [TS]

00:53:55   problem well open source is a huge piece [TS]

00:53:58   of that right without open-source it's [TS]

00:53:59   not going to be available in other [TS]

00:54:00   people's platforms it's not gonna be [TS]

00:54:02   used in education and teaching as that's [TS]

00:54:05   just not gonna happen and so open [TS]

00:54:06   sources a major piece of that if you go [TS]

00:54:09   back farther before that Swift world [TS]

00:54:12   domination doesn't happen unless with [TS]

00:54:14   games relevance right and I think Swift [TS]

00:54:18   has nailed the relevance side of things [TS]

00:54:20   with the iOS and a platform development [TS]

00:54:23   side of the story were you know maybe [TS]

00:54:27   not Marco but their new most people are [TS]

00:54:29   pushing the Swift very quickly and [TS]

00:54:31   seemed very happy using actually i [TS]

00:54:33   started using it today [TS]

00:54:34   okay good call i switch today in honor [TS]

00:54:37   of this interview and I wrote my first [TS]

00:54:39   Swift today in an entire extension and [TS]

00:54:42   overcast report was written Swift Wow a [TS]

00:54:45   fantastic you go up proud of you is it [TS]

00:54:47   is a good day [TS]

00:54:48   yeah and more and more will be coming [TS]

00:54:50   although there's a lot of jealousy there [TS]

00:54:53   so i probably long way away from being [TS]

00:54:55   all Swift yeah well that's that's okay [TS]

00:54:58   sweetie loves objective-c exactly the [TS]

00:55:01   way i look at it is that the first steps [TS]

00:55:03   with world domination is getting to [TS]

00:55:05   relevance and 24 language gets relevance [TS]

00:55:08   that needs a killer app killer app right [TS]

00:55:10   needs a reason why people would want to [TS]

00:55:12   use it and for swift that's clearly iOS [TS]

00:55:14   and mac and other Apple platform [TS]

00:55:16   development it seconds be open source [TS]

00:55:19   third it needs to go beyond right and [TS]

00:55:24   then the next the next step the frontier [TS]

00:55:27   where it makes sense to expand out to or [TS]

00:55:28   if you're no real time strategy game [TS]

00:55:31   player the the natural expansion is is a [TS]

00:55:33   a place where the language is where the [TS]

00:55:39   language actually only needs a few [TS]

00:55:41   things added to it to be good and so I [TS]

00:55:44   think switch server development is [TS]

00:55:45   really that next step because for [TS]

00:55:46   development is very similar to app [TS]

00:55:48   development in terms of the kinds of [TS]

00:55:49   code that you need to write it's very [TS]

00:55:51   similar terms of many of the frameworks [TS]

00:55:53   the major missing piece is that it needs [TS]

00:55:57   to run on linux and other pertinent [TS]

00:55:59   server development platforms in and [TS]

00:56:02   there's then the whole library ecosystem [TS]

00:56:05   that needs to be built out [TS]

00:56:06   and so I think that we're in right now [TS]

00:56:07   is we're in a really exciting phase [TS]

00:56:09   where those platforms are being built [TS]

00:56:12   those frameworks and different pieces of [TS]

00:56:15   infrastructure coming together and [TS]

00:56:17   that's that's really the idea behind [TS]

00:56:18   this with server working group that's an [TS]

00:56:21   official part of Swift org is getting [TS]

00:56:22   all the people working in the space to [TS]

00:56:24   talk to each other and i'm very excited [TS]

00:56:26   about that i'm going beyond that though [TS]

00:56:29   you know it with the goal of being more [TS]

00:56:32   relevant than Java for example if we're [TS]

00:56:34   going to pick on java is the dream of [TS]

00:56:38   Swift is to scale the way from scripting [TS]

00:56:41   language all the way down to low level [TS]

00:56:43   systems programming like you could write [TS]

00:56:45   a colonel in it or you write some [TS]

00:56:47   firmware on it and i think the [TS]

00:56:49   descripton side of it is maybe more [TS]

00:56:51   straightforward when when this the [TS]

00:56:54   community and the core team have time to [TS]

00:56:57   deal with it because they're talking [TS]

00:56:58   about in integrating regular expressions [TS]

00:57:02   integrating multi-line string literals [TS]

00:57:04   and integrating other other features [TS]

00:57:05   like that that people love from [TS]

00:57:07   scripting languages and those are big [TS]

00:57:10   projects but those are kind of well [TS]

00:57:13   known i guess and they will fit and drop [TS]

00:57:15   right into the existing existing system [TS]

00:57:19   the Swift provides systems programming [TS]

00:57:22   is I think the big the big next frontier [TS]

00:57:25   and I think that's where Swift can [TS]

00:57:27   really distinguish itself from java or [TS]

00:57:29   other other competitive languages [TS]

00:57:32   because among other widely used [TS]

00:57:35   languages out there there's really [TS]

00:57:36   nothing that can unseat see your C++ [TS]

00:57:38   there's rust for example is an [TS]

00:57:42   interesting language but hasn't got a [TS]

00:57:43   lot of adoption yet and I think the [TS]

00:57:46   Swift is more interesting than rust and [TS]

00:57:48   some of the high-level application [TS]

00:57:50   demands but we'll see rust is a great [TS]

00:57:53   language as well and so I'm really [TS]

00:57:56   interested to see the swift for systems [TS]

00:57:59   programming work get going and I think [TS]

00:58:02   that would be a couple years out before [TS]

00:58:04   it really comes together but once it [TS]

00:58:05   does i think the Swift can be really be [TS]

00:58:09   the next big thing and I'm excited about [TS]

00:58:11   that [TS]

00:58:11   so just a second back a second to the [TS]

00:58:14   server role of it you know possibly [TS]

00:58:16   taking over there like you know that i [TS]

00:58:18   would love like you know Here I am using [TS]

00:58:19   PHP and just see these these two [TS]

00:58:22   languages that are fairly old and I mean [TS]

00:58:24   PHP is way more hated than Jesse he but [TS]

00:58:27   but you know this is the two languages i [TS]

00:58:29   use for various historical and practical [TS]

00:58:32   reasons it on the server a lot of what [TS]

00:58:35   what makes a language succeed or fail on [TS]

00:58:39   servers and web development is not [TS]

00:58:41   necessarily how good of a language it is [TS]

00:58:43   but how how healthy and universal and [TS]

00:58:48   develop the framework surrounded r44 [TS]

00:58:50   things like web development how [TS]

00:58:52   practical and easy it is to deploy and [TS]

00:58:54   run on servers so you know Swiss being a [TS]

00:58:58   being its own good language that alone I [TS]

00:59:02   don't think is enough to get it to get [TS]

00:59:04   traction on the server do like do you [TS]

00:59:06   think is it necessary for the Swift team [TS]

00:59:10   like the the core group who's running [TS]

00:59:13   Swift whether that's Apple or the [TS]

00:59:15   community of contributors with apple or [TS]

00:59:17   whatever else is important for them to [TS]

00:59:20   develop and and kind of make official an [TS]

00:59:23   official set of server and web [TS]

00:59:25   frameworks and libraries and tools or do [TS]

00:59:29   you think it's sufficient to take the [TS]

00:59:31   risk to let the community do that but at [TS]

00:59:33   the risk of fragmentation and maybe [TS]

00:59:35   nothing ever taking off also less [TS]

00:59:38   interesting question and keep in mind [TS]

00:59:40   that i don't have a lot of practical [TS]

00:59:42   experience building server apps so this [TS]

00:59:44   is not missing much [TS]

00:59:45   my my my my opinion based on talking to [TS]

00:59:49   other smart people so the approach this [TS]

00:59:52   with projects taking is looking to [TS]

00:59:54   standardize what's colloquially but not [TS]

00:59:57   correctly known as a server foundation [TS]

00:59:57   correctly known as a server foundation [TS]

01:00:00   kind of technologies so it will not be [TS]

01:00:02   named for foundation but that kind of an [TS]

01:00:05   idea and so take the encryption the [TS]

01:00:07   network transport the HTTP kinds of [TS]

01:00:09   things that that everybody needs for [TS]

01:00:12   server technologies and standardized [TS]

01:00:14   that as part of this project but at [TS]

01:00:16   least in the short term not look to [TS]

01:00:18   standardize a specific web framework [TS]

01:00:20   because they're half dozen different [TS]

01:00:21   completely different approaches that are [TS]

01:00:24   interesting different different kinds of [TS]

01:00:25   demands and I don't think there's a [TS]

01:00:28   clear winner yet it's possible that [TS]

01:00:30   after the first few rounds shake out [TS]

01:00:32   there will be an equivalent you know [TS]

01:00:35   ruby-on-rails kind of dominant pattern [TS]

01:00:37   and a framework that emerges and if so [TS]

01:00:41   then maybe that would make sense but I [TS]

01:00:43   don't think it don't think Swift needs [TS]

01:00:45   for there to be a winner the high level [TS]

01:00:47   as far as what can the Swift core [TS]

01:00:51   language and language and compiler folks [TS]

01:00:54   do about this [TS]

01:00:55   I think there's really two things one of [TS]

01:00:57   which is this what package manager I [TS]

01:00:59   think the package manager is really key [TS]

01:01:01   to scaling out the ecosystem and getting [TS]

01:01:04   people to work together with the common [TS]

01:01:08   ecosystem it's also the best and i think [TS]

01:01:11   only way to build swift code on linux [TS]

01:01:12   and out and other platforms they don't [TS]

01:01:15   mean to single out linux it's just it's [TS]

01:01:17   the biggest server development one so i [TS]

01:01:21   think that's a big piece i think the [TS]

01:01:22   other piece that there will be really [TS]

01:01:24   amazing is when the concurrency model [TS]

01:01:26   comes up because i think that's one of [TS]

01:01:27   the reasons that makes go particularly [TS]

01:01:30   compelling for server development is [TS]

01:01:32   that has really well developed story [TS]

01:01:34   there along with all the libraries to go [TS]

01:01:36   together for server and cloud [TS]

01:01:37   development and so when the pieces the [TS]

01:01:40   concurrency model's start coming up [TS]

01:01:41   which will probably the first pieces [TS]

01:01:43   will ship in Swift five is my guess that [TS]

01:01:46   will make swift and even more compelling [TS]

01:01:48   can answer for that kind of space but i [TS]

01:01:52   don't think i don't think we need a [TS]

01:01:54   server language feature and that's what [TS]

01:01:56   you're asking [TS]

01:01:57   so going to the other extreme from the [TS]

01:02:00   server-side scripting to gain back the [TS]

01:02:03   systems programming one thing I've seen [TS]

01:02:05   related to this and and i think this all [TS]

01:02:08   stems from [TS]

01:02:09   with this quote from the original apple [TS]

01:02:11   Swift book that Swift was designed to [TS]

01:02:13   scale from hello world to an entire [TS]

01:02:15   operating system like that that it's the [TS]

01:02:17   world domination plan was there from the [TS]

01:02:18   beginning right yep you know absolutely [TS]

01:02:20   in the first paragraph of the thing when [TS]

01:02:23   I talk to people now about swift as a [TS]

01:02:27   systems language often wanna hear is [TS]

01:02:30   people relating the ways that is not [TS]

01:02:34   ready to be a systems language yet which [TS]

01:02:36   is you know what you just talked about [TS]

01:02:37   but then deciding based on that that [TS]

01:02:40   because it's not ready to be a systems [TS]

01:02:42   language now it never will and then they [TS]

01:02:44   dismiss it like other words like that [TS]

01:02:46   may have been the plan but clearly were [TS]

01:02:50   reasons x y&z I you still have to you [TS]

01:02:52   see for this therefore Swift is just a [TS]

01:02:54   way to ride my apps for iOS and mac OS [TS]

01:02:57   and how I mean I'm not sure what you can [TS]

01:03:01   do with it but do you think about how [TS]

01:03:04   how to change perception as the language [TS]

01:03:07   its older and its old age now it's up to [TS]

01:03:09   three-point out like this [TS]

01:03:10   it starts at you know that that I nobody [TS]

01:03:12   puts whipped in the corner like that [TS]

01:03:13   that people think they know people think [TS]

01:03:16   they know what Swift is and they say was [TS]

01:03:17   this language it does this thing and [TS]

01:03:19   that your plans for world domination may [TS]

01:03:21   be thwarted by the idea that people are [TS]

01:03:23   pigeonholing language because it's been [TS]

01:03:24   around for a few years and I think they [TS]

01:03:25   know it took that you're onto something [TS]

01:03:27   I think that's real problem i don't [TS]

01:03:29   think systems programming is the place [TS]

01:03:30   where that's a problem yet though [TS]

01:03:31   because if I don't think it's it's [TS]

01:03:34   reasonable for me as a crazy man going [TS]

01:03:37   around saying swift swift will someday [TS]

01:03:39   do systems programming really well you [TS]

01:03:41   should you should remember that I don't [TS]

01:03:43   think that's that's a good way to spend [TS]

01:03:44   time at the moment when it does that [TS]

01:03:47   then the question becomes how do you [TS]

01:03:49   make that make people aware of that and [TS]

01:03:53   how do you get get people to change [TS]

01:03:55   their prior misconception but at that [TS]

01:03:57   point I'm you can a very practical [TS]

01:03:59   look you can do this and this is so [TS]

01:04:00   great and now you get all the advantages [TS]

01:04:02   to see but it's safe then you could [TS]

01:04:04   point to specific reasons why it's [TS]

01:04:06   better so I'm not too worried about it [TS]

01:04:10   in the in the space of systems [TS]

01:04:11   programming but i think there is a [TS]

01:04:12   practical from today which is Swift is [TS]

01:04:16   open-source the Apple development [TS]

01:04:19   community knows what very well but [TS]

01:04:22   much everybody else doesn't right and if [TS]

01:04:25   you go to a random save the next [TS]

01:04:30   developer just to continue talking about [TS]

01:04:32   linux they all perceived Swift as being [TS]

01:04:35   an apple thing and only relevant to [TS]

01:04:37   apple platforms and they don't even [TS]

01:04:39   learn about it right and so I think that [TS]

01:04:42   there is an interesting challenge there [TS]

01:04:45   and probably the best way to do that is [TS]

01:04:47   for deep existing communities to keep [TS]

01:04:51   just growing and as this switch on [TS]

01:04:54   server community grows and more and more [TS]

01:04:56   people are successful building and [TS]

01:04:58   deploying server after and Swift i hope [TS]

01:05:01   that naturally more people will become [TS]

01:05:02   aware of that effort will will then find [TS]

01:05:06   out about Swift maybe try it out find [TS]

01:05:09   out that it's actually really great and [TS]

01:05:10   if it's not really great let us know so [TS]

01:05:12   that people can fix whatever the [TS]

01:05:14   problems are and then just kind of grow [TS]

01:05:16   out but i'm i'm actually perfectly okay [TS]

01:05:19   with the growing a little bit slower [TS]

01:05:20   than it has been so John asked about you [TS]

01:05:24   know the span between basically [TS]

01:05:26   low-level systems programming and [TS]

01:05:27   high-level applications programming i'm [TS]

01:05:29   also curious that it seems like 15 / [TS]

01:05:32   Apple have have presented Swift as not [TS]

01:05:35   only spanning that wide range which [TS]

01:05:37   seems impossible but also spanning a [TS]

01:05:40   wide range of skill levels of programmer [TS]

01:05:42   so you know there's there's the Swift [TS]

01:05:44   playgrounds up an ipad where you have [TS]

01:05:45   total novices writing Swift as their [TS]

01:05:47   first language all the way up to people [TS]

01:05:50   writing like you know systems-level [TS]

01:05:51   things and and complicated apps you were [TS]

01:05:54   very experienced programmers it do you [TS]

01:05:56   think is even is it possible for [TS]

01:05:59   language to do all of these things well [TS]

01:06:01   and if so do you think Swift has [TS]

01:06:04   achieved that so I do think it's [TS]

01:06:07   possible i think it has achieved it for [TS]

01:06:10   the things that is doing so far and i [TS]

01:06:12   think the challenges that as new [TS]

01:06:14   capabilities get added that it doesn't [TS]

01:06:16   jeopardize that [TS]

01:06:17   but knowing knowing the the folks [TS]

01:06:19   involved and the source compatibility [TS]

01:06:21   guarantees and everything else like that [TS]

01:06:22   i'm pretty sure that won't be a problem [TS]

01:06:24   going forward [TS]

01:06:25   here's the way I look at swift you'll [TS]

01:06:28   never you're unlikely to run to anybody [TS]

01:06:31   that says Swift is a simple language [TS]

01:06:32   right [TS]

01:06:35   so it is a complicated language it's not [TS]

01:06:36   simple in the sense that scheme is [TS]

01:06:38   simple for example it's also not simple [TS]

01:06:41   in terms of way talk to Jesse developer [TS]

01:06:44   that the law claim that objective c is [TS]

01:06:46   simple ignoring all the sea parts i [TS]

01:06:48   would never claim that for the record [TS]

01:06:50   alright so see itself as it is a very [TS]

01:06:53   complicated weird language is just that [TS]

01:06:55   people don't typically use the weird [TS]

01:06:57   part right and so that perceives he's [TS]

01:07:00   being very simple the so the way the way [TS]

01:07:05   the way i project the Sun Swift is that [TS]

01:07:07   the the secret to Swift and being easy [TS]

01:07:10   to learn easy to use as a teaching [TS]

01:07:13   vehicle but also powerful enough to [TS]

01:07:16   solve the problems that need to be [TS]

01:07:17   solved is that the complexities inherent [TS]

01:07:19   in the language needs to be [TS]

01:07:21   progressively disclosed so imagine that [TS]

01:07:24   someday Swift had inline assembly [TS]

01:07:25   support for example only really low [TS]

01:07:28   level systems people are really bit [TS]

01:07:30   twiddling assembly programmers would use [TS]

01:07:32   this feature everybody else would ignore [TS]

01:07:34   it and it would not increase the [TS]

01:07:35   apparent complexity to language of the [TS]

01:07:37   language to people who didn't know it [TS]

01:07:39   was for feature like that the most [TS]

01:07:40   important thing is to make the syntax [TS]

01:07:42   clear so that when you run up into it [TS]

01:07:45   you discovered about this code you know [TS]

01:07:47   that you don't know what it does right [TS]

01:07:50   and so you say oh that's interesting i [TS]

01:07:52   don't know what that is and then you can [TS]

01:07:54   do a search and find out find [TS]

01:07:56   stackoverflow oracle whatever it is they [TS]

01:07:59   explain what this is to me and then you [TS]

01:08:00   can say okay I get it and either care I [TS]

01:08:02   don't but at that point I'm you can then [TS]

01:08:04   dive in and and learn and learn more [TS]

01:08:07   information [TS]

01:08:07   assembly is never something that a swift [TS]

01:08:10   playgrounds person working through 12 [TS]

01:08:12   code 3 would ever want to know about [TS]

01:08:13   right and and i think that is really the [TS]

01:08:16   this one of the secrets to Swift's [TS]

01:08:19   success in terms of getting people on [TS]

01:08:21   board and and being really approachable [TS]

01:08:23   for people at all levels is that just [TS]

01:08:26   like in Python you can start with just [TS]

01:08:28   print hello world you could do the exact [TS]

01:08:30   same thing and Swift and Swift you don't [TS]

01:08:32   need the / end on the string it's really [TS]

01:08:35   just print hello world and from there [TS]

01:08:38   you can introduce the concepts you can [TS]

01:08:40   grow it out over time and this really [TS]

01:08:41   allows people to [TS]

01:08:43   understand either the syntax language or [TS]

01:08:46   the conceptual programming things that [TS]

01:08:49   they're learning as i go and the design [TS]

01:08:52   of Swift is really geared around that [TS]

01:08:54   and so what that means if you project on [TS]

01:08:56   the systems programming features [TS]

01:08:57   comparing Swift to rest for example I [TS]

01:09:00   think it's very likely that swill get [TS]

01:09:02   features for memory ownership control [TS]

01:09:05   which will allow really really high [TS]

01:09:08   performance allow solving performance [TS]

01:09:10   problems with arc for example but unlike [TS]

01:09:13   rust we can't make that be a core part [TS]

01:09:15   of the type system that everybody has to [TS]

01:09:17   use it has to be something that [TS]

01:09:18   sufficiently smart programmers when [TS]

01:09:21   they're solving a specific performance [TS]

01:09:22   problem and abusing or an embedded [TS]

01:09:26   Colonel programmer might want to use but [TS]

01:09:28   an application developer can completely [TS]

01:09:30   ignore and so that's really the [TS]

01:09:32   challenges its deploying similar type [TS]

01:09:35   system mechanics and other low-level [TS]

01:09:37   language geekery to the problem but do [TS]

01:09:40   so in a way that is tasteful and allows [TS]

01:09:42   most normal people to just completely [TS]

01:09:44   ignore everything you just said [TS]

01:09:46   kind of reminds me of saying I once [TS]

01:09:49   heard that you're free to adopt [TS]

01:09:49   respective you would like which is [TS]

01:09:51   making things easy and make hard things [TS]

01:09:53   possible we sponsor tonight by audible [TS]

01:09:56   with an unmatched election of audiobooks [TS]

01:09:58   original audio shows news comedy and [TS]

01:10:01   more get a free 30-day trial at [TS]

01:10:03   audible.com / ATP if you want to listen [TS]

01:10:07   to it audible has it you can listen to [TS]

01:10:08   audiobooks from virtually every genre [TS]

01:10:10   anytime anywhere you can play audible [TS]

01:10:12   audiobooks on phones tablets computers [TS]

01:10:14   even Kindles and ipods if you still have [TS]

01:10:17   them [TS]

01:10:18   audio books are great for flights long [TS]

01:10:20   road trips or even your daily commute [TS]

01:10:22   you might think you don't have time to [TS]

01:10:23   read books but you'd be surprised how [TS]

01:10:25   many audio books you can hear each year [TS]

01:10:27   even only listen to and from work every [TS]

01:10:29   day that time really adds up [TS]

01:10:31   audiobooks bring books to life many of [TS]

01:10:33   them are read by author's themselves [TS]

01:10:34   which adds an extra dimension to the [TS]

01:10:36   text and with audible you can take risks [TS]

01:10:39   and try new authors without regret [TS]

01:10:41   because audible offers their great [TS]

01:10:43   listen guarantee if you start an [TS]

01:10:45   audiobook and don't like it you can [TS]

01:10:46   exchange it for another one for free so [TS]

01:10:49   check it out for yourself you can see [TS]

01:10:51   and listen when you begin your free [TS]

01:10:53   30-day trial you get your first audio [TS]

01:10:55   book for free and there's [TS]

01:10:56   no stress and obligations you can cancel [TS]

01:10:58   your auto membership at anytime with [TS]

01:11:00   audiobooks and spoken word audio product [TS]

01:11:02   you will find what you're looking for [TS]

01:11:04   get a free 30-day trial by signing up at [TS]

01:11:07   audible.com / ATP that's audible.com / [TS]

01:11:11   ATP thanks to audible for sponsoring our [TS]

01:11:14   show so Chris you brought up just a [TS]

01:11:20   second ago how simple pythons hello [TS]

01:11:22   world is and one of the things I've [TS]

01:11:25   wondered about Swift is it seems to some [TS]

01:11:28   degree like it's kind of what we call it [TS]

01:11:31   the Rorschach test of languages in that [TS]

01:11:33   I came to Swift a sort of its kind of [TS]

01:11:36   the objective-c but but my day job with [TS]

01:11:39   it was a c-sharp guy and I see to my [TS]

01:11:41   eyes anyway and i hope you don't find it [TS]

01:11:43   insulting but I feel a lot of C sharp i [TS]

01:11:45   see a lot of C sharp and Swift and I've [TS]

01:11:47   heard javascript people again I hope [TS]

01:11:48   that's insulting say oh I see some [TS]

01:11:50   javascript in here and I presume that [TS]

01:11:52   John could say that that he sees pearl [TS]

01:11:54   and I presume Marco could say that he [TS]

01:11:55   sees PHP in it but hopefully that's not [TS]

01:11:57   an icy go and I don't see any PHP didn't [TS]

01:12:00   know you get what I'm driving at though [TS]

01:12:02   and so so i guess what i'm asking chris [TS]

01:12:05   is obviously there's a huge objective-c [TS]

01:12:07   influence and Swift but was there anyone [TS]

01:12:10   or maybe just a couple of other [TS]

01:12:11   languages that you feel really really [TS]

01:12:13   inspired swiftor do you really think [TS]

01:12:15   it's that it's the melting pot language [TS]

01:12:17   that one would always hope to create my [TS]

01:12:20   finger really is a melting pot because [TS]

01:12:21   we weren't so the goal Swift isn't 28 [TS]

01:12:25   some other language is to just be great [TS]

01:12:28   right right and so you can take I think [TS]

01:12:31   that Swift looks or I and the other [TS]

01:12:34   people in the core team the other people [TS]

01:12:35   working working on swift have looked at [TS]

01:12:38   many many other languages and if you're [TS]

01:12:40   asking nerd there's tons of Pascal [TS]

01:12:42   concepts built-in protocols really are [TS]

01:12:45   just like very similar Haskell cons [TS]

01:12:47   constructor for example it's really [TS]

01:12:51   about taking the best ideas from where [TS]

01:12:53   we can get and assembling them together [TS]

01:12:55   and one of the major goals Swift is for [TS]

01:12:57   to be familiar feeling right because [TS]

01:13:00   it's familiar with familiar feeling that [TS]

01:13:02   makes it easier for people to pick up [TS]

01:13:04   and they're not fighting [TS]

01:13:06   unnecessary barriers to just get in the [TS]

01:13:09   way of adoption and so it being familiar [TS]

01:13:11   is actually success in that way and this [TS]

01:13:15   is not it is not a result of Swift [TS]

01:13:18   trying to be go or C sharp or whatever [TS]

01:13:21   it's about taking the best ideas from [TS]

01:13:23   them and assembling them together and I [TS]

01:13:25   think that you could probably pick a [TS]

01:13:27   language and there's some some good idea [TS]

01:13:29   that came from them including you know d [TS]

01:13:32   or dark or go or whatever I mean Swift [TS]

01:13:36   does really draw from many many [TS]

01:13:38   different sources and it's really hard [TS]

01:13:40   to to really small out so the question [TS]

01:13:45   that Casey wrote for me to ask you right [TS]

01:13:47   now LOL how do you know that was me [TS]

01:13:50   that's definitely you is why should I [TS]

01:13:53   give a shit about Swift right now and i [TS]

01:13:55   think im gonna modify the selected that [TS]

01:13:58   was written it was written for you my [TS]

01:14:00   friend but yes that is how I you right i [TS]

01:14:02   figured it's not quite on style [TS]

01:14:04   no butBut I I you know as as somebody [TS]

01:14:07   who is just dipping a toe and Swift you [TS]

01:14:10   know as of 12 hours ago you know it has [TS]

01:14:13   waited this long you know just to see [TS]

01:14:15   faithful / hold out / lazy people who [TS]

01:14:18   don't learn new things very quickly [TS]

01:14:20   what's kinda like the sales pitch for [TS]

01:14:21   for adopting swift now I'm I guess two [TS]

01:14:26   different answers 1 which is you don't [TS]

01:14:28   have to stop Swift right and I don't [TS]

01:14:30   think objective-c is going to go away [TS]

01:14:31   anytime soon [TS]

01:14:32   Apple sports c and c++ and it doesn't [TS]

01:14:35   have any specific data there's no [TS]

01:14:38   obvious benefit of dropping objective-c [TS]

01:14:39   as well as obviously they have a ton of [TS]

01:14:42   objective-c code themselves so I i don't [TS]

01:14:44   think that there's any reason you have [TS]

01:14:47   to adopt swift swift just tries to be a [TS]

01:14:50   better answer so that you'll want to [TS]

01:14:52   adopt it and in terms of Y Swift in its [TS]

01:14:57   name kind of his connotes a whole bunch [TS]

01:14:59   of different things including [TS]

01:15:00   performance but really to me the most [TS]

01:15:03   important aspect of it is programmer [TS]

01:15:04   productivity right the the idea that [TS]

01:15:06   Swift is really optimizing for is not [TS]

01:15:08   letting you pound out the code as fast [TS]

01:15:10   as possible [TS]

01:15:11   it really is designed and optimized for [TS]

01:15:14   as a programmer you can spend the least [TS]

01:15:16   amount of time to get to a working [TS]

01:15:18   program [TS]

01:15:19   as fast as possible right and so getting [TS]

01:15:22   to working program includes the time it [TS]

01:15:23   takes to debug something includes the [TS]

01:15:25   time it takes to iterate and develop and [TS]

01:15:28   fight the type system and all the other [TS]

01:15:29   things that you have to do but that time [TS]

01:15:33   you spend having to fight the type [TS]

01:15:35   system or figure out optionals or things [TS]

01:15:37   like that pays itself back because your [TS]

01:15:39   program works more often and so you're [TS]

01:15:41   actually not spending time chasing down [TS]

01:15:43   dangling pointer bugs or you know and in [TS]

01:15:47   the case of objective-c you get an [TS]

01:15:49   unrecognized selector air you know [TS]

01:15:51   whatever whatever those kinds of bugs [TS]

01:15:53   are and swift rise to help you by the [TS]

01:15:56   language guiding you and helping design [TS]

01:15:58   things so it also has a lot of things [TS]

01:16:00   that just make common things easier [TS]

01:16:02   so you can switch on a string for [TS]

01:16:04   example and then match the different [TS]

01:16:05   cases you can use enums which are a [TS]

01:16:08   super genomes or just from the language [TS]

01:16:12   geekery world is just algebraic data [TS]

01:16:13   types there are tons of different [TS]

01:16:15   functional languages [TS]

01:16:16   they're not novel by any means but [TS]

01:16:18   they're so useful and they solve so many [TS]

01:16:21   problems out of the box and just having [TS]

01:16:24   your fingertips is great so there's [TS]

01:16:25   there's a lot of things about Swift and [TS]

01:16:27   probably depends on who you are what [TS]

01:16:29   your experiences are one of the problems [TS]

01:16:31   I've seen with people moving from [TS]

01:16:32   objective-c Swift initially is that they [TS]

01:16:34   tend to write swiftcode just like they [TS]

01:16:36   wrote objective-c and while that's a [TS]

01:16:38   really good way to make a migraine [TS]

01:16:41   application / or to get familiar Swift [TS]

01:16:43   it really means that you're missing a [TS]

01:16:45   lot of the value and Swift and and I [TS]

01:16:48   think that that's okay it's just it [TS]

01:16:50   means that you know an objective secret [TS]

01:16:52   and we're going to swift first starts [TS]

01:16:54   out by saying I don't see what the big [TS]

01:16:55   deal is [TS]

01:16:56   and only after they spend some time and [TS]

01:16:58   do they start to realize that they are [TS]

01:17:00   more productive they do feel better they [TS]

01:17:02   reach for things that they otherwise [TS]

01:17:04   wouldn't have and I think it's really [TS]

01:17:07   interesting to talk to people that have [TS]

01:17:09   done for example your Swift programming [TS]

01:17:10   but then have to go back to objective-c [TS]

01:17:12   and to me that's all been there that [TS]

01:17:14   that's the really interesting and so it [TS]

01:17:16   was your experience it felt absolutely [TS]

01:17:19   archaic in a granted on and I like to [TS]

01:17:22   think of myself as a nice guy and so I'd [TS]

01:17:23   probably say something like that even if [TS]

01:17:24   it wasn't true but the reality situation [TS]

01:17:26   is it felt just so old it just felt old [TS]

01:17:31   and I don't know [TS]

01:17:32   i wish i could quantify that better but [TS]

01:17:35   it just felt like I was back in time in [TS]

01:17:38   a way that didn't feel good in something [TS]

01:17:40   like in some ways it was kind of nice so [TS]

01:17:42   I i do like optionals I understand why [TS]

01:17:46   their thing I i I'm all in on it but at [TS]

01:17:50   the same time there are times when I [TS]

01:17:51   have to do a guard ladder whatever the [TS]

01:17:52   case may be that a real right that I [TS]

01:17:53   really would just like to move on with [TS]

01:17:55   my life and so not having to worry just [TS]

01:17:58   being being able to be a little more [TS]

01:18:00   cavalier was kind of nice but the [TS]

01:18:03   reality of the situation is as usual as [TS]

01:18:04   you said earlier is that that's a [TS]

01:18:06   potential hazard down the road and and [TS]

01:18:08   that's why i like the way that that you [TS]

01:18:10   and the team of have set up the type [TS]

01:18:12   system and Swift but gosh going back to [TS]

01:18:14   objective-c is so frustrating for me [TS]

01:18:17   because it just feels like I'm going [TS]

01:18:18   back in time like I'm going backwards [TS]

01:18:21   yeah and i think that the challenge [TS]

01:18:23   that's what faces because this focus is [TS]

01:18:25   on building you know programs that work [TS]

01:18:28   and that can be maintained and all the [TS]

01:18:30   other things that we care about for [TS]

01:18:32   large-scale software it's maybe not the [TS]

01:18:35   best solution for I want to pound out a [TS]

01:18:38   quick script use it once and then throw [TS]

01:18:41   it away right because in that case you [TS]

01:18:43   don't care about maintenance you you can [TS]

01:18:45   fit all the code in your head you don't [TS]

01:18:46   care about good occupation of the other [TS]

01:18:49   things that Swift encourages and that's [TS]

01:18:52   that's the case we're having a dynamic [TS]

01:18:54   type system can be really really [TS]

01:18:55   liberating and so you know maybe that [TS]

01:18:59   will be a challenge for some people but [TS]

01:19:01   i think that as with games ecosystem [TS]

01:19:03   against libraries its other advantages [TS]

01:19:06   will be so great that hopefully it will [TS]

01:19:09   be a good solution for those kinds of [TS]

01:19:11   tools as well good those kinds of [TS]

01:19:12   scripts as well so I'm a minute ago you [TS]

01:19:15   mentioned how gypsy programmers people [TS]

01:19:17   like me who are new to Swift tend to [TS]

01:19:20   write Swift like objective-c and and [TS]

01:19:23   that's that's concerned I've had it it's [TS]

01:19:24   one of the reasons that i have [TS]

01:19:26   procrastinated adopting Swift up till [TS]

01:19:28   now because I have a have a pretty good [TS]

01:19:32   grasp of objective-c now and I i right [TS]

01:19:36   objective-c code that i know is [TS]

01:19:38   basically idiomatic and and soundly [TS]

01:19:42   designed like I write code [TS]

01:19:44   in the style of what I think apples code [TS]

01:19:46   would look like based on the little bit [TS]

01:19:47   of you know headers that we see I feel [TS]

01:19:50   like I right good to see code that is [TS]

01:19:51   kind of correct and an idiomatic leave [TS]

01:19:53   sound with Swift you know III assumed [TS]

01:19:56   that the the idioms would not yet be [TS]

01:19:59   developed for a while and an established [TS]

01:20:01   for a while and so I didn't want to [TS]

01:20:03   write a bunch of bad swiftcode it or or [TS]

01:20:06   like incorrect or or weird swiftcode you [TS]

01:20:10   know investing heavily in it so early on [TS]

01:20:13   do you think that it's at a point now [TS]

01:20:14   where the idioms are starting to get [TS]

01:20:17   worked out enough that's less of a [TS]

01:20:19   concern now [TS]

01:20:20   yeah I do I'm so I think it's definitely [TS]

01:20:23   fair to say that in the script one this [TS]

01:20:25   with two timeframes Swift as language [TS]

01:20:28   was changing really rapidly and I could [TS]

01:20:31   see why you'd feel like you're on uneven [TS]

01:20:32   footing and not really sure what the [TS]

01:20:34   language is much less what the idioms [TS]

01:20:35   are Swift three really is quite well [TS]

01:20:39   baked out and so I expect going forward [TS]

01:20:41   the the new things are going to be [TS]

01:20:42   additive they're not going to be [TS]

01:20:43   changing the existing patterns and so I [TS]

01:20:46   think this with community in general is [TS]

01:20:48   gone through the same same kind of thing [TS]

01:20:50   that you're feeling there where it's not [TS]

01:20:52   really clear the one right way to solve [TS]

01:20:55   the problem and maybe there are [TS]

01:20:56   different good ways to do it with [TS]

01:20:58   different trade-offs won't clear to [TS]

01:21:00   people but I think that's I think people [TS]

01:21:02   are starting to understand that no there [TS]

01:21:04   are a few style books that are being [TS]

01:21:06   written by people that I've heard about [TS]

01:21:07   and so when those come out those will [TS]

01:21:09   hopefully be good and those will be a [TS]

01:21:11   good resource but another thing to keep [TS]

01:21:15   in mind is the Swift is opinionated I [TS]

01:21:18   guess that it is the way to say so it [TS]

01:21:21   really does encourage you to do the [TS]

01:21:22   right thing where where it can and so [TS]

01:21:24   I'm for example if you use bar for [TS]

01:21:27   everything [TS]

01:21:28   the this with compiler will say hey you [TS]

01:21:31   mark this is a bar but it could be a let [TS]

01:21:34   and that's just it subtle way of and and [TS]

01:21:37   let me fix it for you right and that's [TS]

01:21:38   just it subtle way of encouraging you to [TS]

01:21:40   use and mutable values which is a very [TS]

01:21:43   small Clinton but it's just kind of [TS]

01:21:45   pushing you in the way that it it thanks [TS]

01:21:48   leads to better code and immutability [TS]

01:21:50   for local variable doesn't matter that [TS]

01:21:52   much accepted to communicate something [TS]

01:21:54   more to the person us to read maintain [TS]

01:21:56   your code [TS]

01:21:57   and and so I think this really does kind [TS]

01:22:00   of encourage you down the right lines in [TS]

01:22:02   some ways but on the other hand and [TS]

01:22:04   other places where you're saying hey [TS]

01:22:06   should only be a class should be a [TS]

01:22:07   struct the train out some more nuanced [TS]

01:22:09   and it's it's a hard thing in the Swift [TS]

01:22:11   compiler can't just know what your [TS]

01:22:12   problem is solved and so it can help you [TS]

01:22:15   with that you mentioned Swift style [TS]

01:22:18   guides before as as a creator of a [TS]

01:22:22   language how how much influence do you [TS]

01:22:26   do you feel like you want to have over [TS]

01:22:28   things like style things that really are [TS]

01:22:31   you know it's not it's not features it's [TS]

01:22:34   not technically it's just like you know [TS]

01:22:36   what you will know different style [TS]

01:22:38   things like oh you know I usually have [TS]

01:22:40   one exit at the bottom or you should [TS]

01:22:41   exit early or I mean like there are [TS]

01:22:43   things you can do even things like [TS]

01:22:46   spacing embraced out for crying out loud [TS]

01:22:48   or you know just the sort of idioms of [TS]

01:22:50   like this little three-line sequences [TS]

01:22:52   how you do this transformation on this [TS]

01:22:53   data structure you mentioned you know [TS]

01:22:56   language features can influence that's [TS]

01:22:58   obviously as language designer and [TS]

01:22:59   participate in that process you can [TS]

01:23:00   effectively guide the community [TS]

01:23:04   style-wise in one direction or another [TS]

01:23:06   but eventually you come to the stuff [TS]

01:23:08   that's just plain opinion and style and [TS]

01:23:11   several other languages have had fairly [TS]

01:23:14   concrete styles set forth early on by [TS]

01:23:17   the creators we're going to go like an [TS]

01:23:19   RC style type things [TS]

01:23:21   how much do you care about being able to [TS]

01:23:24   influence the i guess the personal [TS]

01:23:26   preference or the aesthetic portions of [TS]

01:23:30   style that are outside the things that [TS]

01:23:32   you can influence as part of language [TS]

01:23:33   design so as with any programmer the has [TS]

01:23:38   a pulse [TS]

01:23:39   I have my preferred style and so clearly [TS]

01:23:43   that's the right way [TS]

01:23:44   naturally naturally well so i guess more [TS]

01:23:48   seriously the land yourself does [TS]

01:23:49   influence some of the things you [TS]

01:23:51   mentioned so for example it's my [TS]

01:23:53   personal opinion that this style where [TS]

01:23:56   you have a single entry single exit from [TS]

01:23:58   every function i think that leads to [TS]

01:23:59   really difficult to maintain and read [TS]

01:24:01   code and that's one of the things that [TS]

01:24:03   led to the guard statement existing the [TS]

01:24:05   guard really does encourage you to use [TS]

01:24:07   early exit so you handle the exceptional [TS]

01:24:09   cases and they don't have to [TS]

01:24:10   worried about them so that's that's an [TS]

01:24:12   example of where the language design is [TS]

01:24:14   kind of encouraging you to you know have [TS]

01:24:17   multiple returns from a function other [TS]

01:24:20   more subjective things like the number [TS]

01:24:21   of spaces i personally I'm a fan of to [TS]

01:24:24   space in dense i know some people are [TS]

01:24:25   staunchly for other people are staunchly [TS]

01:24:28   ate some people think 80 columns is [TS]

01:24:29   right answer right i mean all these [TS]

01:24:31   things are there are actually really [TS]

01:24:33   good arguments on all sides [TS]

01:24:35   some people argue that you should use [TS]

01:24:37   three space and then because then you [TS]

01:24:38   certainly can't have tabs in your file [TS]

01:24:40   wow so this is where this it comes down [TS]

01:24:45   to you have to pick your battles print [TS]

01:24:47   and people will disagree for a long time [TS]

01:24:50   and you can make arguments on both sides [TS]

01:24:52   but the inn where we've come down is [TS]

01:24:56   that it's just more practical to let [TS]

01:24:58   people write code they like to look at [TS]

01:25:00   and that comes at a cost of if you [TS]

01:25:02   switch between teams or you pick up [TS]

01:25:04   somebody else's package then maybe it's [TS]

01:25:05   indented the wrong way but I don't think [TS]

01:25:08   that really actually actively hurts the [TS]

01:25:11   comprehensive comprehensibility of the [TS]

01:25:13   code that's merely annoying and having [TS]

01:25:17   something like go format which [TS]

01:25:19   rigorously enforces the one true way I [TS]

01:25:21   think would have been nice [TS]

01:25:23   it just wasn't a priority early on and [TS]

01:25:25   it also just wasn't a battle that we [TS]

01:25:26   were willing to tackle and I don't know [TS]

01:25:29   we'll see that I think this is still [TS]

01:25:30   also an open question in terms of what [TS]

01:25:33   other tool and gets built and what other [TS]

01:25:36   things come into the fray because it [TS]

01:25:38   would be great to have better tooling [TS]

01:25:40   around this it just hasn't been built [TS]

01:25:41   out yet and it's a great opportunity for [TS]

01:25:43   open source as well i was thinking about [TS]

01:25:45   it the sort of doomsday scenario where [TS]

01:25:47   like one of these the Swift style guide [TS]

01:25:49   books comes out and like it makes some [TS]

01:25:51   like blanket recommendation that like [TS]

01:25:53   you should you know always use protocols [TS]

01:25:56   for this and you should never use [TS]

01:25:57   glasses for that or whatever and it [TS]

01:25:58   becomes wildly popular accepted as like [TS]

01:26:02   the Bible of how you rights with [TS]

01:26:04   programming and you're just some are [TS]

01:26:05   shaking your head and go no you got it [TS]

01:26:07   all wrong but I guess you know we'll [TS]

01:26:09   cross that bridge when we come to it i [TS]

01:26:11   think at this point you did the language [TS]

01:26:13   design itself and the communities have [TS]

01:26:14   enough influence that's not likely to [TS]

01:26:15   happen but I mean I guess what i was [TS]

01:26:17   getting at is it do you feel like the [TS]

01:26:18   you want to write a switch style got [TS]

01:26:20   like if you had unlimited [TS]

01:26:21   I'm no I don't think that would be a [TS]

01:26:23   good use of my time but if I don't look [TS]

01:26:25   at a time maybe i don't know i started [TS]

01:26:27   stardancer that theoretical question but [TS]

01:26:29   but I also get to your concern about [TS]

01:26:32   somebody came out with a book that was [TS]

01:26:33   so wrong that would cause me to like you [TS]

01:26:36   know be really unhappy actually have a [TS]

01:26:38   ton of faith in the Swift community [TS]

01:26:39   because if something came out that was [TS]

01:26:41   so weird i don't think that the [TS]

01:26:43   community overall would would accept it [TS]

01:26:46   the community is again just kind of [TS]

01:26:49   blown away with how beautiful they are [TS]

01:26:51   and how how many great people have [TS]

01:26:54   gotten involved with Swift and Swift [TS]

01:26:56   evolution side of things and it's been [TS]

01:26:58   really amazing sees people you know they [TS]

01:27:00   they go through their own personal [TS]

01:27:02   trajectory on swift mailing list where [TS]

01:27:06   you know initially they're saying hi I [TS]

01:27:08   had this idea what you think and the [TS]

01:27:11   responses know that's a terrible idea [TS]

01:27:12   for this is a reason but then they come [TS]

01:27:16   back a little okay how about this you [TS]

01:27:18   think about this and it was like oh well [TS]

01:27:19   that's interesting that almost worked [TS]

01:27:20   but it didn't work because of that and [TS]

01:27:22   then they come back and say hey well [TS]

01:27:24   what about this is what we actually [TS]

01:27:25   tried that and we had that for a while [TS]

01:27:27   and then had to back out and change this [TS]

01:27:28   other way because we didn't even think [TS]

01:27:29   about this other thing and then the next [TS]

01:27:31   day they're the ones saying this is the [TS]

01:27:33   way it needs to go and erases you're [TS]

01:27:36   right we should do that and it's it's [TS]

01:27:39   it's really hard for people that have [TS]

01:27:41   been involved in the overall design of [TS]

01:27:44   anything is complicated Swift to be able [TS]

01:27:47   to discern the difference between [TS]

01:27:48   something that is the way it is out of [TS]

01:27:51   an intentional decision process or the [TS]

01:27:54   way it is as an actor an accident of [TS]

01:27:56   history and so as now that the design [TS]

01:27:59   processes public i think that it becomes [TS]

01:28:01   a lot easier for people to to tell that [TS]

01:28:03   and it's very easy for people to kind of [TS]

01:28:07   understand the difference [TS]

01:28:10   the one big debate that i haven't [TS]

01:28:12   actually seen is why is the funky word [TS]

01:28:14   the funky word and that's one that [TS]

01:28:16   luckily were now beyond this with three [TS]

01:28:18   source compatibility threshold so we [TS]

01:28:21   just can't have that discussion anymore [TS]

01:28:23   i think i'll be darned [TS]

01:28:25   but one of the best things of this world [TS]

01:28:27   open source thing or what [TS]

01:28:29   the whole evolution process has that [TS]

01:28:31   like the list of questions like the [TS]

01:28:33   Aston answers questions like this is a [TS]

01:28:35   commonly asked question we've dealt with [TS]

01:28:36   it before and you're probably gonna want [TS]

01:28:38   to ask it to here's here's about how it [TS]

01:28:39   was asked before and here's what the [TS]

01:28:41   answer is not that everybody's gonna go [TS]

01:28:43   and see that but i love that exists [TS]

01:28:45   well then it's also hilarious that [TS]

01:28:46   started out as the commonly proposed [TS]

01:28:48   list and then at some point it became [TS]

01:28:50   the commonly rejected list [TS]

01:28:52   yeah right because it because if it's [TS]

01:28:54   commonly proposed obviously it's not [TS]

01:28:55   getting through and so you have to go to [TS]

01:28:57   be rejected list that you're thinking [TS]

01:28:58   about asking to change funk to FN you [TS]

01:29:01   know well my I know you talked about [TS]

01:29:03   this before but it is well worth [TS]

01:29:05   touching it again because many people [TS]

01:29:07   have asked me to ask you this [TS]

01:29:11   swift and a rough style memory model you [TS]

01:29:14   you phrased it before as an add-on [TS]

01:29:17   feature for people who know that they [TS]

01:29:20   need that type of thing but that it [TS]

01:29:22   would not like the Swift wouldn't become [TS]

01:29:24   a language in which all memories manage [TS]

01:29:25   that way instead this would be a [TS]

01:29:26   special-purpose feature for particular [TS]

01:29:29   roles what what roles do you think it's [TS]

01:29:33   suited for and why why is it not the [TS]

01:29:36   great memory model for all Swift well so [TS]

01:29:39   here's here's the way I look at swift in [TS]

01:29:42   terms of memory management today so [TS]

01:29:43   Swift is using our it's not using GC if [TS]

01:29:46   you want to talk about the trailer i was [TS]

01:29:48   happy to do that thats its own well we [TS]

01:29:50   can fall into arc i think is overall [TS]

01:29:54   amazing default for swift because it [TS]

01:29:56   gives you deterministic destruction it [TS]

01:29:58   gives you a relatively predictable [TS]

01:30:00   performance and the ark optimizers able [TS]

01:30:03   to eliminate most of the reference [TS]

01:30:06   counting operations that happen [TS]

01:30:08   the problem that I see with with our at [TS]

01:30:11   as of today or states with three is that [TS]

01:30:15   it is not a very controllable model and [TS]

01:30:19   so if for example you have an inner loop [TS]

01:30:22   and it turns out the ark optimizers [TS]

01:30:24   doing a bunch of retains releases and [TS]

01:30:26   you know that they're not necessary [TS]

01:30:28   because you know the objects are alive [TS]

01:30:30   there's nothing you can really do to to [TS]

01:30:33   solve that problem unless you're willing [TS]

01:30:35   to drop down to something like the [TS]

01:30:37   unsafe operation Swift gives you for [TS]

01:30:39   manipulating references objects the [TS]

01:30:41   and so it's really kind of satisfying me [TS]

01:30:44   to have a really safe great memory model [TS]

01:30:47   that for performance reasons you have to [TS]

01:30:48   drop down to unsafety right this is a [TS]

01:30:51   huge cliff and is that also a huge [TS]

01:30:53   complexity cliff that you have to drop [TS]

01:30:55   into just solve that problem and that's [TS]

01:30:58   not really great so the promise the [TS]

01:31:01   dream is to instead say hey well if you [TS]

01:31:03   are a sufficiently advanced programmer [TS]

01:31:05   and you know how this stuff works well [TS]

01:31:07   what the we can give you options instead [TS]

01:31:09   of dropping down to unsafe constructs [TS]

01:31:12   you can actually just use more static [TS]

01:31:14   type information in annotations in your [TS]

01:31:17   code and so you add a few annotations [TS]

01:31:19   say compiler this is ok the compiler can [TS]

01:31:22   validate those type annotations and [TS]

01:31:25   check to make sure they're correct so [TS]

01:31:26   still memory see if it's still [TS]

01:31:27   guaranteed to be okay but you're paying [TS]

01:31:30   for it in terms of more of this [TS]

01:31:31   annotation the code and it's more more [TS]

01:31:34   heavyweight in terms of coding but when [TS]

01:31:37   you get out of that is the guarantee [TS]

01:31:38   that no arc operations are happening [TS]

01:31:40   once you get to that model then it [TS]

01:31:42   becomes really interesting because you [TS]

01:31:43   can say hey well this inner loop i'm [TS]

01:31:45   going i found in my profile that it [TS]

01:31:47   really does matter for performance and [TS]

01:31:49   the ark optimizers doing the wrong thing [TS]

01:31:51   i can add a few local annotations and [TS]

01:31:53   now the code is fast it's guaranteed to [TS]

01:31:55   be fast and the clients of my co don't [TS]

01:31:58   have to know about it right this is an [TS]

01:32:00   implementation detail and I think this [TS]

01:32:01   will really bring us to the best of both [TS]

01:32:03   worlds where you could have memory [TS]

01:32:05   safety you can have a progressively [TS]

01:32:09   disclosed complexity complexities system [TS]

01:32:11   or most people don't have to know about [TS]

01:32:12   or think about it but you can get to [TS]

01:32:14   really low level performance guarantees [TS]

01:32:16   that otherwise are possible and once we [TS]

01:32:19   do this i have a feeling there will be [TS]

01:32:20   certain communities of people that will [TS]

01:32:22   only want to work in this model and [TS]

01:32:24   these are the communities that that like [TS]

01:32:26   rust predominantly so if you're writing [TS]

01:32:29   a kernel for example maybe don't want to [TS]

01:32:30   have a reference count your object at [TS]

01:32:31   all maybe you just want to have you know [TS]

01:32:36   you say I will always use these [TS]

01:32:37   annotations my code pervasively and if [TS]

01:32:40   if that happens then there's a couple of [TS]

01:32:42   options we can investigate and we could [TS]

01:32:43   say hey well if you mark this class with [TS]

01:32:45   some attribute than that get that that [TS]

01:32:48   prevents the compiler from ever doing [TS]

01:32:50   reference counting and if it would ever [TS]

01:32:51   do that it just raises in there [TS]

01:32:53   or we can even theoretically have a [TS]

01:32:55   language dialect modes that hey produce [TS]

01:32:57   produce an heir anytime I did and our [TS]

01:32:59   cooperation [TS]

01:33:00   I don't like language dialects and so [TS]

01:33:02   we'd have to find a way to handle that [TS]

01:33:04   maybe it would be a warning and then [TS]

01:33:06   they would upgrade to an error or [TS]

01:33:08   something like that but I can imagine [TS]

01:33:09   doing something like that and once we do [TS]

01:33:12   that then I think you get to a really [TS]

01:33:13   interesting mode where those systems [TS]

01:33:17   programming type people that otherwise [TS]

01:33:19   would be using seriously + + can i use [TS]

01:33:21   swift and that means they only have to [TS]

01:33:24   learn one language that means that they [TS]

01:33:26   could use the same toolset that you know [TS]

01:33:28   the ID and everything else that works [TS]

01:33:30   great with Swift it means that they can [TS]

01:33:33   scale and use the same language for [TS]

01:33:36   different layers of their stack because [TS]

01:33:38   many applications have very low level [TS]

01:33:41   pieces and very high-level pieces and [TS]

01:33:42   having them written in different [TS]

01:33:44   languages is really kind of gross [TS]

01:33:46   I mean I think we've seen this in the [TS]

01:33:48   objective-c community where one of the [TS]

01:33:50   best and most annoying things about [TS]

01:33:52   objective-c is that it has seen it right [TS]

01:33:54   and so this has been hugely important [TS]

01:33:56   for objective-c and practice because if [TS]

01:33:58   you're into a performance problem with [TS]

01:34:00   obviously message send you can always [TS]

01:34:01   rewrite that algorithm in see that's [TS]

01:34:04   really really really important for [TS]

01:34:06   objective-c being successful and you [TS]

01:34:09   know both in the days of next on 16 [TS]

01:34:11   acres processors but also today for the [TS]

01:34:14   low-level cult code the people are [TS]

01:34:16   writing but also means that that's one [TS]

01:34:19   of the problems that makes it so that [TS]

01:34:20   objective c and c are so tightly [TS]

01:34:22   intertwined and so you can actually take [TS]

01:34:24   the sea parte out of objective-c without [TS]

01:34:26   producing a different language who are [TS]

01:34:28   waiting for swift in the web browser [TS]

01:34:30   because it's your only Escape speaking [TS]

01:34:31   of applications that have to have one [TS]

01:34:32   language at the higher level that i was [TS]

01:34:34   in the lower one that's about then [TS]

01:34:36   well there-there are our that that i [TS]

01:34:38   think is a frontier that is probably the [TS]

01:34:40   biggest payoff because replacing [TS]

01:34:42   javascript would be such an amazing [TS]

01:34:44   service to the world music and art [TS]

01:34:49   before it's been tried [TS]

01:34:51   yeah but it's been tried and that's [TS]

01:34:52   where you know putting my hope on the [TS]

01:34:55   azan jas the web assembly those kinds of [TS]

01:34:57   efforts were its enabling languages like [TS]

01:35:01   Swift and swift swift compiler lv I'm [TS]

01:35:04   web assembly and Adam jazz both have lvm [TS]

01:35:07   backends in principle so make it [TS]

01:35:08   wearable Swift to one of those and go to [TS]

01:35:10   town with the if those end up winning [TS]

01:35:15   and they become big big things then [TS]

01:35:19   maybe that'll be good enough but i don't [TS]

01:35:21   really know I don't have my crystal ball [TS]

01:35:23   doesn't go out to the point where [TS]

01:35:24   javascript is not in web browsers [TS]

01:35:26   yeah that's the difficult part is not [TS]

01:35:28   the language mechanics it's the getting [TS]

01:35:30   a getting something we can understand [TS]

01:35:32   that in front of as many people as [TS]

01:35:33   possible because it's also very [TS]

01:35:35   interested me so again i'm not a web [TS]

01:35:37   developer and I'm not a I'm definitely [TS]

01:35:39   not an expert in space but to me it [TS]

01:35:41   seems the the trajectory of JavaScript [TS]

01:35:44   has basically made it into an [TS]

01:35:46   intermediate language it's not something [TS]

01:35:48   that developers are writing as much [TS]

01:35:50   directly as they used to [TS]

01:35:52   and so I c-type script and water other [TS]

01:35:53   languages that now compiled down to [TS]

01:35:55   JavaScript and you know they're really [TS]

01:35:58   using javascript like it like a bit code [TS]

01:36:00   representation not not a source language [TS]

01:36:02   that people are are thinking about as [TS]

01:36:04   much anymore and so I wonder if in five [TS]

01:36:06   years you know the natural conclusion of [TS]

01:36:09   that is the javascript is just an adams [TS]

01:36:11   is type of thing or maybe web assembly [TS]

01:36:13   does take over but but again I'm not the [TS]

01:36:16   expert don't know where that directional [TS]

01:36:18   go i know that some people of JavaScript [TS]

01:36:20   so we'll see on the topic of using [TS]

01:36:25   language of the JavaScript to write [TS]

01:36:27   JavaScript I have to say having done [TS]

01:36:29   that several times that the tooling why [TS]

01:36:32   the tooling is not quite where you'd [TS]

01:36:34   want to be in terms of being able to [TS]

01:36:36   write in debug and profile in the [TS]

01:36:40   preferred language and not in the [TS]

01:36:42   compiled down to JavaScript language but [TS]

01:36:45   yeah that maybe that'll be like stage 17 [TS]

01:36:47   and this with world domination plan [TS]

01:36:49   people and I think that's always been [TS]

01:36:51   true for preprocessors so I mean even [TS]

01:36:53   see if you do crazy things the macro [TS]

01:36:55   preprocessor and see you get debugging [TS]

01:36:59   those things are still or oh yeah and [TS]

01:37:02   that's one of the reasons that we've [TS]

01:37:04   been careful about not adding a macro [TS]

01:37:05   systems Swift early it just brings lots [TS]

01:37:08   of interesting trade-offs in terms of [TS]

01:37:10   the debugging and developing and [TS]

01:37:11   designing experience of 11 last night [TS]

01:37:15   ABI [TS]

01:37:16   compatibility according to the timelines [TS]

01:37:19   that I've heard sketched out that ABI [TS]

01:37:22   stability could be a thing before async [TS]

01:37:27   you know our concurrency stuff lands and [TS]

01:37:30   Swift there any is there any [TS]

01:37:31   dependencies or chicken egg things [TS]

01:37:34   involving there like in order to other [TS]

01:37:36   words in order to do you have to nail [TS]

01:37:39   down some aspects of your concurrency [TS]

01:37:40   model before you can commit to ABI [TS]

01:37:42   stability are they totally orthogonal [TS]

01:37:44   and I think they're totally orthogonal [TS]

01:37:46   I'm i think the memory ownership model [TS]

01:37:48   has more of an impact on ABI stability [TS]

01:37:51   because there's some very low-level [TS]

01:37:52   things like how the the getters and [TS]

01:37:56   setters are code generated for a [TS]

01:37:58   property for example the end up getting [TS]

01:38:01   impacted by the ownership model that's [TS]

01:38:04   one of the reasons that were that this [TS]

01:38:06   15 is actually actively designing and [TS]

01:38:08   write it working on a proposal for the [TS]

01:38:11   memory ownership stuff right now it's [TS]

01:38:13   not so that it can be a swift for [TS]

01:38:15   feature it's so that the API stability [TS]

01:38:18   work can be done in light of the [TS]

01:38:20   ultimate model for the memory ownership [TS]

01:38:22   support and I think concurrency is not [TS]

01:38:27   going to be something that impacts avi [TS]

01:38:29   stability at all but we'll see in a so [TS]

01:38:32   than the sufficiently smart programmers [TS]

01:38:34   that work on swift we'll figure it out [TS]

01:38:36   and I'm sure it'll be great and I think [TS]

01:38:39   it's also interesting question of [TS]

01:38:40   whether ABI stability will be done for [TS]

01:38:43   swift for because it's a huge amount of [TS]

01:38:47   work the work as well in a way of course [TS]

01:38:49   but it's also not clear to me that's [TS]

01:38:52   really the the right or the most [TS]

01:38:55   important thing for the Swift community [TS]

01:38:57   and one of the things that ted has been [TS]

01:38:59   a huge champion for and I think he's [TS]

01:39:02   right about is that the most important [TS]

01:39:04   thing right now is with community is [TS]

01:39:05   making the compiler more reliable making [TS]

01:39:08   the error messages better making compile [TS]

01:39:11   times faster and making a it scale [TS]

01:39:14   better to large projects and you know [TS]

01:39:17   we'll see how the rest of the swift for [TS]

01:39:18   schedule goes but i wouldn't be [TS]

01:39:20   surprised if at some point they decided [TS]

01:39:22   that focusing on that is more important [TS]

01:39:24   than nailing ABI stability and so for [TS]

01:39:27   so you just mention Ted that's that's [TS]

01:39:29   Ted kramnik who is that is now the the [TS]

01:39:31   lead of of the Swift project is that [TS]

01:39:33   right yeah he's the project lead so ted [TS]

01:39:36   has been managing the Swift and Clank [TS]

01:39:39   projects before that for a number of [TS]

01:39:41   years he's been an apple for 10 years [TS]

01:39:43   now he's a Stanford PhD graduate he [TS]

01:39:47   built single almost single-handedly the [TS]

01:39:50   the first client sack analyzer yeah [TS]

01:39:53   instead so as they have I love it i'm [TS]

01:39:56   saying this now as a swift developer you [TS]

01:40:00   know she should I be like you know as we [TS]

01:40:02   saw when you announce that you're [TS]

01:40:03   leaving Apple that we saw some of the [TS]

01:40:05   people the community asking like she [TS]

01:40:06   would be worried about his future is [TS]

01:40:08   Swift in good hands and a minute you [TS]

01:40:10   know it seems like most of us didn't [TS]

01:40:11   know Ted at least didn't know his name [TS]

01:40:13   or or unfamiliar with contributions it [TS]

01:40:16   does seem like he's been doing quite a [TS]

01:40:17   bit there anyway [TS]

01:40:19   should we be worried i don't think you [TS]

01:40:21   should be worried at all i think swift [TS]

01:40:22   is an amazing hands as I mean all the [TS]

01:40:27   things that I am leaving behind an apple [TS]

01:40:29   and quotes are in really good hands and [TS]

01:40:31   that's one of the only reason I was [TS]

01:40:33   comfortable and moving on in the case of [TS]

01:40:36   Ted Ted is a rockstar he has been [TS]

01:40:40   running the Swift team and managing them [TS]

01:40:42   for mean for five years now the roles [TS]

01:40:47   that we had was that Ted own brand [TS]

01:40:50   esteem and then report to me and so I [TS]

01:40:52   would mess around and you know cause [TS]

01:40:55   trouble by you know trying to get people [TS]

01:40:58   to do the exciting important thing that [TS]

01:41:00   I thought and maybe didn't align with [TS]

01:41:02   the actually important thing and [TS]

01:41:04   therefore identities chaos into the [TS]

01:41:06   world but Ted was always the this table [TS]

01:41:10   runner and the one that was really [TS]

01:41:11   focused on getting the important things [TS]

01:41:13   done and he has a number of really [TS]

01:41:15   exceptional engineers in the team people [TS]

01:41:17   on the core team like the Gregor John [TS]

01:41:19   the call Joe Joe graph Dave Abrahams [TS]

01:41:22   these are all just amazingly brilliant [TS]

01:41:25   people and the E and also the team [TS]

01:41:27   includes a bunch of other engineers that [TS]

01:41:29   are equally dedicated and also just [TS]

01:41:32   totally amazing people to work with [TS]

01:41:34   so the Swift team is I think one of [TS]

01:41:36   apples biggest assets it's it's crazy [TS]

01:41:39   how brilliant and dedicated there [TS]

01:41:41   to the project and how excited they are [TS]

01:41:43   to get to world domination one step at a [TS]

01:41:46   time coming back to kind of a more broad [TS]

01:41:49   thing let's say that in this is not [TS]

01:41:51   meant to be tongue-in-cheek reference to [TS]

01:41:53   your next job this is just in general [TS]

01:41:54   you know you're at home you you kids are [TS]

01:41:57   in bed you know your wife is out or [TS]

01:41:59   something like that and you want to just [TS]

01:42:01   write some code you can't use swift and [TS]

01:42:03   you can't use objective c what are you [TS]

01:42:05   writing code in and I know that's often [TS]

01:42:07   dependent on what project you're [TS]

01:42:08   accomplishing but like what's [TS]

01:42:09   interesting to you these days that isn't [TS]

01:42:11   Swift is an objective-c also i mean i [TS]

01:42:14   have a ton of different interests i mean [TS]

01:42:16   i really love building great racers for [TS]

01:42:18   example and have done much stuff with [TS]

01:42:20   that and I guess I couldn't use Swift [TS]

01:42:24   with that then I would probably have to [TS]

01:42:25   use people's pot no also check i was [TS]

01:42:29   going to call that I wanted to give you [TS]

01:42:30   a chance to not second-class but what I [TS]

01:42:34   remind people that were they mentioned [TS]

01:42:35   you [TS]

01:42:36   you know what LVL is written in right [TS]

01:42:38   much applause and not have your your [TS]

01:42:41   answer bc of loss and and you know how [TS]

01:42:43   much banks in personal suffering causes [TS]

01:42:45   to have to be riding c++ all day and [TS]

01:42:48   building a beautiful world for other [TS]

01:42:49   people it's just yeah that's where [TS]

01:42:52   you're entitled down the mines [TS]

01:42:54   yeah yeah it's it's a pain and suffering [TS]

01:42:56   that's worth it for the bigger bigger [TS]

01:42:58   victory that's where the stress comes [TS]

01:42:59   from years having to use C++ so i could [TS]

01:43:01   do the same stuff but not feel this much [TS]

01:43:03   pain [TS]

01:43:03   that's exactly right i mean there's a [TS]

01:43:05   lot of suffering that led to switch [TS]

01:43:07   needing to happen so but but also it [TS]

01:43:11   really depends i mean maybe if I was [TS]

01:43:12   doing you know if I was a crazy person [TS]

01:43:14   ideas pearl for something i don't know [TS]

01:43:15   from that instead haha well dot but well [TS]

01:43:20   done terrible to read it though nobody [TS]

01:43:23   correct [TS]

01:43:23   hey if it's throw a code then you never [TS]

01:43:25   need to rewrite haha for John these are [TS]

01:43:31   as well just wait for my process [TS]

01:43:32   grammars to land gently and Swift yeah [TS]

01:43:35   also I mean that's another that there is [TS]

01:43:37   a great example of pro really has nailed [TS]

01:43:40   the string processing thing even ants in [TS]

01:43:42   405 and I think 406 is even better and [TS]

01:43:45   Swift has a lot to learn from and that's [TS]

01:43:47   that's something where a [TS]

01:43:49   so for is really learning from Pearl so [TS]

01:43:53   that was great [TS]

01:43:54   oh please don't give him any ammunition [TS]

01:43:56   this is terrible i was enjoying this [TS]

01:43:57   interview so much until this very moment [TS]

01:43:59   look at this way once this happens John [TS]

01:44:01   will have no excuse [TS]

01:44:03   oh he will find one nothing is so [TS]

01:44:07   perfect that it can't be complained [TS]

01:44:09   about oh my goodness this is a perennial [TS]

01:44:13   topic on this with Mary lists about [TS]

01:44:15   dynamic features and Swift you know that [TS]

01:44:18   our record more dynamic and objective-c [TS]

01:44:22   and less so in swift swift community [TS]

01:44:26   there's a lot of angst about when if [TS]

01:44:29   ever will Swift allow me to essentially [TS]

01:44:32   you know like what you said before you [TS]

01:44:33   can write for training in any language [TS]

01:44:34   you can write a directory name is in any [TS]

01:44:36   language people will try to write their [TS]

01:44:39   code in Swift but using models from [TS]

01:44:42   objective-c that require things like you [TS]

01:44:45   know it was you know since sending [TS]

01:44:48   messages objects that you know will [TS]

01:44:50   receive them but the compiler can [TS]

01:44:51   guarantee are you know having big [TS]

01:44:53   heterogenous collections were just like [TS]

01:44:54   no everything's ID and it'll be fine [TS]

01:44:57   what I don't know how to frame this but [TS]

01:45:00   uh I think that the main question has [TS]

01:45:03   been our dynamic features possible and [TS]

01:45:06   Swift and are they coming in Swift or is [TS]

01:45:09   there some kind of philosophical divide [TS]

01:45:11   where the the most dynamic stuff that [TS]

01:45:13   people really want will never be [TS]

01:45:16   forthcoming up for technical reasons but [TS]

01:45:17   just for philosophical and safety [TS]

01:45:19   reasons [TS]

01:45:20   sure so I've been pretty outspoken about [TS]

01:45:22   this on the switch evolution let's hope [TS]

01:45:23   this isn't a huge surprise but i don't [TS]

01:45:26   think there's any tension between [TS]

01:45:28   dynamic features and Swift the a lot of [TS]

01:45:32   people want to make a and argue about [TS]

01:45:34   how it would be impossible to do [TS]

01:45:35   responders or you can pick your feature [TS]

01:45:39   the in Swift and the the worst-case [TS]

01:45:45   scenario frantic blog post I've seen our [TS]

01:45:47   are things that are along lines of [TS]

01:45:50   someday Apple rewrite all these [TS]

01:45:52   frameworks in Swift and then it will be [TS]

01:45:54   impossible to write first responder [TS]

01:45:56   chains and then bad things will happen [TS]

01:45:58   and then we'll be back in the days of [TS]

01:46:00   MSC or some other bed [TS]

01:46:02   right i don't even bring that up [TS]

01:46:05   exactly and so this is this is kind of [TS]

01:46:08   quite the slope that it's the discussion [TS]

01:46:10   ends up being I think this blow-up most [TS]

01:46:15   recently right before WC this year and [TS]

01:46:17   it was really interesting to wash the [TS]

01:46:20   the blog post that people are flying [TS]

01:46:21   around because everybody had a different [TS]

01:46:25   idea of what dynamic meant happen but [TS]

01:46:28   none that I'm really so apples not going [TS]

01:46:33   to counter blog somebody if he didn't [TS]

01:46:36   like being out somebody's a blog on [TS]

01:46:38   somebody's post and it's kind of bad [TS]

01:46:40   form to do that but I thought was very [TS]

01:46:41   interesting on that none of those people [TS]

01:46:43   actually came to the Swift evolution [TS]

01:46:45   list which is the right place to do that [TS]

01:46:46   and asked about it they all just want to [TS]

01:46:49   make these inflamed blog posts are very [TS]

01:46:51   skins so if you get to my opinion my [TS]

01:46:54   opinion is that none of those are in [TS]

01:46:55   tension with a swift current design it's [TS]

01:46:58   just a matter of prioritization and the [TS]

01:47:01   major problem that Swift has again [TS]

01:47:03   there's so much work to do there's [TS]

01:47:06   concurrency model there's actors their [TS]

01:47:09   systems programming their scripting [TS]

01:47:10   there's lots of little things that go in [TS]

01:47:13   there's better better things for static [TS]

01:47:16   analysis introducing type stay in [TS]

01:47:17   language there's there there's green [TS]

01:47:20   postconditions that there's so many [TS]

01:47:22   things that that will be bricks in the [TS]

01:47:25   house of Swift that we want to build [TS]

01:47:27   that need to happen that it doesn't [TS]

01:47:30   really make sense spent a lot of time [TS]

01:47:32   building dynamic features so that Apple [TS]

01:47:35   could theoretically someday do something [TS]

01:47:37   right [TS]

01:47:38   were the Swift team is much more focused [TS]

01:47:40   on the practical necessities of solving [TS]

01:47:42   the real world problems here now in [TS]

01:47:44   front of people and dynamic features [TS]

01:47:47   like many other things will just kind of [TS]

01:47:49   swap in place when the team s time to [TS]

01:47:52   design and roll them out and so you you [TS]

01:47:55   will be able to someday right i expect [TS]

01:47:58   that you will be able to reflect over [TS]

01:48:00   all the methods and the class has for [TS]

01:48:03   example today even the Swift compiler [TS]

01:48:05   generates all the metadata so you can [TS]

01:48:07   reflect over all the data members and [TS]

01:48:10   your and your values we just don't have [TS]

01:48:12   an API wrapped around that [TS]

01:48:13   that metadata is what the xcode memory [TS]

01:48:16   heap viewer uses for example and so [TS]

01:48:19   there's a lot of that kind of stuff [TS]

01:48:20   being put in place but just hasn't had [TS]

01:48:23   time to fully break out yet and when it [TS]

01:48:25   does come in i think it's gonna be [TS]

01:48:26   really exciting and will open more doors [TS]

01:48:28   for new kinds of patterns of people can [TS]

01:48:30   do and a lot of those will be familiar [TS]

01:48:32   to objective-c programmers but they're [TS]

01:48:34   also be super useful for things that [TS]

01:48:36   people really haven't done an object to [TS]

01:48:37   see so i don't i don't see a lot of [TS]

01:48:40   tension there though it's just a [TS]

01:48:41   prioritization question I think about [TS]

01:48:44   where your people are coming from is it [TS]

01:48:46   in terms of prioritization because if [TS]

01:48:47   you're used to doing things with certain [TS]

01:48:49   sort of design patterns broadly speaking [TS]

01:48:52   in objective-c and you want to come and [TS]

01:48:53   implement the same patterns and Swift [TS]

01:48:55   and you find that you can't because [TS]

01:48:57   you're lacking some feature it feels [TS]

01:48:59   like there's a barrier up in it that [TS]

01:49:01   students getting back to your writing [TS]

01:49:02   ready your swift and objective-c style [TS]

01:49:04   and that's more of a berry they retreat [TS]

01:49:06   back to breakfast because i can write it [TS]

01:49:07   the way I want to read it right and it [TS]

01:49:08   works and objective-c when I try to [TS]

01:49:10   write it that way and so if it doesn't [TS]

01:49:11   work for me your choices to change the [TS]

01:49:13   way you write it to be better fit for [TS]

01:49:15   swift has or to go back to objective-c [TS]

01:49:17   I'm so I don't agree with that though [TS]

01:49:20   because Swift does support all the [TS]

01:49:23   features for dynamic dispatch and method [TS]

01:49:26   look up and everything else that [TS]

01:49:27   objective c does it just requires you to [TS]

01:49:29   use the objective-c subset of the [TS]

01:49:31   language because it exposes it through [TS]

01:49:33   the runtime right that that's that's [TS]

01:49:35   thatthat's thatthat's the tension [TS]

01:49:36   because they're like oh I want to write [TS]

01:49:38   in pure Swift like as if there's [TS]

01:49:40   something special and magical about not [TS]

01:49:42   using the objective-c runtime for you [TS]

01:49:44   know I mean you do get a medal for that [TS]

01:49:46   oh yeah I guess that makes some people [TS]

01:49:49   feel good i mean that there are I I [TS]

01:49:53   can't really count that but I just don't [TS]

01:49:55   think that it the it's actually fair to [TS]

01:49:57   say you have to fall back to writing [TS]

01:49:59   objective-c code no no I got I'm just [TS]

01:50:01   I'm trying to I didn't write one of [TS]

01:50:02   these blog posts over to be trying I'm [TS]

01:50:03   trying I'm trying to express myself that [TS]

01:50:05   because that was a lot of the concerns [TS]

01:50:06   like they they want to do it it's they [TS]

01:50:08   want to do it like the new way and the [TS]

01:50:11   way and part of doing that is not you [TS]

01:50:13   know an objective seeing everything like [TS]

01:50:14   oh that feels like a compromise in the [TS]

01:50:15   old way so there they are setting their [TS]

01:50:18   own goal posts for themselves [TS]

01:50:19   arbitrarily to try to enter into this [TS]

01:50:22   new world and you know that they they [TS]

01:50:25   want to jump in with both feet or not at [TS]

01:50:27   all and and some of them might end up [TS]

01:50:28   bailing but i think this mean that the [TS]

01:50:31   way the way look at that is a look at [TS]

01:50:34   that is an area where the language is [TS]

01:50:36   not fully baked out it's not fully [TS]

01:50:38   serving their needs and I think that's [TS]

01:50:40   really unfortunate right and i'm not [TS]

01:50:42   going to say that I think that that's [TS]

01:50:44   not a good thing i want there to be an [TS]

01:50:46   awesome reflection model I want there to [TS]

01:50:47   be awesome features for sending messages [TS]

01:50:49   like there used to just want to be [TS]

01:50:52   developed and designed in the right way [TS]

01:50:54   and at the same time they're being [TS]

01:50:56   annoyed that they can't do those things [TS]

01:50:58   there are a lot of other people being [TS]

01:51:00   annoyed about compiled times right [TS]

01:51:02   ya know I know and and what we have to [TS]

01:51:05   do is balance between you know just [TS]

01:51:08   picking two random things where does the [TS]

01:51:10   engineering effort go and and that's [TS]

01:51:13   never black and white thing there's [TS]

01:51:15   never a right answer is all based on gut [TS]

01:51:18   and judgment and guesses listening to [TS]

01:51:21   the community talking to people and [TS]

01:51:23   that's one of the reasons why i think [TS]

01:51:24   the 15 is really phenomenal is that it [TS]

01:51:27   really cares that really cares about [TS]

01:51:28   what people are doing it read you know [TS]

01:51:31   the various people read the blog post or [TS]

01:51:33   people on Twitter that like the [TS]

01:51:34   engagement between us with team and the [TS]

01:51:37   community is really high because people [TS]

01:51:39   care and there's no management dictated [TS]

01:51:41   apple says that you know this engineer [TS]

01:51:44   should be on Twitter all the time [TS]

01:51:45   talking to people that's certainly not [TS]

01:51:46   the case [TS]

01:51:47   that's because of passion from the [TS]

01:51:49   developer is because they really care i [TS]

01:51:51   think that that's the thing that is so [TS]

01:51:52   amazing about the Swift team is just how [TS]

01:51:56   important it is in terms of customer [TS]

01:51:58   service and understanding understanding [TS]

01:52:00   what people are working through and that [TS]

01:52:03   insight is what guides the priority [TS]

01:52:06   decisions and guides the trade-offs that [TS]

01:52:08   have to be made all the time because [TS]

01:52:10   nothing really is as clear as you'd like [TS]

01:52:13   it to be so building on that when all of [TS]

01:52:16   us were going back and forth and I was [TS]

01:52:18   tangentially involved with this we're [TS]

01:52:20   going back and forth auto it switches [TS]

01:52:22   and dynamic it must be dynamic [TS]

01:52:23   this is it fair to say that that does [TS]

01:52:26   eventually make its way inside of apple [TS]

01:52:28   just and i'm just in that you guys are [TS]

01:52:30   aware of it that that that's talked [TS]

01:52:33   about in some way shape or form because [TS]

01:52:34   it's nice to know and i suspect that it [TS]

01:52:37   does but it's nice to know that when the [TS]

01:52:39   community gets perturbed whether or not [TS]

01:52:41   that that that feeling is justified that [TS]

01:52:45   at least somebody inside Apple has [TS]

01:52:46   hurted whether or not they can respond [TS]

01:52:48   to it at least they've heard it so when [TS]

01:52:50   we all get our our our pants all twisted [TS]

01:52:54   up does that does that make it in [TS]

01:52:56   I absolutely i mean the there are tons [TS]

01:53:00   of people actually care about what's [TS]

01:53:01   happening in the developer community and [TS]

01:53:03   and elsewhere right and that's one of [TS]

01:53:05   the the things about Apple's approach in [TS]

01:53:08   terms of not commenting on things that [TS]

01:53:09   can be frustrating because you don't [TS]

01:53:11   know but again there's so many people [TS]

01:53:14   apple that really do care and that [TS]

01:53:16   sought and you know again I wish those [TS]

01:53:20   people that were really worried about it [TS]

01:53:23   would come to Swift evolution and ask [TS]

01:53:25   because they're exempt discussion about [TS]

01:53:26   it but that wasn't happening for some [TS]

01:53:28   reason but certainly there's a ton of [TS]

01:53:31   people who saw the blogs and i'm sure [TS]

01:53:33   there are tons of engineers at Apple to [TS]

01:53:34   feel the same way and wish the [TS]

01:53:35   priorities were different and I think [TS]

01:53:38   that the engineering community inside of [TS]

01:53:40   Apple reflects quite closely to the [TS]

01:53:43   engineering community outside of Apple [TS]

01:53:44   as well and i don't think that I hope [TS]

01:53:48   that's not surprising right angle as [TS]

01:53:50   many different engineers with different [TS]

01:53:52   feelings of different opinions and and I [TS]

01:53:54   think that's a really good thing if if [TS]

01:53:56   it were a supermodel culture or [TS]

01:53:58   something like that that probably very [TS]

01:53:59   unhealthy taking a little bit of a turn [TS]

01:54:03   so i started writing Swift almost [TS]

01:54:06   exactly a year ago now and the project [TS]

01:54:09   that i'm doing at work [TS]

01:54:10   we're using RX Swift and in [TS]

01:54:12   quote-unquote reactive programming and [TS]

01:54:14   i'm curious have you looked into that at [TS]

01:54:16   all and do you have any particular [TS]

01:54:18   thoughts on it doesn't seem barbaric to [TS]

01:54:20   you does it seem clever does it just [TS]

01:54:21   seem like an odd choice at ya what what [TS]

01:54:24   is your take on this whole RX thing [TS]

01:54:26   yeah I i I've definitely seen it i have [TS]

01:54:29   no real world usage experience for sure [TS]

01:54:32   most of my opinion is based on reading [TS]

01:54:35   blogs and reading people talk about how [TS]

01:54:37   awesome it is well not talking about the [TS]

01:54:39   problems [TS]

01:54:40   yeah I from what I gather it seems like [TS]

01:54:44   it is a way of letting you write a lot [TS]

01:54:46   less code and code that often works [TS]

01:54:49   better [TS]

01:54:50   the first time and i can see that super [TS]

01:54:51   appealing it also seems like it'd be [TS]

01:54:53   really challenging to debug it and [TS]

01:54:54   maintain it and so I don't know between [TS]

01:54:56   the two proteins between the pros and [TS]

01:54:59   cons out balances out if I writing a lot [TS]

01:55:02   of high-level apps i would probably try [TS]

01:55:04   it out on an opportunity if I liked it [TS]

01:55:06   but but aside from that are really have [TS]

01:55:10   a good insight either way if it's the [TS]

01:55:12   right thing to do or not sure sure [TS]

01:55:14   absolutely [TS]

01:55:15   you mentioned just a second ago that you [TS]

01:55:16   see some problems and you mentioned [TS]

01:55:18   debugging is there anything else that [TS]

01:55:19   jumps out at you is being a big concern [TS]

01:55:21   or or disinterest that it's so different [TS]

01:55:23   I mean I'm not afraid of different [TS]

01:55:26   things i think that it's it's more of AI [TS]

01:55:30   mean the questions I'd raise and this is [TS]

01:55:31   out of ignorance not out of church or [TS]

01:55:33   here but you know is what is the [TS]

01:55:35   community doing is their support line [TS]

01:55:37   are it is the you know is it changing [TS]

01:55:41   and evolving in a way that is good or [TS]

01:55:43   bad [TS]

01:55:44   and these are just things i don't know [TS]

01:55:46   because i haven't used to but I have [TS]

01:55:48   nothing against the RX community at all [TS]

01:55:50   and I've seen a lot of really cool [TS]

01:55:51   things I've done and I've read many of [TS]

01:55:52   the the positive post in RX and and rach [TS]

01:55:57   native than many of the other things for [TS]

01:55:59   people using active techniques so and [TS]

01:56:01   reactive cocoa has also been around for [TS]

01:56:03   quite a while and at and I think that's [TS]

01:56:05   a really interesting application that [TS]

01:56:07   maybe became a lot easier when Swift [TS]

01:56:09   came out then doing an objective-c [TS]

01:56:11   absolutely so i think that is great this [TS]

01:56:13   with can support different kinds of [TS]

01:56:15   programming models like that because you [TS]

01:56:18   know if a awesome new right answer to [TS]

01:56:20   some problem comes out you'd hope that [TS]

01:56:22   you know that your system can support it [TS]

01:56:25   and can make it really elegant and [TS]

01:56:27   beautiful i feel kind of like this is [TS]

01:56:30   fighting you know the last war instead [TS]

01:56:33   of the current war but you mentioned [TS]

01:56:35   garbage collection for his ark bunch of [TS]

01:56:37   times and obviously that ship has sailed [TS]

01:56:39   but i would love for you to give a a [TS]

01:56:44   reasonable summary of what the [TS]

01:56:46   trade-offs are there because objective-c [TS]

01:56:48   had [TS]

01:56:49   garbage collection as you mentioned sort [TS]

01:56:51   of at yeah it's not there and eventually [TS]

01:56:56   objective-c dropped the garbage [TS]

01:56:57   collection and got our kind of course [TS]

01:56:59   Swift doesn't have garbage collection at [TS]

01:57:01   all can you talk about the trade-offs [TS]

01:57:02   there and why Swift is the way it is [TS]

01:57:04   what would you like a comparison of Arc [TS]

01:57:07   against the garbage collector [TS]

01:57:09   objective-c head or garbage collection [TS]

01:57:12   in theory but you could pick garbage [TS]

01:57:14   collection in a language perhaps not as [TS]

01:57:16   burdened as objective-c with see [TS]

01:57:18   backwards compatibility but you know [TS]

01:57:20   that's worth mentioning is well i think [TS]

01:57:21   so i think thats objective-c a decision [TS]

01:57:23   based on Lovato Lovato had a bunch of [TS]

01:57:25   implementation concerns and other things [TS]

01:57:27   that I think don't reflect they don't [TS]

01:57:31   obviously reflect on to the ultimate [TS]

01:57:33   garbage collector that you'd ever want [TS]

01:57:35   to have and so I don't think the [TS]

01:57:36   comparing against that is interesting [TS]

01:57:38   but let me turn around so what why do [TS]

01:57:40   you think our reflections interesting [TS]

01:57:41   what what is compelling about garbage [TS]

01:57:43   collection beyond our well it did the [TS]

01:57:46   idea that [TS]

01:57:46   yeah memory management is completely out [TS]

01:57:48   of the hands of the programmer and it's [TS]

01:57:50   some magical fairy behind-the-scenes [TS]

01:57:51   will make it all good for you and that [TS]

01:57:54   you know obviously what you're giving up [TS]

01:57:56   as you mentioned before that you know [TS]

01:57:57   even with our cue you lack some amount [TS]

01:58:00   of control that you'll need to to have a [TS]

01:58:01   language that becomes a system [TS]

01:58:02   programming which obviously give that up [TS]

01:58:04   with the garbage collection because [TS]

01:58:05   you're not gonna be doing assistant [TS]

01:58:06   program language in the garbage [TS]

01:58:07   collected with a garbage collector [TS]

01:58:09   behind it although i think Microsoft has [TS]

01:58:12   some project to do that singularity [TS]

01:58:13   product but they were trying to build a [TS]

01:58:14   hall West off of garbage collection not [TS]

01:58:16   quite sure how that's good that's going [TS]

01:58:18   right but even if even if you ignore the [TS]

01:58:20   the systems programming side of things [TS]

01:58:22   because i think it's fair to say a lot [TS]

01:58:23   of people don't care about that and so [TS]

01:58:27   garbage collection is proven in the [TS]

01:58:28   application space for java for example [TS]

01:58:32   right and pearl but do this reference [TS]

01:58:37   counting come on [TS]

01:58:39   oh that's right it's python that users [TS]

01:58:40   reference counting plus cycle collector [TS]

01:58:42   so but let me ask you again so you said [TS]

01:58:45   it means you don't have to think about [TS]

01:58:47   memory is that true [TS]

01:58:49   well that's the pitch the pitches that [TS]

01:58:51   the programmers tend to think about it [TS]

01:58:52   they have to think about it when the [TS]

01:58:53   garbage collector and understand the [TS]

01:58:55   pitch but is it true when the garbage [TS]

01:58:57   collector starts doing things you don't [TS]

01:58:58   want and then all of a sudden you do [TS]

01:59:00   have to think about it but then there's [TS]

01:59:01   almost nothing you [TS]

01:59:02   do about it yeah so so here's here's the [TS]

01:59:05   way I look at it and as you said that [TS]

01:59:07   the ship has somewhat sale [TS]

01:59:08   I am totally convinced the artists right [TS]

01:59:10   way to go up front it is better a whole [TS]

01:59:14   bunch of different ways it gives you [TS]

01:59:16   deterministic behavior so you don't get [TS]

01:59:19   you know it doesn't have the [TS]

01:59:21   unpredictable stutter problem that [TS]

01:59:22   people like to bash on gc's the starter [TS]

01:59:26   problem to me isn't really the issue [TS]

01:59:28   even though that's what GC haters will [TS]

01:59:31   bring up all the time it's more about [TS]

01:59:33   being a reason about when the memory [TS]

01:59:35   goes away and the most important aspect [TS]

01:59:38   of that is that are conservative [TS]

01:59:40   finalized errs so if you use a garbage [TS]

01:59:42   collector of language use finalized errs [TS]

01:59:44   finalizer Tsar the thing that gets run [TS]

01:59:46   when your object is destroyed finalizes [TS]

01:59:48   have so many problems there are entire [TS]

01:59:50   that there's entire bodies of work [TS]

01:59:53   talking about how to work around [TS]

01:59:54   problems with finalizer for example the [TS]

01:59:57   finalizer gets around the wrong thread [TS]

01:59:58   it has get run multiple [TS]

01:59:58   it has get run multiple [TS]

02:00:00   x the object get resurrected while the [TS]

02:00:02   final is running happens non-statistical [TS]

02:00:05   later you can't count on it and so you [TS]

02:00:08   can't use it for resource management for [TS]

02:00:10   database animals and things like that [TS]

02:00:12   for example there are so many problems [TS]

02:00:14   with finalizes the artist defines away [TS]

02:00:17   by having deterministic destruction [TS]

02:00:18   beyond that art though so the the common [TS]

02:00:25   that another common thing they're there [TS]

02:00:28   to two arguments that people make [TS]

02:00:29   against are in favor of a trace and [TS]

02:00:32   garbage collector one of which is the [TS]

02:00:34   arcades overhead because you have [TS]

02:00:36   retained release operations that run and [TS]

02:00:39   that is true [TS]

02:00:40   the other is that you have to think [TS]

02:00:44   about cycles in arc because it doesn't [TS]

02:00:46   automatically collects cycles and that [TS]

02:00:48   is also true and the the rebuttal I'd [TS]

02:00:51   give to people is that those problems [TS]

02:00:54   are also true in garbage collection just [TS]

02:00:56   in different ways so in a garbage [TS]

02:00:59   collector for example people don't think [TS]

02:01:00   about it but garbage collection injects [TS]

02:01:03   additional code into your application [TS]

02:01:05   just like artists and so you know there [TS]

02:01:08   are many different garbage collection [TS]

02:01:09   algorithms not all of them are the same [TS]

02:01:10   but the most modern garbage collectors [TS]

02:01:16   that use a nursery for short lifetime [TS]

02:01:19   objects and then promote them out there [TS]

02:01:21   generational use something called the [TS]

02:01:24   right barrier the right barrier is every [TS]

02:01:26   time you store to a property of an [TS]

02:01:30   object say you have to run additional [TS]

02:01:32   code garbage collectors also need the [TS]

02:01:34   ability to stop all the threads or at [TS]

02:01:36   least to be able to stop threads at some [TS]

02:01:38   point in time and they need to be able [TS]

02:01:40   to do so within a specific time down [TS]

02:01:42   because they don't want the garbage [TS]

02:01:43   collector to take forever [TS]

02:01:44   the artifact that is the typical garbage [TS]

02:01:48   collectors in Java for example will [TS]

02:01:49   introduce what's called a safe point [TS]

02:01:51   into loops and so now in your loops [TS]

02:01:55   extra code is being run because of the [TS]

02:01:57   garbage collector and on more aggressive [TS]

02:02:00   garbage collection algorithms for [TS]

02:02:01   example i was reading a blog post [TS]

02:02:03   recently about goes tricolor algorithm [TS]

02:02:06   they they're touting the advantage of [TS]

02:02:09   you get really low latency and you get [TS]

02:02:11   the ability to guarantee response times [TS]

02:02:15   and more firing level than most garbage [TS]

02:02:17   collectors but to do that they use this [TS]

02:02:19   tricolor algorithm which dramatically [TS]

02:02:21   lowers throughput and that dramatically [TS]

02:02:23   lower throughput because they're doing [TS]

02:02:25   almost exactly the same kinds of [TS]

02:02:26   operations that are kids doing the [TS]

02:02:29   problem that it then introduces those [TS]

02:02:31   that these operations that the garbage [TS]

02:02:33   collectors introducing are sometimes but [TS]

02:02:35   not nearly as well optimized elazig the [TS]

02:02:38   ark overhead that the ark optimize it [TS]

02:02:40   applies to and furthermore there's no [TS]

02:02:42   kind of out on it so with our I think [TS]

02:02:45   and hope that the ownership model will [TS]

02:02:46   give people the ability to take control [TS]

02:02:47   of those overheads and if it becomes a [TS]

02:02:50   problem practice or if they're just that [TS]

02:02:52   kind of person they can take full [TS]

02:02:53   control over the lifetime of their [TS]

02:02:55   objects and then know the ark will never [TS]

02:02:57   happen in the garbage collector you [TS]

02:02:58   don't have that so the performance side [TS]

02:03:01   of things I think is still up in the air [TS]

02:03:04   because are certainly doesn't reduce [TS]

02:03:06   overhead some of that's unavoidable at [TS]

02:03:12   least without lots of annotations in [TS]

02:03:13   your code but I also i think that arc is [TS]

02:03:16   not done yet a ton of energy has been [TS]

02:03:18   poured into research for garbage [TS]

02:03:20   collection particularly since Java has [TS]

02:03:23   come up there have been hundreds of [TS]

02:03:24   papers written in the academic circles [TS]

02:03:25   tons of work and hotspot another other [TS]

02:03:29   job implementations to do different [TS]

02:03:32   tweaks and different tunings and [TS]

02:03:33   different new kinds of albums and [TS]

02:03:35   garbage collection and that work really [TS]

02:03:37   hasn't been done for archaea and so I [TS]

02:03:39   think there's still a big future ahead [TS]

02:03:40   on the programming side of things the [TS]

02:03:43   cycle side of things i think it's also [TS]

02:03:45   really interesting question of how much [TS]

02:03:47   people think about memory when you when [TS]

02:03:51   you when I was baiting you a little bit [TS]

02:03:53   he said anything about garbage [TS]

02:03:55   collection is that you don't have to [TS]

02:03:56   think about memory but of course we know [TS]

02:03:58   that's not true right because if you [TS]

02:04:00   have a reference to some big object [TS]

02:04:02   graph they didn't mean to keep around [TS]

02:04:03   maybe it's in your undo stack then you [TS]

02:04:05   will quote unquote leak that memory [TS]

02:04:07   right and that that's true a garbage [TS]

02:04:11   collector that's true of arc as well [TS]

02:04:12   it's just any any automatic memory [TS]

02:04:15   management approach has that problem and [TS]

02:04:19   so that that is a really interesting [TS]

02:04:21   thing that there's [TS]

02:04:24   this question of if you're building a [TS]

02:04:26   large scale system do you want people to [TS]

02:04:29   quote-unquote never think about memory [TS]

02:04:31   do you want them to think about memory [TS]

02:04:33   all the time like they did in [TS]

02:04:35   objective-c classic retain and release [TS]

02:04:37   man retain release or do you want [TS]

02:04:39   something in the middle and I think the [TS]

02:04:41   ark strikes a really interesting balance [TS]

02:04:42   that either whether it's in objective-c [TS]

02:04:45   orin swift where I look at manual retain [TS]

02:04:50   really releases being a very imperative [TS]

02:04:52   style of memory management or Malcolm [TS]

02:04:54   free all these things where you're [TS]

02:04:55   telling the code line by line this is [TS]

02:04:58   where you should do a reference count [TS]

02:04:59   operation this is where you should [TS]

02:05:00   release the memory [TS]

02:05:02   this is what you should do at this point [TS]

02:05:03   I'm are then takes that model and [TS]

02:05:05   bubbles it up a big step and it makes it [TS]

02:05:07   being it makes it be a very declarative [TS]

02:05:09   model so instead of telling the compiler [TS]

02:05:11   or the the the telling the compiler that [TS]

02:05:15   this is the place you should do retain [TS]

02:05:17   you said say this is an open [TS]

02:05:19   relationship [TS]

02:05:20   the cool thing about that to me is that [TS]

02:05:22   not only does that get rid of the the [TS]

02:05:24   mechanics of maintaining reference [TS]

02:05:26   counting and define away tons above by [TS]

02:05:28   doing that it also means that is now [TS]

02:05:30   explicit in your code what your [TS]

02:05:32   intention was and that's something that [TS]

02:05:34   people who maintain your code benefit [TS]

02:05:36   from and so by saying that I have a weak [TS]

02:05:38   point or to the parent object of my my [TS]

02:05:41   thing that's a really important [TS]

02:05:44   relationship to know about and as you're [TS]

02:05:46   looking at the code you maintain the [TS]

02:05:47   code having that be explicit is very [TS]

02:05:49   valuable because it talks about the the [TS]

02:05:51   the relationship between values and to [TS]

02:05:55   me again with the goal of being ever [TS]

02:05:57   write large-scale applications and Swift [TS]

02:05:59   I think that's really useful [TS]

02:06:00   I also don't think it's hugely [TS]

02:06:01   burdensome though it is definitely part [TS]

02:06:04   of the learning curve of learning how [TS]

02:06:05   swift works that you know has to be [TS]

02:06:08   balanced in there as well and so i don't [TS]

02:06:11   know i mean i like it is there are has [TS]

02:06:14   clear advantages in terms of allowing [TS]

02:06:18   Swift to scale down two systems that can [TS]

02:06:21   tolerate having a garbage collector for [TS]

02:06:23   example if you want to write from where [TS]

02:06:24   Swift [TS]

02:06:25   I think it does provide a better [TS]

02:06:28   programming model where programmers [TS]

02:06:29   think just a little bit about memory and [TS]

02:06:32   i think that you know going forward it [TS]

02:06:34   provides a really high performance model [TS]

02:06:37   that you can get better than better than [TS]

02:06:40   garbage collection and almost every way [TS]

02:06:41   so i think that in terms of trade-offs [TS]

02:06:43   it's the right one push forward the [TS]

02:06:46   other I guess third piece that that [TS]

02:06:49   garbage collection is really bad about [TS]

02:06:51   is kind of a showstopper for swift which [TS]

02:06:54   is inner interoperability with C code so [TS]

02:06:57   if you've ever worked with java or with [TS]

02:06:59   other similar garbage collector of [TS]

02:07:01   languages one of the major advantages [TS]

02:07:04   the garbage collectors give you is they [TS]

02:07:05   move objects and they need to do that so [TS]

02:07:07   they can compact those objects so that [TS]

02:07:09   they can then efficiently doo doo [TS]

02:07:11   allocations but the problem is that once [TS]

02:07:13   you start moving objects around if [TS]

02:07:15   you're interfacing with C code [TS]

02:07:17   you can't have some random c-code having [TS]

02:07:19   a pointer to your object and have it [TS]

02:07:20   moved because then you get a dangling [TS]

02:07:22   pointer and so once you get down that [TS]

02:07:25   line you end up with things like J&I the [