The Accidental Tech Podcast

205: People Don't Use the Weird Parts

 

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

  did chris lattner decide to leave Apple [TS]

  last week we talked about this and we [TS]

  tried to list all the reasons we could [TS]

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

  think we covered most of the major [TS]

  threads of speculation and didn't really [TS]

  get a listener feedback about anybody [TS]

  did reply was mostly voting for one of [TS]

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

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

  some kind of like secret doomsday thing [TS]

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

  not actually that important that we [TS]

  figure out like why he left apple or [TS]

  what was in his heart of hearts like [TS]

  aside from just being busy bodies are [TS]

  just wanting to know like a gossip type [TS]

  stuff and second pragmatically speaking [TS]

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

  people who leave Apple talk about or you [TS]

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

  years and years later after everyone no [TS]

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

  not a big deal [TS]

  so even if there was some deep dark [TS]

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

  it until years from now and honestly the [TS]

  straightforward boring explanation is [TS]

  probably the right one anyway so you [TS]

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

  Chris that sounds about right to me John [TS]

  would you ever buy an electric car in [TS]

  white if you weren't such a jerk [TS]

  why are you so mean to be barca no no [TS]

  I'm fine red cars there you get all [TS]

  yellow thank you get them yellow that's [TS]

  bold [TS]

  my guess alright we obviously need to [TS]

  talk about what's happening right now so [TS]

  ATP is not interested in interview show [TS]

  but in extraordinary circumstances weird [TS]

  things can happen and so in today's [TS]

  episode we have an extraordinary [TS]

  circumstance former apple employee Chris [TS]

  lander was like nice enough to join us [TS]

  on the show and so this is going to be [TS]

  three people interviewing one person [TS]

  which is to say the least a bit peculiar [TS]

  and it's something that we've never [TS]

  really done before so this could be a [TS]

  little bit of a rough ride but we're [TS]

  gonna try to make our best of it and and [TS]

  i'll just say right up front [TS]

  thank you so much Chris for coming on [TS]

  the show and we definitely appreciate it [TS]

  to kind of kick all this off would you [TS]

  mind giving us like a nickel tour of who [TS]

  is crystalline okay well I can try [TS]

  I'm a programmer and [TS]

  of coding i have for a long time I am [TS]

  most widely known for starting lbm and [TS]

  getting it off the ground and handing it [TS]

  off to other smarter people i started [TS]

  playing which is the C C++ objective c [TS]

  compiler and likewise got to the point [TS]

  where it was thriving and then let other [TS]

  smarter people run it and then started [TS]

  Swift and got Swift going and it [TS]

  recently got past three dough and it has [TS]

  an amazing community and has a great [TS]

  team of people running it and now I'm [TS]

  ready to jump to the next thing and so I [TS]

  guess the short version of what i'd like [TS]

  to do is tackle really hard problems and [TS]

  do things that most people think you're [TS]

  impossible [TS]

  so we're gonna go back in time a little [TS]

  bit and i hope that you could tell us [TS]

  how you ended up coming to apple like if [TS]

  you can remember back that far like you [TS]

  know you [TS]

  lvm you started before you or an apple [TS]

  right so how did you end up an apple [TS]

  yeah isn't it a great question so i [TS]

  started working out via aim at the [TS]

  University of Illinois it was a research [TS]

  project and the it really was kind of [TS]

  hope for and designed to be fully [TS]

  general and production quality and all [TS]

  those great things that you want as a [TS]

  graduate student for people to use your [TS]

  code but it also wasn't it was had a lot [TS]

  of the great architectural ideas maybe [TS]

  but it wasn't fully baked it wasn't [TS]

  wouldn't solve all the world's problems [TS]

  and by the time I got to graduate [TS]

  the question was what do I do next and [TS]

  of course my dream was to continue [TS]

  pushing forward and build it out to be [TS]

  something real and to do that i would [TS]

  have to go to a place that would allow [TS]

  me to work on it and I was really [TS]

  fortunate to build relationships with [TS]

  folks at Apple they took a chance on me [TS]

  and I jumped apple and started building [TS]

  out of them is my job was it was totally [TS]

  a dream of mine so that's how you have [TS]

  to graduate [TS]

  did you get your degree and then go to [TS]

  apple yeah yeah that was nice [TS]

  otherwise how do you ever get a job yeah [TS]

  you can get a job that degree we all [TS]

  know that no yeah yeah so [TS]

  how would you explain lvm to somebody [TS]

  who doesn't know stuff about compilers [TS]

  because like we all just rattle off the [TS]

  LEM compiler building tool kit or [TS]

  whatever like but how would you explain [TS]

  that to someone bizarre other listeners [TS]

  of programmers who isn't into may be [TS]

  familiar with how compiler works [TS]

  sure so I mean first we start with what [TS]

  does the compiler a compiler is the [TS]

  thing that takes the code the programmer [TS]

  writes and turns it into something [TS]

  machine can understand and so there's [TS]

  lots of different kinds of computers [TS]

  with lots of different kinds of [TS]

  processors most programmers don't have [TS]

  to think about that or know about that [TS]

  and they wanted program and think in a [TS]

  much higher level than what the the [TS]

  actual processor can do and so the [TS]

  compiler job is to transform what what [TS]

  the human wrote and to something the [TS]

  machine can understand then lvm is a [TS]

  modular system for building different [TS]

  kinds of compilers because there's lots [TS]

  of different reasons why people would [TS]

  want to use compiler technology and I [TS]

  think album was most successful over the [TS]

  years because was built as reusable [TS]

  components kind of like a framework and [TS]

  then the framework can be used to solve [TS]

  lots of different problems and one of [TS]

  the fun things about lvm is that it was [TS]

  eventually over the years used to solve [TS]

  problems that we had never even imagined [TS]

  which is really exciting [TS]

  so one example of that the type of [TS]

  problem is a remember from passwd sees [TS]

  the idea that the xcode ID the GUI that [TS]

  you programs used to to make their [TS]

  applications that very often in that [TS]

  gooey you need to do things that have an [TS]

  understanding of the code but when the [TS]

  compiler is big monolithic thing the [TS]

  best you can kind of do is compile [TS]

  everything in the background and spit [TS]

  out some stuff but when it's a modular [TS]

  toolkit you can take those pieces and [TS]

  just use the part that understands like [TS]

  the syntax tree or whatever and [TS]

  integrate them was that the first use of [TS]

  lvm is something other than like you [TS]

  know a complete like a straight-up [TS]

  compiler that you just point your code [TS]

  and produces output like you know in [TS]

  other words integrating it into [TS]

  applications or was there some use [TS]

  before that [TS]

  well i think the the first use and [TS]

  production was in the opengl stack which [TS]

  end of shipping and a late software [TS]

  update for tiger [TS]

  and as well as in leopard which is 10 [TS]

  dot 4 in 10 5 [TS]

  there was using a completely invisible [TS]

  way to translate to basically repack [TS]

  data and uploaded to the GPU and so when [TS]

  you need to [TS]

  when you're making opengl calls to say [TS]

  GL vertex 3 f or whatever the the [TS]

  low-level GL call is those verses need [TS]

  to be transformed into a very specific [TS]

  data format the GPU can understand and [TS]

  you have a whole bunch of different [TS]

  kinds of calls that can be used to [TS]

  produce for tech surge in other geometry [TS]

  data but you also have a matrix of [TS]

  different kinds of GPUs you need to [TS]

  support and they all have different [TS]

  formats and different capabilities and [TS]

  requirements and so Alabama's used to [TS]

  generate very small chunks of code to do [TS]

  that and it was part of the 64-bit bring [TS]

  up in the leopard timeframe and so that [TS]

  was probably the first completely [TS]

  invisible use of it the that used and [TS]

  proved a lot of the kind of code [TS]

  generation technologies so forgive me [TS]

  one more lvm related things are going to [TS]

  go from what is the compiler all I down [TS]

  to the nitty-gritty stuff here my vague [TS]

  recollection of what you just described [TS]

  the whole video driver thing was that [TS]

  there were files on disk in the shipping [TS]

  us that were basically lvm bytecode like [TS]

  these little bc files and they would get [TS]

  slurped up and converted to machine code [TS]

  appropriate for the GPU and spaz is that [TS]

  am i right about that yeah you're [TS]

  absolutely right and so it basically the [TS]

  we look at is the the code files the lvm [TS]

  the ship with the OS were little [TS]

  snippets of code that then at runtime or [TS]

  recombined and optimized across and so [TS]

  that was kind of the library of [TS]

  primitives that the opengl runtime used [TS]

  to assemble what it was trying to do [TS]

  alright so my question about this and [TS]

  maybe you kind of alluded to with either [TS]

  a slip of the tongue or reviewing [TS]

  understanding is what is the difference [TS]

  between llvm bytecode and what Apple [TS]

  currently brands as bit code [TS]

  oh well DRS first or quote is a [TS]

  historical it's a technical and [TS]

  historical cuz I'm confused by the [TS]

  branding and I'm also confused by the [TS]

  tech so lvm prior to lv m2 dot oh and [TS]

  these version numbers of the open-source [TS]

  version numbers not related to the apple [TS]

  version [TS]

  numbers and their confusingly different [TS]

  for not very interesting reasons but [TS]

  before to do used a really horrible [TS]

  encoding in binary the was branded [TS]

  bytecode because that's what java use [TS]

  had a whole bunch of problems and there [TS]

  was an extensible it was fragile with [TS]

  the ilbm was changing and didn't have [TS]

  compatibility and so in the lvm to do [TS]

  timeframe which josh is probably don't [TS]

  know ten ten years ago or more it's been [TS]

  a long time ago now I redesign the whole [TS]

  thing and it now uses this quote-unquote [TS]

  bit code format and use bit code as a [TS]

  term for two reasons one of which was it [TS]

  was different than bytecode and so the [TS]

  two could be side-by-side in the [TS]

  directory tree for a while and the [TS]

  second reason is that the encoding is a [TS]

  bitstream format instead of a byte [TS]

  stream but that that's the origin of the [TS]

  term bit code you can find documentation [TS]

  in this file format is actually a very [TS]

  general encoding format that you can use [TS]

  for xmltype purposes it's a [TS]

  self-describing file format and multiple [TS]

  different things can be encoded in a bit [TS]

  code that was definitely some confusion [TS]

  about that because when Apple presented [TS]

  it when they presented it as like the [TS]

  required was like the watch apps have to [TS]

  be a bit code Marco you would know this [TS]

  watch's required iOS is still optional [TS]

  and TV is required and they would have [TS]

  you send you put your stuff in bit code [TS]

  and there's a lot of speculation early [TS]

  on about what that meant like in terms [TS]

  of does that mean that what you're [TS]

  uploading is not a finished binary and [TS]

  therefore it's like this machine [TS]

  agnostic and could be targeted any CPU [TS]

  and the more prosaic version like it [TS]

  doesn't mean its CPU agnostic all it [TS]

  means is that Apple has slightly more [TS]

  freedom to like change instructions on [TS]

  the sea views they do target [TS]

  how would you characterize the what what [TS]

  what advantages are there of compiling [TS]

  something to bit code and then uploading [TS]

  it somewhere vs sending someone a binary [TS]

  sure there's a good there's a couple of [TS]

  different advantages for that one of [TS]

  which is that the compiler keeps getting [TS]

  better and so the compiler learns a new [TS]

  optimization at [TS]

  can be applied to existing applications [TS]

  without application developers and [TS]

  reupload their their app that's one [TS]

  small thing other things is our the [TS]

  apple just periodically add new [TS]

  instructions to its at cps one example [TS]

  this historically was the the [TS]

  hilariously named swift check that [TS]

  launched which was the first designed [TS]

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

  iphone 5 if I recall that's right [TS]

  so in this chip they added an integer [TS]

  divided instruction and all the chips [TS]

  before that didn't have the ability to [TS]

  do an integer divided in hardware you [TS]

  had to actually open code it and there's [TS]

  a library function to do that and so [TS]

  that and the other instructions they [TS]

  added were a pretty big deal and use [TS]

  pervasively and the only way to tackle [TS]

  then in and handle that and use it [TS]

  effectively was to introduce an entire [TS]

  new slice and so if you're an app [TS]

  developer back then you had the v7 slice [TS]

  which was all the older ships and then [TS]

  you have to be 7s slice as for swift [TS]

  which was the slice that included the [TS]

  injured but now this is a pain for app [TS]

  developers is paying for Apple everybody [TS]

  has it has to convince all the [TS]

  developers to take it seriously and if [TS]

  it doesn't if app developers don't [TS]

  support it then the new hardware doesn't [TS]

  benefit from it and so--but code allows [TS]

  that kind of thing to go completely away [TS]

  with the code [TS]

  apple just recompile the applications in [TS]

  the store and say haha this this device [TS]

  has an integer divided instruction and [TS]

  it can it works perfectly with the [TS]

  thinning kind of architecture they have [TS]

  for deploying resources to specific [TS]

  device types and all kind of looks [TS]

  together bit code is not a magic [TS]

  solution though it doesn't you can take [TS]

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

  64-bit device that that kind of [TS]

  portability isn't something that can [TS]

  give you [TS]

  notably because that is something that's [TS]

  visible and see and so as you're writing [TS]

  C code you can write if death you know [TS]

  pointers equals 32 and that's something [TS]

  that big coke and abstract / and so it's [TS]

  useful for very specific low-level kinds [TS]

  of enhancements [TS]

  but isn't a panacea that makes [TS]

  everything magically portable at the [TS]

  same thing i would assume for like [TS]

  architecture changes especially there [TS]

  was an Indian difference because Indian [TS]

  this is visible from the sea world so if [TS]

  you can't you can't target different [TS]

  ending this [TS]

  yep yeah so this is not something [TS]

  magically Saul portability problems but [TS]

  is it is very useful for specific [TS]

  problems that Apple's face in the past [TS]

  and then going back to the this life [TS]

  thing that's like terminology like I'm [TS]

  tamaco format where you get to put [TS]

  different architectures worth of [TS]

  executable or is that a different [TS]

  yeah it is i think this technology that [TS]

  goes all the way back to next when next [TS]

  supported really heterogeneous different [TS]

  architectures like pa-risc and and spark [TS]

  and RBC and Intel all back and in the [TS]

  next days and it allows you to compile [TS]

  your application with multiple slices [TS]

  they call them and then there's a tool [TS]

  called lipo which sticks them together [TS]

  and at runtime the OS pics the slice the [TS]

  best matches your cpu and practice and [TS]

  so an app developer can support many [TS]

  different kinds of architectures and [TS]

  then the OS just does the right thing [TS]

  and so in today's world it's very common [TS]

  to build an iOS app for example the for [TS]

  both arms 64 and arm 32 and the way that [TS]

  works in the native in the simplest [TS]

  cases it's just too different binary is [TS]

  that are stuck together and then the OS [TS]

  X the right one to run all right i could [TS]

  go on for this river but I want to [TS]

  that's right all it's just uh is this [TS]

  some pent-up relations about Bitcoin [TS]

  biko but now I feel satisfied we can go [TS]

  on to broader topics we sponsor tonight [TS]

  by Squarespace squarespace.com use code [TS]

  ATP to get ten percent off your first [TS]

  purchase [TS]

  it's the new year you might have a new [TS]

  project you might have a new goal you [TS]

  want to reach and that might involve [TS]

  making a website make your next move [TS]

  with a beautiful website from [TS]

  Squarespace Squarespace sites are so [TS]

  incredibly easy to make and they're [TS]

  incredibly beautiful and the tools are [TS]

  very powerful [TS]

  this is a great combination that i [TS]

  personally have never seen before in the [TS]

  web building space until Squarespace the [TS]

  amount of power you get with these tools [TS]

  is just incredible you can make so many [TS]

  different kinds of sites with so little [TS]

  effort [TS]

  nothing else comes close your site's [TS]

  look professionally designed [TS]

  regardless of your skill level with no [TS]

  coding required although if you want to [TS]

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

  actually can but you don't have to and [TS]

  it probably isn't a good use of your [TS]

  time because Squarespace is such a great [TS]

  platform right out-of-the-box whether [TS]

  you're making website for you or for [TS]

  somebody else if you make of somebody [TS]

  else [TS]

  Squarespace is the place you want to do [TS]

  that because you shouldn't have to use [TS]

  Squarespace and then you're done [TS]

  they're not coming to you anymore [TS]

  squares page will support if they need [TS]

  help and able to figure things out on [TS]

  their own because it's just so much [TS]

  easier to use than whatever CMS you were [TS]

  going to install on their server so [TS]

  check out today go to squarespace.com [TS]

  use code ATP to ten percent off your [TS]

  first purchase when you decide to sign [TS]

  up whether you're making a site for you [TS]

  or somebody else make your next move [TS]

  with squarespace ah so Chris how's your [TS]

  transition from coding to being a [TS]

  manager because from an outsider's point [TS]

  of view it looked like you know you [TS]

  arrived at Apple you were working [TS]

  heavily on llvm like you said earlier [TS]

  but over time I mean even just looking [TS]

  at the resume on your website it seems [TS]

  pretty clear that you are doing a lot [TS]

  more managing lately then perhaps coding [TS]

  or maybe maybe just worked around the [TS]

  clock that would surprise me either but [TS]

  it how how would you how did you feel [TS]

  about your transition from from being [TS]

  just a code monkey to being a manager [TS]

  and I asked in part because at my face [TS]

  my career I am still a code monkey but i [TS]

  think it's not too far away that I might [TS]

  become a manager and so I'm curious to [TS]

  hear you know from from one code monkey [TS]

  to another how did that transition go [TS]

  and what did you learn from it [TS]

  yeah that's that's kind of interesting [TS]

  so I don't think it is a hard transition [TS]

  I'm still writing code i still love [TS]

  writing code that's something that I [TS]

  think is a key part of my identity and [TS]

  but on the other hand is it is very [TS]

  strange so I started managing people at [TS]

  Apple really pretty early on maybe [TS]

  you're so after i joined i started [TS]

  managing two or three people because [TS]

  kind of the best person to to manage the [TS]

  nascent lvm effort at the time and [TS]

  initially it was mostly just being a [TS]

  tech lead and [TS]

  so if you're if you've ever driven a [TS]

  project where you have co-workers that [TS]

  don't report to you that your kind of [TS]

  guiding them and helping make technical [TS]

  decisions that's that's where started [TS]

  over over time I my team grew and [TS]

  eventually ended up picking up and [TS]

  running kind of a second level manager [TS]

  role where you're managing other [TS]

  managers and each step along the way it [TS]

  introduces new challenges and along the [TS]

  way I told myself that managing [TS]

  something that I had to do because that [TS]

  was the best qualified to do it and I [TS]

  didn't want anybody else to and that [TS]

  coding was my real joy and passion and I [TS]

  think the coding really is my joy and [TS]

  passion but along the way [TS]

  looking back I realize that I am [TS]

  actually pretty good at managing and I [TS]

  really do like building teams i like [TS]

  working with people and I've never [TS]

  considered myself to be a people person [TS]

  just how it's just very very odd for me [TS]

  to even think about that but actually do [TS]

  understand how people work and can you [TS]

  know really care about getting the most [TS]

  out of people and working with them to [TS]

  make them successful and so it's been [TS]

  kind of a transition over time but I've [TS]

  always hung onto coding and even though [TS]

  i have a full time management job I [TS]

  could like crazy and nights and weekends [TS]

  and I'm not the kind of guy that likes [TS]

  around idle and eaten and so I've always [TS]

  just been busy so I mean you can get as [TS]

  much of this history as you want to [TS]

  Chris but how did you get Swift to [TS]

  happen inside Apple because from the [TS]

  outside its mysterious to us how big [TS]

  important projects come to be like you [TS]

  know whatever you name the headlining [TS]

  things that are common Apple we hear [TS]

  that Apple does a lot of things that [TS]

  don't see the light of day [TS]

  how did you get probably one of the [TS]

  biggest things ever to come out of Apple [TS]

  an entirely new language created [TS]

  in-house had to get that to happen and [TS]

  not just be some little thing that was [TS]

  off to the side that fizzled often [TS]

  disappear [TS]

  sure well so i can tell you about Swift [TS]

  but i don't think you should project [TS]

  this onto every other project and apple [TS]

  because i'm sure there are different so [TS]

  you just talk about my experiences so [TS]

  started in 2010 [TS]

  you know it's kind of the timing is [TS]

  suspicious because right after a blogger [TS]

  wrote something about how Apple need a [TS]

  new programming language haha i'm not a [TS]

  blogger ok [TS]

  arstechnica wasn't a thing about blog [TS]

  that was a prestigious website still is [TS]

  ok ok hi I stand corrected [TS]

  so I don't remember fight after i read [TS]

  it exactly then that's that was a causal [TS]

  link to starting working on swift or if [TS]

  it was just because I just finish up [TS]

  cleaning c++ support and we launched [TS]

  client c++ and of course if you write [TS]

  C++ good you know how ugly and horrible [TS]

  it is but if you implement c++ it's a [TS]

  whole nother level of the of challenges [TS]

  and so getting that first release out [TS]

  was it was a major accomplishment for [TS]

  for the entire team and it was a major [TS]

  major effort for a ton of people [TS]

  involved and as is typical you get [TS]

  something over the finish line and of [TS]

  course it wasn't fully finished long [TS]

  ways to go but a lot of the [TS]

  intellectually interesting to me at [TS]

  least pieces were we're done [TS]

  that's why I started thinking about okay [TS]

  what comes next [TS]

  right and then implementing other [TS]

  people's stuff like for example the see [TS]

  the c++ the objective-c standards and [TS]

  languages but there were there were you [TS]

  know things that we weren't happy with [TS]

  and things I wasn't happy with and so [TS]

  what started out as just a let's let's [TS]

  see what could be done right let's see [TS]

  what a much simpler language that [TS]

  doesn't need a preprocessor doesn't hate [TS]

  try graphs doesn't need all the weird [TS]

  things that have accumulated into c and [TS]

  c++ over the years but let's see what we [TS]

  can do and just try to build something [TS]

  nicer [TS]

  initially it was really just a me me [TS]

  messing around and nobody knew about it [TS]

  because it wasn't anything to know about [TS]

  but eventually got a little bit more [TS]

  serious and said hey well after playing [TS]

  around a little bit i think that this [TS]

  actually could make sense and so I [TS]

  started talking to my management [TS]

  I'm start talking again engineers are [TS]

  working on playing and they seemed [TS]

  excited about it we got a couple people [TS]

  working on it part time and I can ask my [TS]

  manager that it was interesting enough [TS]

  that we could have a couple of people [TS]

  work on it now this wasn't a major [TS]

  commitment this was a ok well let's see [TS]

  see what there is here and that started [TS]

  a an internal demo schedule and other [TS]

  things we set milestones in place and [TS]

  tried to to to justify the investment [TS]

  that was being put into it eventually [TS]

  got to the point where there was an in [TS]

  it was part of a long that it was posing [TS]

  strategic questions so the strategic [TS]

  questions were the form [TS]

  ok what we have objective-c objective-c [TS]

  is a great language it is probably [TS]

  directly responsible for the iphone [TS]

  being successful because it's really [TS]

  high performance allows you to get your [TS]

  job done it supports high-level [TS]

  frameworks and beautiful way there's a [TS]

  ton of stuff to love about objective-c [TS]

  and while there are few things that are [TS]

  ugly about it some at sides and [TS]

  semicolons and other stuff like that you [TS]

  know we can make objectively better and [TS]

  so the question was always why not just [TS]

  make objectively better right why don't [TS]

  we just keep evolving objective-c and [TS]

  why do we want to face potential [TS]

  disruption in terms of moving the entire [TS]

  development community to something new [TS]

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

  we talked about both sides and we came [TS]

  to realize that yes we can and should [TS]

  make objective-c better and we continue [TS]

  to invest in objective-c we did things [TS]

  like our for example which is a major [TS]

  effort but we got dots [TS]

  well so dot syntax / dated this ah yeah [TS]

  dot dot syntax so the objective c 2 [TS]

  features and the block syntax were all [TS]

  kind of prior to this i worked on blocks [TS]

  but [TS]

  but it wasn't in this time for him and [TS]

  so we were talking about okay well can [TS]

  we just make objectively better and can [TS]

  feature creep into the language that we [TS]

  want for the fullness of time because we [TS]

  can that be much less disruptive to the [TS]

  community and we decided that yeah we [TS]

  can we can move objective-c a lot closer [TS]

  to what we want so we can get automatic [TS]

  memory management with art for example [TS]

  but we can't ever take away the problems [TS]

  that lead to objective-c being unsafe [TS]

  and the fundamental problem was [TS]

  objectives he was built on top of C and [TS]

  C inherently has pointers it has [TS]

  initialize variables that has array of [TS]

  overflow that has all these problems [TS]

  that even if you have full control of [TS]

  your compiler and tools back you just [TS]

  can't fix right to fix to fix dangling [TS]

  pointers you'd have to fix lifetime [TS]

  issues and she doesn't have a framework [TS]

  to to reason about that and retrofitting [TS]

  that into a compatible way into the [TS]

  system just one really work if you took [TS]

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

  see arrays on the stack for example and [TS]

  if you can do that there's entire [TS]

  classes of applications that where the [TS]

  performance just wouldn't be acceptable [TS]

  and so we went around around around we [TS]

  said okay [TS]

  the only way that this can make sense in [TS]

  terms of the cost of the destruction to [TS]

  the community is if we make it a safe [TS]

  programming language which means not [TS]

  safe as in you can have no bugs but safe [TS]

  in terms of memory safety while also [TS]

  providing high performance and and [TS]

  moving the programming model forward and [TS]

  so that was really kind of the ideas [TS]

  that that came together to make swift [TS]

  being worth the investment and being [TS]

  worth being disruptive to the community [TS]

  so a lot of these kinds of pitches and [TS]

  ideas were being held and very small [TS]

  small small meetings and coming out of [TS]

  WBC 2013 is one we in the executive team [TS]

  decided okay let's let's really commit [TS]

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

  is when the developer tools team came to [TS]

  know about it and really started working [TS]

  hard on it and Swift is Swift as a huge [TS]

  huge effort by hundreds of people [TS]

  and that's when all the work on bringing [TS]

  up the debugger in the IDE support and [TS]

  playgrounds and all the other things [TS]

  that the charge into swift one auto [TS]

  really started coming together and and [TS]

  make happen so it's kind of house which [TS]

  came to be lose again one step after [TS]

  another building small things explaining [TS]

  to people why make sense why was worth [TS]

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

  important aspect of Swift being I guess [TS]

  worth taking a risk on was that we told [TS]

  people that we would not guarantee [TS]

  source compatibility in window and that [TS]

  was really interesting because that [TS]

  actually was a big relief for people [TS]

  because internally that meant that it [TS]

  didn't have to be perfect when it [TS]

  launched it meant that we could learn we [TS]

  could adapt and that as long as we're [TS]

  clear with the community about that that [TS]

  that would allow us to get to ultimate [TS]

  greatness and learn from actual usage [TS]

  and practice i think that was a really [TS]

  key piece to Swift coming in actually [TS]

  making it to the market so strategically [TS]

  speaking when you were doing like the [TS]

  work to improve objective-c did you have [TS]

  in mind the ability to potentially [TS]

  leverage some of that work for swift [TS]

  like we're like I'm trying to like the [TS]

  strategy of how you get it done like [TS]

  part of his personal relationships and [TS]

  like knowing the right people [TS]

  part of it is persuasion you have to [TS]

  persuade them with your technical [TS]

  arguments in your business arguments and [TS]

  stuff like that but part of it was part [TS]

  of it also laying the groundwork with [TS]

  with efforts and technologies that have [TS]

  multiple uses [TS]

  yeah absolutely so so long for example [TS]

  that is our it was really clear to me [TS]

  that if if we get to memory safety we [TS]

  had to have automatic memory management [TS]

  and I don't know if you wanna go down [TS]

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

  part [TS]

  arc seem like obviously the right models [TS]

  me and to enter some other people and so [TS]

  we said okay we need to get to an [TS]

  automatic memory management model [TS]

  objective-c isn't because objective-c at [TS]

  the time had the are obviously garbage [TS]

  collector which had numerous problems [TS]

  and so we had to get objective-c to be [TS]

  memory manage and so that's why ark was [TS]

  who became a thing it became really high [TS]

  priority and I think that it's a great [TS]

  example of something with by itself had [TS]

  a huge amount of value to the [TS]

  objective-c community and then after [TS]

  that we had similar other efforts like [TS]

  modules for example that was a huge [TS]

  thing that both improved build time but [TS]

  was also absolutely essential to [TS]

  enabling swift code to eventually just [TS]

  say import UI kit and get everything and [TS]

  so there's a number of things that [TS]

  rolled out over the years and it was [TS]

  really funny at the time because the [TS]

  objective developers externally and even [TS]

  internally to apple always accused the [TS]

  compiler and languages team of taking [TS]

  objective-c on this random walk and they [TS]

  didn't know how to get together and [TS]

  we're where's the strategy and why are [TS]

  you guys working on this and why are you [TS]

  working on some other syntactic sugar [TS]

  for the thing i want and of course we [TS]

  could never tell them but there was [TS]

  there's a good reason and so on another [TS]

  example that is the object literals [TS]

  feature i think we introduce that in [TS]

  2013 fire call work for Ray literals and [TS]

  other things like that that was [TS]

  interesting feature in that it was a [TS]

  relatively small amount of engineering [TS]

  work the broad objectives the objective [TS]

  language much closer to Swift in terms [TS]

  of having arrays and dictionaries [TS]

  literals as part of the language but the [TS]

  real reason for doing it is that it was [TS]

  a small amount of work that move [TS]

  directly forward which allowed the [TS]

  compiler language team to focus on swift [TS]

  because with was a very large amount of [TS]

  work and that was you know at appeasing [TS]

  community and your route solving real [TS]

  problems but you know buying time to [TS]

  actually pour into the multi-year [TS]

  project of making this with language [TS]

  happen [TS]

  that's when you pull out the syntactic [TS]

  sugar programmers love it takes [TS]

  attendance implement here you go that [TS]

  everyone applauded when they see the [TS]

  slide ba I mean in all fairness that was [TS]

  a really big deal anyway so it's kind of [TS]

  building on on the Apple internal [TS]

  reaction thing [TS]

  you know with this this language in its [TS]

  development and then its public release [TS]

  is probably fairly unique language in [TS]

  like the context in which was released [TS]

  you have this this massive company [TS]

  nobody probably had more absurd the [TS]

  objective-c programmers an apple does [TS]

  and see this massive company with tons [TS]

  of internal programmers in a massive [TS]

  internal code base that is using this [TS]

  this other language you have this entire [TS]

  community of iOS and mac developers and [TS]

  then you have the entire world watching [TS]

  every move apple makes and putting under [TS]

  very very heavy scrutiny so the release [TS]

  of his language in this context is [TS]

  probably only very high pressure but [TS]

  also like unique in that you you knew [TS]

  that you were gonna face a lot of people [TS]

  up front like most languages probably [TS]

  start out with a few people using them [TS]

  you know something some random quarter [TS]

  the internet and eventually maybe [TS]

  someone it maybe it slowly takes off [TS]

  this was not that way and so what [TS]

  considerations I guess when into that [TS]

  and also how were you able to convince [TS]

  people even inside of Apple to to use [TS]

  swift and and how is how is that going [TS]

  so I guess there's different answers [TS]

  that four different phases we had no [TS]

  idea that the reaction would be as [TS]

  strong and as positive as it was and so [TS]

  I think we were blown away and caught [TS]

  unaware in some ways but otherwise I [TS]

  think we did the right thing so for [TS]

  example if you look at swift overtime so [TS]

  if one and so if two are as similar to [TS]

  objective sees we can make them so if [TS]

  you look at the way that selectors are [TS]

  named for example it was very there's a [TS]

  very direct correlation if you look at [TS]

  the way objective-c swift one was [TS]

  explained to people it was explained to [TS]

  people as it's just like objective c you [TS]

  can use all your same patterns you can [TS]

  use all same framework she can continue [TS]

  doing object-oriented programming you [TS]

  can do all these things but it also has [TS]

  some cool new things like enums and [TS]

  pattern matching and [TS]

  these other things and so it's great [TS]

  because it's just cleaned up syntax for [TS]

  what you already know [TS]

  plus it has some new cool stuff that you [TS]

  can play with right and then you fast [TS]

  forward a year or two and the Swift [TS]

  community was really taking off [TS]

  it was people were understanding what's [TS]

  with those about Swift open sources also [TS]

  enabled this and so 3 is really about so [TS]

  it's becoming its own language that was [TS]

  really true to itself and standing you [TS]

  know stands by itself and that's where [TS]

  you see the method call syntax for [TS]

  example being radically changed and a [TS]

  lot of things just kind of coming [TS]

  together and really focusing and [TS]

  polishing the language in terms of the [TS]

  the rise of the community the the [TS]

  external community and people using it [TS]

  that was really really hard for us [TS]

  because so my experience has been with [TS]

  lv and with clang clang as a C and C++ [TS]

  compiler and objective-c was completely [TS]

  different than Swift because when we [TS]

  open source and launch claim which was [TS]

  at Apple everybody yond open source it [TS]

  very early on and people said okay [TS]

  you're nuts nobody can build a c++ [TS]

  compiler that's that's not a thing why [TS]

  are you even messing around with this [TS]

  and you know we got one contributor to [TS]

  the project and we had no users and then [TS]

  we got you know month later we might get [TS]

  another contributor or another person [TS]

  part-time the setting and patches and it [TS]

  was a very slow growth that that was [TS]

  ultimately really great because it was [TS]

  relatively low pressure was swift and [TS]

  with the the way was launched it was [TS]

  completely different because it went [TS]

  from nobody knowing about to everybody [TS]

  knowing about it overnight literally and [TS]

  there being so much excitement so many [TS]

  people that were nervous and had bad [TS]

  reactions other people that were super [TS]

  excited but a lot of people that were [TS]

  suddenly hitting bugs and having [TS]

  challenges and problems and why did you [TS]

  do this and why didn't you do that and [TS]

  you know some of that was misguided just [TS]

  because they didn't know Swift yet but [TS]

  other others other aspects were really [TS]

  spot-on and that was 12 really started [TS]

  learning about how people are using and [TS]

  started [TS]

  during moving Swift and Swift between [TS]

  the WBC lon chance with one auto release [TS]

  change dramatically and that was a [TS]

  really really hard time for the entire [TS]

  team because we really want to get it as [TS]

  close as we could what we wanted but we [TS]

  had a very short amount of time to do so [TS]

  and I think that's been true first with [TS]

  two and so with three as well where we [TS]

  have really high goals for the team and [TS]

  really high goals for what we want to [TS]

  get done and that makes it a lot a lot [TS]

  of pressure and a lot of stress but it's [TS]

  I think worth it to serve and see the [TS]

  community around Swift grow and see [TS]

  people use it and see people learn it [TS]

  and it's been a lot of fun so I'm [TS]

  curious [TS]

  I know when Swift first came out it was [TS]

  hard to get a lot of adoption inside of [TS]

  apple for various you know tooling [TS]

  reasons uh among men maybe whatever else [TS]

  was going on [TS]

  how is internal adoption going today [TS]

  like re seeing meaningful adoption hours [TS]

  at most i was programs were using it and [TS]

  not anybody inside the White team itself [TS]

  has specific goals they need to achieve [TS]

  before there can be truly [TS]

  across-the-board adoption at Apple's ABI [TS]

  stability is the number one thing that [TS]

  prevents framework developers for [TS]

  example from adopting Swift so that's a [TS]

  really important thing that's one of the [TS]

  reasons it's always a really high [TS]

  priority but switch has been adopted by [TS]

  application developers and other things [TS]

  the doc is publix with playgrounds app [TS]

  is public the music app in iOS is [TS]

  publicly known so they're they're [TS]

  definitely some big big adopters more [TS]

  broadly though that the big problem is [TS]

  that i think and i will speak for [TS]

  everybody but in many many people doing [TS]

  objects development and Apple are [TS]

  chomping at the bit they want to be [TS]

  using Swift and so it's it's really [TS]

  matter just getting the technology [TS]

  problem-solve didn't get you know [TS]

  checking out the things are holding [TS]

  people back it's not about you know [TS]

  people dragging their feet and not [TS]

  wanting to use it makes sense that's [TS]

  really also get it from from the outside [TS]

  it's so hard to figure out you know is [TS]

  is Apple internally like oh really [TS]

  or for example internally like you said [TS]

  like really excited and I'm sure that [TS]

  there's some of both but [TS]

  but that's really good to hear yeah and [TS]

  i think it's also changed over time when [TS]

  it first came out of course it was a [TS]

  huge surprise for most of the software [TS]

  team and so you know many people went [TS]

  through the usual phases of matter and [TS]

  no objective c why would have learned [TS]

  this new thing objective-c is great and [TS]

  objective-c is great so that that's [TS]

  that's an objective statement right but [TS]

  I think things have shifted over time [TS]

  and as switches matured it's definitely [TS]

  become a lot more appealing and one [TS]

  other technology problem that is [TS]

  hilarious but also really important is [TS]

  the Apple frameworks that has to support [TS]

  32 the mac apps in 37 mac apps have this [TS]

  interesting challenge of they have [TS]

  what's called the classic objective-c [TS]

  runtime which doesn't support things [TS]

  like non fragile instance variables and [TS]

  things like that and so at some point [TS]

  I'm the Swift team will need to make the [TS]

  Swift runtime work in that mode or [TS]

  figure out some other solution to adapt [TS]

  it because until that happens it won't [TS]

  be possible use Swift an appt get for [TS]

  example [TS]

  well that's fascinating so kind of [TS]

  taking a more broad view do you could [TS]

  you name either you're most proud [TS]

  accomplishment during your time at Apple [TS]

  that you can discuss publicly anyway or [TS]

  if not you're most proud just won the [TS]

  first one that jumps to mind [TS]

  wow I don't have been really fortunate [TS]

  to work on so many really important [TS]

  projects and I mean I think that between [TS]

  lvm and swift for example it's really a [TS]

  hard call [TS]

  I'm Swift I think impacts more people in [TS]

  terms of the number of people would [TS]

  actually know they're using it and want [TS]

  to learn it and things like that but i [TS]

  think the lvm has been picked up and use [TS]

  so far across industry and its kind of [TS]

  standardizing the world's compilers I [TS]

  think that's probably more profound at [TS]

  this point so it's really it's a start [TS]

  calling and that they're there are a ton [TS]

  of really really great opportunities [TS]

  that I've had and spend a lot of fun [TS]

  over many years now [TS]

  also outside the open-source pieces [TS]

  working with the expert team and working [TS]

  with the other teams and developer tools [TS]

  has been really phenomenal [TS]

  I mean there's so many great people at [TS]

  Apple and Android developer tools it's [TS]

  just been a joy [TS]

  so what do you expect to miss the most [TS]

  about being an apple and I'm gonna take [TS]

  I'm gonna let you expand on this but I'm [TS]

  gonna take it off the table and so you [TS]

  have to pick like your second choice [TS]

  you're gonna say like you miss the [TS]

  people because of course you do right [TS]

  yes that is actually what i would say [TS]

  right but everybody you know so you can [TS]

  go ahead and tell us about all the great [TS]

  people your example but besides that [TS]

  what do you expect to miss most about [TS]

  Apple the company working well so the [TS]

  great thing about Apple and the thing [TS]

  that I don't think that many people [TS]

  really get about Apple is it is really [TS]

  one of the few best place in the world [TS]

  where you can work hard but also work on [TS]

  products that ship and the ship to [TS]

  millions of people so that your hard [TS]

  work ends up mattering right there [TS]

  there's a lot of places you can work [TS]

  hard there's a lot of places that you [TS]

  can work on interesting things but [TS]

  there's also a lot of places end up not [TS]

  shipping a lot or or if they ship it [TS]

  very few people actually use it and so [TS]

  apples really really magical in that [TS]

  combines being you know being able to [TS]

  work hard and in do great things with it [TS]

  actually mattering and to me that that's [TS]

  the thing that that is just so so [TS]

  phenomenal about Apple so so moving on [TS]

  to your new role at Tesla do you think [TS]

  that Swift will still be a major part of [TS]

  your work life in some way like you know [TS]

  or will basically be like something you [TS]

  do in the evenings and weekends because [TS]

  we all know that that Silicon Valley [TS]

  tech startups don't usually work people [TS]

  too hard you're gonna have tons of free [TS]

  time [TS]

  yeah so this jump on making is [TS]

  definitely do a cushy no easy that right [TS]

  that that's what I'm looking for here uh [TS]

  so i don't know we'll have to see i [TS]

  haven't started yet and i think it's [TS]

  going to be very challenging job and one [TS]

  of the reasons I'm excited about it [TS]

  because I really want to throw myself [TS]

  into another heart technology problem [TS]

  and so I'm really excited about that i [TS]

  do expect to be involved with the design [TS]

  of swift and helping helping with the [TS]

  core team and helping Swift evolution [TS]

  process and helping in and allow that [TS]

  kind of respect but one of things to [TS]

  keep in mind is that Swift was actually [TS]

  really tiny slice of my job at apple and [TS]

  so you know I had a very full schedule [TS]

  dealing with lots of other stuff and it [TS]

  was already kind of nights and weekends [TS]

  project that i was coating on it and [TS]

  contributing at the level that I was so [TS]

  I'm hoping with all be a big change but [TS]

  honestly i'll have to see obviously I [TS]

  care a lot about Swift and I really want [TS]

  to get to its go over world domination [TS]

  so we're sponsor tonight by eero go to [TS]

  eurocom at the ER o.com and use code ATP [TS]

  when you order for free expedited [TS]

  shipping Wi-Fi is broken [TS]

  you probably have one Wi-Fi router with [TS]

  if you're lucky a bunch of antennas on [TS]

  that look hideous and you're trying to [TS]

  cover your whole house with Wi-Fi but it [TS]

  just doesn't reach every room [TS]

  it just doesn't reach everywhere because [TS]

  Wi-Fi is hard when you're recovering [TS]

  from 1.0 solve this problem by having a [TS]

  router system where they will they had [TS]

  this little ear units nice attractive [TS]

  it's tastefully designed there's not a [TS]

  bunch of antennae sticking out of it and [TS]

  you can buy one of them or you can buy [TS]

  10 of them are a number in between and [TS]

  that you put them around your house and [TS]

  each one covers the area in Wi-Fi and [TS]

  they all talk to each other [TS]

  wirelessly so you don't have to run [TS]

  wires love your house you can have your [TS]

  entire house blanketed in Wi-Fi with 0 [TS]

  and they talk to each other over this [TS]

  mesh network so it's even faster than [TS]

  previous if you ever use like an [TS]

  extender and centers are very slow [TS]

  it's even faster than that by a lot and [TS]

  0 is true enterprise-grade quality and [TS]

  performance they have everything you [TS]

  need from encryption features two things [TS]

  like parental controls and that they're [TS]

  actually updating it over time they've [TS]

  done over 12 updates since launch with [TS]

  more to come to add features they have [TS]

  an app for very easy setup and they have [TS]

  incredible customer support if you need [TS]

  it [TS]

  they recommend 10 per thousand square [TS]

  feet so typical home will have two or [TS]

  three of them they got a three pack as a [TS]

  pretty reasonable starting point for [TS]

  most everybody there's a 30 day [TS]

  money-back guarantee if you don't like [TS]

  it or if you could buy too many you want [TS]

  to return a couple of them if you [TS]

  I'm not eating as many as you bought [TS]

  check it out the reviews are stellar [TS]

  they back this up go to 0 comments de ro [TS]

  dah calm and use code ATP when you order [TS]

  for free expedited shipping [TS]

  thank you very much to ero for [TS]

  sponsoring our show ah you know [TS]

  obviously Swift is open-source I don't [TS]

  know if you're aware that Chris but uh [TS]

  huh i'm looking at yeah right at how do [TS]

  you feel like it's been going so far in [TS]

  i'm assuming similar to John you know [TS]

  I'm gonna take away the obvious answer [TS]

  it's going well but it may be too kind [TS]

  of Q conversation what's been really [TS]

  surprising about going open source and [TS]

  and you can get a specific or as broad [TS]

  as you'd like to be but I got to imagine [TS]

  that that you guys had a bunch of [TS]

  expectations about what going open [TS]

  source would be like and i would imagine [TS]

  some of them are accurate and some of [TS]

  them weren't so how do you feel like the [TS]

  Swift open source project has been going [TS]

  yeah so I think that 22 to summarize [TS]

  it's not just going well it's going far [TS]

  better than we ever anticipated and that [TS]

  caused problems so for context [TS]

  I and many of the other people on the [TS]

  team had quite a bit of open-source [TS]

  experience so elevated claim for example [TS]

  open-source they they were they are [TS]

  vibrant and amazing communities with [TS]

  hundreds of contributors and dozens of [TS]

  companies are collaborating in public [TS]

  and doing really amazing stuff even some [TS]

  of the most staunch competitors you know [TS]

  AMD AMD and intel and AMD and nvidia or [TS]

  you know the these kinds of companies [TS]

  that really you know don't get along on [TS]

  the business side of things but the [TS]

  engineers were great at working engineer [TS]

  to engineer and solving problems and [TS]

  stay focused on making things better so [TS]

  with Swift we assume that would be very [TS]

  similar to that but what we found is [TS]

  that there was a major difference [TS]

  between launching Swift and launching [TS]

  something like playing for example which [TS]

  is that when Swift losses open source [TS]

  which was december third just over a [TS]

  year ago in RI had I don't know a [TS]

  million users and we're playing [TS]

  started and every yond and didn't really [TS]

  care and grew slowly Swift open-source [TS]

  started and was amazingly fast moving [TS]

  changing tons of people hundreds of [TS]

  patches on the first day it was totally [TS]

  crazy and we didn't really know what to [TS]

  do and so I mean it's I i am like super [TS]

  impressed with the the Swift open source [TS]

  community and all the people involved in [TS]

  the energy and just think it's just it's [TS]

  hard it's hard to believe how great [TS]

  everything is but it it really did [TS]

  create problems because we had to figure [TS]

  out things like how we're gonna stay up [TS]

  on in terms of the patch volume [TS]

  okay we're getting hundreds and hundreds [TS]

  of emails a day to the Swift evolution [TS]

  mailing list what are we going to do [TS]

  about that [TS]

  how do we balance apples goals for [TS]

  pushing Swift forward with the goals of [TS]

  the community which are somewhat more [TS]

  chaotic and last directed and I think [TS]

  that over last year we've learned a lot [TS]

  and you can see that reflect in terms of [TS]

  how the project is being managed and how [TS]

  how things are being done but it's [TS]

  always been super important to be not [TS]

  just open source but I guess if you look [TS]

  at an open source project there's [TS]

  there's three kind of easy levels to to [TS]

  look at it the first basic requirement [TS]

  the ssi to be open sources to make your [TS]

  code available right and so you can [TS]

  produce tarballs periodically and that's [TS]

  technically open source you can allow [TS]

  contributions and if you do that through [TS]

  pull requests or patches or whatever [TS]

  then people can engage with it and make [TS]

  the code better [TS]

  there's open community so not only can [TS]

  do you accept a patch but you actually [TS]

  discuss things and talk about things in [TS]

  public and then there's open design and [TS]

  with Swift we went all the way and I [TS]

  think it was totally the right thing to [TS]

  do because we really want to benefit [TS]

  from all the smart people in the world [TS]

  and it was it and still is amazing but [TS]

  it's also very challenging [TS]

  yeah I can imagine so building upon the [TS]

  open sourcing of Swift it was very [TS]

  surprising to me and I think a lot of [TS]

  the community that Apple chose to upload [TS]

  the entire commit history it wasn't just [TS]

  a here's day one initial commitment you [TS]

  know 11 gazillion files and [TS]

  the gazillion lines of code was that [TS]

  plan from the start that you guys would [TS]

  upload the entire history i would say it [TS]

  was planned from the start that we'd [TS]

  upload the entire history but it was [TS]

  kind of assumed from the start that it [TS]

  would be open source at some point [TS]

  interesting and if you look at apple's [TS]

  history i think that's that's in the [TS]

  tool space I think that's fairly [TS]

  straightforward lvm wasn't started at [TS]

  Apple but almost almost everything Apple [TS]

  does end up going public in the same [TS]

  space [TS]

  clang was started at apple and claimed [TS]

  was contributed by Apple to the album [TS]

  project and that included his full [TS]

  revision history other projects like ldb [TS]

  and lip c++ compiler RT and all these [TS]

  other smaller projects were started at [TS]

  apple and contribute to the open source [TS]

  project so Swift it was kind of assumed [TS]

  that that would happen at some point the [TS]

  the real question was when when is the [TS]

  right time for that to happen and if you [TS]

  remember the days of Swift window Swift [TS]

  1022 dunno in particular was a super [TS]

  chaotic super learning as we went and [TS]

  trying to keep up with the community and [TS]

  trying to keep up with the pace and the [TS]

  challenges that people were facing and [TS]

  trying to get key pieces like the [TS]

  air-handling model and protocol [TS]

  extensions and all that kind of stuff [TS]

  that it always been planned but one [TS]

  didn't make it into Swift window and so [TS]

  really focusing on that was the priority [TS]

  and so we just decided that open [TS]

  sourcing Swift at 10 for example would [TS]

  be really actually bad for the Swift [TS]

  community because there are major pieces [TS]

  language that weren't there we would [TS]

  have to spend a lot of time community [TS]

  building and try to explain to people [TS]

  the difference between what was not [TS]

  there but should be there and what is [TS]

  you know there and known broken and we [TS]

  had to do a lot of that one swift was [TS]

  eventually open source than in last year [TS]

  right after Swift to toronto but it was [TS]

  a much better place and the team could [TS]

  actually handle the load of doing the [TS]

  community and we didn't expect the kind [TS]

  response we got but we knew that [TS]

  building a vibrant open source community [TS]

  is a lot of work and it's not something [TS]

  to be under underestimated we want to [TS]

  make sure that Swift to was out the door [TS]

  and it wasn't kind of a resource [TS]

  contention between do we finished with [TS]

  two or do we start open source and that [TS]

  and that's why I was announced to be [TS]

  open source by the end of the year [TS]

  because that meant that we can start [TS]

  working on the open-source [TS]

  infrastructure project bringing up all [TS]

  the other stuff that takes to make [TS]

  something open source after Swift is [TS]

  complete so my recollection of the Swift [TS]

  three in the planning stages was that [TS]

  ABI compatibility was somewhere in the [TS]

  list of I'm not gonna call them goals [TS]

  but somewhere in the list of items that [TS]

  were in contention for a swift 3 and at [TS]

  some point along the development process [TS]

  of Swift 3.avi comparability got [TS]

  postponed and given what you just said [TS]

  about the importance of ABI [TS]

  compatibility for the framework people [TS]

  inside apple or whatever [TS]

  what can you say about that is the did [TS]

  you learn lessons from ABI compatibility [TS]

  being planned for the three or do you [TS]

  think like it was never really hard and [TS]

  fast goal and you totally made the right [TS]

  call to delay it or are you disappointed [TS]

  that it didn't make it [TS]

  I'm i think many of those things I mean [TS]

  we're disappointed that it got delayed [TS]

  but it was totally the right time I [TS]

  think that there's a couple of things to [TS]

  learn from that one of which is software [TS]

  schedule planning is hard but breaking [TS]

  this [TS]

  yeah so that that's definitely still [TS]

  thing there's also that we didn't [TS]

  anticipate the so the original plan [TS]

  you're referring to was announced before [TS]

  switch is open source or super sorry was [TS]

  announced the same time so it was open [TS]

  source and so we had no idea that the [TS]

  community would descend on swift and [TS]

  suddenly have all these new demands and [TS]

  consume so much time and energy from [TS]

  that have took away from programming to [TS]

  do the community building peace so that [TS]

  was part of it [TS]

  another part of it is that even [TS]

  stability is super important but it's [TS]

  not as important as people think it is [TS]

  for application developers it's really [TS]

  important to apple but what we realized [TS]

  in the three timeframe is that the thing [TS]

  after developers would benefit from the [TS]

  most was actually sourced ability so who [TS]

  actually wants their application be [TS]

  broken when they get new version of [TS]

  xcode [TS]

  well really nobody right and so and so [TS]

  kind of halfway through the release we [TS]

  pivoted and source can soar stability [TS]

  became the goal and so I'm really [TS]

  excited that ones with the three don't [TS]

  want or so for comes out that I'm still [TS]

  gonna be able to build with three code [TS]

  and even if there are minor changes that [TS]

  need to be made for one reason or [TS]

  another that you can upgrade and you [TS]

  have great compatibility with your old [TS]

  code and you don't have to start the [TS]

  migrator before you can do anything so [TS]

  it's gonna be a great improvement for [TS]

  people's lives [TS]

  alright so moving on a little bit to [TS]

  that kind of this branch topic here of [TS]

  server-side Swift with on linux things [TS]

  like this is is switched on the server [TS]

  something that you know I i know it's [TS]

  possible and there's like some seemingly [TS]

  some early efforts now to get that going [TS]

  it do you see this as like a major goal [TS]

  first trip to the language and you're [TS]

  not not any kind of official capacity [TS]

  just like you as a person who who likes [TS]

  and user Swift and has as a you know a [TS]

  strong role in the community like is [TS]

  server-side Swift a thing that you want [TS]

  to be like a major thing to compete with [TS]

  you know things like Python rails and [TS]

  stuff on the server or is it intended [TS]

  more to be kind of like a specialized [TS]

  thing that is probably not going to be [TS]

  in widespread use by like web and [TS]

  back-end programmers so I think that [TS]

  everybody involved with the project [TS]

  wanted to be the way to do server [TS]

  development and I think that to [TS]

  understand that you have to understand [TS]

  were just kind of entering phase 2 [TS]

  Swift's world domination plan so this [TS]

  will probably sound insane but maybe in [TS]

  a few years it will sound less than [TS]

  saying it but the way to look at it the [TS]

  way i look at it and the way that many [TS]

  other people have to look at it is that [TS]

  we want swift be the next big thing [TS]

  right we wanted to be more popular than [TS]

  Java was or is we want to be more [TS]

  popular than Python we want to be maybe [TS]

  even more popular than see someday right [TS]

  that's that would be a stretch but but [TS]

  that would be great and so if if thats [TS]

  problem solved how do you solve that [TS]

  problem well open source is a huge piece [TS]

  of that right without open-source it's [TS]

  not going to be available in other [TS]

  people's platforms it's not gonna be [TS]

  used in education and teaching as that's [TS]

  just not gonna happen and so open [TS]

  sources a major piece of that if you go [TS]

  back farther before that Swift world [TS]

  domination doesn't happen unless with [TS]

  games relevance right and I think Swift [TS]

  has nailed the relevance side of things [TS]

  with the iOS and a platform development [TS]

  side of the story were you know maybe [TS]

  not Marco but their new most people are [TS]

  pushing the Swift very quickly and [TS]

  seemed very happy using actually i [TS]

  started using it today [TS]

  okay good call i switch today in honor [TS]

  of this interview and I wrote my first [TS]

  Swift today in an entire extension and [TS]

  overcast report was written Swift Wow a [TS]

  fantastic you go up proud of you is it [TS]

  is a good day [TS]

  yeah and more and more will be coming [TS]

  although there's a lot of jealousy there [TS]

  so i probably long way away from being [TS]

  all Swift yeah well that's that's okay [TS]

  sweetie loves objective-c exactly the [TS]

  way i look at it is that the first steps [TS]

  with world domination is getting to [TS]

  relevance and 24 language gets relevance [TS]

  that needs a killer app killer app right [TS]

  needs a reason why people would want to [TS]

  use it and for swift that's clearly iOS [TS]

  and mac and other Apple platform [TS]

  development it seconds be open source [TS]

  third it needs to go beyond right and [TS]

  then the next the next step the frontier [TS]

  where it makes sense to expand out to or [TS]

  if you're no real time strategy game [TS]

  player the the natural expansion is is a [TS]

  a place where the language is where the [TS]

  language actually only needs a few [TS]

  things added to it to be good and so I [TS]

  think switch server development is [TS]

  really that next step because for [TS]

  development is very similar to app [TS]

  development in terms of the kinds of [TS]

  code that you need to write it's very [TS]

  similar terms of many of the frameworks [TS]

  the major missing piece is that it needs [TS]

  to run on linux and other pertinent [TS]

  server development platforms in and [TS]

  there's then the whole library ecosystem [TS]

  that needs to be built out [TS]

  and so I think that we're in right now [TS]

  is we're in a really exciting phase [TS]

  where those platforms are being built [TS]

  those frameworks and different pieces of [TS]

  infrastructure coming together and [TS]

  that's that's really the idea behind [TS]

  this with server working group that's an [TS]

  official part of Swift org is getting [TS]

  all the people working in the space to [TS]

  talk to each other and i'm very excited [TS]

  about that i'm going beyond that though [TS]

  you know it with the goal of being more [TS]

  relevant than Java for example if we're [TS]

  going to pick on java is the dream of [TS]

  Swift is to scale the way from scripting [TS]

  language all the way down to low level [TS]

  systems programming like you could write [TS]

  a colonel in it or you write some [TS]

  firmware on it and i think the [TS]

  descripton side of it is maybe more [TS]

  straightforward when when this the [TS]

  community and the core team have time to [TS]

  deal with it because they're talking [TS]

  about in integrating regular expressions [TS]

  integrating multi-line string literals [TS]

  and integrating other other features [TS]

  like that that people love from [TS]

  scripting languages and those are big [TS]

  projects but those are kind of well [TS]

  known i guess and they will fit and drop [TS]

  right into the existing existing system [TS]

  the Swift provides systems programming [TS]

  is I think the big the big next frontier [TS]

  and I think that's where Swift can [TS]

  really distinguish itself from java or [TS]

  other other competitive languages [TS]

  because among other widely used [TS]

  languages out there there's really [TS]

  nothing that can unseat see your C++ [TS]

  there's rust for example is an [TS]

  interesting language but hasn't got a [TS]

  lot of adoption yet and I think the [TS]

  Swift is more interesting than rust and [TS]

  some of the high-level application [TS]

  demands but we'll see rust is a great [TS]

  language as well and so I'm really [TS]

  interested to see the swift for systems [TS]

  programming work get going and I think [TS]

  that would be a couple years out before [TS]

  it really comes together but once it [TS]

  does i think the Swift can be really be [TS]

  the next big thing and I'm excited about [TS]

  that [TS]

  so just a second back a second to the [TS]

  server role of it you know possibly [TS]

  taking over there like you know that i [TS]

  would love like you know Here I am using [TS]

  PHP and just see these these two [TS]

  languages that are fairly old and I mean [TS]

  PHP is way more hated than Jesse he but [TS]

  but you know this is the two languages i [TS]

  use for various historical and practical [TS]

  reasons it on the server a lot of what [TS]

  what makes a language succeed or fail on [TS]

  servers and web development is not [TS]

  necessarily how good of a language it is [TS]

  but how how healthy and universal and [TS]

  develop the framework surrounded r44 [TS]

  things like web development how [TS]

  practical and easy it is to deploy and [TS]

  run on servers so you know Swiss being a [TS]

  being its own good language that alone I [TS]

  don't think is enough to get it to get [TS]

  traction on the server do like do you [TS]

  think is it necessary for the Swift team [TS]

  like the the core group who's running [TS]

  Swift whether that's Apple or the [TS]

  community of contributors with apple or [TS]

  whatever else is important for them to [TS]

  develop and and kind of make official an [TS]

  official set of server and web [TS]

  frameworks and libraries and tools or do [TS]

  you think it's sufficient to take the [TS]

  risk to let the community do that but at [TS]

  the risk of fragmentation and maybe [TS]

  nothing ever taking off also less [TS]

  interesting question and keep in mind [TS]

  that i don't have a lot of practical [TS]

  experience building server apps so this [TS]

  is not missing much [TS]

  my my my my opinion based on talking to [TS]

  other smart people so the approach this [TS]

  with projects taking is looking to [TS]

  standardize what's colloquially but not [TS]

  correctly known as a server foundation [TS]

  correctly known as a server foundation [TS]

  kind of technologies so it will not be [TS]

  named for foundation but that kind of an [TS]

  idea and so take the encryption the [TS]

  network transport the HTTP kinds of [TS]

  things that that everybody needs for [TS]

  server technologies and standardized [TS]

  that as part of this project but at [TS]

  least in the short term not look to [TS]

  standardize a specific web framework [TS]

  because they're half dozen different [TS]

  completely different approaches that are [TS]

  interesting different different kinds of [TS]

  demands and I don't think there's a [TS]

  clear winner yet it's possible that [TS]

  after the first few rounds shake out [TS]

  there will be an equivalent you know [TS]

  ruby-on-rails kind of dominant pattern [TS]

  and a framework that emerges and if so [TS]

  then maybe that would make sense but I [TS]

  don't think it don't think Swift needs [TS]

  for there to be a winner the high level [TS]

  as far as what can the Swift core [TS]

  language and language and compiler folks [TS]

  do about this [TS]

  I think there's really two things one of [TS]

  which is this what package manager I [TS]

  think the package manager is really key [TS]

  to scaling out the ecosystem and getting [TS]

  people to work together with the common [TS]

  ecosystem it's also the best and i think [TS]

  only way to build swift code on linux [TS]

  and out and other platforms they don't [TS]

  mean to single out linux it's just it's [TS]

  the biggest server development one so i [TS]

  think that's a big piece i think the [TS]

  other piece that there will be really [TS]

  amazing is when the concurrency model [TS]

  comes up because i think that's one of [TS]

  the reasons that makes go particularly [TS]

  compelling for server development is [TS]

  that has really well developed story [TS]

  there along with all the libraries to go [TS]

  together for server and cloud [TS]

  development and so when the pieces the [TS]

  concurrency model's start coming up [TS]

  which will probably the first pieces [TS]

  will ship in Swift five is my guess that [TS]

  will make swift and even more compelling [TS]

  can answer for that kind of space but i [TS]

  don't think i don't think we need a [TS]

  server language feature and that's what [TS]

  you're asking [TS]

  so going to the other extreme from the [TS]

  server-side scripting to gain back the [TS]

  systems programming one thing I've seen [TS]

  related to this and and i think this all [TS]

  stems from [TS]

  with this quote from the original apple [TS]

  Swift book that Swift was designed to [TS]

  scale from hello world to an entire [TS]

  operating system like that that it's the [TS]

  world domination plan was there from the [TS]

  beginning right yep you know absolutely [TS]

  in the first paragraph of the thing when [TS]

  I talk to people now about swift as a [TS]

  systems language often wanna hear is [TS]

  people relating the ways that is not [TS]

  ready to be a systems language yet which [TS]

  is you know what you just talked about [TS]

  but then deciding based on that that [TS]

  because it's not ready to be a systems [TS]

  language now it never will and then they [TS]

  dismiss it like other words like that [TS]

  may have been the plan but clearly were [TS]

  reasons x y&z I you still have to you [TS]

  see for this therefore Swift is just a [TS]

  way to ride my apps for iOS and mac OS [TS]

  and how I mean I'm not sure what you can [TS]

  do with it but do you think about how [TS]

  how to change perception as the language [TS]

  its older and its old age now it's up to [TS]

  three-point out like this [TS]

  it starts at you know that that I nobody [TS]

  puts whipped in the corner like that [TS]

  that people think they know people think [TS]

  they know what Swift is and they say was [TS]

  this language it does this thing and [TS]

  that your plans for world domination may [TS]

  be thwarted by the idea that people are [TS]

  pigeonholing language because it's been [TS]

  around for a few years and I think they [TS]

  know it took that you're onto something [TS]

  I think that's real problem i don't [TS]

  think systems programming is the place [TS]

  where that's a problem yet though [TS]

  because if I don't think it's it's [TS]

  reasonable for me as a crazy man going [TS]

  around saying swift swift will someday [TS]

  do systems programming really well you [TS]

  should you should remember that I don't [TS]

  think that's that's a good way to spend [TS]

  time at the moment when it does that [TS]

  then the question becomes how do you [TS]

  make that make people aware of that and [TS]

  how do you get get people to change [TS]

  their prior misconception but at that [TS]

  point I'm you can a very practical [TS]

  look you can do this and this is so [TS]

  great and now you get all the advantages [TS]

  to see but it's safe then you could [TS]

  point to specific reasons why it's [TS]

  better so I'm not too worried about it [TS]

  in the in the space of systems [TS]

  programming but i think there is a [TS]

  practical from today which is Swift is [TS]

  open-source the Apple development [TS]

  community knows what very well but [TS]

  much everybody else doesn't right and if [TS]

  you go to a random save the next [TS]

  developer just to continue talking about [TS]

  linux they all perceived Swift as being [TS]

  an apple thing and only relevant to [TS]

  apple platforms and they don't even [TS]

  learn about it right and so I think that [TS]

  there is an interesting challenge there [TS]

  and probably the best way to do that is [TS]

  for deep existing communities to keep [TS]

  just growing and as this switch on [TS]

  server community grows and more and more [TS]

  people are successful building and [TS]

  deploying server after and Swift i hope [TS]

  that naturally more people will become [TS]

  aware of that effort will will then find [TS]

  out about Swift maybe try it out find [TS]

  out that it's actually really great and [TS]

  if it's not really great let us know so [TS]

  that people can fix whatever the [TS]

  problems are and then just kind of grow [TS]

  out but i'm i'm actually perfectly okay [TS]

  with the growing a little bit slower [TS]

  than it has been so John asked about you [TS]

  know the span between basically [TS]

  low-level systems programming and [TS]

  high-level applications programming i'm [TS]

  also curious that it seems like 15 / [TS]

  Apple have have presented Swift as not [TS]

  only spanning that wide range which [TS]

  seems impossible but also spanning a [TS]

  wide range of skill levels of programmer [TS]

  so you know there's there's the Swift [TS]

  playgrounds up an ipad where you have [TS]

  total novices writing Swift as their [TS]

  first language all the way up to people [TS]

  writing like you know systems-level [TS]

  things and and complicated apps you were [TS]

  very experienced programmers it do you [TS]

  think is even is it possible for [TS]

  language to do all of these things well [TS]

  and if so do you think Swift has [TS]

  achieved that so I do think it's [TS]

  possible i think it has achieved it for [TS]

  the things that is doing so far and i [TS]

  think the challenges that as new [TS]

  capabilities get added that it doesn't [TS]

  jeopardize that [TS]

  but knowing knowing the the folks [TS]

  involved and the source compatibility [TS]

  guarantees and everything else like that [TS]

  i'm pretty sure that won't be a problem [TS]

  going forward [TS]

  here's the way I look at swift you'll [TS]

  never you're unlikely to run to anybody [TS]

  that says Swift is a simple language [TS]

  right [TS]

  so it is a complicated language it's not [TS]

  simple in the sense that scheme is [TS]

  simple for example it's also not simple [TS]

  in terms of way talk to Jesse developer [TS]

  that the law claim that objective c is [TS]

  simple ignoring all the sea parts i [TS]

  would never claim that for the record [TS]

  alright so see itself as it is a very [TS]

  complicated weird language is just that [TS]

  people don't typically use the weird [TS]

  part right and so that perceives he's [TS]

  being very simple the so the way the way [TS]

  the way i project the Sun Swift is that [TS]

  the the secret to Swift and being easy [TS]

  to learn easy to use as a teaching [TS]

  vehicle but also powerful enough to [TS]

  solve the problems that need to be [TS]

  solved is that the complexities inherent [TS]

  in the language needs to be [TS]

  progressively disclosed so imagine that [TS]

  someday Swift had inline assembly [TS]

  support for example only really low [TS]

  level systems people are really bit [TS]

  twiddling assembly programmers would use [TS]

  this feature everybody else would ignore [TS]

  it and it would not increase the [TS]

  apparent complexity to language of the [TS]

  language to people who didn't know it [TS]

  was for feature like that the most [TS]

  important thing is to make the syntax [TS]

  clear so that when you run up into it [TS]

  you discovered about this code you know [TS]

  that you don't know what it does right [TS]

  and so you say oh that's interesting i [TS]

  don't know what that is and then you can [TS]

  do a search and find out find [TS]

  stackoverflow oracle whatever it is they [TS]

  explain what this is to me and then you [TS]

  can say okay I get it and either care I [TS]

  don't but at that point I'm you can then [TS]

  dive in and and learn and learn more [TS]

  information [TS]

  assembly is never something that a swift [TS]

  playgrounds person working through 12 [TS]

  code 3 would ever want to know about [TS]

  right and and i think that is really the [TS]

  this one of the secrets to Swift's [TS]

  success in terms of getting people on [TS]

  board and and being really approachable [TS]

  for people at all levels is that just [TS]

  like in Python you can start with just [TS]

  print hello world you could do the exact [TS]

  same thing and Swift and Swift you don't [TS]

  need the / end on the string it's really [TS]

  just print hello world and from there [TS]

  you can introduce the concepts you can [TS]

  grow it out over time and this really [TS]

  allows people to [TS]

  understand either the syntax language or [TS]

  the conceptual programming things that [TS]

  they're learning as i go and the design [TS]

  of Swift is really geared around that [TS]

  and so what that means if you project on [TS]

  the systems programming features [TS]

  comparing Swift to rest for example I [TS]

  think it's very likely that swill get [TS]

  features for memory ownership control [TS]

  which will allow really really high [TS]

  performance allow solving performance [TS]

  problems with arc for example but unlike [TS]

  rust we can't make that be a core part [TS]

  of the type system that everybody has to [TS]

  use it has to be something that [TS]

  sufficiently smart programmers when [TS]

  they're solving a specific performance [TS]

  problem and abusing or an embedded [TS]

  Colonel programmer might want to use but [TS]

  an application developer can completely [TS]

  ignore and so that's really the [TS]

  challenges its deploying similar type [TS]

  system mechanics and other low-level [TS]

  language geekery to the problem but do [TS]

  so in a way that is tasteful and allows [TS]

  most normal people to just completely [TS]

  ignore everything you just said [TS]

  kind of reminds me of saying I once [TS]

  heard that you're free to adopt [TS]

  respective you would like which is [TS]

  making things easy and make hard things [TS]

  possible we sponsor tonight by audible [TS]

  with an unmatched election of audiobooks [TS]

  original audio shows news comedy and [TS]

  more get a free 30-day trial at [TS]

  audible.com / ATP if you want to listen [TS]

  to it audible has it you can listen to [TS]

  audiobooks from virtually every genre [TS]

  anytime anywhere you can play audible [TS]

  audiobooks on phones tablets computers [TS]

  even Kindles and ipods if you still have [TS]

  them [TS]

  audio books are great for flights long [TS]

  road trips or even your daily commute [TS]

  you might think you don't have time to [TS]

  read books but you'd be surprised how [TS]

  many audio books you can hear each year [TS]

  even only listen to and from work every [TS]

  day that time really adds up [TS]

  audiobooks bring books to life many of [TS]

  them are read by author's themselves [TS]

  which adds an extra dimension to the [TS]

  text and with audible you can take risks [TS]

  and try new authors without regret [TS]

  because audible offers their great [TS]

  listen guarantee if you start an [TS]

  audiobook and don't like it you can [TS]

  exchange it for another one for free so [TS]

  check it out for yourself you can see [TS]

  and listen when you begin your free [TS]

  30-day trial you get your first audio [TS]

  book for free and there's [TS]

  no stress and obligations you can cancel [TS]

  your auto membership at anytime with [TS]

  audiobooks and spoken word audio product [TS]

  you will find what you're looking for [TS]

  get a free 30-day trial by signing up at [TS]

  audible.com / ATP that's audible.com / [TS]

  ATP thanks to audible for sponsoring our [TS]

  show so Chris you brought up just a [TS]

  second ago how simple pythons hello [TS]

  world is and one of the things I've [TS]

  wondered about Swift is it seems to some [TS]

  degree like it's kind of what we call it [TS]

  the Rorschach test of languages in that [TS]

  I came to Swift a sort of its kind of [TS]

  the objective-c but but my day job with [TS]

  it was a c-sharp guy and I see to my [TS]

  eyes anyway and i hope you don't find it [TS]

  insulting but I feel a lot of C sharp i [TS]

  see a lot of C sharp and Swift and I've [TS]

  heard javascript people again I hope [TS]

  that's insulting say oh I see some [TS]

  javascript in here and I presume that [TS]

  John could say that that he sees pearl [TS]

  and I presume Marco could say that he [TS]

  sees PHP in it but hopefully that's not [TS]

  an icy go and I don't see any PHP didn't [TS]

  know you get what I'm driving at though [TS]

  and so so i guess what i'm asking chris [TS]

  is obviously there's a huge objective-c [TS]

  influence and Swift but was there anyone [TS]

  or maybe just a couple of other [TS]

  languages that you feel really really [TS]

  inspired swiftor do you really think [TS]

  it's that it's the melting pot language [TS]

  that one would always hope to create my [TS]

  finger really is a melting pot because [TS]

  we weren't so the goal Swift isn't 28 [TS]

  some other language is to just be great [TS]

  right right and so you can take I think [TS]

  that Swift looks or I and the other [TS]

  people in the core team the other people [TS]

  working working on swift have looked at [TS]

  many many other languages and if you're [TS]

  asking nerd there's tons of Pascal [TS]

  concepts built-in protocols really are [TS]

  just like very similar Haskell cons [TS]

  constructor for example it's really [TS]

  about taking the best ideas from where [TS]

  we can get and assembling them together [TS]

  and one of the major goals Swift is for [TS]

  to be familiar feeling right because [TS]

  it's familiar with familiar feeling that [TS]

  makes it easier for people to pick up [TS]

  and they're not fighting [TS]

  unnecessary barriers to just get in the [TS]

  way of adoption and so it being familiar [TS]

  is actually success in that way and this [TS]

  is not it is not a result of Swift [TS]

  trying to be go or C sharp or whatever [TS]

  it's about taking the best ideas from [TS]

  them and assembling them together and I [TS]

  think that you could probably pick a [TS]

  language and there's some some good idea [TS]

  that came from them including you know d [TS]

  or dark or go or whatever I mean Swift [TS]

  does really draw from many many [TS]

  different sources and it's really hard [TS]

  to to really small out so the question [TS]

  that Casey wrote for me to ask you right [TS]

  now LOL how do you know that was me [TS]

  that's definitely you is why should I [TS]

  give a shit about Swift right now and i [TS]

  think im gonna modify the selected that [TS]

  was written it was written for you my [TS]

  friend but yes that is how I you right i [TS]

  figured it's not quite on style [TS]

  no butBut I I you know as as somebody [TS]

  who is just dipping a toe and Swift you [TS]

  know as of 12 hours ago you know it has [TS]

  waited this long you know just to see [TS]

  faithful / hold out / lazy people who [TS]

  don't learn new things very quickly [TS]

  what's kinda like the sales pitch for [TS]

  for adopting swift now I'm I guess two [TS]

  different answers 1 which is you don't [TS]

  have to stop Swift right and I don't [TS]

  think objective-c is going to go away [TS]

  anytime soon [TS]

  Apple sports c and c++ and it doesn't [TS]

  have any specific data there's no [TS]

  obvious benefit of dropping objective-c [TS]

  as well as obviously they have a ton of [TS]

  objective-c code themselves so I i don't [TS]

  think that there's any reason you have [TS]

  to adopt swift swift just tries to be a [TS]

  better answer so that you'll want to [TS]

  adopt it and in terms of Y Swift in its [TS]

  name kind of his connotes a whole bunch [TS]

  of different things including [TS]

  performance but really to me the most [TS]

  important aspect of it is programmer [TS]

  productivity right the the idea that [TS]

  Swift is really optimizing for is not [TS]

  letting you pound out the code as fast [TS]

  as possible [TS]

  it really is designed and optimized for [TS]

  as a programmer you can spend the least [TS]

  amount of time to get to a working [TS]

  program [TS]

  as fast as possible right and so getting [TS]

  to working program includes the time it [TS]

  takes to debug something includes the [TS]

  time it takes to iterate and develop and [TS]

  fight the type system and all the other [TS]

  things that you have to do but that time [TS]

  you spend having to fight the type [TS]

  system or figure out optionals or things [TS]

  like that pays itself back because your [TS]

  program works more often and so you're [TS]

  actually not spending time chasing down [TS]

  dangling pointer bugs or you know and in [TS]

  the case of objective-c you get an [TS]

  unrecognized selector air you know [TS]

  whatever whatever those kinds of bugs [TS]

  are and swift rise to help you by the [TS]

  language guiding you and helping design [TS]

  things so it also has a lot of things [TS]

  that just make common things easier [TS]

  so you can switch on a string for [TS]

  example and then match the different [TS]

  cases you can use enums which are a [TS]

  super genomes or just from the language [TS]

  geekery world is just algebraic data [TS]

  types there are tons of different [TS]

  functional languages [TS]

  they're not novel by any means but [TS]

  they're so useful and they solve so many [TS]

  problems out of the box and just having [TS]

  your fingertips is great so there's [TS]

  there's a lot of things about Swift and [TS]

  probably depends on who you are what [TS]

  your experiences are one of the problems [TS]

  I've seen with people moving from [TS]

  objective-c Swift initially is that they [TS]

  tend to write swiftcode just like they [TS]

  wrote objective-c and while that's a [TS]

  really good way to make a migraine [TS]

  application / or to get familiar Swift [TS]

  it really means that you're missing a [TS]

  lot of the value and Swift and and I [TS]

  think that that's okay it's just it [TS]

  means that you know an objective secret [TS]

  and we're going to swift first starts [TS]

  out by saying I don't see what the big [TS]

  deal is [TS]

  and only after they spend some time and [TS]

  do they start to realize that they are [TS]

  more productive they do feel better they [TS]

  reach for things that they otherwise [TS]

  wouldn't have and I think it's really [TS]

  interesting to talk to people that have [TS]

  done for example your Swift programming [TS]

  but then have to go back to objective-c [TS]

  and to me that's all been there that [TS]

  that's the really interesting and so it [TS]

  was your experience it felt absolutely [TS]

  archaic in a granted on and I like to [TS]

  think of myself as a nice guy and so I'd [TS]

  probably say something like that even if [TS]

  it wasn't true but the reality situation [TS]

  is it felt just so old it just felt old [TS]

  and I don't know [TS]

  i wish i could quantify that better but [TS]

  it just felt like I was back in time in [TS]

  a way that didn't feel good in something [TS]

  like in some ways it was kind of nice so [TS]

  I i do like optionals I understand why [TS]

  their thing I i I'm all in on it but at [TS]

  the same time there are times when I [TS]

  have to do a guard ladder whatever the [TS]

  case may be that a real right that I [TS]

  really would just like to move on with [TS]

  my life and so not having to worry just [TS]

  being being able to be a little more [TS]

  cavalier was kind of nice but the [TS]

  reality of the situation is as usual as [TS]

  you said earlier is that that's a [TS]

  potential hazard down the road and and [TS]

  that's why i like the way that that you [TS]

  and the team of have set up the type [TS]

  system and Swift but gosh going back to [TS]

  objective-c is so frustrating for me [TS]

  because it just feels like I'm going [TS]

  back in time like I'm going backwards [TS]

  yeah and i think that the challenge [TS]

  that's what faces because this focus is [TS]

  on building you know programs that work [TS]

  and that can be maintained and all the [TS]

  other things that we care about for [TS]

  large-scale software it's maybe not the [TS]

  best solution for I want to pound out a [TS]

  quick script use it once and then throw [TS]

  it away right because in that case you [TS]

  don't care about maintenance you you can [TS]

  fit all the code in your head you don't [TS]

  care about good occupation of the other [TS]

  things that Swift encourages and that's [TS]

  that's the case we're having a dynamic [TS]

  type system can be really really [TS]

  liberating and so you know maybe that [TS]

  will be a challenge for some people but [TS]

  i think that as with games ecosystem [TS]

  against libraries its other advantages [TS]

  will be so great that hopefully it will [TS]

  be a good solution for those kinds of [TS]

  tools as well good those kinds of [TS]

  scripts as well so I'm a minute ago you [TS]

  mentioned how gypsy programmers people [TS]

  like me who are new to Swift tend to [TS]

  write Swift like objective-c and and [TS]

  that's that's concerned I've had it it's [TS]

  one of the reasons that i have [TS]

  procrastinated adopting Swift up till [TS]

  now because I have a have a pretty good [TS]

  grasp of objective-c now and I i right [TS]

  objective-c code that i know is [TS]

  basically idiomatic and and soundly [TS]

  designed like I write code [TS]

  in the style of what I think apples code [TS]

  would look like based on the little bit [TS]

  of you know headers that we see I feel [TS]

  like I right good to see code that is [TS]

  kind of correct and an idiomatic leave [TS]

  sound with Swift you know III assumed [TS]

  that the the idioms would not yet be [TS]

  developed for a while and an established [TS]

  for a while and so I didn't want to [TS]

  write a bunch of bad swiftcode it or or [TS]

  like incorrect or or weird swiftcode you [TS]

  know investing heavily in it so early on [TS]

  do you think that it's at a point now [TS]

  where the idioms are starting to get [TS]

  worked out enough that's less of a [TS]

  concern now [TS]

  yeah I do I'm so I think it's definitely [TS]

  fair to say that in the script one this [TS]

  with two timeframes Swift as language [TS]

  was changing really rapidly and I could [TS]

  see why you'd feel like you're on uneven [TS]

  footing and not really sure what the [TS]

  language is much less what the idioms [TS]

  are Swift three really is quite well [TS]

  baked out and so I expect going forward [TS]

  the the new things are going to be [TS]

  additive they're not going to be [TS]

  changing the existing patterns and so I [TS]

  think this with community in general is [TS]

  gone through the same same kind of thing [TS]

  that you're feeling there where it's not [TS]

  really clear the one right way to solve [TS]

  the problem and maybe there are [TS]

  different good ways to do it with [TS]

  different trade-offs won't clear to [TS]

  people but I think that's I think people [TS]

  are starting to understand that no there [TS]

  are a few style books that are being [TS]

  written by people that I've heard about [TS]

  and so when those come out those will [TS]

  hopefully be good and those will be a [TS]

  good resource but another thing to keep [TS]

  in mind is the Swift is opinionated I [TS]

  guess that it is the way to say so it [TS]

  really does encourage you to do the [TS]

  right thing where where it can and so [TS]

  I'm for example if you use bar for [TS]

  everything [TS]

  the this with compiler will say hey you [TS]

  mark this is a bar but it could be a let [TS]

  and that's just it subtle way of and and [TS]

  let me fix it for you right and that's [TS]

  just it subtle way of encouraging you to [TS]

  use and mutable values which is a very [TS]

  small Clinton but it's just kind of [TS]

  pushing you in the way that it it thanks [TS]

  leads to better code and immutability [TS]

  for local variable doesn't matter that [TS]

  much accepted to communicate something [TS]

  more to the person us to read maintain [TS]

  your code [TS]

  and and so I think this really does kind [TS]

  of encourage you down the right lines in [TS]

  some ways but on the other hand and [TS]

  other places where you're saying hey [TS]

  should only be a class should be a [TS]

  struct the train out some more nuanced [TS]

  and it's it's a hard thing in the Swift [TS]

  compiler can't just know what your [TS]

  problem is solved and so it can help you [TS]

  with that you mentioned Swift style [TS]

  guides before as as a creator of a [TS]

  language how how much influence do you [TS]

  do you feel like you want to have over [TS]

  things like style things that really are [TS]

  you know it's not it's not features it's [TS]

  not technically it's just like you know [TS]

  what you will know different style [TS]

  things like oh you know I usually have [TS]

  one exit at the bottom or you should [TS]

  exit early or I mean like there are [TS]

  things you can do even things like [TS]

  spacing embraced out for crying out loud [TS]

  or you know just the sort of idioms of [TS]

  like this little three-line sequences [TS]

  how you do this transformation on this [TS]

  data structure you mentioned you know [TS]

  language features can influence that's [TS]

  obviously as language designer and [TS]

  participate in that process you can [TS]

  effectively guide the community [TS]

  style-wise in one direction or another [TS]

  but eventually you come to the stuff [TS]

  that's just plain opinion and style and [TS]

  several other languages have had fairly [TS]

  concrete styles set forth early on by [TS]

  the creators we're going to go like an [TS]

  RC style type things [TS]

  how much do you care about being able to [TS]

  influence the i guess the personal [TS]

  preference or the aesthetic portions of [TS]

  style that are outside the things that [TS]

  you can influence as part of language [TS]

  design so as with any programmer the has [TS]

  a pulse [TS]

  I have my preferred style and so clearly [TS]

  that's the right way [TS]

  naturally naturally well so i guess more [TS]

  seriously the land yourself does [TS]

  influence some of the things you [TS]

  mentioned so for example it's my [TS]

  personal opinion that this style where [TS]

  you have a single entry single exit from [TS]

  every function i think that leads to [TS]

  really difficult to maintain and read [TS]

  code and that's one of the things that [TS]

  led to the guard statement existing the [TS]

  guard really does encourage you to use [TS]

  early exit so you handle the exceptional [TS]

  cases and they don't have to [TS]

  worried about them so that's that's an [TS]

  example of where the language design is [TS]

  kind of encouraging you to you know have [TS]

  multiple returns from a function other [TS]

  more subjective things like the number [TS]

  of spaces i personally I'm a fan of to [TS]

  space in dense i know some people are [TS]

  staunchly for other people are staunchly [TS]

  ate some people think 80 columns is [TS]

  right answer right i mean all these [TS]

  things are there are actually really [TS]

  good arguments on all sides [TS]

  some people argue that you should use [TS]

  three space and then because then you [TS]

  certainly can't have tabs in your file [TS]

  wow so this is where this it comes down [TS]

  to you have to pick your battles print [TS]

  and people will disagree for a long time [TS]

  and you can make arguments on both sides [TS]

  but the inn where we've come down is [TS]

  that it's just more practical to let [TS]

  people write code they like to look at [TS]

  and that comes at a cost of if you [TS]

  switch between teams or you pick up [TS]

  somebody else's package then maybe it's [TS]

  indented the wrong way but I don't think [TS]

  that really actually actively hurts the [TS]

  comprehensive comprehensibility of the [TS]

  code that's merely annoying and having [TS]

  something like go format which [TS]

  rigorously enforces the one true way I [TS]

  think would have been nice [TS]

  it just wasn't a priority early on and [TS]

  it also just wasn't a battle that we [TS]

  were willing to tackle and I don't know [TS]

  we'll see that I think this is still [TS]

  also an open question in terms of what [TS]

  other tool and gets built and what other [TS]

  things come into the fray because it [TS]

  would be great to have better tooling [TS]

  around this it just hasn't been built [TS]

  out yet and it's a great opportunity for [TS]

  open source as well i was thinking about [TS]

  it the sort of doomsday scenario where [TS]

  like one of these the Swift style guide [TS]

  books comes out and like it makes some [TS]

  like blanket recommendation that like [TS]

  you should you know always use protocols [TS]

  for this and you should never use [TS]

  glasses for that or whatever and it [TS]

  becomes wildly popular accepted as like [TS]

  the Bible of how you rights with [TS]

  programming and you're just some are [TS]

  shaking your head and go no you got it [TS]

  all wrong but I guess you know we'll [TS]

  cross that bridge when we come to it i [TS]

  think at this point you did the language [TS]

  design itself and the communities have [TS]

  enough influence that's not likely to [TS]

  happen but I mean I guess what i was [TS]

  getting at is it do you feel like the [TS]

  you want to write a switch style got [TS]

  like if you had unlimited [TS]

  I'm no I don't think that would be a [TS]

  good use of my time but if I don't look [TS]

  at a time maybe i don't know i started [TS]

  stardancer that theoretical question but [TS]

  but I also get to your concern about [TS]

  somebody came out with a book that was [TS]

  so wrong that would cause me to like you [TS]

  know be really unhappy actually have a [TS]

  ton of faith in the Swift community [TS]

  because if something came out that was [TS]

  so weird i don't think that the [TS]

  community overall would would accept it [TS]

  the community is again just kind of [TS]

  blown away with how beautiful they are [TS]

  and how how many great people have [TS]

  gotten involved with Swift and Swift [TS]

  evolution side of things and it's been [TS]

  really amazing sees people you know they [TS]

  they go through their own personal [TS]

  trajectory on swift mailing list where [TS]

  you know initially they're saying hi I [TS]

  had this idea what you think and the [TS]

  responses know that's a terrible idea [TS]

  for this is a reason but then they come [TS]

  back a little okay how about this you [TS]

  think about this and it was like oh well [TS]

  that's interesting that almost worked [TS]

  but it didn't work because of that and [TS]

  then they come back and say hey well [TS]

  what about this is what we actually [TS]

  tried that and we had that for a while [TS]

  and then had to back out and change this [TS]

  other way because we didn't even think [TS]

  about this other thing and then the next [TS]

  day they're the ones saying this is the [TS]

  way it needs to go and erases you're [TS]

  right we should do that and it's it's [TS]

  it's really hard for people that have [TS]

  been involved in the overall design of [TS]

  anything is complicated Swift to be able [TS]

  to discern the difference between [TS]

  something that is the way it is out of [TS]

  an intentional decision process or the [TS]

  way it is as an actor an accident of [TS]

  history and so as now that the design [TS]

  processes public i think that it becomes [TS]

  a lot easier for people to to tell that [TS]

  and it's very easy for people to kind of [TS]

  understand the difference [TS]

  the one big debate that i haven't [TS]

  actually seen is why is the funky word [TS]

  the funky word and that's one that [TS]

  luckily were now beyond this with three [TS]

  source compatibility threshold so we [TS]

  just can't have that discussion anymore [TS]

  i think i'll be darned [TS]

  but one of the best things of this world [TS]

  open source thing or what [TS]

  the whole evolution process has that [TS]

  like the list of questions like the [TS]

  Aston answers questions like this is a [TS]

  commonly asked question we've dealt with [TS]

  it before and you're probably gonna want [TS]

  to ask it to here's here's about how it [TS]

  was asked before and here's what the [TS]

  answer is not that everybody's gonna go [TS]

  and see that but i love that exists [TS]

  well then it's also hilarious that [TS]

  started out as the commonly proposed [TS]

  list and then at some point it became [TS]

  the commonly rejected list [TS]

  yeah right because it because if it's [TS]

  commonly proposed obviously it's not [TS]

  getting through and so you have to go to [TS]

  be rejected list that you're thinking [TS]

  about asking to change funk to FN you [TS]

  know well my I know you talked about [TS]

  this before but it is well worth [TS]

  touching it again because many people [TS]

  have asked me to ask you this [TS]

  swift and a rough style memory model you [TS]

  you phrased it before as an add-on [TS]

  feature for people who know that they [TS]

  need that type of thing but that it [TS]

  would not like the Swift wouldn't become [TS]

  a language in which all memories manage [TS]

  that way instead this would be a [TS]

  special-purpose feature for particular [TS]

  roles what what roles do you think it's [TS]

  suited for and why why is it not the [TS]

  great memory model for all Swift well so [TS]

  here's here's the way I look at swift in [TS]

  terms of memory management today so [TS]

  Swift is using our it's not using GC if [TS]

  you want to talk about the trailer i was [TS]

  happy to do that thats its own well we [TS]

  can fall into arc i think is overall [TS]

  amazing default for swift because it [TS]

  gives you deterministic destruction it [TS]

  gives you a relatively predictable [TS]

  performance and the ark optimizers able [TS]

  to eliminate most of the reference [TS]

  counting operations that happen [TS]

  the problem that I see with with our at [TS]

  as of today or states with three is that [TS]

  it is not a very controllable model and [TS]

  so if for example you have an inner loop [TS]

  and it turns out the ark optimizers [TS]

  doing a bunch of retains releases and [TS]

  you know that they're not necessary [TS]

  because you know the objects are alive [TS]

  there's nothing you can really do to to [TS]

  solve that problem unless you're willing [TS]

  to drop down to something like the [TS]

  unsafe operation Swift gives you for [TS]

  manipulating references objects the [TS]

  and so it's really kind of satisfying me [TS]

  to have a really safe great memory model [TS]

  that for performance reasons you have to [TS]

  drop down to unsafety right this is a [TS]

  huge cliff and is that also a huge [TS]

  complexity cliff that you have to drop [TS]

  into just solve that problem and that's [TS]

  not really great so the promise the [TS]

  dream is to instead say hey well if you [TS]

  are a sufficiently advanced programmer [TS]

  and you know how this stuff works well [TS]

  what the we can give you options instead [TS]

  of dropping down to unsafe constructs [TS]

  you can actually just use more static [TS]

  type information in annotations in your [TS]

  code and so you add a few annotations [TS]

  say compiler this is ok the compiler can [TS]

  validate those type annotations and [TS]

  check to make sure they're correct so [TS]

  still memory see if it's still [TS]

  guaranteed to be okay but you're paying [TS]

  for it in terms of more of this [TS]

  annotation the code and it's more more [TS]

  heavyweight in terms of coding but when [TS]

  you get out of that is the guarantee [TS]

  that no arc operations are happening [TS]

  once you get to that model then it [TS]

  becomes really interesting because you [TS]

  can say hey well this inner loop i'm [TS]

  going i found in my profile that it [TS]

  really does matter for performance and [TS]

  the ark optimizers doing the wrong thing [TS]

  i can add a few local annotations and [TS]

  now the code is fast it's guaranteed to [TS]

  be fast and the clients of my co don't [TS]

  have to know about it right this is an [TS]

  implementation detail and I think this [TS]

  will really bring us to the best of both [TS]

  worlds where you could have memory [TS]

  safety you can have a progressively [TS]

  disclosed complexity complexities system [TS]

  or most people don't have to know about [TS]

  or think about it but you can get to [TS]

  really low level performance guarantees [TS]

  that otherwise are possible and once we [TS]

  do this i have a feeling there will be [TS]

  certain communities of people that will [TS]

  only want to work in this model and [TS]

  these are the communities that that like [TS]

  rust predominantly so if you're writing [TS]

  a kernel for example maybe don't want to [TS]

  have a reference count your object at [TS]

  all maybe you just want to have you know [TS]

  you say I will always use these [TS]

  annotations my code pervasively and if [TS]

  if that happens then there's a couple of [TS]

  options we can investigate and we could [TS]

  say hey well if you mark this class with [TS]

  some attribute than that get that that [TS]

  prevents the compiler from ever doing [TS]

  reference counting and if it would ever [TS]

  do that it just raises in there [TS]

  or we can even theoretically have a [TS]

  language dialect modes that hey produce [TS]

  produce an heir anytime I did and our [TS]

  cooperation [TS]

  I don't like language dialects and so [TS]

  we'd have to find a way to handle that [TS]

  maybe it would be a warning and then [TS]

  they would upgrade to an error or [TS]

  something like that but I can imagine [TS]

  doing something like that and once we do [TS]

  that then I think you get to a really [TS]

  interesting mode where those systems [TS]

  programming type people that otherwise [TS]

  would be using seriously + + can i use [TS]

  swift and that means they only have to [TS]

  learn one language that means that they [TS]

  could use the same toolset that you know [TS]

  the ID and everything else that works [TS]

  great with Swift it means that they can [TS]

  scale and use the same language for [TS]

  different layers of their stack because [TS]

  many applications have very low level [TS]

  pieces and very high-level pieces and [TS]

  having them written in different [TS]

  languages is really kind of gross [TS]

  I mean I think we've seen this in the [TS]

  objective-c community where one of the [TS]

  best and most annoying things about [TS]

  objective-c is that it has seen it right [TS]

  and so this has been hugely important [TS]

  for objective-c and practice because if [TS]

  you're into a performance problem with [TS]

  obviously message send you can always [TS]

  rewrite that algorithm in see that's [TS]

  really really really important for [TS]

  objective-c being successful and you [TS]

  know both in the days of next on 16 [TS]

  acres processors but also today for the [TS]

  low-level cult code the people are [TS]

  writing but also means that that's one [TS]

  of the problems that makes it so that [TS]

  objective c and c are so tightly [TS]

  intertwined and so you can actually take [TS]

  the sea parte out of objective-c without [TS]

  producing a different language who are [TS]

  waiting for swift in the web browser [TS]

  because it's your only Escape speaking [TS]

  of applications that have to have one [TS]

  language at the higher level that i was [TS]

  in the lower one that's about then [TS]

  well there-there are our that that i [TS]

  think is a frontier that is probably the [TS]

  biggest payoff because replacing [TS]

  javascript would be such an amazing [TS]

  service to the world music and art [TS]

  before it's been tried [TS]

  yeah but it's been tried and that's [TS]

  where you know putting my hope on the [TS]

  azan jas the web assembly those kinds of [TS]

  efforts were its enabling languages like [TS]

  Swift and swift swift compiler lv I'm [TS]

  web assembly and Adam jazz both have lvm [TS]

  backends in principle so make it [TS]

  wearable Swift to one of those and go to [TS]

  town with the if those end up winning [TS]

  and they become big big things then [TS]

  maybe that'll be good enough but i don't [TS]

  really know I don't have my crystal ball [TS]

  doesn't go out to the point where [TS]

  javascript is not in web browsers [TS]

  yeah that's the difficult part is not [TS]

  the language mechanics it's the getting [TS]

  a getting something we can understand [TS]

  that in front of as many people as [TS]

  possible because it's also very [TS]

  interested me so again i'm not a web [TS]

  developer and I'm not a I'm definitely [TS]

  not an expert in space but to me it [TS]

  seems the the trajectory of JavaScript [TS]

  has basically made it into an [TS]

  intermediate language it's not something [TS]

  that developers are writing as much [TS]

  directly as they used to [TS]

  and so I c-type script and water other [TS]

  languages that now compiled down to [TS]

  JavaScript and you know they're really [TS]

  using javascript like it like a bit code [TS]

  representation not not a source language [TS]

  that people are are thinking about as [TS]

  much anymore and so I wonder if in five [TS]

  years you know the natural conclusion of [TS]

  that is the javascript is just an adams [TS]

  is type of thing or maybe web assembly [TS]

  does take over but but again I'm not the [TS]

  expert don't know where that directional [TS]

  go i know that some people of JavaScript [TS]

  so we'll see on the topic of using [TS]

  language of the JavaScript to write [TS]

  JavaScript I have to say having done [TS]

  that several times that the tooling why [TS]

  the tooling is not quite where you'd [TS]

  want to be in terms of being able to [TS]

  write in debug and profile in the [TS]

  preferred language and not in the [TS]

  compiled down to JavaScript language but [TS]

  yeah that maybe that'll be like stage 17 [TS]

  and this with world domination plan [TS]

  people and I think that's always been [TS]

  true for preprocessors so I mean even [TS]

  see if you do crazy things the macro [TS]

  preprocessor and see you get debugging [TS]

  those things are still or oh yeah and [TS]

  that's one of the reasons that we've [TS]

  been careful about not adding a macro [TS]

  systems Swift early it just brings lots [TS]

  of interesting trade-offs in terms of [TS]

  the debugging and developing and [TS]

  designing experience of 11 last night [TS]

  ABI [TS]

  compatibility according to the timelines [TS]

  that I've heard sketched out that ABI [TS]

  stability could be a thing before async [TS]

  you know our concurrency stuff lands and [TS]

  Swift there any is there any [TS]

  dependencies or chicken egg things [TS]

  involving there like in order to other [TS]

  words in order to do you have to nail [TS]

  down some aspects of your concurrency [TS]

  model before you can commit to ABI [TS]

  stability are they totally orthogonal [TS]

  and I think they're totally orthogonal [TS]

  I'm i think the memory ownership model [TS]

  has more of an impact on ABI stability [TS]

  because there's some very low-level [TS]

  things like how the the getters and [TS]

  setters are code generated for a [TS]

  property for example the end up getting [TS]

  impacted by the ownership model that's [TS]

  one of the reasons that were that this [TS]

  15 is actually actively designing and [TS]

  write it working on a proposal for the [TS]

  memory ownership stuff right now it's [TS]

  not so that it can be a swift for [TS]

  feature it's so that the API stability [TS]

  work can be done in light of the [TS]

  ultimate model for the memory ownership [TS]

  support and I think concurrency is not [TS]

  going to be something that impacts avi [TS]

  stability at all but we'll see in a so [TS]

  than the sufficiently smart programmers [TS]

  that work on swift we'll figure it out [TS]

  and I'm sure it'll be great and I think [TS]

  it's also interesting question of [TS]

  whether ABI stability will be done for [TS]

  swift for because it's a huge amount of [TS]

  work the work as well in a way of course [TS]

  but it's also not clear to me that's [TS]

  really the the right or the most [TS]

  important thing for the Swift community [TS]

  and one of the things that ted has been [TS]

  a huge champion for and I think he's [TS]

  right about is that the most important [TS]

  thing right now is with community is [TS]

  making the compiler more reliable making [TS]

  the error messages better making compile [TS]

  times faster and making a it scale [TS]

  better to large projects and you know [TS]

  we'll see how the rest of the swift for [TS]

  schedule goes but i wouldn't be [TS]

  surprised if at some point they decided [TS]

  that focusing on that is more important [TS]

  than nailing ABI stability and so for [TS]

  so you just mention Ted that's that's [TS]

  Ted kramnik who is that is now the the [TS]

  lead of of the Swift project is that [TS]

  right yeah he's the project lead so ted [TS]

  has been managing the Swift and Clank [TS]

  projects before that for a number of [TS]

  years he's been an apple for 10 years [TS]

  now he's a Stanford PhD graduate he [TS]

  built single almost single-handedly the [TS]

  the first client sack analyzer yeah [TS]

  instead so as they have I love it i'm [TS]

  saying this now as a swift developer you [TS]

  know she should I be like you know as we [TS]

  saw when you announce that you're [TS]

  leaving Apple that we saw some of the [TS]

  people the community asking like she [TS]

  would be worried about his future is [TS]

  Swift in good hands and a minute you [TS]

  know it seems like most of us didn't [TS]

  know Ted at least didn't know his name [TS]

  or or unfamiliar with contributions it [TS]

  does seem like he's been doing quite a [TS]

  bit there anyway [TS]

  should we be worried i don't think you [TS]

  should be worried at all i think swift [TS]

  is an amazing hands as I mean all the [TS]

  things that I am leaving behind an apple [TS]

  and quotes are in really good hands and [TS]

  that's one of the only reason I was [TS]

  comfortable and moving on in the case of [TS]

  Ted Ted is a rockstar he has been [TS]

  running the Swift team and managing them [TS]

  for mean for five years now the roles [TS]

  that we had was that Ted own brand [TS]

  esteem and then report to me and so I [TS]

  would mess around and you know cause [TS]

  trouble by you know trying to get people [TS]

  to do the exciting important thing that [TS]

  I thought and maybe didn't align with [TS]

  the actually important thing and [TS]

  therefore identities chaos into the [TS]

  world but Ted was always the this table [TS]

  runner and the one that was really [TS]

  focused on getting the important things [TS]

  done and he has a number of really [TS]

  exceptional engineers in the team people [TS]

  on the core team like the Gregor John [TS]

  the call Joe Joe graph Dave Abrahams [TS]

  these are all just amazingly brilliant [TS]

  people and the E and also the team [TS]

  includes a bunch of other engineers that [TS]

  are equally dedicated and also just [TS]

  totally amazing people to work with [TS]

  so the Swift team is I think one of [TS]

  apples biggest assets it's it's crazy [TS]

  how brilliant and dedicated there [TS]

  to the project and how excited they are [TS]

  to get to world domination one step at a [TS]

  time coming back to kind of a more broad [TS]

  thing let's say that in this is not [TS]

  meant to be tongue-in-cheek reference to [TS]

  your next job this is just in general [TS]

  you know you're at home you you kids are [TS]

  in bed you know your wife is out or [TS]

  something like that and you want to just [TS]

  write some code you can't use swift and [TS]

  you can't use objective c what are you [TS]

  writing code in and I know that's often [TS]

  dependent on what project you're [TS]

  accomplishing but like what's [TS]

  interesting to you these days that isn't [TS]

  Swift is an objective-c also i mean i [TS]

  have a ton of different interests i mean [TS]

  i really love building great racers for [TS]

  example and have done much stuff with [TS]

  that and I guess I couldn't use Swift [TS]

  with that then I would probably have to [TS]

  use people's pot no also check i was [TS]

  going to call that I wanted to give you [TS]

  a chance to not second-class but what I [TS]

  remind people that were they mentioned [TS]

  you [TS]

  you know what LVL is written in right [TS]

  much applause and not have your your [TS]

  answer bc of loss and and you know how [TS]

  much banks in personal suffering causes [TS]

  to have to be riding c++ all day and [TS]

  building a beautiful world for other [TS]

  people it's just yeah that's where [TS]

  you're entitled down the mines [TS]

  yeah yeah it's it's a pain and suffering [TS]

  that's worth it for the bigger bigger [TS]

  victory that's where the stress comes [TS]

  from years having to use C++ so i could [TS]

  do the same stuff but not feel this much [TS]

  pain [TS]

  that's exactly right i mean there's a [TS]

  lot of suffering that led to switch [TS]

  needing to happen so but but also it [TS]

  really depends i mean maybe if I was [TS]

  doing you know if I was a crazy person [TS]

  ideas pearl for something i don't know [TS]

  from that instead haha well dot but well [TS]

  done terrible to read it though nobody [TS]

  correct [TS]

  hey if it's throw a code then you never [TS]

  need to rewrite haha for John these are [TS]

  as well just wait for my process [TS]

  grammars to land gently and Swift yeah [TS]

  also I mean that's another that there is [TS]

  a great example of pro really has nailed [TS]

  the string processing thing even ants in [TS]

  405 and I think 406 is even better and [TS]

  Swift has a lot to learn from and that's [TS]

  that's something where a [TS]

  so for is really learning from Pearl so [TS]

  that was great [TS]

  oh please don't give him any ammunition [TS]

  this is terrible i was enjoying this [TS]

  interview so much until this very moment [TS]

  look at this way once this happens John [TS]

  will have no excuse [TS]

  oh he will find one nothing is so [TS]

  perfect that it can't be complained [TS]

  about oh my goodness this is a perennial [TS]

  topic on this with Mary lists about [TS]

  dynamic features and Swift you know that [TS]

  our record more dynamic and objective-c [TS]

  and less so in swift swift community [TS]

  there's a lot of angst about when if [TS]

  ever will Swift allow me to essentially [TS]

  you know like what you said before you [TS]

  can write for training in any language [TS]

  you can write a directory name is in any [TS]

  language people will try to write their [TS]

  code in Swift but using models from [TS]

  objective-c that require things like you [TS]

  know it was you know since sending [TS]

  messages objects that you know will [TS]

  receive them but the compiler can [TS]

  guarantee are you know having big [TS]

  heterogenous collections were just like [TS]

  no everything's ID and it'll be fine [TS]

  what I don't know how to frame this but [TS]

  uh I think that the main question has [TS]

  been our dynamic features possible and [TS]

  Swift and are they coming in Swift or is [TS]

  there some kind of philosophical divide [TS]

  where the the most dynamic stuff that [TS]

  people really want will never be [TS]

  forthcoming up for technical reasons but [TS]

  just for philosophical and safety [TS]

  reasons [TS]

  sure so I've been pretty outspoken about [TS]

  this on the switch evolution let's hope [TS]

  this isn't a huge surprise but i don't [TS]

  think there's any tension between [TS]

  dynamic features and Swift the a lot of [TS]

  people want to make a and argue about [TS]

  how it would be impossible to do [TS]

  responders or you can pick your feature [TS]

  the in Swift and the the worst-case [TS]

  scenario frantic blog post I've seen our [TS]

  are things that are along lines of [TS]

  someday Apple rewrite all these [TS]

  frameworks in Swift and then it will be [TS]

  impossible to write first responder [TS]

  chains and then bad things will happen [TS]

  and then we'll be back in the days of [TS]

  MSC or some other bed [TS]

  right i don't even bring that up [TS]

  exactly and so this is this is kind of [TS]

  quite the slope that it's the discussion [TS]

  ends up being I think this blow-up most [TS]

  recently right before WC this year and [TS]

  it was really interesting to wash the [TS]

  the blog post that people are flying [TS]

  around because everybody had a different [TS]

  idea of what dynamic meant happen but [TS]

  none that I'm really so apples not going [TS]

  to counter blog somebody if he didn't [TS]

  like being out somebody's a blog on [TS]

  somebody's post and it's kind of bad [TS]

  form to do that but I thought was very [TS]

  interesting on that none of those people [TS]

  actually came to the Swift evolution [TS]

  list which is the right place to do that [TS]

  and asked about it they all just want to [TS]

  make these inflamed blog posts are very [TS]

  skins so if you get to my opinion my [TS]

  opinion is that none of those are in [TS]

  tension with a swift current design it's [TS]

  just a matter of prioritization and the [TS]

  major problem that Swift has again [TS]

  there's so much work to do there's [TS]

  concurrency model there's actors their [TS]

  systems programming their scripting [TS]

  there's lots of little things that go in [TS]

  there's better better things for static [TS]

  analysis introducing type stay in [TS]

  language there's there there's green [TS]

  postconditions that there's so many [TS]

  things that that will be bricks in the [TS]

  house of Swift that we want to build [TS]

  that need to happen that it doesn't [TS]

  really make sense spent a lot of time [TS]

  building dynamic features so that Apple [TS]

  could theoretically someday do something [TS]

  right [TS]

  were the Swift team is much more focused [TS]

  on the practical necessities of solving [TS]

  the real world problems here now in [TS]

  front of people and dynamic features [TS]

  like many other things will just kind of [TS]

  swap in place when the team s time to [TS]

  design and roll them out and so you you [TS]

  will be able to someday right i expect [TS]

  that you will be able to reflect over [TS]

  all the methods and the class has for [TS]

  example today even the Swift compiler [TS]

  generates all the metadata so you can [TS]

  reflect over all the data members and [TS]

  your and your values we just don't have [TS]

  an API wrapped around that [TS]

  that metadata is what the xcode memory [TS]

  heap viewer uses for example and so [TS]

  there's a lot of that kind of stuff [TS]

  being put in place but just hasn't had [TS]

  time to fully break out yet and when it [TS]

  does come in i think it's gonna be [TS]

  really exciting and will open more doors [TS]

  for new kinds of patterns of people can [TS]

  do and a lot of those will be familiar [TS]

  to objective-c programmers but they're [TS]

  also be super useful for things that [TS]

  people really haven't done an object to [TS]

  see so i don't i don't see a lot of [TS]

  tension there though it's just a [TS]

  prioritization question I think about [TS]

  where your people are coming from is it [TS]

  in terms of prioritization because if [TS]

  you're used to doing things with certain [TS]

  sort of design patterns broadly speaking [TS]

  in objective-c and you want to come and [TS]

  implement the same patterns and Swift [TS]

  and you find that you can't because [TS]

  you're lacking some feature it feels [TS]

  like there's a barrier up in it that [TS]

  students getting back to your writing [TS]

  ready your swift and objective-c style [TS]

  and that's more of a berry they retreat [TS]

  back to breakfast because i can write it [TS]

  the way I want to read it right and it [TS]

  works and objective-c when I try to [TS]

  write it that way and so if it doesn't [TS]

  work for me your choices to change the [TS]

  way you write it to be better fit for [TS]

  swift has or to go back to objective-c [TS]

  I'm so I don't agree with that though [TS]

  because Swift does support all the [TS]

  features for dynamic dispatch and method [TS]

  look up and everything else that [TS]

  objective c does it just requires you to [TS]

  use the objective-c subset of the [TS]

  language because it exposes it through [TS]

  the runtime right that that's that's [TS]

  thatthat's thatthat's the tension [TS]

  because they're like oh I want to write [TS]

  in pure Swift like as if there's [TS]

  something special and magical about not [TS]

  using the objective-c runtime for you [TS]

  know I mean you do get a medal for that [TS]

  oh yeah I guess that makes some people [TS]

  feel good i mean that there are I I [TS]

  can't really count that but I just don't [TS]

  think that it the it's actually fair to [TS]

  say you have to fall back to writing [TS]

  objective-c code no no I got I'm just [TS]

  I'm trying to I didn't write one of [TS]

  these blog posts over to be trying I'm [TS]

  trying I'm trying to express myself that [TS]

  because that was a lot of the concerns [TS]

  like they they want to do it it's they [TS]

  want to do it like the new way and the [TS]

  way and part of doing that is not you [TS]

  know an objective seeing everything like [TS]

  oh that feels like a compromise in the [TS]

  old way so there they are setting their [TS]

  own goal posts for themselves [TS]

  arbitrarily to try to enter into this [TS]

  new world and you know that they they [TS]

  want to jump in with both feet or not at [TS]

  all and and some of them might end up [TS]

  bailing but i think this mean that the [TS]

  way the way look at that is a look at [TS]

  that is an area where the language is [TS]

  not fully baked out it's not fully [TS]

  serving their needs and I think that's [TS]

  really unfortunate right and i'm not [TS]

  going to say that I think that that's [TS]

  not a good thing i want there to be an [TS]

  awesome reflection model I want there to [TS]

  be awesome features for sending messages [TS]

  like there used to just want to be [TS]

  developed and designed in the right way [TS]

  and at the same time they're being [TS]

  annoyed that they can't do those things [TS]

  there are a lot of other people being [TS]

  annoyed about compiled times right [TS]

  ya know I know and and what we have to [TS]

  do is balance between you know just [TS]

  picking two random things where does the [TS]

  engineering effort go and and that's [TS]

  never black and white thing there's [TS]

  never a right answer is all based on gut [TS]

  and judgment and guesses listening to [TS]

  the community talking to people and [TS]

  that's one of the reasons why i think [TS]

  the 15 is really phenomenal is that it [TS]

  really cares that really cares about [TS]

  what people are doing it read you know [TS]

  the various people read the blog post or [TS]

  people on Twitter that like the [TS]

  engagement between us with team and the [TS]

  community is really high because people [TS]

  care and there's no management dictated [TS]

  apple says that you know this engineer [TS]

  should be on Twitter all the time [TS]

  talking to people that's certainly not [TS]

  the case [TS]

  that's because of passion from the [TS]

  developer is because they really care i [TS]

  think that that's the thing that is so [TS]

  amazing about the Swift team is just how [TS]

  important it is in terms of customer [TS]

  service and understanding understanding [TS]

  what people are working through and that [TS]

  insight is what guides the priority [TS]

  decisions and guides the trade-offs that [TS]

  have to be made all the time because [TS]

  nothing really is as clear as you'd like [TS]

  it to be so building on that when all of [TS]

  us were going back and forth and I was [TS]

  tangentially involved with this we're [TS]

  going back and forth auto it switches [TS]

  and dynamic it must be dynamic [TS]

  this is it fair to say that that does [TS]

  eventually make its way inside of apple [TS]

  just and i'm just in that you guys are [TS]

  aware of it that that that's talked [TS]

  about in some way shape or form because [TS]

  it's nice to know and i suspect that it [TS]

  does but it's nice to know that when the [TS]

  community gets perturbed whether or not [TS]

  that that that feeling is justified that [TS]

  at least somebody inside Apple has [TS]

  hurted whether or not they can respond [TS]

  to it at least they've heard it so when [TS]

  we all get our our our pants all twisted [TS]

  up does that does that make it in [TS]

  I absolutely i mean the there are tons [TS]

  of people actually care about what's [TS]

  happening in the developer community and [TS]

  and elsewhere right and that's one of [TS]

  the the things about Apple's approach in [TS]

  terms of not commenting on things that [TS]

  can be frustrating because you don't [TS]

  know but again there's so many people [TS]

  apple that really do care and that [TS]

  sought and you know again I wish those [TS]

  people that were really worried about it [TS]

  would come to Swift evolution and ask [TS]

  because they're exempt discussion about [TS]

  it but that wasn't happening for some [TS]

  reason but certainly there's a ton of [TS]

  people who saw the blogs and i'm sure [TS]

  there are tons of engineers at Apple to [TS]

  feel the same way and wish the [TS]

  priorities were different and I think [TS]

  that the engineering community inside of [TS]

  Apple reflects quite closely to the [TS]

  engineering community outside of Apple [TS]

  as well and i don't think that I hope [TS]

  that's not surprising right angle as [TS]

  many different engineers with different [TS]

  feelings of different opinions and and I [TS]

  think that's a really good thing if if [TS]

  it were a supermodel culture or [TS]

  something like that that probably very [TS]

  unhealthy taking a little bit of a turn [TS]

  so i started writing Swift almost [TS]

  exactly a year ago now and the project [TS]

  that i'm doing at work [TS]

  we're using RX Swift and in [TS]

  quote-unquote reactive programming and [TS]

  i'm curious have you looked into that at [TS]

  all and do you have any particular [TS]

  thoughts on it doesn't seem barbaric to [TS]

  you does it seem clever does it just [TS]

  seem like an odd choice at ya what what [TS]

  is your take on this whole RX thing [TS]

  yeah I i I've definitely seen it i have [TS]

  no real world usage experience for sure [TS]

  most of my opinion is based on reading [TS]

  blogs and reading people talk about how [TS]

  awesome it is well not talking about the [TS]

  problems [TS]

  yeah I from what I gather it seems like [TS]

  it is a way of letting you write a lot [TS]

  less code and code that often works [TS]

  better [TS]

  the first time and i can see that super [TS]

  appealing it also seems like it'd be [TS]

  really challenging to debug it and [TS]

  maintain it and so I don't know between [TS]

  the two proteins between the pros and [TS]

  cons out balances out if I writing a lot [TS]

  of high-level apps i would probably try [TS]

  it out on an opportunity if I liked it [TS]

  but but aside from that are really have [TS]

  a good insight either way if it's the [TS]

  right thing to do or not sure sure [TS]

  absolutely [TS]

  you mentioned just a second ago that you [TS]

  see some problems and you mentioned [TS]

  debugging is there anything else that [TS]

  jumps out at you is being a big concern [TS]

  or or disinterest that it's so different [TS]

  I mean I'm not afraid of different [TS]

  things i think that it's it's more of AI [TS]

  mean the questions I'd raise and this is [TS]

  out of ignorance not out of church or [TS]

  here but you know is what is the [TS]

  community doing is their support line [TS]

  are it is the you know is it changing [TS]

  and evolving in a way that is good or [TS]

  bad [TS]

  and these are just things i don't know [TS]

  because i haven't used to but I have [TS]

  nothing against the RX community at all [TS]

  and I've seen a lot of really cool [TS]

  things I've done and I've read many of [TS]

  the the positive post in RX and and rach [TS]

  native than many of the other things for [TS]

  people using active techniques so and [TS]

  reactive cocoa has also been around for [TS]

  quite a while and at and I think that's [TS]

  a really interesting application that [TS]

  maybe became a lot easier when Swift [TS]

  came out then doing an objective-c [TS]

  absolutely so i think that is great this [TS]

  with can support different kinds of [TS]

  programming models like that because you [TS]

  know if a awesome new right answer to [TS]

  some problem comes out you'd hope that [TS]

  you know that your system can support it [TS]

  and can make it really elegant and [TS]

  beautiful i feel kind of like this is [TS]

  fighting you know the last war instead [TS]

  of the current war but you mentioned [TS]

  garbage collection for his ark bunch of [TS]

  times and obviously that ship has sailed [TS]

  but i would love for you to give a a [TS]

  reasonable summary of what the [TS]

  trade-offs are there because objective-c [TS]

  had [TS]

  garbage collection as you mentioned sort [TS]

  of at yeah it's not there and eventually [TS]

  objective-c dropped the garbage [TS]

  collection and got our kind of course [TS]

  Swift doesn't have garbage collection at [TS]

  all can you talk about the trade-offs [TS]

  there and why Swift is the way it is [TS]

  what would you like a comparison of Arc [TS]

  against the garbage collector [TS]

  objective-c head or garbage collection [TS]

  in theory but you could pick garbage [TS]

  collection in a language perhaps not as [TS]

  burdened as objective-c with see [TS]

  backwards compatibility but you know [TS]

  that's worth mentioning is well i think [TS]

  so i think thats objective-c a decision [TS]

  based on Lovato Lovato had a bunch of [TS]

  implementation concerns and other things [TS]

  that I think don't reflect they don't [TS]

  obviously reflect on to the ultimate [TS]

  garbage collector that you'd ever want [TS]

  to have and so I don't think the [TS]

  comparing against that is interesting [TS]

  but let me turn around so what why do [TS]

  you think our reflections interesting [TS]

  what what is compelling about garbage [TS]

  collection beyond our well it did the [TS]

  idea that [TS]

  yeah memory management is completely out [TS]

  of the hands of the programmer and it's [TS]

  some magical fairy behind-the-scenes [TS]

  will make it all good for you and that [TS]

  you know obviously what you're giving up [TS]

  as you mentioned before that you know [TS]

  even with our cue you lack some amount [TS]

  of control that you'll need to to have a [TS]

  language that becomes a system [TS]

  programming which obviously give that up [TS]

  with the garbage collection because [TS]

  you're not gonna be doing assistant [TS]

  program language in the garbage [TS]

  collected with a garbage collector [TS]

  behind it although i think Microsoft has [TS]

  some project to do that singularity [TS]

  product but they were trying to build a [TS]

  hall West off of garbage collection not [TS]

  quite sure how that's good that's going [TS]

  right but even if even if you ignore the [TS]

  the systems programming side of things [TS]

  because i think it's fair to say a lot [TS]

  of people don't care about that and so [TS]

  garbage collection is proven in the [TS]

  application space for java for example [TS]

  right and pearl but do this reference [TS]

  counting come on [TS]

  oh that's right it's python that users [TS]

  reference counting plus cycle collector [TS]

  so but let me ask you again so you said [TS]

  it means you don't have to think about [TS]

  memory is that true [TS]

  well that's the pitch the pitches that [TS]

  the programmers tend to think about it [TS]

  they have to think about it when the [TS]

  garbage collector and understand the [TS]

  pitch but is it true when the garbage [TS]

  collector starts doing things you don't [TS]

  want and then all of a sudden you do [TS]

  have to think about it but then there's [TS]

  almost nothing you [TS]

  do about it yeah so so here's here's the [TS]

  way I look at it and as you said that [TS]

  the ship has somewhat sale [TS]

  I am totally convinced the artists right [TS]

  way to go up front it is better a whole [TS]

  bunch of different ways it gives you [TS]

  deterministic behavior so you don't get [TS]

  you know it doesn't have the [TS]

  unpredictable stutter problem that [TS]

  people like to bash on gc's the starter [TS]

  problem to me isn't really the issue [TS]

  even though that's what GC haters will [TS]

  bring up all the time it's more about [TS]

  being a reason about when the memory [TS]

  goes away and the most important aspect [TS]

  of that is that are conservative [TS]

  finalized errs so if you use a garbage [TS]

  collector of language use finalized errs [TS]

  finalizer Tsar the thing that gets run [TS]

  when your object is destroyed finalizes [TS]

  have so many problems there are entire [TS]

  that there's entire bodies of work [TS]

  talking about how to work around [TS]

  problems with finalizer for example the [TS]

  finalizer gets around the wrong thread [TS]

  it has get run multiple [TS]

  it has get run multiple [TS]

  x the object get resurrected while the [TS]

  final is running happens non-statistical [TS]

  later you can't count on it and so you [TS]

  can't use it for resource management for [TS]

  database animals and things like that [TS]

  for example there are so many problems [TS]

  with finalizes the artist defines away [TS]

  by having deterministic destruction [TS]

  beyond that art though so the the common [TS]

  that another common thing they're there [TS]

  to two arguments that people make [TS]

  against are in favor of a trace and [TS]

  garbage collector one of which is the [TS]

  arcades overhead because you have [TS]

  retained release operations that run and [TS]

  that is true [TS]

  the other is that you have to think [TS]

  about cycles in arc because it doesn't [TS]

  automatically collects cycles and that [TS]

  is also true and the the rebuttal I'd [TS]

  give to people is that those problems [TS]

  are also true in garbage collection just [TS]

  in different ways so in a garbage [TS]

  collector for example people don't think [TS]

  about it but garbage collection injects [TS]

  additional code into your application [TS]

  just like artists and so you know there [TS]

  are many different garbage collection [TS]

  algorithms not all of them are the same [TS]

  but the most modern garbage collectors [TS]

  that use a nursery for short lifetime [TS]

  objects and then promote them out there [TS]

  generational use something called the [TS]

  right barrier the right barrier is every [TS]

  time you store to a property of an [TS]

  object say you have to run additional [TS]

  code garbage collectors also need the [TS]

  ability to stop all the threads or at [TS]

  least to be able to stop threads at some [TS]

  point in time and they need to be able [TS]

  to do so within a specific time down [TS]

  because they don't want the garbage [TS]

  collector to take forever [TS]

  the artifact that is the typical garbage [TS]

  collectors in Java for example will [TS]

  introduce what's called a safe point [TS]

  into loops and so now in your loops [TS]

  extra code is being run because of the [TS]

  garbage collector and on more aggressive [TS]

  garbage collection algorithms for [TS]

  example i was reading a blog post [TS]

  recently about goes tricolor algorithm [TS]

  they they're touting the advantage of [TS]

  you get really low latency and you get [TS]

  the ability to guarantee response times [TS]

  and more firing level than most garbage [TS]

  collectors but to do that they use this [TS]

  tricolor algorithm which dramatically [TS]

  lowers throughput and that dramatically [TS]

  lower throughput because they're doing [TS]

  almost exactly the same kinds of [TS]

  operations that are kids doing the [TS]

  problem that it then introduces those [TS]

  that these operations that the garbage [TS]

  collectors introducing are sometimes but [TS]

  not nearly as well optimized elazig the [TS]

  ark overhead that the ark optimize it [TS]

  applies to and furthermore there's no [TS]

  kind of out on it so with our I think [TS]

  and hope that the ownership model will [TS]

  give people the ability to take control [TS]

  of those overheads and if it becomes a [TS]

  problem practice or if they're just that [TS]

  kind of person they can take full [TS]

  control over the lifetime of their [TS]

  objects and then know the ark will never [TS]

  happen in the garbage collector you [TS]

  don't have that so the performance side [TS]

  of things I think is still up in the air [TS]

  because are certainly doesn't reduce [TS]

  overhead some of that's unavoidable at [TS]

  least without lots of annotations in [TS]

  your code but I also i think that arc is [TS]

  not done yet a ton of energy has been [TS]

  poured into research for garbage [TS]

  collection particularly since Java has [TS]

  come up there have been hundreds of [TS]

  papers written in the academic circles [TS]

  tons of work and hotspot another other [TS]

  job implementations to do different [TS]

  tweaks and different tunings and [TS]

  different new kinds of albums and [TS]

  garbage collection and that work really [TS]

  hasn't been done for archaea and so I [TS]

  think there's still a big future ahead [TS]

  on the programming side of things the [TS]

  cycle side of things i think it's also [TS]

  really interesting question of how much [TS]

  people think about memory when you when [TS]

  you when I was baiting you a little bit [TS]

  he said anything about garbage [TS]

  collection is that you don't have to [TS]

  think about memory but of course we know [TS]

  that's not true right because if you [TS]

  have a reference to some big object [TS]

  graph they didn't mean to keep around [TS]

  maybe it's in your undo stack then you [TS]

  will quote unquote leak that memory [TS]

  right and that that's true a garbage [TS]

  collector that's true of arc as well [TS]

  it's just any any automatic memory [TS]

  management approach has that problem and [TS]

  so that that is a really interesting [TS]

  thing that there's [TS]

  this question of if you're building a [TS]

  large scale system do you want people to [TS]

  quote-unquote never think about memory [TS]

  do you want them to think about memory [TS]

  all the time like they did in [TS]

  objective-c classic retain and release [TS]

  man retain release or do you want [TS]

  something in the middle and I think the [TS]

  ark strikes a really interesting balance [TS]

  that either whether it's in objective-c [TS]

  orin swift where I look at manual retain [TS]

  really releases being a very imperative [TS]

  style of memory management or Malcolm [TS]

  free all these things where you're [TS]

  telling the code line by line this is [TS]

  where you should do a reference count [TS]

  operation this is where you should [TS]

  release the memory [TS]

  this is what you should do at this point [TS]

  I'm are then takes that model and [TS]

  bubbles it up a big step and it makes it [TS]

  being it makes it be a very declarative [TS]

  model so instead of telling the compiler [TS]

  or the the the telling the compiler that [TS]

  this is the place you should do retain [TS]

  you said say this is an open [TS]

  relationship [TS]

  the cool thing about that to me is that [TS]

  not only does that get rid of the the [TS]

  mechanics of maintaining reference [TS]

  counting and define away tons above by [TS]

  doing that it also means that is now [TS]

  explicit in your code what your [TS]

  intention was and that's something that [TS]

  people who maintain your code benefit [TS]

  from and so by saying that I have a weak [TS]

  point or to the parent object of my my [TS]

  thing that's a really important [TS]

  relationship to know about and as you're [TS]

  looking at the code you maintain the [TS]

  code having that be explicit is very [TS]

  valuable because it talks about the the [TS]

  the relationship between values and to [TS]

  me again with the goal of being ever [TS]

  write large-scale applications and Swift [TS]

  I think that's really useful [TS]

  I also don't think it's hugely [TS]

  burdensome though it is definitely part [TS]

  of the learning curve of learning how [TS]

  swift works that you know has to be [TS]

  balanced in there as well and so i don't [TS]

  know i mean i like it is there are has [TS]

  clear advantages in terms of allowing [TS]

  Swift to scale down two systems that can [TS]

  tolerate having a garbage collector for [TS]

  example if you want to write from where [TS]

  Swift [TS]

  I think it does provide a better [TS]

  programming model where programmers [TS]

  think just a little bit about memory and [TS]

  i think that you know going forward it [TS]

  provides a really high performance model [TS]

  that you can get better than better than [TS]

  garbage collection and almost every way [TS]

  so i think that in terms of trade-offs [TS]

  it's the right one push forward the [TS]

  other I guess third piece that that [TS]

  garbage collection is really bad about [TS]

  is kind of a showstopper for swift which [TS]

  is inner interoperability with C code so [TS]

  if you've ever worked with java or with [TS]

  other similar garbage collector of [TS]

  languages one of the major advantages [TS]

  the garbage collectors give you is they [TS]

  move objects and they need to do that so [TS]

  they can compact those objects so that [TS]

  they can then efficiently doo doo [TS]

  allocations but the problem is that once [TS]

  you start moving objects around if [TS]

  you're interfacing with C code [TS]

  you can't have some random c-code having [TS]

  a pointer to your object and have it [TS]

  moved because then you get a dangling [TS]

  pointer and so once you get down that [TS]

  line you end up with things like J&I the [TS]

  java native interface where you have to [TS]

  explicitly pin things you have to [TS]

  maintain them it's very complicated it's [TS]

  really buggy and are completely defines [TS]

  us away by just saying that ok [TS]

  something's in memory its it has [TS]

  predictable lifetime you can reason [TS]

  about it but provides tools for dealing [TS]

  with unsafe pointers and things like [TS]

  that and that makes the interoperability [TS]

  with existing seco but also with [TS]

  Objective C and maybe someday c++ code [TS]

  really simple really natural and really [TS]

  efficient and I think that's a huge [TS]

  advantage that are provides that really [TS]

  would be impossible to do with with the [TS]

  garbage collector so that's my opinion [TS]

  I mean I think reasonable people just [TS]

  agree obviously but it's something that [TS]

  does come up now and then or used to [TS]

  come up anyway i'm convinced i think you [TS]

  should use our for swift got to get on [TS]

  that [TS]

  yeah Chris thank you so very very very [TS]

  much for coming on the show [TS]

  obviously we are not an interview show [TS]

  is its listeners have discovered over [TS]

  the last hour to but uh but to take your [TS]

  time on what is presumably a very busy [TS]

  time of your life in to spend it with us [TS]

  three knuckleheads I really appreciate [TS]

  it and [TS]

  it was very kind of you to do and [TS]

  hopefully this won't be the last time [TS]

  that we'll hear you want to put on a [TS]

  show or maybe even the show we'll see [TS]

  so thank you Chris I really appreciate [TS]

  it yeah well thank you for having me and [TS]

  I've had fun even though I'm terrified [TS]

  and probably a fool of myself and not at [TS]

  all just me that's that's normal [TS]

  I'm still trying to get over that plus [TS]

  that's our job they're alright thanks [TS]

  lat 43 sponsors this week 0 square space [TS]

  and audible and we will see you next [TS]

  week [TS]

  now the show is over they didn't even [TS]

  mean to be in because it was accidental [TS]

  death was accidental [TS]

  John didn't research Marco and Casey [TS]

  wouldn't let him [TS]

  because it was accidentally was [TS]

  accidental and you can find show know [TS]

  today [TS]

  DP died and it for twitter follow them [TS]

  [Music] [TS]

  yes byl ISS so that's Casey list and a [TS]

  co-pay RM Angie Marco Arment our CC [TS]

  Syracuse [TS]

  what [TS]

  we didn't talk about a woodworking stuff [TS]

  yeah making splitters is fun what about [TS]

  what kind of wood was a table Nina it's [TS]

  it's one that's gonna be tough [TS]

  that's a lot of that's a lot of kinds [TS]

  pretty hard wood right yeah yeah i mean [TS]

  it takes time because it's fun it's one [TS]

  of these one of these areas where you [TS]

  can learn a lot about it over time and [TS]

  keep going deeper and deeper in [TS]

  different spaces and there's never you [TS]

  never know everything so it's a lot of [TS]

  fun to dive into woodworking is also [TS]

  very very different than sitting in [TS]

  front of a computer all day now you're [TS]

  actually going to make something with [TS]

  your hands and you gotta build much [TS]

  higher chance for dismemberment that [TS]

  that is true that is true i think i [TS]

  think it's interesting when programmers [TS]

  have like incredibly analog hobbies [TS]

  it's also letters because the [TS]

  woodworking communities going to this [TS]

  whole cnc thing [TS]

  well they're turning into a very [TS]

  programmed thing again [TS]

  people always say well why don't you get [TS]

  cnc indubitable own like but that's [TS]

  exactly what I'm escaping think I don't [TS]

  want to have to program my little you [TS]

  can't even escape like the community [TS]

  arguments over standards and had to make [TS]

  it so you just cut down a tree in your [TS]

  throat into your workshop and then out [TS]

  comes a table [TS]

  yeah well so that's that's the that's [TS]

  the funny thing about people is that [TS]

  people are all the same they just don't [TS]

  want to notice the greater the effect [TS]

  you know you get two very different [TS]

  communities and they think they're all [TS]

  different but they're actually the same [TS]

  at route so Chris you're obviously [TS]

  changing careers while careers [TS]

  necessarily change employers would you [TS]

  consider yourself a car person I was [TS]

  that's a funny question [TS]

  I mean I obviously need a car cars [TS]

  important but I'm what i consider to be [TS]

  a nun car person I want to accelerate [TS]

  the path to cars being appliances that [TS]

  solve people's problems and i'm [TS]

  personally not the kind of guy who loves [TS]

  doing I'll changes and fiddling around [TS]

  with them I just want something that is [TS]

  reliable that works [TS]

  ideally drives me where I want to go and [TS]

  I don't have to think about it it's just [TS]

  you know solving my problems it's not [TS]

  something I have to care for feed and [TS]

  maintain so but that's kind of the way I [TS]

  look at cars can you drive a stick