205: People Don't Use the Weird Parts
00:00:00
◼
►
so let's start with some follow-up why
[TS]
00:00:02
◼
►
did chris lattner decide to leave Apple
[TS]
00:00:04
◼
►
last week we talked about this and we
[TS]
00:00:07
◼
►
tried to list all the reasons we could
[TS]
00:00:09
◼
►
think of why he might be leaving and I
[TS]
00:00:11
◼
►
think we covered most of the major
[TS]
00:00:14
◼
►
threads of speculation and didn't really
[TS]
00:00:15
◼
►
get a listener feedback about anybody
[TS]
00:00:17
◼
►
did reply was mostly voting for one of
[TS]
00:00:18
◼
►
the things we talked about but here's
[TS]
00:00:21
◼
►
the thing i was topic unless there's
[TS]
00:00:22
◼
►
some kind of like secret doomsday thing
[TS]
00:00:25
◼
►
about Apple that only Chris knows it's
[TS]
00:00:27
◼
►
not actually that important that we
[TS]
00:00:29
◼
►
figure out like why he left apple or
[TS]
00:00:31
◼
►
what was in his heart of hearts like
[TS]
00:00:32
◼
►
aside from just being busy bodies are
[TS]
00:00:34
◼
►
just wanting to know like a gossip type
[TS]
00:00:35
◼
►
stuff and second pragmatically speaking
[TS]
00:00:39
◼
►
this is just not the type of thing that
[TS]
00:00:41
◼
►
people who leave Apple talk about or you
[TS]
00:00:43
◼
►
know if they do talk about it's like
[TS]
00:00:45
◼
►
years and years later after everyone no
[TS]
00:00:46
◼
►
one cares anymore or you know like it's
[TS]
00:00:48
◼
►
not a big deal
[TS]
00:00:49
◼
►
so even if there was some deep dark
[TS]
00:00:51
◼
►
reason it's not like we would know about
[TS]
00:00:53
◼
►
it until years from now and honestly the
[TS]
00:00:55
◼
►
straightforward boring explanation is
[TS]
00:00:56
◼
►
probably the right one anyway so you
[TS]
00:00:59
◼
►
know I don't know what do you think
[TS]
00:01:00
◼
►
Chris that sounds about right to me John
[TS]
00:01:02
◼
►
would you ever buy an electric car in
[TS]
00:01:07
◼
►
white if you weren't such a jerk
[TS]
00:01:11
◼
►
why are you so mean to be barca no no
[TS]
00:01:13
◼
►
I'm fine red cars there you get all
[TS]
00:01:16
◼
►
yellow thank you get them yellow that's
[TS]
00:01:19
◼
►
my guess alright we obviously need to
[TS]
00:01:22
◼
►
talk about what's happening right now so
[TS]
00:01:23
◼
►
ATP is not interested in interview show
[TS]
00:01:26
◼
►
but in extraordinary circumstances weird
[TS]
00:01:30
◼
►
things can happen and so in today's
[TS]
00:01:33
◼
►
episode we have an extraordinary
[TS]
00:01:34
◼
►
circumstance former apple employee Chris
[TS]
00:01:37
◼
►
lander was like nice enough to join us
[TS]
00:01:39
◼
►
on the show and so this is going to be
[TS]
00:01:42
◼
►
three people interviewing one person
[TS]
00:01:43
◼
►
which is to say the least a bit peculiar
[TS]
00:01:46
◼
►
and it's something that we've never
[TS]
00:01:47
◼
►
really done before so this could be a
[TS]
00:01:50
◼
►
little bit of a rough ride but we're
[TS]
00:01:52
◼
►
gonna try to make our best of it and and
[TS]
00:01:54
◼
►
i'll just say right up front
[TS]
00:01:56
◼
►
thank you so much Chris for coming on
[TS]
00:01:57
◼
►
the show and we definitely appreciate it
[TS]
00:01:59
◼
►
to kind of kick all this off would you
[TS]
00:02:01
◼
►
mind giving us like a nickel tour of who
[TS]
00:02:03
◼
►
is crystalline okay well I can try
[TS]
00:02:07
◼
►
I'm a programmer and
[TS]
00:02:10
◼
►
of coding i have for a long time I am
[TS]
00:02:13
◼
►
most widely known for starting lbm and
[TS]
00:02:16
◼
►
getting it off the ground and handing it
[TS]
00:02:18
◼
►
off to other smarter people i started
[TS]
00:02:20
◼
►
playing which is the C C++ objective c
[TS]
00:02:23
◼
►
compiler and likewise got to the point
[TS]
00:02:25
◼
►
where it was thriving and then let other
[TS]
00:02:28
◼
►
smarter people run it and then started
[TS]
00:02:31
◼
►
Swift and got Swift going and it
[TS]
00:02:33
◼
►
recently got past three dough and it has
[TS]
00:02:36
◼
►
an amazing community and has a great
[TS]
00:02:38
◼
►
team of people running it and now I'm
[TS]
00:02:40
◼
►
ready to jump to the next thing and so I
[TS]
00:02:43
◼
►
guess the short version of what i'd like
[TS]
00:02:45
◼
►
to do is tackle really hard problems and
[TS]
00:02:48
◼
►
do things that most people think you're
[TS]
00:02:50
◼
►
impossible
[TS]
00:02:51
◼
►
so we're gonna go back in time a little
[TS]
00:02:53
◼
►
bit and i hope that you could tell us
[TS]
00:02:57
◼
►
how you ended up coming to apple like if
[TS]
00:02:59
◼
►
you can remember back that far like you
[TS]
00:03:01
◼
►
know you
[TS]
00:03:02
◼
►
lvm you started before you or an apple
[TS]
00:03:04
◼
►
right so how did you end up an apple
[TS]
00:03:06
◼
►
yeah isn't it a great question so i
[TS]
00:03:07
◼
►
started working out via aim at the
[TS]
00:03:09
◼
►
University of Illinois it was a research
[TS]
00:03:12
◼
►
project and the it really was kind of
[TS]
00:03:17
◼
►
hope for and designed to be fully
[TS]
00:03:19
◼
►
general and production quality and all
[TS]
00:03:21
◼
►
those great things that you want as a
[TS]
00:03:24
◼
►
graduate student for people to use your
[TS]
00:03:25
◼
►
code but it also wasn't it was had a lot
[TS]
00:03:30
◼
►
of the great architectural ideas maybe
[TS]
00:03:32
◼
►
but it wasn't fully baked it wasn't
[TS]
00:03:34
◼
►
wouldn't solve all the world's problems
[TS]
00:03:37
◼
►
and by the time I got to graduate
[TS]
00:03:41
◼
►
the question was what do I do next and
[TS]
00:03:43
◼
►
of course my dream was to continue
[TS]
00:03:44
◼
►
pushing forward and build it out to be
[TS]
00:03:47
◼
►
something real and to do that i would
[TS]
00:03:49
◼
►
have to go to a place that would allow
[TS]
00:03:50
◼
►
me to work on it and I was really
[TS]
00:03:52
◼
►
fortunate to build relationships with
[TS]
00:03:54
◼
►
folks at Apple they took a chance on me
[TS]
00:03:56
◼
►
and I jumped apple and started building
[TS]
00:03:59
◼
►
out of them is my job was it was totally
[TS]
00:04:02
◼
►
a dream of mine so that's how you have
[TS]
00:04:04
◼
►
to graduate
[TS]
00:04:05
◼
►
did you get your degree and then go to
[TS]
00:04:06
◼
►
apple yeah yeah that was nice
[TS]
00:04:09
◼
►
otherwise how do you ever get a job yeah
[TS]
00:04:11
◼
►
you can get a job that degree we all
[TS]
00:04:12
◼
►
know that no yeah yeah so
[TS]
00:04:15
◼
►
how would you explain lvm to somebody
[TS]
00:04:17
◼
►
who doesn't know stuff about compilers
[TS]
00:04:19
◼
►
because like we all just rattle off the
[TS]
00:04:21
◼
►
LEM compiler building tool kit or
[TS]
00:04:23
◼
►
whatever like but how would you explain
[TS]
00:04:25
◼
►
that to someone bizarre other listeners
[TS]
00:04:27
◼
►
of programmers who isn't into may be
[TS]
00:04:29
◼
►
familiar with how compiler works
[TS]
00:04:30
◼
►
sure so I mean first we start with what
[TS]
00:04:32
◼
►
does the compiler a compiler is the
[TS]
00:04:35
◼
►
thing that takes the code the programmer
[TS]
00:04:37
◼
►
writes and turns it into something
[TS]
00:04:39
◼
►
machine can understand and so there's
[TS]
00:04:41
◼
►
lots of different kinds of computers
[TS]
00:04:43
◼
►
with lots of different kinds of
[TS]
00:04:44
◼
►
processors most programmers don't have
[TS]
00:04:47
◼
►
to think about that or know about that
[TS]
00:04:49
◼
►
and they wanted program and think in a
[TS]
00:04:51
◼
►
much higher level than what the the
[TS]
00:04:53
◼
►
actual processor can do and so the
[TS]
00:04:55
◼
►
compiler job is to transform what what
[TS]
00:04:58
◼
►
the human wrote and to something the
[TS]
00:05:00
◼
►
machine can understand then lvm is a
[TS]
00:05:04
◼
►
modular system for building different
[TS]
00:05:06
◼
►
kinds of compilers because there's lots
[TS]
00:05:08
◼
►
of different reasons why people would
[TS]
00:05:10
◼
►
want to use compiler technology and I
[TS]
00:05:12
◼
►
think album was most successful over the
[TS]
00:05:14
◼
►
years because was built as reusable
[TS]
00:05:16
◼
►
components kind of like a framework and
[TS]
00:05:20
◼
►
then the framework can be used to solve
[TS]
00:05:22
◼
►
lots of different problems and one of
[TS]
00:05:24
◼
►
the fun things about lvm is that it was
[TS]
00:05:26
◼
►
eventually over the years used to solve
[TS]
00:05:28
◼
►
problems that we had never even imagined
[TS]
00:05:29
◼
►
which is really exciting
[TS]
00:05:31
◼
►
so one example of that the type of
[TS]
00:05:33
◼
►
problem is a remember from passwd sees
[TS]
00:05:36
◼
►
the idea that the xcode ID the GUI that
[TS]
00:05:40
◼
►
you programs used to to make their
[TS]
00:05:41
◼
►
applications that very often in that
[TS]
00:05:44
◼
►
gooey you need to do things that have an
[TS]
00:05:46
◼
►
understanding of the code but when the
[TS]
00:05:48
◼
►
compiler is big monolithic thing the
[TS]
00:05:50
◼
►
best you can kind of do is compile
[TS]
00:05:52
◼
►
everything in the background and spit
[TS]
00:05:53
◼
►
out some stuff but when it's a modular
[TS]
00:05:55
◼
►
toolkit you can take those pieces and
[TS]
00:05:58
◼
►
just use the part that understands like
[TS]
00:06:00
◼
►
the syntax tree or whatever and
[TS]
00:06:01
◼
►
integrate them was that the first use of
[TS]
00:06:04
◼
►
lvm is something other than like you
[TS]
00:06:08
◼
►
know a complete like a straight-up
[TS]
00:06:09
◼
►
compiler that you just point your code
[TS]
00:06:11
◼
►
and produces output like you know in
[TS]
00:06:13
◼
►
other words integrating it into
[TS]
00:06:14
◼
►
applications or was there some use
[TS]
00:06:15
◼
►
before that
[TS]
00:06:17
◼
►
well i think the the first use and
[TS]
00:06:19
◼
►
production was in the opengl stack which
[TS]
00:06:22
◼
►
end of shipping and a late software
[TS]
00:06:24
◼
►
update for tiger
[TS]
00:06:25
◼
►
and as well as in leopard which is 10
[TS]
00:06:28
◼
►
dot 4 in 10 5
[TS]
00:06:30
◼
►
there was using a completely invisible
[TS]
00:06:33
◼
►
way to translate to basically repack
[TS]
00:06:36
◼
►
data and uploaded to the GPU and so when
[TS]
00:06:39
◼
►
you need to
[TS]
00:06:40
◼
►
when you're making opengl calls to say
[TS]
00:06:42
◼
►
GL vertex 3 f or whatever the the
[TS]
00:06:45
◼
►
low-level GL call is those verses need
[TS]
00:06:49
◼
►
to be transformed into a very specific
[TS]
00:06:51
◼
►
data format the GPU can understand and
[TS]
00:06:53
◼
►
you have a whole bunch of different
[TS]
00:06:54
◼
►
kinds of calls that can be used to
[TS]
00:06:56
◼
►
produce for tech surge in other geometry
[TS]
00:06:58
◼
►
data but you also have a matrix of
[TS]
00:07:00
◼
►
different kinds of GPUs you need to
[TS]
00:07:02
◼
►
support and they all have different
[TS]
00:07:03
◼
►
formats and different capabilities and
[TS]
00:07:05
◼
►
requirements and so Alabama's used to
[TS]
00:07:07
◼
►
generate very small chunks of code to do
[TS]
00:07:09
◼
►
that and it was part of the 64-bit bring
[TS]
00:07:12
◼
►
up in the leopard timeframe and so that
[TS]
00:07:14
◼
►
was probably the first completely
[TS]
00:07:16
◼
►
invisible use of it the that used and
[TS]
00:07:19
◼
►
proved a lot of the kind of code
[TS]
00:07:21
◼
►
generation technologies so forgive me
[TS]
00:07:24
◼
►
one more lvm related things are going to
[TS]
00:07:26
◼
►
go from what is the compiler all I down
[TS]
00:07:27
◼
►
to the nitty-gritty stuff here my vague
[TS]
00:07:30
◼
►
recollection of what you just described
[TS]
00:07:31
◼
►
the whole video driver thing was that
[TS]
00:07:33
◼
►
there were files on disk in the shipping
[TS]
00:07:36
◼
►
us that were basically lvm bytecode like
[TS]
00:07:39
◼
►
these little bc files and they would get
[TS]
00:07:42
◼
►
slurped up and converted to machine code
[TS]
00:07:45
◼
►
appropriate for the GPU and spaz is that
[TS]
00:07:48
◼
►
am i right about that yeah you're
[TS]
00:07:49
◼
►
absolutely right and so it basically the
[TS]
00:07:51
◼
►
we look at is the the code files the lvm
[TS]
00:07:55
◼
►
the ship with the OS were little
[TS]
00:07:57
◼
►
snippets of code that then at runtime or
[TS]
00:08:00
◼
►
recombined and optimized across and so
[TS]
00:08:03
◼
►
that was kind of the library of
[TS]
00:08:04
◼
►
primitives that the opengl runtime used
[TS]
00:08:07
◼
►
to assemble what it was trying to do
[TS]
00:08:09
◼
►
alright so my question about this and
[TS]
00:08:11
◼
►
maybe you kind of alluded to with either
[TS]
00:08:12
◼
►
a slip of the tongue or reviewing
[TS]
00:08:14
◼
►
understanding is what is the difference
[TS]
00:08:16
◼
►
between llvm bytecode and what Apple
[TS]
00:08:18
◼
►
currently brands as bit code
[TS]
00:08:21
◼
►
oh well DRS first or quote is a
[TS]
00:08:23
◼
►
historical it's a technical and
[TS]
00:08:26
◼
►
historical cuz I'm confused by the
[TS]
00:08:28
◼
►
branding and I'm also confused by the
[TS]
00:08:29
◼
►
tech so lvm prior to lv m2 dot oh and
[TS]
00:08:35
◼
►
these version numbers of the open-source
[TS]
00:08:36
◼
►
version numbers not related to the apple
[TS]
00:08:38
◼
►
version
[TS]
00:08:38
◼
►
numbers and their confusingly different
[TS]
00:08:40
◼
►
for not very interesting reasons but
[TS]
00:08:43
◼
►
before to do used a really horrible
[TS]
00:08:46
◼
►
encoding in binary the was branded
[TS]
00:08:50
◼
►
bytecode because that's what java use
[TS]
00:08:52
◼
►
had a whole bunch of problems and there
[TS]
00:08:54
◼
►
was an extensible it was fragile with
[TS]
00:08:57
◼
►
the ilbm was changing and didn't have
[TS]
00:09:00
◼
►
compatibility and so in the lvm to do
[TS]
00:09:04
◼
►
timeframe which josh is probably don't
[TS]
00:09:08
◼
►
know ten ten years ago or more it's been
[TS]
00:09:10
◼
►
a long time ago now I redesign the whole
[TS]
00:09:15
◼
►
thing and it now uses this quote-unquote
[TS]
00:09:17
◼
►
bit code format and use bit code as a
[TS]
00:09:20
◼
►
term for two reasons one of which was it
[TS]
00:09:22
◼
►
was different than bytecode and so the
[TS]
00:09:24
◼
►
two could be side-by-side in the
[TS]
00:09:25
◼
►
directory tree for a while and the
[TS]
00:09:27
◼
►
second reason is that the encoding is a
[TS]
00:09:29
◼
►
bitstream format instead of a byte
[TS]
00:09:30
◼
►
stream but that that's the origin of the
[TS]
00:09:34
◼
►
term bit code you can find documentation
[TS]
00:09:36
◼
►
in this file format is actually a very
[TS]
00:09:38
◼
►
general encoding format that you can use
[TS]
00:09:41
◼
►
for xmltype purposes it's a
[TS]
00:09:43
◼
►
self-describing file format and multiple
[TS]
00:09:46
◼
►
different things can be encoded in a bit
[TS]
00:09:48
◼
►
code that was definitely some confusion
[TS]
00:09:50
◼
►
about that because when Apple presented
[TS]
00:09:51
◼
►
it when they presented it as like the
[TS]
00:09:53
◼
►
required was like the watch apps have to
[TS]
00:09:54
◼
►
be a bit code Marco you would know this
[TS]
00:09:56
◼
►
watch's required iOS is still optional
[TS]
00:09:59
◼
►
and TV is required and they would have
[TS]
00:10:02
◼
►
you send you put your stuff in bit code
[TS]
00:10:04
◼
►
and there's a lot of speculation early
[TS]
00:10:06
◼
►
on about what that meant like in terms
[TS]
00:10:09
◼
►
of does that mean that what you're
[TS]
00:10:12
◼
►
uploading is not a finished binary and
[TS]
00:10:14
◼
►
therefore it's like this machine
[TS]
00:10:15
◼
►
agnostic and could be targeted any CPU
[TS]
00:10:17
◼
►
and the more prosaic version like it
[TS]
00:10:21
◼
►
doesn't mean its CPU agnostic all it
[TS]
00:10:23
◼
►
means is that Apple has slightly more
[TS]
00:10:25
◼
►
freedom to like change instructions on
[TS]
00:10:28
◼
►
the sea views they do target
[TS]
00:10:30
◼
►
how would you characterize the what what
[TS]
00:10:32
◼
►
what advantages are there of compiling
[TS]
00:10:36
◼
►
something to bit code and then uploading
[TS]
00:10:38
◼
►
it somewhere vs sending someone a binary
[TS]
00:10:40
◼
►
sure there's a good there's a couple of
[TS]
00:10:41
◼
►
different advantages for that one of
[TS]
00:10:43
◼
►
which is that the compiler keeps getting
[TS]
00:10:46
◼
►
better and so the compiler learns a new
[TS]
00:10:47
◼
►
optimization at
[TS]
00:10:49
◼
►
can be applied to existing applications
[TS]
00:10:51
◼
►
without application developers and
[TS]
00:10:52
◼
►
reupload their their app that's one
[TS]
00:10:55
◼
►
small thing other things is our the
[TS]
00:10:58
◼
►
apple just periodically add new
[TS]
00:10:59
◼
►
instructions to its at cps one example
[TS]
00:11:02
◼
►
this historically was the the
[TS]
00:11:06
◼
►
hilariously named swift check that
[TS]
00:11:08
◼
►
launched which was the first designed
[TS]
00:11:11
◼
►
in-house 32-bit ARM chip this was the
[TS]
00:11:15
◼
►
iphone 5 if I recall that's right
[TS]
00:11:17
◼
►
so in this chip they added an integer
[TS]
00:11:20
◼
►
divided instruction and all the chips
[TS]
00:11:22
◼
►
before that didn't have the ability to
[TS]
00:11:24
◼
►
do an integer divided in hardware you
[TS]
00:11:26
◼
►
had to actually open code it and there's
[TS]
00:11:28
◼
►
a library function to do that and so
[TS]
00:11:30
◼
►
that and the other instructions they
[TS]
00:11:32
◼
►
added were a pretty big deal and use
[TS]
00:11:35
◼
►
pervasively and the only way to tackle
[TS]
00:11:37
◼
►
then in and handle that and use it
[TS]
00:11:39
◼
►
effectively was to introduce an entire
[TS]
00:11:41
◼
►
new slice and so if you're an app
[TS]
00:11:43
◼
►
developer back then you had the v7 slice
[TS]
00:11:45
◼
►
which was all the older ships and then
[TS]
00:11:48
◼
►
you have to be 7s slice as for swift
[TS]
00:11:50
◼
►
which was the slice that included the
[TS]
00:11:55
◼
►
injured but now this is a pain for app
[TS]
00:11:57
◼
►
developers is paying for Apple everybody
[TS]
00:12:00
◼
►
has it has to convince all the
[TS]
00:12:01
◼
►
developers to take it seriously and if
[TS]
00:12:03
◼
►
it doesn't if app developers don't
[TS]
00:12:04
◼
►
support it then the new hardware doesn't
[TS]
00:12:05
◼
►
benefit from it and so--but code allows
[TS]
00:12:08
◼
►
that kind of thing to go completely away
[TS]
00:12:10
◼
►
with the code
[TS]
00:12:11
◼
►
apple just recompile the applications in
[TS]
00:12:13
◼
►
the store and say haha this this device
[TS]
00:12:16
◼
►
has an integer divided instruction and
[TS]
00:12:18
◼
►
it can it works perfectly with the
[TS]
00:12:20
◼
►
thinning kind of architecture they have
[TS]
00:12:21
◼
►
for deploying resources to specific
[TS]
00:12:24
◼
►
device types and all kind of looks
[TS]
00:12:26
◼
►
together bit code is not a magic
[TS]
00:12:30
◼
►
solution though it doesn't you can take
[TS]
00:12:32
◼
►
a 32-bit app for example and run on a
[TS]
00:12:35
◼
►
64-bit device that that kind of
[TS]
00:12:37
◼
►
portability isn't something that can
[TS]
00:12:38
◼
►
give you
[TS]
00:12:39
◼
►
notably because that is something that's
[TS]
00:12:41
◼
►
visible and see and so as you're writing
[TS]
00:12:44
◼
►
C code you can write if death you know
[TS]
00:12:47
◼
►
pointers equals 32 and that's something
[TS]
00:12:49
◼
►
that big coke and abstract / and so it's
[TS]
00:12:53
◼
►
useful for very specific low-level kinds
[TS]
00:12:55
◼
►
of enhancements
[TS]
00:12:57
◼
►
but isn't a panacea that makes
[TS]
00:12:59
◼
►
everything magically portable at the
[TS]
00:13:02
◼
►
same thing i would assume for like
[TS]
00:13:03
◼
►
architecture changes especially there
[TS]
00:13:04
◼
►
was an Indian difference because Indian
[TS]
00:13:05
◼
►
this is visible from the sea world so if
[TS]
00:13:07
◼
►
you can't you can't target different
[TS]
00:13:08
◼
►
ending this
[TS]
00:13:09
◼
►
yep yeah so this is not something
[TS]
00:13:11
◼
►
magically Saul portability problems but
[TS]
00:13:13
◼
►
is it is very useful for specific
[TS]
00:13:15
◼
►
problems that Apple's face in the past
[TS]
00:13:16
◼
►
and then going back to the this life
[TS]
00:13:19
◼
►
thing that's like terminology like I'm
[TS]
00:13:20
◼
►
tamaco format where you get to put
[TS]
00:13:22
◼
►
different architectures worth of
[TS]
00:13:23
◼
►
executable or is that a different
[TS]
00:13:25
◼
►
yeah it is i think this technology that
[TS]
00:13:26
◼
►
goes all the way back to next when next
[TS]
00:13:29
◼
►
supported really heterogeneous different
[TS]
00:13:31
◼
►
architectures like pa-risc and and spark
[TS]
00:13:33
◼
►
and RBC and Intel all back and in the
[TS]
00:13:37
◼
►
next days and it allows you to compile
[TS]
00:13:40
◼
►
your application with multiple slices
[TS]
00:13:42
◼
►
they call them and then there's a tool
[TS]
00:13:44
◼
►
called lipo which sticks them together
[TS]
00:13:46
◼
►
and at runtime the OS pics the slice the
[TS]
00:13:51
◼
►
best matches your cpu and practice and
[TS]
00:13:53
◼
►
so an app developer can support many
[TS]
00:13:55
◼
►
different kinds of architectures and
[TS]
00:13:57
◼
►
then the OS just does the right thing
[TS]
00:13:59
◼
►
and so in today's world it's very common
[TS]
00:14:01
◼
►
to build an iOS app for example the for
[TS]
00:14:05
◼
►
both arms 64 and arm 32 and the way that
[TS]
00:14:07
◼
►
works in the native in the simplest
[TS]
00:14:10
◼
►
cases it's just too different binary is
[TS]
00:14:13
◼
►
that are stuck together and then the OS
[TS]
00:14:15
◼
►
X the right one to run all right i could
[TS]
00:14:18
◼
►
go on for this river but I want to
[TS]
00:14:20
◼
►
that's right all it's just uh is this
[TS]
00:14:21
◼
►
some pent-up relations about Bitcoin
[TS]
00:14:24
◼
►
biko but now I feel satisfied we can go
[TS]
00:14:26
◼
►
on to broader topics we sponsor tonight
[TS]
00:14:30
◼
►
by Squarespace squarespace.com use code
[TS]
00:14:34
◼
►
ATP to get ten percent off your first
[TS]
00:14:36
◼
►
purchase
[TS]
00:14:36
◼
►
it's the new year you might have a new
[TS]
00:14:38
◼
►
project you might have a new goal you
[TS]
00:14:40
◼
►
want to reach and that might involve
[TS]
00:14:41
◼
►
making a website make your next move
[TS]
00:14:44
◼
►
with a beautiful website from
[TS]
00:14:46
◼
►
Squarespace Squarespace sites are so
[TS]
00:14:49
◼
►
incredibly easy to make and they're
[TS]
00:14:50
◼
►
incredibly beautiful and the tools are
[TS]
00:14:53
◼
►
very powerful
[TS]
00:14:54
◼
►
this is a great combination that i
[TS]
00:14:55
◼
►
personally have never seen before in the
[TS]
00:14:58
◼
►
web building space until Squarespace the
[TS]
00:15:00
◼
►
amount of power you get with these tools
[TS]
00:15:02
◼
►
is just incredible you can make so many
[TS]
00:15:04
◼
►
different kinds of sites with so little
[TS]
00:15:07
◼
►
nothing else comes close your site's
[TS]
00:15:10
◼
►
look professionally designed
[TS]
00:15:11
◼
►
regardless of your skill level with no
[TS]
00:15:13
◼
►
coding required although if you want to
[TS]
00:15:15
◼
►
jump in and help some of the code you
[TS]
00:15:16
◼
►
actually can but you don't have to and
[TS]
00:15:18
◼
►
it probably isn't a good use of your
[TS]
00:15:19
◼
►
time because Squarespace is such a great
[TS]
00:15:22
◼
►
platform right out-of-the-box whether
[TS]
00:15:25
◼
►
you're making website for you or for
[TS]
00:15:26
◼
►
somebody else if you make of somebody
[TS]
00:15:29
◼
►
Squarespace is the place you want to do
[TS]
00:15:30
◼
►
that because you shouldn't have to use
[TS]
00:15:33
◼
►
Squarespace and then you're done
[TS]
00:15:35
◼
►
they're not coming to you anymore
[TS]
00:15:35
◼
►
squares page will support if they need
[TS]
00:15:37
◼
►
help and able to figure things out on
[TS]
00:15:39
◼
►
their own because it's just so much
[TS]
00:15:40
◼
►
easier to use than whatever CMS you were
[TS]
00:15:42
◼
►
going to install on their server so
[TS]
00:15:43
◼
►
check out today go to squarespace.com
[TS]
00:15:45
◼
►
use code ATP to ten percent off your
[TS]
00:15:48
◼
►
first purchase when you decide to sign
[TS]
00:15:50
◼
►
up whether you're making a site for you
[TS]
00:15:52
◼
►
or somebody else make your next move
[TS]
00:15:54
◼
►
with squarespace ah so Chris how's your
[TS]
00:16:00
◼
►
transition from coding to being a
[TS]
00:16:03
◼
►
manager because from an outsider's point
[TS]
00:16:04
◼
►
of view it looked like you know you
[TS]
00:16:06
◼
►
arrived at Apple you were working
[TS]
00:16:07
◼
►
heavily on llvm like you said earlier
[TS]
00:16:09
◼
►
but over time I mean even just looking
[TS]
00:16:11
◼
►
at the resume on your website it seems
[TS]
00:16:13
◼
►
pretty clear that you are doing a lot
[TS]
00:16:15
◼
►
more managing lately then perhaps coding
[TS]
00:16:18
◼
►
or maybe maybe just worked around the
[TS]
00:16:20
◼
►
clock that would surprise me either but
[TS]
00:16:21
◼
►
it how how would you how did you feel
[TS]
00:16:24
◼
►
about your transition from from being
[TS]
00:16:26
◼
►
just a code monkey to being a manager
[TS]
00:16:28
◼
►
and I asked in part because at my face
[TS]
00:16:31
◼
►
my career I am still a code monkey but i
[TS]
00:16:32
◼
►
think it's not too far away that I might
[TS]
00:16:34
◼
►
become a manager and so I'm curious to
[TS]
00:16:37
◼
►
hear you know from from one code monkey
[TS]
00:16:39
◼
►
to another how did that transition go
[TS]
00:16:41
◼
►
and what did you learn from it
[TS]
00:16:43
◼
►
yeah that's that's kind of interesting
[TS]
00:16:44
◼
►
so I don't think it is a hard transition
[TS]
00:16:47
◼
►
I'm still writing code i still love
[TS]
00:16:49
◼
►
writing code that's something that I
[TS]
00:16:51
◼
►
think is a key part of my identity and
[TS]
00:16:54
◼
►
but on the other hand is it is very
[TS]
00:16:58
◼
►
strange so I started managing people at
[TS]
00:17:00
◼
►
Apple really pretty early on maybe
[TS]
00:17:03
◼
►
you're so after i joined i started
[TS]
00:17:06
◼
►
managing two or three people because
[TS]
00:17:09
◼
►
kind of the best person to to manage the
[TS]
00:17:12
◼
►
nascent lvm effort at the time and
[TS]
00:17:16
◼
►
initially it was mostly just being a
[TS]
00:17:19
◼
►
tech lead and
[TS]
00:17:20
◼
►
so if you're if you've ever driven a
[TS]
00:17:22
◼
►
project where you have co-workers that
[TS]
00:17:25
◼
►
don't report to you that your kind of
[TS]
00:17:27
◼
►
guiding them and helping make technical
[TS]
00:17:29
◼
►
decisions that's that's where started
[TS]
00:17:31
◼
►
over over time I my team grew and
[TS]
00:17:35
◼
►
eventually ended up picking up and
[TS]
00:17:37
◼
►
running kind of a second level manager
[TS]
00:17:39
◼
►
role where you're managing other
[TS]
00:17:41
◼
►
managers and each step along the way it
[TS]
00:17:43
◼
►
introduces new challenges and along the
[TS]
00:17:46
◼
►
way I told myself that managing
[TS]
00:17:49
◼
►
something that I had to do because that
[TS]
00:17:52
◼
►
was the best qualified to do it and I
[TS]
00:17:54
◼
►
didn't want anybody else to and that
[TS]
00:17:57
◼
►
coding was my real joy and passion and I
[TS]
00:17:59
◼
►
think the coding really is my joy and
[TS]
00:18:01
◼
►
passion but along the way
[TS]
00:18:03
◼
►
looking back I realize that I am
[TS]
00:18:04
◼
►
actually pretty good at managing and I
[TS]
00:18:07
◼
►
really do like building teams i like
[TS]
00:18:10
◼
►
working with people and I've never
[TS]
00:18:11
◼
►
considered myself to be a people person
[TS]
00:18:13
◼
►
just how it's just very very odd for me
[TS]
00:18:16
◼
►
to even think about that but actually do
[TS]
00:18:19
◼
►
understand how people work and can you
[TS]
00:18:22
◼
►
know really care about getting the most
[TS]
00:18:24
◼
►
out of people and working with them to
[TS]
00:18:26
◼
►
make them successful and so it's been
[TS]
00:18:29
◼
►
kind of a transition over time but I've
[TS]
00:18:32
◼
►
always hung onto coding and even though
[TS]
00:18:34
◼
►
i have a full time management job I
[TS]
00:18:36
◼
►
could like crazy and nights and weekends
[TS]
00:18:38
◼
►
and I'm not the kind of guy that likes
[TS]
00:18:40
◼
►
around idle and eaten and so I've always
[TS]
00:18:43
◼
►
just been busy so I mean you can get as
[TS]
00:18:46
◼
►
much of this history as you want to
[TS]
00:18:47
◼
►
Chris but how did you get Swift to
[TS]
00:18:50
◼
►
happen inside Apple because from the
[TS]
00:18:53
◼
►
outside its mysterious to us how big
[TS]
00:18:57
◼
►
important projects come to be like you
[TS]
00:19:00
◼
►
know whatever you name the headlining
[TS]
00:19:02
◼
►
things that are common Apple we hear
[TS]
00:19:04
◼
►
that Apple does a lot of things that
[TS]
00:19:05
◼
►
don't see the light of day
[TS]
00:19:07
◼
►
how did you get probably one of the
[TS]
00:19:09
◼
►
biggest things ever to come out of Apple
[TS]
00:19:11
◼
►
an entirely new language created
[TS]
00:19:13
◼
►
in-house had to get that to happen and
[TS]
00:19:14
◼
►
not just be some little thing that was
[TS]
00:19:16
◼
►
off to the side that fizzled often
[TS]
00:19:18
◼
►
disappear
[TS]
00:19:18
◼
►
sure well so i can tell you about Swift
[TS]
00:19:21
◼
►
but i don't think you should project
[TS]
00:19:23
◼
►
this onto every other project and apple
[TS]
00:19:24
◼
►
because i'm sure there are different so
[TS]
00:19:26
◼
►
you just talk about my experiences so
[TS]
00:19:29
◼
►
started in 2010
[TS]
00:19:31
◼
►
you know it's kind of the timing is
[TS]
00:19:35
◼
►
suspicious because right after a blogger
[TS]
00:19:37
◼
►
wrote something about how Apple need a
[TS]
00:19:40
◼
►
new programming language haha i'm not a
[TS]
00:19:43
◼
►
blogger ok
[TS]
00:19:44
◼
►
arstechnica wasn't a thing about blog
[TS]
00:19:48
◼
►
that was a prestigious website still is
[TS]
00:19:50
◼
►
ok ok hi I stand corrected
[TS]
00:19:54
◼
►
so I don't remember fight after i read
[TS]
00:19:58
◼
►
it exactly then that's that was a causal
[TS]
00:20:00
◼
►
link to starting working on swift or if
[TS]
00:20:02
◼
►
it was just because I just finish up
[TS]
00:20:05
◼
►
cleaning c++ support and we launched
[TS]
00:20:07
◼
►
client c++ and of course if you write
[TS]
00:20:10
◼
►
C++ good you know how ugly and horrible
[TS]
00:20:12
◼
►
it is but if you implement c++ it's a
[TS]
00:20:15
◼
►
whole nother level of the of challenges
[TS]
00:20:17
◼
►
and so getting that first release out
[TS]
00:20:20
◼
►
was it was a major accomplishment for
[TS]
00:20:22
◼
►
for the entire team and it was a major
[TS]
00:20:23
◼
►
major effort for a ton of people
[TS]
00:20:26
◼
►
involved and as is typical you get
[TS]
00:20:29
◼
►
something over the finish line and of
[TS]
00:20:31
◼
►
course it wasn't fully finished long
[TS]
00:20:32
◼
►
ways to go but a lot of the
[TS]
00:20:33
◼
►
intellectually interesting to me at
[TS]
00:20:36
◼
►
least pieces were we're done
[TS]
00:20:38
◼
►
that's why I started thinking about okay
[TS]
00:20:40
◼
►
what comes next
[TS]
00:20:41
◼
►
right and then implementing other
[TS]
00:20:43
◼
►
people's stuff like for example the see
[TS]
00:20:46
◼
►
the c++ the objective-c standards and
[TS]
00:20:49
◼
►
languages but there were there were you
[TS]
00:20:53
◼
►
know things that we weren't happy with
[TS]
00:20:54
◼
►
and things I wasn't happy with and so
[TS]
00:20:56
◼
►
what started out as just a let's let's
[TS]
00:20:59
◼
►
see what could be done right let's see
[TS]
00:21:01
◼
►
what a much simpler language that
[TS]
00:21:03
◼
►
doesn't need a preprocessor doesn't hate
[TS]
00:21:05
◼
►
try graphs doesn't need all the weird
[TS]
00:21:08
◼
►
things that have accumulated into c and
[TS]
00:21:10
◼
►
c++ over the years but let's see what we
[TS]
00:21:13
◼
►
can do and just try to build something
[TS]
00:21:16
◼
►
initially it was really just a me me
[TS]
00:21:20
◼
►
messing around and nobody knew about it
[TS]
00:21:23
◼
►
because it wasn't anything to know about
[TS]
00:21:25
◼
►
but eventually got a little bit more
[TS]
00:21:28
◼
►
serious and said hey well after playing
[TS]
00:21:30
◼
►
around a little bit i think that this
[TS]
00:21:32
◼
►
actually could make sense and so I
[TS]
00:21:34
◼
►
started talking to my management
[TS]
00:21:36
◼
►
I'm start talking again engineers are
[TS]
00:21:39
◼
►
working on playing and they seemed
[TS]
00:21:41
◼
►
excited about it we got a couple people
[TS]
00:21:43
◼
►
working on it part time and I can ask my
[TS]
00:21:46
◼
►
manager that it was interesting enough
[TS]
00:21:47
◼
►
that we could have a couple of people
[TS]
00:21:50
◼
►
work on it now this wasn't a major
[TS]
00:21:53
◼
►
commitment this was a ok well let's see
[TS]
00:21:56
◼
►
see what there is here and that started
[TS]
00:21:59
◼
►
a an internal demo schedule and other
[TS]
00:22:02
◼
►
things we set milestones in place and
[TS]
00:22:04
◼
►
tried to to to justify the investment
[TS]
00:22:06
◼
►
that was being put into it eventually
[TS]
00:22:09
◼
►
got to the point where there was an in
[TS]
00:22:12
◼
►
it was part of a long that it was posing
[TS]
00:22:14
◼
►
strategic questions so the strategic
[TS]
00:22:17
◼
►
questions were the form
[TS]
00:22:18
◼
►
ok what we have objective-c objective-c
[TS]
00:22:21
◼
►
is a great language it is probably
[TS]
00:22:24
◼
►
directly responsible for the iphone
[TS]
00:22:27
◼
►
being successful because it's really
[TS]
00:22:31
◼
►
high performance allows you to get your
[TS]
00:22:33
◼
►
job done it supports high-level
[TS]
00:22:35
◼
►
frameworks and beautiful way there's a
[TS]
00:22:37
◼
►
ton of stuff to love about objective-c
[TS]
00:22:39
◼
►
and while there are few things that are
[TS]
00:22:41
◼
►
ugly about it some at sides and
[TS]
00:22:42
◼
►
semicolons and other stuff like that you
[TS]
00:22:44
◼
►
know we can make objectively better and
[TS]
00:22:46
◼
►
so the question was always why not just
[TS]
00:22:49
◼
►
make objectively better right why don't
[TS]
00:22:51
◼
►
we just keep evolving objective-c and
[TS]
00:22:54
◼
►
why do we want to face potential
[TS]
00:22:55
◼
►
disruption in terms of moving the entire
[TS]
00:22:57
◼
►
development community to something new
[TS]
00:23:00
◼
►
and we kick that around for a long time
[TS]
00:23:02
◼
►
we talked about both sides and we came
[TS]
00:23:05
◼
►
to realize that yes we can and should
[TS]
00:23:06
◼
►
make objective-c better and we continue
[TS]
00:23:09
◼
►
to invest in objective-c we did things
[TS]
00:23:11
◼
►
like our for example which is a major
[TS]
00:23:13
◼
►
effort but we got dots
[TS]
00:23:17
◼
►
well so dot syntax / dated this ah yeah
[TS]
00:23:20
◼
►
dot dot syntax so the objective c 2
[TS]
00:23:23
◼
►
features and the block syntax were all
[TS]
00:23:25
◼
►
kind of prior to this i worked on blocks
[TS]
00:23:28
◼
►
but it wasn't in this time for him and
[TS]
00:23:32
◼
►
so we were talking about okay well can
[TS]
00:23:34
◼
►
we just make objectively better and can
[TS]
00:23:35
◼
►
feature creep into the language that we
[TS]
00:23:37
◼
►
want for the fullness of time because we
[TS]
00:23:39
◼
►
can that be much less disruptive to the
[TS]
00:23:41
◼
►
community and we decided that yeah we
[TS]
00:23:43
◼
►
can we can move objective-c a lot closer
[TS]
00:23:45
◼
►
to what we want so we can get automatic
[TS]
00:23:47
◼
►
memory management with art for example
[TS]
00:23:49
◼
►
but we can't ever take away the problems
[TS]
00:23:52
◼
►
that lead to objective-c being unsafe
[TS]
00:23:55
◼
►
and the fundamental problem was
[TS]
00:23:57
◼
►
objectives he was built on top of C and
[TS]
00:24:00
◼
►
C inherently has pointers it has
[TS]
00:24:02
◼
►
initialize variables that has array of
[TS]
00:24:05
◼
►
overflow that has all these problems
[TS]
00:24:06
◼
►
that even if you have full control of
[TS]
00:24:09
◼
►
your compiler and tools back you just
[TS]
00:24:11
◼
►
can't fix right to fix to fix dangling
[TS]
00:24:14
◼
►
pointers you'd have to fix lifetime
[TS]
00:24:15
◼
►
issues and she doesn't have a framework
[TS]
00:24:17
◼
►
to to reason about that and retrofitting
[TS]
00:24:20
◼
►
that into a compatible way into the
[TS]
00:24:21
◼
►
system just one really work if you took
[TS]
00:24:24
◼
►
away see for objective-c you can't use
[TS]
00:24:26
◼
►
see arrays on the stack for example and
[TS]
00:24:28
◼
►
if you can do that there's entire
[TS]
00:24:31
◼
►
classes of applications that where the
[TS]
00:24:33
◼
►
performance just wouldn't be acceptable
[TS]
00:24:34
◼
►
and so we went around around around we
[TS]
00:24:37
◼
►
said okay
[TS]
00:24:38
◼
►
the only way that this can make sense in
[TS]
00:24:42
◼
►
terms of the cost of the destruction to
[TS]
00:24:44
◼
►
the community is if we make it a safe
[TS]
00:24:47
◼
►
programming language which means not
[TS]
00:24:49
◼
►
safe as in you can have no bugs but safe
[TS]
00:24:51
◼
►
in terms of memory safety while also
[TS]
00:24:54
◼
►
providing high performance and and
[TS]
00:24:56
◼
►
moving the programming model forward and
[TS]
00:24:58
◼
►
so that was really kind of the ideas
[TS]
00:25:00
◼
►
that that came together to make swift
[TS]
00:25:03
◼
►
being worth the investment and being
[TS]
00:25:05
◼
►
worth being disruptive to the community
[TS]
00:25:08
◼
►
so a lot of these kinds of pitches and
[TS]
00:25:10
◼
►
ideas were being held and very small
[TS]
00:25:14
◼
►
small small meetings and coming out of
[TS]
00:25:19
◼
►
WBC 2013 is one we in the executive team
[TS]
00:25:23
◼
►
decided okay let's let's really commit
[TS]
00:25:25
◼
►
to this and that's coming out of WC 2013
[TS]
00:25:28
◼
►
is when the developer tools team came to
[TS]
00:25:31
◼
►
know about it and really started working
[TS]
00:25:33
◼
►
hard on it and Swift is Swift as a huge
[TS]
00:25:36
◼
►
huge effort by hundreds of people
[TS]
00:25:39
◼
►
and that's when all the work on bringing
[TS]
00:25:41
◼
►
up the debugger in the IDE support and
[TS]
00:25:44
◼
►
playgrounds and all the other things
[TS]
00:25:45
◼
►
that the charge into swift one auto
[TS]
00:25:47
◼
►
really started coming together and and
[TS]
00:25:50
◼
►
make happen so it's kind of house which
[TS]
00:25:53
◼
►
came to be lose again one step after
[TS]
00:25:55
◼
►
another building small things explaining
[TS]
00:25:58
◼
►
to people why make sense why was worth
[TS]
00:26:00
◼
►
it and then also I think that a major
[TS]
00:26:02
◼
►
important aspect of Swift being I guess
[TS]
00:26:07
◼
►
worth taking a risk on was that we told
[TS]
00:26:11
◼
►
people that we would not guarantee
[TS]
00:26:12
◼
►
source compatibility in window and that
[TS]
00:26:16
◼
►
was really interesting because that
[TS]
00:26:19
◼
►
actually was a big relief for people
[TS]
00:26:20
◼
►
because internally that meant that it
[TS]
00:26:24
◼
►
didn't have to be perfect when it
[TS]
00:26:26
◼
►
launched it meant that we could learn we
[TS]
00:26:27
◼
►
could adapt and that as long as we're
[TS]
00:26:30
◼
►
clear with the community about that that
[TS]
00:26:31
◼
►
that would allow us to get to ultimate
[TS]
00:26:34
◼
►
greatness and learn from actual usage
[TS]
00:26:37
◼
►
and practice i think that was a really
[TS]
00:26:39
◼
►
key piece to Swift coming in actually
[TS]
00:26:42
◼
►
making it to the market so strategically
[TS]
00:26:45
◼
►
speaking when you were doing like the
[TS]
00:26:48
◼
►
work to improve objective-c did you have
[TS]
00:26:51
◼
►
in mind the ability to potentially
[TS]
00:26:53
◼
►
leverage some of that work for swift
[TS]
00:26:56
◼
►
like we're like I'm trying to like the
[TS]
00:26:58
◼
►
strategy of how you get it done like
[TS]
00:26:59
◼
►
part of his personal relationships and
[TS]
00:27:01
◼
►
like knowing the right people
[TS]
00:27:03
◼
►
part of it is persuasion you have to
[TS]
00:27:04
◼
►
persuade them with your technical
[TS]
00:27:05
◼
►
arguments in your business arguments and
[TS]
00:27:06
◼
►
stuff like that but part of it was part
[TS]
00:27:09
◼
►
of it also laying the groundwork with
[TS]
00:27:12
◼
►
with efforts and technologies that have
[TS]
00:27:15
◼
►
multiple uses
[TS]
00:27:16
◼
►
yeah absolutely so so long for example
[TS]
00:27:18
◼
►
that is our it was really clear to me
[TS]
00:27:21
◼
►
that if if we get to memory safety we
[TS]
00:27:23
◼
►
had to have automatic memory management
[TS]
00:27:24
◼
►
and I don't know if you wanna go down
[TS]
00:27:27
◼
►
the GC vs arg rabbit hole or not that
[TS]
00:27:30
◼
►
arc seem like obviously the right models
[TS]
00:27:32
◼
►
me and to enter some other people and so
[TS]
00:27:35
◼
►
we said okay we need to get to an
[TS]
00:27:38
◼
►
automatic memory management model
[TS]
00:27:41
◼
►
objective-c isn't because objective-c at
[TS]
00:27:43
◼
►
the time had the are obviously garbage
[TS]
00:27:45
◼
►
collector which had numerous problems
[TS]
00:27:47
◼
►
and so we had to get objective-c to be
[TS]
00:27:51
◼
►
memory manage and so that's why ark was
[TS]
00:27:53
◼
►
who became a thing it became really high
[TS]
00:27:56
◼
►
priority and I think that it's a great
[TS]
00:27:59
◼
►
example of something with by itself had
[TS]
00:28:01
◼
►
a huge amount of value to the
[TS]
00:28:02
◼
►
objective-c community and then after
[TS]
00:28:05
◼
►
that we had similar other efforts like
[TS]
00:28:07
◼
►
modules for example that was a huge
[TS]
00:28:09
◼
►
thing that both improved build time but
[TS]
00:28:12
◼
►
was also absolutely essential to
[TS]
00:28:14
◼
►
enabling swift code to eventually just
[TS]
00:28:16
◼
►
say import UI kit and get everything and
[TS]
00:28:19
◼
►
so there's a number of things that
[TS]
00:28:20
◼
►
rolled out over the years and it was
[TS]
00:28:22
◼
►
really funny at the time because the
[TS]
00:28:24
◼
►
objective developers externally and even
[TS]
00:28:27
◼
►
internally to apple always accused the
[TS]
00:28:29
◼
►
compiler and languages team of taking
[TS]
00:28:31
◼
►
objective-c on this random walk and they
[TS]
00:28:33
◼
►
didn't know how to get together and
[TS]
00:28:34
◼
►
we're where's the strategy and why are
[TS]
00:28:37
◼
►
you guys working on this and why are you
[TS]
00:28:38
◼
►
working on some other syntactic sugar
[TS]
00:28:40
◼
►
for the thing i want and of course we
[TS]
00:28:42
◼
►
could never tell them but there was
[TS]
00:28:44
◼
►
there's a good reason and so on another
[TS]
00:28:46
◼
►
example that is the object literals
[TS]
00:28:49
◼
►
feature i think we introduce that in
[TS]
00:28:50
◼
►
2013 fire call work for Ray literals and
[TS]
00:28:55
◼
►
other things like that that was
[TS]
00:28:58
◼
►
interesting feature in that it was a
[TS]
00:29:00
◼
►
relatively small amount of engineering
[TS]
00:29:03
◼
►
work the broad objectives the objective
[TS]
00:29:06
◼
►
language much closer to Swift in terms
[TS]
00:29:09
◼
►
of having arrays and dictionaries
[TS]
00:29:11
◼
►
literals as part of the language but the
[TS]
00:29:14
◼
►
real reason for doing it is that it was
[TS]
00:29:16
◼
►
a small amount of work that move
[TS]
00:29:18
◼
►
directly forward which allowed the
[TS]
00:29:19
◼
►
compiler language team to focus on swift
[TS]
00:29:21
◼
►
because with was a very large amount of
[TS]
00:29:25
◼
►
work and that was you know at appeasing
[TS]
00:29:28
◼
►
community and your route solving real
[TS]
00:29:31
◼
►
problems but you know buying time to
[TS]
00:29:34
◼
►
actually pour into the multi-year
[TS]
00:29:35
◼
►
project of making this with language
[TS]
00:29:37
◼
►
that's when you pull out the syntactic
[TS]
00:29:39
◼
►
sugar programmers love it takes
[TS]
00:29:40
◼
►
attendance implement here you go that
[TS]
00:29:43
◼
►
everyone applauded when they see the
[TS]
00:29:44
◼
►
slide ba I mean in all fairness that was
[TS]
00:29:47
◼
►
a really big deal anyway so it's kind of
[TS]
00:29:49
◼
►
building on on the Apple internal
[TS]
00:29:51
◼
►
reaction thing
[TS]
00:29:53
◼
►
you know with this this language in its
[TS]
00:29:56
◼
►
development and then its public release
[TS]
00:29:58
◼
►
is probably fairly unique language in
[TS]
00:30:01
◼
►
like the context in which was released
[TS]
00:30:02
◼
►
you have this this massive company
[TS]
00:30:05
◼
►
nobody probably had more absurd the
[TS]
00:30:07
◼
►
objective-c programmers an apple does
[TS]
00:30:08
◼
►
and see this massive company with tons
[TS]
00:30:11
◼
►
of internal programmers in a massive
[TS]
00:30:13
◼
►
internal code base that is using this
[TS]
00:30:15
◼
►
this other language you have this entire
[TS]
00:30:17
◼
►
community of iOS and mac developers and
[TS]
00:30:21
◼
►
then you have the entire world watching
[TS]
00:30:24
◼
►
every move apple makes and putting under
[TS]
00:30:26
◼
►
very very heavy scrutiny so the release
[TS]
00:30:29
◼
►
of his language in this context is
[TS]
00:30:30
◼
►
probably only very high pressure but
[TS]
00:30:32
◼
►
also like unique in that you you knew
[TS]
00:30:36
◼
►
that you were gonna face a lot of people
[TS]
00:30:39
◼
►
up front like most languages probably
[TS]
00:30:41
◼
►
start out with a few people using them
[TS]
00:30:42
◼
►
you know something some random quarter
[TS]
00:30:44
◼
►
the internet and eventually maybe
[TS]
00:30:45
◼
►
someone it maybe it slowly takes off
[TS]
00:30:46
◼
►
this was not that way and so what
[TS]
00:30:50
◼
►
considerations I guess when into that
[TS]
00:30:52
◼
►
and also how were you able to convince
[TS]
00:30:55
◼
►
people even inside of Apple to to use
[TS]
00:30:59
◼
►
swift and and how is how is that going
[TS]
00:31:03
◼
►
so I guess there's different answers
[TS]
00:31:07
◼
►
that four different phases we had no
[TS]
00:31:12
◼
►
idea that the reaction would be as
[TS]
00:31:14
◼
►
strong and as positive as it was and so
[TS]
00:31:16
◼
►
I think we were blown away and caught
[TS]
00:31:18
◼
►
unaware in some ways but otherwise I
[TS]
00:31:24
◼
►
think we did the right thing so for
[TS]
00:31:26
◼
►
example if you look at swift overtime so
[TS]
00:31:29
◼
►
if one and so if two are as similar to
[TS]
00:31:32
◼
►
objective sees we can make them so if
[TS]
00:31:35
◼
►
you look at the way that selectors are
[TS]
00:31:36
◼
►
named for example it was very there's a
[TS]
00:31:40
◼
►
very direct correlation if you look at
[TS]
00:31:42
◼
►
the way objective-c swift one was
[TS]
00:31:45
◼
►
explained to people it was explained to
[TS]
00:31:47
◼
►
people as it's just like objective c you
[TS]
00:31:51
◼
►
can use all your same patterns you can
[TS]
00:31:52
◼
►
use all same framework she can continue
[TS]
00:31:54
◼
►
doing object-oriented programming you
[TS]
00:31:56
◼
►
can do all these things but it also has
[TS]
00:31:58
◼
►
some cool new things like enums and
[TS]
00:32:01
◼
►
pattern matching and
[TS]
00:32:02
◼
►
these other things and so it's great
[TS]
00:32:04
◼
►
because it's just cleaned up syntax for
[TS]
00:32:06
◼
►
what you already know
[TS]
00:32:07
◼
►
plus it has some new cool stuff that you
[TS]
00:32:09
◼
►
can play with right and then you fast
[TS]
00:32:11
◼
►
forward a year or two and the Swift
[TS]
00:32:13
◼
►
community was really taking off
[TS]
00:32:15
◼
►
it was people were understanding what's
[TS]
00:32:17
◼
►
with those about Swift open sources also
[TS]
00:32:20
◼
►
enabled this and so 3 is really about so
[TS]
00:32:23
◼
►
it's becoming its own language that was
[TS]
00:32:25
◼
►
really true to itself and standing you
[TS]
00:32:28
◼
►
know stands by itself and that's where
[TS]
00:32:30
◼
►
you see the method call syntax for
[TS]
00:32:32
◼
►
example being radically changed and a
[TS]
00:32:35
◼
►
lot of things just kind of coming
[TS]
00:32:36
◼
►
together and really focusing and
[TS]
00:32:40
◼
►
polishing the language in terms of the
[TS]
00:32:43
◼
►
the rise of the community the the
[TS]
00:32:45
◼
►
external community and people using it
[TS]
00:32:47
◼
►
that was really really hard for us
[TS]
00:32:50
◼
►
because so my experience has been with
[TS]
00:32:53
◼
►
lv and with clang clang as a C and C++
[TS]
00:32:56
◼
►
compiler and objective-c was completely
[TS]
00:33:00
◼
►
different than Swift because when we
[TS]
00:33:02
◼
►
open source and launch claim which was
[TS]
00:33:05
◼
►
at Apple everybody yond open source it
[TS]
00:33:12
◼
►
very early on and people said okay
[TS]
00:33:13
◼
►
you're nuts nobody can build a c++
[TS]
00:33:15
◼
►
compiler that's that's not a thing why
[TS]
00:33:18
◼
►
are you even messing around with this
[TS]
00:33:19
◼
►
and you know we got one contributor to
[TS]
00:33:22
◼
►
the project and we had no users and then
[TS]
00:33:25
◼
►
we got you know month later we might get
[TS]
00:33:26
◼
►
another contributor or another person
[TS]
00:33:28
◼
►
part-time the setting and patches and it
[TS]
00:33:31
◼
►
was a very slow growth that that was
[TS]
00:33:34
◼
►
ultimately really great because it was
[TS]
00:33:37
◼
►
relatively low pressure was swift and
[TS]
00:33:39
◼
►
with the the way was launched it was
[TS]
00:33:41
◼
►
completely different because it went
[TS]
00:33:43
◼
►
from nobody knowing about to everybody
[TS]
00:33:45
◼
►
knowing about it overnight literally and
[TS]
00:33:48
◼
►
there being so much excitement so many
[TS]
00:33:51
◼
►
people that were nervous and had bad
[TS]
00:33:53
◼
►
reactions other people that were super
[TS]
00:33:55
◼
►
excited but a lot of people that were
[TS]
00:33:57
◼
►
suddenly hitting bugs and having
[TS]
00:33:59
◼
►
challenges and problems and why did you
[TS]
00:34:01
◼
►
do this and why didn't you do that and
[TS]
00:34:03
◼
►
you know some of that was misguided just
[TS]
00:34:05
◼
►
because they didn't know Swift yet but
[TS]
00:34:07
◼
►
other others other aspects were really
[TS]
00:34:09
◼
►
spot-on and that was 12 really started
[TS]
00:34:12
◼
►
learning about how people are using and
[TS]
00:34:14
◼
►
started
[TS]
00:34:14
◼
►
during moving Swift and Swift between
[TS]
00:34:17
◼
►
the WBC lon chance with one auto release
[TS]
00:34:21
◼
►
change dramatically and that was a
[TS]
00:34:24
◼
►
really really hard time for the entire
[TS]
00:34:26
◼
►
team because we really want to get it as
[TS]
00:34:29
◼
►
close as we could what we wanted but we
[TS]
00:34:31
◼
►
had a very short amount of time to do so
[TS]
00:34:33
◼
►
and I think that's been true first with
[TS]
00:34:36
◼
►
two and so with three as well where we
[TS]
00:34:38
◼
►
have really high goals for the team and
[TS]
00:34:41
◼
►
really high goals for what we want to
[TS]
00:34:43
◼
►
get done and that makes it a lot a lot
[TS]
00:34:45
◼
►
of pressure and a lot of stress but it's
[TS]
00:34:49
◼
►
I think worth it to serve and see the
[TS]
00:34:52
◼
►
community around Swift grow and see
[TS]
00:34:55
◼
►
people use it and see people learn it
[TS]
00:34:57
◼
►
and it's been a lot of fun so I'm
[TS]
00:34:59
◼
►
curious
[TS]
00:35:00
◼
►
I know when Swift first came out it was
[TS]
00:35:02
◼
►
hard to get a lot of adoption inside of
[TS]
00:35:05
◼
►
apple for various you know tooling
[TS]
00:35:07
◼
►
reasons uh among men maybe whatever else
[TS]
00:35:09
◼
►
was going on
[TS]
00:35:10
◼
►
how is internal adoption going today
[TS]
00:35:13
◼
►
like re seeing meaningful adoption hours
[TS]
00:35:15
◼
►
at most i was programs were using it and
[TS]
00:35:17
◼
►
not anybody inside the White team itself
[TS]
00:35:20
◼
►
has specific goals they need to achieve
[TS]
00:35:23
◼
►
before there can be truly
[TS]
00:35:24
◼
►
across-the-board adoption at Apple's ABI
[TS]
00:35:28
◼
►
stability is the number one thing that
[TS]
00:35:30
◼
►
prevents framework developers for
[TS]
00:35:31
◼
►
example from adopting Swift so that's a
[TS]
00:35:34
◼
►
really important thing that's one of the
[TS]
00:35:36
◼
►
reasons it's always a really high
[TS]
00:35:37
◼
►
priority but switch has been adopted by
[TS]
00:35:40
◼
►
application developers and other things
[TS]
00:35:42
◼
►
the doc is publix with playgrounds app
[TS]
00:35:45
◼
►
is public the music app in iOS is
[TS]
00:35:48
◼
►
publicly known so they're they're
[TS]
00:35:49
◼
►
definitely some big big adopters more
[TS]
00:35:52
◼
►
broadly though that the big problem is
[TS]
00:35:53
◼
►
that i think and i will speak for
[TS]
00:35:56
◼
►
everybody but in many many people doing
[TS]
00:35:59
◼
►
objects development and Apple are
[TS]
00:36:01
◼
►
chomping at the bit they want to be
[TS]
00:36:02
◼
►
using Swift and so it's it's really
[TS]
00:36:04
◼
►
matter just getting the technology
[TS]
00:36:06
◼
►
problem-solve didn't get you know
[TS]
00:36:07
◼
►
checking out the things are holding
[TS]
00:36:09
◼
►
people back it's not about you know
[TS]
00:36:12
◼
►
people dragging their feet and not
[TS]
00:36:14
◼
►
wanting to use it makes sense that's
[TS]
00:36:16
◼
►
really also get it from from the outside
[TS]
00:36:18
◼
►
it's so hard to figure out you know is
[TS]
00:36:20
◼
►
is Apple internally like oh really
[TS]
00:36:23
◼
►
or for example internally like you said
[TS]
00:36:25
◼
►
like really excited and I'm sure that
[TS]
00:36:26
◼
►
there's some of both but
[TS]
00:36:27
◼
►
but that's really good to hear yeah and
[TS]
00:36:29
◼
►
i think it's also changed over time when
[TS]
00:36:32
◼
►
it first came out of course it was a
[TS]
00:36:34
◼
►
huge surprise for most of the software
[TS]
00:36:36
◼
►
team and so you know many people went
[TS]
00:36:39
◼
►
through the usual phases of matter and
[TS]
00:36:42
◼
►
no objective c why would have learned
[TS]
00:36:44
◼
►
this new thing objective-c is great and
[TS]
00:36:45
◼
►
objective-c is great so that that's
[TS]
00:36:48
◼
►
that's an objective statement right but
[TS]
00:36:52
◼
►
I think things have shifted over time
[TS]
00:36:53
◼
►
and as switches matured it's definitely
[TS]
00:36:56
◼
►
become a lot more appealing and one
[TS]
00:36:58
◼
►
other technology problem that is
[TS]
00:37:00
◼
►
hilarious but also really important is
[TS]
00:37:03
◼
►
the Apple frameworks that has to support
[TS]
00:37:06
◼
►
32 the mac apps in 37 mac apps have this
[TS]
00:37:09
◼
►
interesting challenge of they have
[TS]
00:37:11
◼
►
what's called the classic objective-c
[TS]
00:37:13
◼
►
runtime which doesn't support things
[TS]
00:37:16
◼
►
like non fragile instance variables and
[TS]
00:37:18
◼
►
things like that and so at some point
[TS]
00:37:20
◼
►
I'm the Swift team will need to make the
[TS]
00:37:22
◼
►
Swift runtime work in that mode or
[TS]
00:37:24
◼
►
figure out some other solution to adapt
[TS]
00:37:27
◼
►
it because until that happens it won't
[TS]
00:37:29
◼
►
be possible use Swift an appt get for
[TS]
00:37:31
◼
►
example
[TS]
00:37:32
◼
►
well that's fascinating so kind of
[TS]
00:37:35
◼
►
taking a more broad view do you could
[TS]
00:37:40
◼
►
you name either you're most proud
[TS]
00:37:42
◼
►
accomplishment during your time at Apple
[TS]
00:37:44
◼
►
that you can discuss publicly anyway or
[TS]
00:37:46
◼
►
if not you're most proud just won the
[TS]
00:37:48
◼
►
first one that jumps to mind
[TS]
00:37:49
◼
►
wow I don't have been really fortunate
[TS]
00:37:53
◼
►
to work on so many really important
[TS]
00:37:55
◼
►
projects and I mean I think that between
[TS]
00:37:59
◼
►
lvm and swift for example it's really a
[TS]
00:38:03
◼
►
hard call
[TS]
00:38:03
◼
►
I'm Swift I think impacts more people in
[TS]
00:38:08
◼
►
terms of the number of people would
[TS]
00:38:10
◼
►
actually know they're using it and want
[TS]
00:38:13
◼
►
to learn it and things like that but i
[TS]
00:38:14
◼
►
think the lvm has been picked up and use
[TS]
00:38:17
◼
►
so far across industry and its kind of
[TS]
00:38:19
◼
►
standardizing the world's compilers I
[TS]
00:38:21
◼
►
think that's probably more profound at
[TS]
00:38:23
◼
►
this point so it's really it's a start
[TS]
00:38:27
◼
►
calling and that they're there are a ton
[TS]
00:38:29
◼
►
of really really great opportunities
[TS]
00:38:33
◼
►
that I've had and spend a lot of fun
[TS]
00:38:35
◼
►
over many years now
[TS]
00:38:36
◼
►
also outside the open-source pieces
[TS]
00:38:38
◼
►
working with the expert team and working
[TS]
00:38:41
◼
►
with the other teams and developer tools
[TS]
00:38:42
◼
►
has been really phenomenal
[TS]
00:38:43
◼
►
I mean there's so many great people at
[TS]
00:38:45
◼
►
Apple and Android developer tools it's
[TS]
00:38:47
◼
►
just been a joy
[TS]
00:38:48
◼
►
so what do you expect to miss the most
[TS]
00:38:51
◼
►
about being an apple and I'm gonna take
[TS]
00:38:53
◼
►
I'm gonna let you expand on this but I'm
[TS]
00:38:55
◼
►
gonna take it off the table and so you
[TS]
00:38:56
◼
►
have to pick like your second choice
[TS]
00:38:57
◼
►
you're gonna say like you miss the
[TS]
00:38:58
◼
►
people because of course you do right
[TS]
00:39:00
◼
►
yes that is actually what i would say
[TS]
00:39:02
◼
►
right but everybody you know so you can
[TS]
00:39:04
◼
►
go ahead and tell us about all the great
[TS]
00:39:05
◼
►
people your example but besides that
[TS]
00:39:07
◼
►
what do you expect to miss most about
[TS]
00:39:09
◼
►
Apple the company working well so the
[TS]
00:39:11
◼
►
great thing about Apple and the thing
[TS]
00:39:13
◼
►
that I don't think that many people
[TS]
00:39:14
◼
►
really get about Apple is it is really
[TS]
00:39:19
◼
►
one of the few best place in the world
[TS]
00:39:22
◼
►
where you can work hard but also work on
[TS]
00:39:25
◼
►
products that ship and the ship to
[TS]
00:39:29
◼
►
millions of people so that your hard
[TS]
00:39:31
◼
►
work ends up mattering right there
[TS]
00:39:33
◼
►
there's a lot of places you can work
[TS]
00:39:35
◼
►
hard there's a lot of places that you
[TS]
00:39:37
◼
►
can work on interesting things but
[TS]
00:39:40
◼
►
there's also a lot of places end up not
[TS]
00:39:42
◼
►
shipping a lot or or if they ship it
[TS]
00:39:45
◼
►
very few people actually use it and so
[TS]
00:39:47
◼
►
apples really really magical in that
[TS]
00:39:50
◼
►
combines being you know being able to
[TS]
00:39:53
◼
►
work hard and in do great things with it
[TS]
00:39:55
◼
►
actually mattering and to me that that's
[TS]
00:39:57
◼
►
the thing that that is just so so
[TS]
00:39:59
◼
►
phenomenal about Apple so so moving on
[TS]
00:40:03
◼
►
to your new role at Tesla do you think
[TS]
00:40:06
◼
►
that Swift will still be a major part of
[TS]
00:40:09
◼
►
your work life in some way like you know
[TS]
00:40:11
◼
►
or will basically be like something you
[TS]
00:40:13
◼
►
do in the evenings and weekends because
[TS]
00:40:15
◼
►
we all know that that Silicon Valley
[TS]
00:40:16
◼
►
tech startups don't usually work people
[TS]
00:40:18
◼
►
too hard you're gonna have tons of free
[TS]
00:40:20
◼
►
yeah so this jump on making is
[TS]
00:40:22
◼
►
definitely do a cushy no easy that right
[TS]
00:40:26
◼
►
that that's what I'm looking for here uh
[TS]
00:40:30
◼
►
so i don't know we'll have to see i
[TS]
00:40:33
◼
►
haven't started yet and i think it's
[TS]
00:40:36
◼
►
going to be very challenging job and one
[TS]
00:40:37
◼
►
of the reasons I'm excited about it
[TS]
00:40:39
◼
►
because I really want to throw myself
[TS]
00:40:40
◼
►
into another heart technology problem
[TS]
00:40:43
◼
►
and so I'm really excited about that i
[TS]
00:40:45
◼
►
do expect to be involved with the design
[TS]
00:40:47
◼
►
of swift and helping helping with the
[TS]
00:40:50
◼
►
core team and helping Swift evolution
[TS]
00:40:51
◼
►
process and helping in and allow that
[TS]
00:40:53
◼
►
kind of respect but one of things to
[TS]
00:40:55
◼
►
keep in mind is that Swift was actually
[TS]
00:40:57
◼
►
really tiny slice of my job at apple and
[TS]
00:41:01
◼
►
so you know I had a very full schedule
[TS]
00:41:05
◼
►
dealing with lots of other stuff and it
[TS]
00:41:08
◼
►
was already kind of nights and weekends
[TS]
00:41:09
◼
►
project that i was coating on it and
[TS]
00:41:12
◼
►
contributing at the level that I was so
[TS]
00:41:15
◼
►
I'm hoping with all be a big change but
[TS]
00:41:17
◼
►
honestly i'll have to see obviously I
[TS]
00:41:20
◼
►
care a lot about Swift and I really want
[TS]
00:41:22
◼
►
to get to its go over world domination
[TS]
00:41:25
◼
►
so we're sponsor tonight by eero go to
[TS]
00:41:28
◼
►
eurocom at the ER o.com and use code ATP
[TS]
00:41:32
◼
►
when you order for free expedited
[TS]
00:41:33
◼
►
shipping Wi-Fi is broken
[TS]
00:41:36
◼
►
you probably have one Wi-Fi router with
[TS]
00:41:38
◼
►
if you're lucky a bunch of antennas on
[TS]
00:41:40
◼
►
that look hideous and you're trying to
[TS]
00:41:43
◼
►
cover your whole house with Wi-Fi but it
[TS]
00:41:44
◼
►
just doesn't reach every room
[TS]
00:41:46
◼
►
it just doesn't reach everywhere because
[TS]
00:41:47
◼
►
Wi-Fi is hard when you're recovering
[TS]
00:41:49
◼
►
from 1.0 solve this problem by having a
[TS]
00:41:53
◼
►
router system where they will they had
[TS]
00:41:55
◼
►
this little ear units nice attractive
[TS]
00:41:56
◼
►
it's tastefully designed there's not a
[TS]
00:41:58
◼
►
bunch of antennae sticking out of it and
[TS]
00:42:00
◼
►
you can buy one of them or you can buy
[TS]
00:42:02
◼
►
10 of them are a number in between and
[TS]
00:42:04
◼
►
that you put them around your house and
[TS]
00:42:06
◼
►
each one covers the area in Wi-Fi and
[TS]
00:42:09
◼
►
they all talk to each other
[TS]
00:42:11
◼
►
wirelessly so you don't have to run
[TS]
00:42:12
◼
►
wires love your house you can have your
[TS]
00:42:14
◼
►
entire house blanketed in Wi-Fi with 0
[TS]
00:42:16
◼
►
and they talk to each other over this
[TS]
00:42:18
◼
►
mesh network so it's even faster than
[TS]
00:42:20
◼
►
previous if you ever use like an
[TS]
00:42:21
◼
►
extender and centers are very slow
[TS]
00:42:23
◼
►
it's even faster than that by a lot and
[TS]
00:42:26
◼
►
0 is true enterprise-grade quality and
[TS]
00:42:28
◼
►
performance they have everything you
[TS]
00:42:30
◼
►
need from encryption features two things
[TS]
00:42:32
◼
►
like parental controls and that they're
[TS]
00:42:33
◼
►
actually updating it over time they've
[TS]
00:42:35
◼
►
done over 12 updates since launch with
[TS]
00:42:37
◼
►
more to come to add features they have
[TS]
00:42:39
◼
►
an app for very easy setup and they have
[TS]
00:42:41
◼
►
incredible customer support if you need
[TS]
00:42:44
◼
►
they recommend 10 per thousand square
[TS]
00:42:45
◼
►
feet so typical home will have two or
[TS]
00:42:47
◼
►
three of them they got a three pack as a
[TS]
00:42:49
◼
►
pretty reasonable starting point for
[TS]
00:42:50
◼
►
most everybody there's a 30 day
[TS]
00:42:52
◼
►
money-back guarantee if you don't like
[TS]
00:42:54
◼
►
it or if you could buy too many you want
[TS]
00:42:55
◼
►
to return a couple of them if you
[TS]
00:42:56
◼
►
I'm not eating as many as you bought
[TS]
00:42:58
◼
►
check it out the reviews are stellar
[TS]
00:43:00
◼
►
they back this up go to 0 comments de ro
[TS]
00:43:04
◼
►
dah calm and use code ATP when you order
[TS]
00:43:07
◼
►
for free expedited shipping
[TS]
00:43:09
◼
►
thank you very much to ero for
[TS]
00:43:10
◼
►
sponsoring our show ah you know
[TS]
00:43:16
◼
►
obviously Swift is open-source I don't
[TS]
00:43:17
◼
►
know if you're aware that Chris but uh
[TS]
00:43:18
◼
►
huh i'm looking at yeah right at how do
[TS]
00:43:21
◼
►
you feel like it's been going so far in
[TS]
00:43:23
◼
►
i'm assuming similar to John you know
[TS]
00:43:25
◼
►
I'm gonna take away the obvious answer
[TS]
00:43:27
◼
►
it's going well but it may be too kind
[TS]
00:43:29
◼
►
of Q conversation what's been really
[TS]
00:43:32
◼
►
surprising about going open source and
[TS]
00:43:35
◼
►
and you can get a specific or as broad
[TS]
00:43:37
◼
►
as you'd like to be but I got to imagine
[TS]
00:43:38
◼
►
that that you guys had a bunch of
[TS]
00:43:41
◼
►
expectations about what going open
[TS]
00:43:43
◼
►
source would be like and i would imagine
[TS]
00:43:44
◼
►
some of them are accurate and some of
[TS]
00:43:45
◼
►
them weren't so how do you feel like the
[TS]
00:43:47
◼
►
Swift open source project has been going
[TS]
00:43:48
◼
►
yeah so I think that 22 to summarize
[TS]
00:43:52
◼
►
it's not just going well it's going far
[TS]
00:43:54
◼
►
better than we ever anticipated and that
[TS]
00:43:56
◼
►
caused problems so for context
[TS]
00:44:02
◼
►
I and many of the other people on the
[TS]
00:44:03
◼
►
team had quite a bit of open-source
[TS]
00:44:05
◼
►
experience so elevated claim for example
[TS]
00:44:08
◼
►
open-source they they were they are
[TS]
00:44:12
◼
►
vibrant and amazing communities with
[TS]
00:44:14
◼
►
hundreds of contributors and dozens of
[TS]
00:44:18
◼
►
companies are collaborating in public
[TS]
00:44:20
◼
►
and doing really amazing stuff even some
[TS]
00:44:22
◼
►
of the most staunch competitors you know
[TS]
00:44:25
◼
►
AMD AMD and intel and AMD and nvidia or
[TS]
00:44:29
◼
►
you know the these kinds of companies
[TS]
00:44:30
◼
►
that really you know don't get along on
[TS]
00:44:33
◼
►
the business side of things but the
[TS]
00:44:35
◼
►
engineers were great at working engineer
[TS]
00:44:37
◼
►
to engineer and solving problems and
[TS]
00:44:39
◼
►
stay focused on making things better so
[TS]
00:44:42
◼
►
with Swift we assume that would be very
[TS]
00:44:45
◼
►
similar to that but what we found is
[TS]
00:44:48
◼
►
that there was a major difference
[TS]
00:44:49
◼
►
between launching Swift and launching
[TS]
00:44:51
◼
►
something like playing for example which
[TS]
00:44:53
◼
►
is that when Swift losses open source
[TS]
00:44:56
◼
►
which was december third just over a
[TS]
00:44:58
◼
►
year ago in RI had I don't know a
[TS]
00:45:02
◼
►
million users and we're playing
[TS]
00:45:06
◼
►
started and every yond and didn't really
[TS]
00:45:09
◼
►
care and grew slowly Swift open-source
[TS]
00:45:13
◼
►
started and was amazingly fast moving
[TS]
00:45:16
◼
►
changing tons of people hundreds of
[TS]
00:45:19
◼
►
patches on the first day it was totally
[TS]
00:45:20
◼
►
crazy and we didn't really know what to
[TS]
00:45:22
◼
►
do and so I mean it's I i am like super
[TS]
00:45:26
◼
►
impressed with the the Swift open source
[TS]
00:45:28
◼
►
community and all the people involved in
[TS]
00:45:30
◼
►
the energy and just think it's just it's
[TS]
00:45:32
◼
►
hard it's hard to believe how great
[TS]
00:45:34
◼
►
everything is but it it really did
[TS]
00:45:37
◼
►
create problems because we had to figure
[TS]
00:45:38
◼
►
out things like how we're gonna stay up
[TS]
00:45:40
◼
►
on in terms of the patch volume
[TS]
00:45:42
◼
►
okay we're getting hundreds and hundreds
[TS]
00:45:43
◼
►
of emails a day to the Swift evolution
[TS]
00:45:45
◼
►
mailing list what are we going to do
[TS]
00:45:47
◼
►
about that
[TS]
00:45:47
◼
►
how do we balance apples goals for
[TS]
00:45:52
◼
►
pushing Swift forward with the goals of
[TS]
00:45:53
◼
►
the community which are somewhat more
[TS]
00:45:55
◼
►
chaotic and last directed and I think
[TS]
00:45:58
◼
►
that over last year we've learned a lot
[TS]
00:46:00
◼
►
and you can see that reflect in terms of
[TS]
00:46:02
◼
►
how the project is being managed and how
[TS]
00:46:05
◼
►
how things are being done but it's
[TS]
00:46:07
◼
►
always been super important to be not
[TS]
00:46:10
◼
►
just open source but I guess if you look
[TS]
00:46:14
◼
►
at an open source project there's
[TS]
00:46:15
◼
►
there's three kind of easy levels to to
[TS]
00:46:18
◼
►
look at it the first basic requirement
[TS]
00:46:21
◼
►
the ssi to be open sources to make your
[TS]
00:46:23
◼
►
code available right and so you can
[TS]
00:46:25
◼
►
produce tarballs periodically and that's
[TS]
00:46:27
◼
►
technically open source you can allow
[TS]
00:46:31
◼
►
contributions and if you do that through
[TS]
00:46:33
◼
►
pull requests or patches or whatever
[TS]
00:46:35
◼
►
then people can engage with it and make
[TS]
00:46:38
◼
►
the code better
[TS]
00:46:39
◼
►
there's open community so not only can
[TS]
00:46:42
◼
►
do you accept a patch but you actually
[TS]
00:46:44
◼
►
discuss things and talk about things in
[TS]
00:46:47
◼
►
public and then there's open design and
[TS]
00:46:50
◼
►
with Swift we went all the way and I
[TS]
00:46:51
◼
►
think it was totally the right thing to
[TS]
00:46:53
◼
►
do because we really want to benefit
[TS]
00:46:54
◼
►
from all the smart people in the world
[TS]
00:46:56
◼
►
and it was it and still is amazing but
[TS]
00:47:00
◼
►
it's also very challenging
[TS]
00:47:01
◼
►
yeah I can imagine so building upon the
[TS]
00:47:05
◼
►
open sourcing of Swift it was very
[TS]
00:47:08
◼
►
surprising to me and I think a lot of
[TS]
00:47:09
◼
►
the community that Apple chose to upload
[TS]
00:47:12
◼
►
the entire commit history it wasn't just
[TS]
00:47:14
◼
►
a here's day one initial commitment you
[TS]
00:47:16
◼
►
know 11 gazillion files and
[TS]
00:47:18
◼
►
the gazillion lines of code was that
[TS]
00:47:21
◼
►
plan from the start that you guys would
[TS]
00:47:23
◼
►
upload the entire history i would say it
[TS]
00:47:25
◼
►
was planned from the start that we'd
[TS]
00:47:26
◼
►
upload the entire history but it was
[TS]
00:47:28
◼
►
kind of assumed from the start that it
[TS]
00:47:30
◼
►
would be open source at some point
[TS]
00:47:32
◼
►
interesting and if you look at apple's
[TS]
00:47:35
◼
►
history i think that's that's in the
[TS]
00:47:38
◼
►
tool space I think that's fairly
[TS]
00:47:40
◼
►
straightforward lvm wasn't started at
[TS]
00:47:44
◼
►
Apple but almost almost everything Apple
[TS]
00:47:49
◼
►
does end up going public in the same
[TS]
00:47:52
◼
►
clang was started at apple and claimed
[TS]
00:47:54
◼
►
was contributed by Apple to the album
[TS]
00:47:57
◼
►
project and that included his full
[TS]
00:48:00
◼
►
revision history other projects like ldb
[TS]
00:48:02
◼
►
and lip c++ compiler RT and all these
[TS]
00:48:06
◼
►
other smaller projects were started at
[TS]
00:48:09
◼
►
apple and contribute to the open source
[TS]
00:48:10
◼
►
project so Swift it was kind of assumed
[TS]
00:48:13
◼
►
that that would happen at some point the
[TS]
00:48:15
◼
►
the real question was when when is the
[TS]
00:48:17
◼
►
right time for that to happen and if you
[TS]
00:48:20
◼
►
remember the days of Swift window Swift
[TS]
00:48:23
◼
►
1022 dunno in particular was a super
[TS]
00:48:26
◼
►
chaotic super learning as we went and
[TS]
00:48:29
◼
►
trying to keep up with the community and
[TS]
00:48:30
◼
►
trying to keep up with the pace and the
[TS]
00:48:32
◼
►
challenges that people were facing and
[TS]
00:48:34
◼
►
trying to get key pieces like the
[TS]
00:48:36
◼
►
air-handling model and protocol
[TS]
00:48:37
◼
►
extensions and all that kind of stuff
[TS]
00:48:38
◼
►
that it always been planned but one
[TS]
00:48:41
◼
►
didn't make it into Swift window and so
[TS]
00:48:43
◼
►
really focusing on that was the priority
[TS]
00:48:45
◼
►
and so we just decided that open
[TS]
00:48:48
◼
►
sourcing Swift at 10 for example would
[TS]
00:48:50
◼
►
be really actually bad for the Swift
[TS]
00:48:53
◼
►
community because there are major pieces
[TS]
00:48:54
◼
►
language that weren't there we would
[TS]
00:48:57
◼
►
have to spend a lot of time community
[TS]
00:48:59
◼
►
building and try to explain to people
[TS]
00:49:00
◼
►
the difference between what was not
[TS]
00:49:03
◼
►
there but should be there and what is
[TS]
00:49:05
◼
►
you know there and known broken and we
[TS]
00:49:08
◼
►
had to do a lot of that one swift was
[TS]
00:49:10
◼
►
eventually open source than in last year
[TS]
00:49:13
◼
►
right after Swift to toronto but it was
[TS]
00:49:15
◼
►
a much better place and the team could
[TS]
00:49:16
◼
►
actually handle the load of doing the
[TS]
00:49:19
◼
►
community and we didn't expect the kind
[TS]
00:49:22
◼
►
response we got but we knew that
[TS]
00:49:23
◼
►
building a vibrant open source community
[TS]
00:49:25
◼
►
is a lot of work and it's not something
[TS]
00:49:26
◼
►
to be under underestimated we want to
[TS]
00:49:29
◼
►
make sure that Swift to was out the door
[TS]
00:49:31
◼
►
and it wasn't kind of a resource
[TS]
00:49:33
◼
►
contention between do we finished with
[TS]
00:49:36
◼
►
two or do we start open source and that
[TS]
00:49:39
◼
►
and that's why I was announced to be
[TS]
00:49:41
◼
►
open source by the end of the year
[TS]
00:49:42
◼
►
because that meant that we can start
[TS]
00:49:44
◼
►
working on the open-source
[TS]
00:49:45
◼
►
infrastructure project bringing up all
[TS]
00:49:47
◼
►
the other stuff that takes to make
[TS]
00:49:48
◼
►
something open source after Swift is
[TS]
00:49:50
◼
►
complete so my recollection of the Swift
[TS]
00:49:54
◼
►
three in the planning stages was that
[TS]
00:49:56
◼
►
ABI compatibility was somewhere in the
[TS]
00:50:00
◼
►
list of I'm not gonna call them goals
[TS]
00:50:03
◼
►
but somewhere in the list of items that
[TS]
00:50:05
◼
►
were in contention for a swift 3 and at
[TS]
00:50:07
◼
►
some point along the development process
[TS]
00:50:09
◼
►
of Swift 3.avi comparability got
[TS]
00:50:11
◼
►
postponed and given what you just said
[TS]
00:50:14
◼
►
about the importance of ABI
[TS]
00:50:15
◼
►
compatibility for the framework people
[TS]
00:50:17
◼
►
inside apple or whatever
[TS]
00:50:18
◼
►
what can you say about that is the did
[TS]
00:50:22
◼
►
you learn lessons from ABI compatibility
[TS]
00:50:25
◼
►
being planned for the three or do you
[TS]
00:50:27
◼
►
think like it was never really hard and
[TS]
00:50:29
◼
►
fast goal and you totally made the right
[TS]
00:50:31
◼
►
call to delay it or are you disappointed
[TS]
00:50:33
◼
►
that it didn't make it
[TS]
00:50:34
◼
►
I'm i think many of those things I mean
[TS]
00:50:37
◼
►
we're disappointed that it got delayed
[TS]
00:50:38
◼
►
but it was totally the right time I
[TS]
00:50:41
◼
►
think that there's a couple of things to
[TS]
00:50:43
◼
►
learn from that one of which is software
[TS]
00:50:44
◼
►
schedule planning is hard but breaking
[TS]
00:50:50
◼
►
yeah so that that's definitely still
[TS]
00:50:52
◼
►
thing there's also that we didn't
[TS]
00:50:55
◼
►
anticipate the so the original plan
[TS]
00:50:58
◼
►
you're referring to was announced before
[TS]
00:51:00
◼
►
switch is open source or super sorry was
[TS]
00:51:02
◼
►
announced the same time so it was open
[TS]
00:51:03
◼
►
source and so we had no idea that the
[TS]
00:51:06
◼
►
community would descend on swift and
[TS]
00:51:08
◼
►
suddenly have all these new demands and
[TS]
00:51:11
◼
►
consume so much time and energy from
[TS]
00:51:14
◼
►
that have took away from programming to
[TS]
00:51:16
◼
►
do the community building peace so that
[TS]
00:51:18
◼
►
was part of it
[TS]
00:51:19
◼
►
another part of it is that even
[TS]
00:51:21
◼
►
stability is super important but it's
[TS]
00:51:24
◼
►
not as important as people think it is
[TS]
00:51:26
◼
►
for application developers it's really
[TS]
00:51:28
◼
►
important to apple but what we realized
[TS]
00:51:32
◼
►
in the three timeframe is that the thing
[TS]
00:51:33
◼
►
after developers would benefit from the
[TS]
00:51:36
◼
►
most was actually sourced ability so who
[TS]
00:51:40
◼
►
actually wants their application be
[TS]
00:51:42
◼
►
broken when they get new version of
[TS]
00:51:44
◼
►
well really nobody right and so and so
[TS]
00:51:48
◼
►
kind of halfway through the release we
[TS]
00:51:49
◼
►
pivoted and source can soar stability
[TS]
00:51:52
◼
►
became the goal and so I'm really
[TS]
00:51:54
◼
►
excited that ones with the three don't
[TS]
00:51:56
◼
►
want or so for comes out that I'm still
[TS]
00:51:59
◼
►
gonna be able to build with three code
[TS]
00:52:00
◼
►
and even if there are minor changes that
[TS]
00:52:03
◼
►
need to be made for one reason or
[TS]
00:52:04
◼
►
another that you can upgrade and you
[TS]
00:52:07
◼
►
have great compatibility with your old
[TS]
00:52:09
◼
►
code and you don't have to start the
[TS]
00:52:11
◼
►
migrator before you can do anything so
[TS]
00:52:13
◼
►
it's gonna be a great improvement for
[TS]
00:52:14
◼
►
people's lives
[TS]
00:52:16
◼
►
alright so moving on a little bit to
[TS]
00:52:18
◼
►
that kind of this branch topic here of
[TS]
00:52:21
◼
►
server-side Swift with on linux things
[TS]
00:52:23
◼
►
like this is is switched on the server
[TS]
00:52:27
◼
►
something that you know I i know it's
[TS]
00:52:30
◼
►
possible and there's like some seemingly
[TS]
00:52:33
◼
►
some early efforts now to get that going
[TS]
00:52:35
◼
►
it do you see this as like a major goal
[TS]
00:52:38
◼
►
first trip to the language and you're
[TS]
00:52:40
◼
►
not not any kind of official capacity
[TS]
00:52:42
◼
►
just like you as a person who who likes
[TS]
00:52:44
◼
►
and user Swift and has as a you know a
[TS]
00:52:46
◼
►
strong role in the community like is
[TS]
00:52:50
◼
►
server-side Swift a thing that you want
[TS]
00:52:53
◼
►
to be like a major thing to compete with
[TS]
00:52:55
◼
►
you know things like Python rails and
[TS]
00:52:57
◼
►
stuff on the server or is it intended
[TS]
00:53:00
◼
►
more to be kind of like a specialized
[TS]
00:53:02
◼
►
thing that is probably not going to be
[TS]
00:53:03
◼
►
in widespread use by like web and
[TS]
00:53:05
◼
►
back-end programmers so I think that
[TS]
00:53:08
◼
►
everybody involved with the project
[TS]
00:53:11
◼
►
wanted to be the way to do server
[TS]
00:53:13
◼
►
development and I think that to
[TS]
00:53:17
◼
►
understand that you have to understand
[TS]
00:53:18
◼
►
were just kind of entering phase 2
[TS]
00:53:21
◼
►
Swift's world domination plan so this
[TS]
00:53:27
◼
►
will probably sound insane but maybe in
[TS]
00:53:29
◼
►
a few years it will sound less than
[TS]
00:53:31
◼
►
saying it but the way to look at it the
[TS]
00:53:34
◼
►
way i look at it and the way that many
[TS]
00:53:36
◼
►
other people have to look at it is that
[TS]
00:53:37
◼
►
we want swift be the next big thing
[TS]
00:53:41
◼
►
right we wanted to be more popular than
[TS]
00:53:42
◼
►
Java was or is we want to be more
[TS]
00:53:45
◼
►
popular than Python we want to be maybe
[TS]
00:53:46
◼
►
even more popular than see someday right
[TS]
00:53:48
◼
►
that's that would be a stretch but but
[TS]
00:53:51
◼
►
that would be great and so if if thats
[TS]
00:53:54
◼
►
problem solved how do you solve that
[TS]
00:53:55
◼
►
problem well open source is a huge piece
[TS]
00:53:58
◼
►
of that right without open-source it's
[TS]
00:53:59
◼
►
not going to be available in other
[TS]
00:54:00
◼
►
people's platforms it's not gonna be
[TS]
00:54:02
◼
►
used in education and teaching as that's
[TS]
00:54:05
◼
►
just not gonna happen and so open
[TS]
00:54:06
◼
►
sources a major piece of that if you go
[TS]
00:54:09
◼
►
back farther before that Swift world
[TS]
00:54:12
◼
►
domination doesn't happen unless with
[TS]
00:54:14
◼
►
games relevance right and I think Swift
[TS]
00:54:18
◼
►
has nailed the relevance side of things
[TS]
00:54:20
◼
►
with the iOS and a platform development
[TS]
00:54:23
◼
►
side of the story were you know maybe
[TS]
00:54:27
◼
►
not Marco but their new most people are
[TS]
00:54:29
◼
►
pushing the Swift very quickly and
[TS]
00:54:31
◼
►
seemed very happy using actually i
[TS]
00:54:33
◼
►
started using it today
[TS]
00:54:34
◼
►
okay good call i switch today in honor
[TS]
00:54:37
◼
►
of this interview and I wrote my first
[TS]
00:54:39
◼
►
Swift today in an entire extension and
[TS]
00:54:42
◼
►
overcast report was written Swift Wow a
[TS]
00:54:45
◼
►
fantastic you go up proud of you is it
[TS]
00:54:47
◼
►
is a good day
[TS]
00:54:48
◼
►
yeah and more and more will be coming
[TS]
00:54:50
◼
►
although there's a lot of jealousy there
[TS]
00:54:53
◼
►
so i probably long way away from being
[TS]
00:54:55
◼
►
all Swift yeah well that's that's okay
[TS]
00:54:58
◼
►
sweetie loves objective-c exactly the
[TS]
00:55:01
◼
►
way i look at it is that the first steps
[TS]
00:55:03
◼
►
with world domination is getting to
[TS]
00:55:05
◼
►
relevance and 24 language gets relevance
[TS]
00:55:08
◼
►
that needs a killer app killer app right
[TS]
00:55:10
◼
►
needs a reason why people would want to
[TS]
00:55:12
◼
►
use it and for swift that's clearly iOS
[TS]
00:55:14
◼
►
and mac and other Apple platform
[TS]
00:55:16
◼
►
development it seconds be open source
[TS]
00:55:19
◼
►
third it needs to go beyond right and
[TS]
00:55:24
◼
►
then the next the next step the frontier
[TS]
00:55:27
◼
►
where it makes sense to expand out to or
[TS]
00:55:28
◼
►
if you're no real time strategy game
[TS]
00:55:31
◼
►
player the the natural expansion is is a
[TS]
00:55:33
◼
►
a place where the language is where the
[TS]
00:55:39
◼
►
language actually only needs a few
[TS]
00:55:41
◼
►
things added to it to be good and so I
[TS]
00:55:44
◼
►
think switch server development is
[TS]
00:55:45
◼
►
really that next step because for
[TS]
00:55:46
◼
►
development is very similar to app
[TS]
00:55:48
◼
►
development in terms of the kinds of
[TS]
00:55:49
◼
►
code that you need to write it's very
[TS]
00:55:51
◼
►
similar terms of many of the frameworks
[TS]
00:55:53
◼
►
the major missing piece is that it needs
[TS]
00:55:57
◼
►
to run on linux and other pertinent
[TS]
00:55:59
◼
►
server development platforms in and
[TS]
00:56:02
◼
►
there's then the whole library ecosystem
[TS]
00:56:05
◼
►
that needs to be built out
[TS]
00:56:06
◼
►
and so I think that we're in right now
[TS]
00:56:07
◼
►
is we're in a really exciting phase
[TS]
00:56:09
◼
►
where those platforms are being built
[TS]
00:56:12
◼
►
those frameworks and different pieces of
[TS]
00:56:15
◼
►
infrastructure coming together and
[TS]
00:56:17
◼
►
that's that's really the idea behind
[TS]
00:56:18
◼
►
this with server working group that's an
[TS]
00:56:21
◼
►
official part of Swift org is getting
[TS]
00:56:22
◼
►
all the people working in the space to
[TS]
00:56:24
◼
►
talk to each other and i'm very excited
[TS]
00:56:26
◼
►
about that i'm going beyond that though
[TS]
00:56:29
◼
►
you know it with the goal of being more
[TS]
00:56:32
◼
►
relevant than Java for example if we're
[TS]
00:56:34
◼
►
going to pick on java is the dream of
[TS]
00:56:38
◼
►
Swift is to scale the way from scripting
[TS]
00:56:41
◼
►
language all the way down to low level
[TS]
00:56:43
◼
►
systems programming like you could write
[TS]
00:56:45
◼
►
a colonel in it or you write some
[TS]
00:56:47
◼
►
firmware on it and i think the
[TS]
00:56:49
◼
►
descripton side of it is maybe more
[TS]
00:56:51
◼
►
straightforward when when this the
[TS]
00:56:54
◼
►
community and the core team have time to
[TS]
00:56:57
◼
►
deal with it because they're talking
[TS]
00:56:58
◼
►
about in integrating regular expressions
[TS]
00:57:02
◼
►
integrating multi-line string literals
[TS]
00:57:04
◼
►
and integrating other other features
[TS]
00:57:05
◼
►
like that that people love from
[TS]
00:57:07
◼
►
scripting languages and those are big
[TS]
00:57:10
◼
►
projects but those are kind of well
[TS]
00:57:13
◼
►
known i guess and they will fit and drop
[TS]
00:57:15
◼
►
right into the existing existing system
[TS]
00:57:19
◼
►
the Swift provides systems programming
[TS]
00:57:22
◼
►
is I think the big the big next frontier
[TS]
00:57:25
◼
►
and I think that's where Swift can
[TS]
00:57:27
◼
►
really distinguish itself from java or
[TS]
00:57:29
◼
►
other other competitive languages
[TS]
00:57:32
◼
►
because among other widely used
[TS]
00:57:35
◼
►
languages out there there's really
[TS]
00:57:36
◼
►
nothing that can unseat see your C++
[TS]
00:57:38
◼
►
there's rust for example is an
[TS]
00:57:42
◼
►
interesting language but hasn't got a
[TS]
00:57:43
◼
►
lot of adoption yet and I think the
[TS]
00:57:46
◼
►
Swift is more interesting than rust and
[TS]
00:57:48
◼
►
some of the high-level application
[TS]
00:57:50
◼
►
demands but we'll see rust is a great
[TS]
00:57:53
◼
►
language as well and so I'm really
[TS]
00:57:56
◼
►
interested to see the swift for systems
[TS]
00:57:59
◼
►
programming work get going and I think
[TS]
00:58:02
◼
►
that would be a couple years out before
[TS]
00:58:04
◼
►
it really comes together but once it
[TS]
00:58:05
◼
►
does i think the Swift can be really be
[TS]
00:58:09
◼
►
the next big thing and I'm excited about
[TS]
00:58:11
◼
►
so just a second back a second to the
[TS]
00:58:14
◼
►
server role of it you know possibly
[TS]
00:58:16
◼
►
taking over there like you know that i
[TS]
00:58:18
◼
►
would love like you know Here I am using
[TS]
00:58:19
◼
►
PHP and just see these these two
[TS]
00:58:22
◼
►
languages that are fairly old and I mean
[TS]
00:58:24
◼
►
PHP is way more hated than Jesse he but
[TS]
00:58:27
◼
►
but you know this is the two languages i
[TS]
00:58:29
◼
►
use for various historical and practical
[TS]
00:58:32
◼
►
reasons it on the server a lot of what
[TS]
00:58:35
◼
►
what makes a language succeed or fail on
[TS]
00:58:39
◼
►
servers and web development is not
[TS]
00:58:41
◼
►
necessarily how good of a language it is
[TS]
00:58:43
◼
►
but how how healthy and universal and
[TS]
00:58:48
◼
►
develop the framework surrounded r44
[TS]
00:58:50
◼
►
things like web development how
[TS]
00:58:52
◼
►
practical and easy it is to deploy and
[TS]
00:58:54
◼
►
run on servers so you know Swiss being a
[TS]
00:58:58
◼
►
being its own good language that alone I
[TS]
00:59:02
◼
►
don't think is enough to get it to get
[TS]
00:59:04
◼
►
traction on the server do like do you
[TS]
00:59:06
◼
►
think is it necessary for the Swift team
[TS]
00:59:10
◼
►
like the the core group who's running
[TS]
00:59:13
◼
►
Swift whether that's Apple or the
[TS]
00:59:15
◼
►
community of contributors with apple or
[TS]
00:59:17
◼
►
whatever else is important for them to
[TS]
00:59:20
◼
►
develop and and kind of make official an
[TS]
00:59:23
◼
►
official set of server and web
[TS]
00:59:25
◼
►
frameworks and libraries and tools or do
[TS]
00:59:29
◼
►
you think it's sufficient to take the
[TS]
00:59:31
◼
►
risk to let the community do that but at
[TS]
00:59:33
◼
►
the risk of fragmentation and maybe
[TS]
00:59:35
◼
►
nothing ever taking off also less
[TS]
00:59:38
◼
►
interesting question and keep in mind
[TS]
00:59:40
◼
►
that i don't have a lot of practical
[TS]
00:59:42
◼
►
experience building server apps so this
[TS]
00:59:44
◼
►
is not missing much
[TS]
00:59:45
◼
►
my my my my opinion based on talking to
[TS]
00:59:49
◼
►
other smart people so the approach this
[TS]
00:59:52
◼
►
with projects taking is looking to
[TS]
00:59:54
◼
►
standardize what's colloquially but not
[TS]
00:59:57
◼
►
correctly known as a server foundation
[TS]
00:59:57
◼
►
correctly known as a server foundation
[TS]
01:00:00
◼
►
kind of technologies so it will not be
[TS]
01:00:02
◼
►
named for foundation but that kind of an
[TS]
01:00:05
◼
►
idea and so take the encryption the
[TS]
01:00:07
◼
►
network transport the HTTP kinds of
[TS]
01:00:09
◼
►
things that that everybody needs for
[TS]
01:00:12
◼
►
server technologies and standardized
[TS]
01:00:14
◼
►
that as part of this project but at
[TS]
01:00:16
◼
►
least in the short term not look to
[TS]
01:00:18
◼
►
standardize a specific web framework
[TS]
01:00:20
◼
►
because they're half dozen different
[TS]
01:00:21
◼
►
completely different approaches that are
[TS]
01:00:24
◼
►
interesting different different kinds of
[TS]
01:00:25
◼
►
demands and I don't think there's a
[TS]
01:00:28
◼
►
clear winner yet it's possible that
[TS]
01:00:30
◼
►
after the first few rounds shake out
[TS]
01:00:32
◼
►
there will be an equivalent you know
[TS]
01:00:35
◼
►
ruby-on-rails kind of dominant pattern
[TS]
01:00:37
◼
►
and a framework that emerges and if so
[TS]
01:00:41
◼
►
then maybe that would make sense but I
[TS]
01:00:43
◼
►
don't think it don't think Swift needs
[TS]
01:00:45
◼
►
for there to be a winner the high level
[TS]
01:00:47
◼
►
as far as what can the Swift core
[TS]
01:00:51
◼
►
language and language and compiler folks
[TS]
01:00:54
◼
►
do about this
[TS]
01:00:55
◼
►
I think there's really two things one of
[TS]
01:00:57
◼
►
which is this what package manager I
[TS]
01:00:59
◼
►
think the package manager is really key
[TS]
01:01:01
◼
►
to scaling out the ecosystem and getting
[TS]
01:01:04
◼
►
people to work together with the common
[TS]
01:01:08
◼
►
ecosystem it's also the best and i think
[TS]
01:01:11
◼
►
only way to build swift code on linux
[TS]
01:01:12
◼
►
and out and other platforms they don't
[TS]
01:01:15
◼
►
mean to single out linux it's just it's
[TS]
01:01:17
◼
►
the biggest server development one so i
[TS]
01:01:21
◼
►
think that's a big piece i think the
[TS]
01:01:22
◼
►
other piece that there will be really
[TS]
01:01:24
◼
►
amazing is when the concurrency model
[TS]
01:01:26
◼
►
comes up because i think that's one of
[TS]
01:01:27
◼
►
the reasons that makes go particularly
[TS]
01:01:30
◼
►
compelling for server development is
[TS]
01:01:32
◼
►
that has really well developed story
[TS]
01:01:34
◼
►
there along with all the libraries to go
[TS]
01:01:36
◼
►
together for server and cloud
[TS]
01:01:37
◼
►
development and so when the pieces the
[TS]
01:01:40
◼
►
concurrency model's start coming up
[TS]
01:01:41
◼
►
which will probably the first pieces
[TS]
01:01:43
◼
►
will ship in Swift five is my guess that
[TS]
01:01:46
◼
►
will make swift and even more compelling
[TS]
01:01:48
◼
►
can answer for that kind of space but i
[TS]
01:01:52
◼
►
don't think i don't think we need a
[TS]
01:01:54
◼
►
server language feature and that's what
[TS]
01:01:56
◼
►
you're asking
[TS]
01:01:57
◼
►
so going to the other extreme from the
[TS]
01:02:00
◼
►
server-side scripting to gain back the
[TS]
01:02:03
◼
►
systems programming one thing I've seen
[TS]
01:02:05
◼
►
related to this and and i think this all
[TS]
01:02:08
◼
►
stems from
[TS]
01:02:09
◼
►
with this quote from the original apple
[TS]
01:02:11
◼
►
Swift book that Swift was designed to
[TS]
01:02:13
◼
►
scale from hello world to an entire
[TS]
01:02:15
◼
►
operating system like that that it's the
[TS]
01:02:17
◼
►
world domination plan was there from the
[TS]
01:02:18
◼
►
beginning right yep you know absolutely
[TS]
01:02:20
◼
►
in the first paragraph of the thing when
[TS]
01:02:23
◼
►
I talk to people now about swift as a
[TS]
01:02:27
◼
►
systems language often wanna hear is
[TS]
01:02:30
◼
►
people relating the ways that is not
[TS]
01:02:34
◼
►
ready to be a systems language yet which
[TS]
01:02:36
◼
►
is you know what you just talked about
[TS]
01:02:37
◼
►
but then deciding based on that that
[TS]
01:02:40
◼
►
because it's not ready to be a systems
[TS]
01:02:42
◼
►
language now it never will and then they
[TS]
01:02:44
◼
►
dismiss it like other words like that
[TS]
01:02:46
◼
►
may have been the plan but clearly were
[TS]
01:02:50
◼
►
reasons x y&z I you still have to you
[TS]
01:02:52
◼
►
see for this therefore Swift is just a
[TS]
01:02:54
◼
►
way to ride my apps for iOS and mac OS
[TS]
01:02:57
◼
►
and how I mean I'm not sure what you can
[TS]
01:03:01
◼
►
do with it but do you think about how
[TS]
01:03:04
◼
►
how to change perception as the language
[TS]
01:03:07
◼
►
its older and its old age now it's up to
[TS]
01:03:09
◼
►
three-point out like this
[TS]
01:03:10
◼
►
it starts at you know that that I nobody
[TS]
01:03:12
◼
►
puts whipped in the corner like that
[TS]
01:03:13
◼
►
that people think they know people think
[TS]
01:03:16
◼
►
they know what Swift is and they say was
[TS]
01:03:17
◼
►
this language it does this thing and
[TS]
01:03:19
◼
►
that your plans for world domination may
[TS]
01:03:21
◼
►
be thwarted by the idea that people are
[TS]
01:03:23
◼
►
pigeonholing language because it's been
[TS]
01:03:24
◼
►
around for a few years and I think they
[TS]
01:03:25
◼
►
know it took that you're onto something
[TS]
01:03:27
◼
►
I think that's real problem i don't
[TS]
01:03:29
◼
►
think systems programming is the place
[TS]
01:03:30
◼
►
where that's a problem yet though
[TS]
01:03:31
◼
►
because if I don't think it's it's
[TS]
01:03:34
◼
►
reasonable for me as a crazy man going
[TS]
01:03:37
◼
►
around saying swift swift will someday
[TS]
01:03:39
◼
►
do systems programming really well you
[TS]
01:03:41
◼
►
should you should remember that I don't
[TS]
01:03:43
◼
►
think that's that's a good way to spend
[TS]
01:03:44
◼
►
time at the moment when it does that
[TS]
01:03:47
◼
►
then the question becomes how do you
[TS]
01:03:49
◼
►
make that make people aware of that and
[TS]
01:03:53
◼
►
how do you get get people to change
[TS]
01:03:55
◼
►
their prior misconception but at that
[TS]
01:03:57
◼
►
point I'm you can a very practical
[TS]
01:03:59
◼
►
look you can do this and this is so
[TS]
01:04:00
◼
►
great and now you get all the advantages
[TS]
01:04:02
◼
►
to see but it's safe then you could
[TS]
01:04:04
◼
►
point to specific reasons why it's
[TS]
01:04:06
◼
►
better so I'm not too worried about it
[TS]
01:04:10
◼
►
in the in the space of systems
[TS]
01:04:11
◼
►
programming but i think there is a
[TS]
01:04:12
◼
►
practical from today which is Swift is
[TS]
01:04:16
◼
►
open-source the Apple development
[TS]
01:04:19
◼
►
community knows what very well but
[TS]
01:04:22
◼
►
much everybody else doesn't right and if
[TS]
01:04:25
◼
►
you go to a random save the next
[TS]
01:04:30
◼
►
developer just to continue talking about
[TS]
01:04:32
◼
►
linux they all perceived Swift as being
[TS]
01:04:35
◼
►
an apple thing and only relevant to
[TS]
01:04:37
◼
►
apple platforms and they don't even
[TS]
01:04:39
◼
►
learn about it right and so I think that
[TS]
01:04:42
◼
►
there is an interesting challenge there
[TS]
01:04:45
◼
►
and probably the best way to do that is
[TS]
01:04:47
◼
►
for deep existing communities to keep
[TS]
01:04:51
◼
►
just growing and as this switch on
[TS]
01:04:54
◼
►
server community grows and more and more
[TS]
01:04:56
◼
►
people are successful building and
[TS]
01:04:58
◼
►
deploying server after and Swift i hope
[TS]
01:05:01
◼
►
that naturally more people will become
[TS]
01:05:02
◼
►
aware of that effort will will then find
[TS]
01:05:06
◼
►
out about Swift maybe try it out find
[TS]
01:05:09
◼
►
out that it's actually really great and
[TS]
01:05:10
◼
►
if it's not really great let us know so
[TS]
01:05:12
◼
►
that people can fix whatever the
[TS]
01:05:14
◼
►
problems are and then just kind of grow
[TS]
01:05:16
◼
►
out but i'm i'm actually perfectly okay
[TS]
01:05:19
◼
►
with the growing a little bit slower
[TS]
01:05:20
◼
►
than it has been so John asked about you
[TS]
01:05:24
◼
►
know the span between basically
[TS]
01:05:26
◼
►
low-level systems programming and
[TS]
01:05:27
◼
►
high-level applications programming i'm
[TS]
01:05:29
◼
►
also curious that it seems like 15 /
[TS]
01:05:32
◼
►
Apple have have presented Swift as not
[TS]
01:05:35
◼
►
only spanning that wide range which
[TS]
01:05:37
◼
►
seems impossible but also spanning a
[TS]
01:05:40
◼
►
wide range of skill levels of programmer
[TS]
01:05:42
◼
►
so you know there's there's the Swift
[TS]
01:05:44
◼
►
playgrounds up an ipad where you have
[TS]
01:05:45
◼
►
total novices writing Swift as their
[TS]
01:05:47
◼
►
first language all the way up to people
[TS]
01:05:50
◼
►
writing like you know systems-level
[TS]
01:05:51
◼
►
things and and complicated apps you were
[TS]
01:05:54
◼
►
very experienced programmers it do you
[TS]
01:05:56
◼
►
think is even is it possible for
[TS]
01:05:59
◼
►
language to do all of these things well
[TS]
01:06:01
◼
►
and if so do you think Swift has
[TS]
01:06:04
◼
►
achieved that so I do think it's
[TS]
01:06:07
◼
►
possible i think it has achieved it for
[TS]
01:06:10
◼
►
the things that is doing so far and i
[TS]
01:06:12
◼
►
think the challenges that as new
[TS]
01:06:14
◼
►
capabilities get added that it doesn't
[TS]
01:06:16
◼
►
jeopardize that
[TS]
01:06:17
◼
►
but knowing knowing the the folks
[TS]
01:06:19
◼
►
involved and the source compatibility
[TS]
01:06:21
◼
►
guarantees and everything else like that
[TS]
01:06:22
◼
►
i'm pretty sure that won't be a problem
[TS]
01:06:24
◼
►
going forward
[TS]
01:06:25
◼
►
here's the way I look at swift you'll
[TS]
01:06:28
◼
►
never you're unlikely to run to anybody
[TS]
01:06:31
◼
►
that says Swift is a simple language
[TS]
01:06:35
◼
►
so it is a complicated language it's not
[TS]
01:06:36
◼
►
simple in the sense that scheme is
[TS]
01:06:38
◼
►
simple for example it's also not simple
[TS]
01:06:41
◼
►
in terms of way talk to Jesse developer
[TS]
01:06:44
◼
►
that the law claim that objective c is
[TS]
01:06:46
◼
►
simple ignoring all the sea parts i
[TS]
01:06:48
◼
►
would never claim that for the record
[TS]
01:06:50
◼
►
alright so see itself as it is a very
[TS]
01:06:53
◼
►
complicated weird language is just that
[TS]
01:06:55
◼
►
people don't typically use the weird
[TS]
01:06:57
◼
►
part right and so that perceives he's
[TS]
01:07:00
◼
►
being very simple the so the way the way
[TS]
01:07:05
◼
►
the way i project the Sun Swift is that
[TS]
01:07:07
◼
►
the the secret to Swift and being easy
[TS]
01:07:10
◼
►
to learn easy to use as a teaching
[TS]
01:07:13
◼
►
vehicle but also powerful enough to
[TS]
01:07:16
◼
►
solve the problems that need to be
[TS]
01:07:17
◼
►
solved is that the complexities inherent
[TS]
01:07:19
◼
►
in the language needs to be
[TS]
01:07:21
◼
►
progressively disclosed so imagine that
[TS]
01:07:24
◼
►
someday Swift had inline assembly
[TS]
01:07:25
◼
►
support for example only really low
[TS]
01:07:28
◼
►
level systems people are really bit
[TS]
01:07:30
◼
►
twiddling assembly programmers would use
[TS]
01:07:32
◼
►
this feature everybody else would ignore
[TS]
01:07:34
◼
►
it and it would not increase the
[TS]
01:07:35
◼
►
apparent complexity to language of the
[TS]
01:07:37
◼
►
language to people who didn't know it
[TS]
01:07:39
◼
►
was for feature like that the most
[TS]
01:07:40
◼
►
important thing is to make the syntax
[TS]
01:07:42
◼
►
clear so that when you run up into it
[TS]
01:07:45
◼
►
you discovered about this code you know
[TS]
01:07:47
◼
►
that you don't know what it does right
[TS]
01:07:50
◼
►
and so you say oh that's interesting i
[TS]
01:07:52
◼
►
don't know what that is and then you can
[TS]
01:07:54
◼
►
do a search and find out find
[TS]
01:07:56
◼
►
stackoverflow oracle whatever it is they
[TS]
01:07:59
◼
►
explain what this is to me and then you
[TS]
01:08:00
◼
►
can say okay I get it and either care I
[TS]
01:08:02
◼
►
don't but at that point I'm you can then
[TS]
01:08:04
◼
►
dive in and and learn and learn more
[TS]
01:08:07
◼
►
information
[TS]
01:08:07
◼
►
assembly is never something that a swift
[TS]
01:08:10
◼
►
playgrounds person working through 12
[TS]
01:08:12
◼
►
code 3 would ever want to know about
[TS]
01:08:13
◼
►
right and and i think that is really the
[TS]
01:08:16
◼
►
this one of the secrets to Swift's
[TS]
01:08:19
◼
►
success in terms of getting people on
[TS]
01:08:21
◼
►
board and and being really approachable
[TS]
01:08:23
◼
►
for people at all levels is that just
[TS]
01:08:26
◼
►
like in Python you can start with just
[TS]
01:08:28
◼
►
print hello world you could do the exact
[TS]
01:08:30
◼
►
same thing and Swift and Swift you don't
[TS]
01:08:32
◼
►
need the / end on the string it's really
[TS]
01:08:35
◼
►
just print hello world and from there
[TS]
01:08:38
◼
►
you can introduce the concepts you can
[TS]
01:08:40
◼
►
grow it out over time and this really
[TS]
01:08:41
◼
►
allows people to
[TS]
01:08:43
◼
►
understand either the syntax language or
[TS]
01:08:46
◼
►
the conceptual programming things that
[TS]
01:08:49
◼
►
they're learning as i go and the design
[TS]
01:08:52
◼
►
of Swift is really geared around that
[TS]
01:08:54
◼
►
and so what that means if you project on
[TS]
01:08:56
◼
►
the systems programming features
[TS]
01:08:57
◼
►
comparing Swift to rest for example I
[TS]
01:09:00
◼
►
think it's very likely that swill get
[TS]
01:09:02
◼
►
features for memory ownership control
[TS]
01:09:05
◼
►
which will allow really really high
[TS]
01:09:08
◼
►
performance allow solving performance
[TS]
01:09:10
◼
►
problems with arc for example but unlike
[TS]
01:09:13
◼
►
rust we can't make that be a core part
[TS]
01:09:15
◼
►
of the type system that everybody has to
[TS]
01:09:17
◼
►
use it has to be something that
[TS]
01:09:18
◼
►
sufficiently smart programmers when
[TS]
01:09:21
◼
►
they're solving a specific performance
[TS]
01:09:22
◼
►
problem and abusing or an embedded
[TS]
01:09:26
◼
►
Colonel programmer might want to use but
[TS]
01:09:28
◼
►
an application developer can completely
[TS]
01:09:30
◼
►
ignore and so that's really the
[TS]
01:09:32
◼
►
challenges its deploying similar type
[TS]
01:09:35
◼
►
system mechanics and other low-level
[TS]
01:09:37
◼
►
language geekery to the problem but do
[TS]
01:09:40
◼
►
so in a way that is tasteful and allows
[TS]
01:09:42
◼
►
most normal people to just completely
[TS]
01:09:44
◼
►
ignore everything you just said
[TS]
01:09:46
◼
►
kind of reminds me of saying I once
[TS]
01:09:49
◼
►
heard that you're free to adopt
[TS]
01:09:49
◼
►
respective you would like which is
[TS]
01:09:51
◼
►
making things easy and make hard things
[TS]
01:09:53
◼
►
possible we sponsor tonight by audible
[TS]
01:09:56
◼
►
with an unmatched election of audiobooks
[TS]
01:09:58
◼
►
original audio shows news comedy and
[TS]
01:10:01
◼
►
more get a free 30-day trial at
[TS]
01:10:03
◼
►
audible.com / ATP if you want to listen
[TS]
01:10:07
◼
►
to it audible has it you can listen to
[TS]
01:10:08
◼
►
audiobooks from virtually every genre
[TS]
01:10:10
◼
►
anytime anywhere you can play audible
[TS]
01:10:12
◼
►
audiobooks on phones tablets computers
[TS]
01:10:14
◼
►
even Kindles and ipods if you still have
[TS]
01:10:18
◼
►
audio books are great for flights long
[TS]
01:10:20
◼
►
road trips or even your daily commute
[TS]
01:10:22
◼
►
you might think you don't have time to
[TS]
01:10:23
◼
►
read books but you'd be surprised how
[TS]
01:10:25
◼
►
many audio books you can hear each year
[TS]
01:10:27
◼
►
even only listen to and from work every
[TS]
01:10:29
◼
►
day that time really adds up
[TS]
01:10:31
◼
►
audiobooks bring books to life many of
[TS]
01:10:33
◼
►
them are read by author's themselves
[TS]
01:10:34
◼
►
which adds an extra dimension to the
[TS]
01:10:36
◼
►
text and with audible you can take risks
[TS]
01:10:39
◼
►
and try new authors without regret
[TS]
01:10:41
◼
►
because audible offers their great
[TS]
01:10:43
◼
►
listen guarantee if you start an
[TS]
01:10:45
◼
►
audiobook and don't like it you can
[TS]
01:10:46
◼
►
exchange it for another one for free so
[TS]
01:10:49
◼
►
check it out for yourself you can see
[TS]
01:10:51
◼
►
and listen when you begin your free
[TS]
01:10:53
◼
►
30-day trial you get your first audio
[TS]
01:10:55
◼
►
book for free and there's
[TS]
01:10:56
◼
►
no stress and obligations you can cancel
[TS]
01:10:58
◼
►
your auto membership at anytime with
[TS]
01:11:00
◼
►
audiobooks and spoken word audio product
[TS]
01:11:02
◼
►
you will find what you're looking for
[TS]
01:11:04
◼
►
get a free 30-day trial by signing up at
[TS]
01:11:07
◼
►
audible.com / ATP that's audible.com /
[TS]
01:11:11
◼
►
ATP thanks to audible for sponsoring our
[TS]
01:11:14
◼
►
show so Chris you brought up just a
[TS]
01:11:20
◼
►
second ago how simple pythons hello
[TS]
01:11:22
◼
►
world is and one of the things I've
[TS]
01:11:25
◼
►
wondered about Swift is it seems to some
[TS]
01:11:28
◼
►
degree like it's kind of what we call it
[TS]
01:11:31
◼
►
the Rorschach test of languages in that
[TS]
01:11:33
◼
►
I came to Swift a sort of its kind of
[TS]
01:11:36
◼
►
the objective-c but but my day job with
[TS]
01:11:39
◼
►
it was a c-sharp guy and I see to my
[TS]
01:11:41
◼
►
eyes anyway and i hope you don't find it
[TS]
01:11:43
◼
►
insulting but I feel a lot of C sharp i
[TS]
01:11:45
◼
►
see a lot of C sharp and Swift and I've
[TS]
01:11:47
◼
►
heard javascript people again I hope
[TS]
01:11:48
◼
►
that's insulting say oh I see some
[TS]
01:11:50
◼
►
javascript in here and I presume that
[TS]
01:11:52
◼
►
John could say that that he sees pearl
[TS]
01:11:54
◼
►
and I presume Marco could say that he
[TS]
01:11:55
◼
►
sees PHP in it but hopefully that's not
[TS]
01:11:57
◼
►
an icy go and I don't see any PHP didn't
[TS]
01:12:00
◼
►
know you get what I'm driving at though
[TS]
01:12:02
◼
►
and so so i guess what i'm asking chris
[TS]
01:12:05
◼
►
is obviously there's a huge objective-c
[TS]
01:12:07
◼
►
influence and Swift but was there anyone
[TS]
01:12:10
◼
►
or maybe just a couple of other
[TS]
01:12:11
◼
►
languages that you feel really really
[TS]
01:12:13
◼
►
inspired swiftor do you really think
[TS]
01:12:15
◼
►
it's that it's the melting pot language
[TS]
01:12:17
◼
►
that one would always hope to create my
[TS]
01:12:20
◼
►
finger really is a melting pot because
[TS]
01:12:21
◼
►
we weren't so the goal Swift isn't 28
[TS]
01:12:25
◼
►
some other language is to just be great
[TS]
01:12:28
◼
►
right right and so you can take I think
[TS]
01:12:31
◼
►
that Swift looks or I and the other
[TS]
01:12:34
◼
►
people in the core team the other people
[TS]
01:12:35
◼
►
working working on swift have looked at
[TS]
01:12:38
◼
►
many many other languages and if you're
[TS]
01:12:40
◼
►
asking nerd there's tons of Pascal
[TS]
01:12:42
◼
►
concepts built-in protocols really are
[TS]
01:12:45
◼
►
just like very similar Haskell cons
[TS]
01:12:47
◼
►
constructor for example it's really
[TS]
01:12:51
◼
►
about taking the best ideas from where
[TS]
01:12:53
◼
►
we can get and assembling them together
[TS]
01:12:55
◼
►
and one of the major goals Swift is for
[TS]
01:12:57
◼
►
to be familiar feeling right because
[TS]
01:13:00
◼
►
it's familiar with familiar feeling that
[TS]
01:13:02
◼
►
makes it easier for people to pick up
[TS]
01:13:04
◼
►
and they're not fighting
[TS]
01:13:06
◼
►
unnecessary barriers to just get in the
[TS]
01:13:09
◼
►
way of adoption and so it being familiar
[TS]
01:13:11
◼
►
is actually success in that way and this
[TS]
01:13:15
◼
►
is not it is not a result of Swift
[TS]
01:13:18
◼
►
trying to be go or C sharp or whatever
[TS]
01:13:21
◼
►
it's about taking the best ideas from
[TS]
01:13:23
◼
►
them and assembling them together and I
[TS]
01:13:25
◼
►
think that you could probably pick a
[TS]
01:13:27
◼
►
language and there's some some good idea
[TS]
01:13:29
◼
►
that came from them including you know d
[TS]
01:13:32
◼
►
or dark or go or whatever I mean Swift
[TS]
01:13:36
◼
►
does really draw from many many
[TS]
01:13:38
◼
►
different sources and it's really hard
[TS]
01:13:40
◼
►
to to really small out so the question
[TS]
01:13:45
◼
►
that Casey wrote for me to ask you right
[TS]
01:13:47
◼
►
now LOL how do you know that was me
[TS]
01:13:50
◼
►
that's definitely you is why should I
[TS]
01:13:53
◼
►
give a shit about Swift right now and i
[TS]
01:13:55
◼
►
think im gonna modify the selected that
[TS]
01:13:58
◼
►
was written it was written for you my
[TS]
01:14:00
◼
►
friend but yes that is how I you right i
[TS]
01:14:02
◼
►
figured it's not quite on style
[TS]
01:14:04
◼
►
no butBut I I you know as as somebody
[TS]
01:14:07
◼
►
who is just dipping a toe and Swift you
[TS]
01:14:10
◼
►
know as of 12 hours ago you know it has
[TS]
01:14:13
◼
►
waited this long you know just to see
[TS]
01:14:15
◼
►
faithful / hold out / lazy people who
[TS]
01:14:18
◼
►
don't learn new things very quickly
[TS]
01:14:20
◼
►
what's kinda like the sales pitch for
[TS]
01:14:21
◼
►
for adopting swift now I'm I guess two
[TS]
01:14:26
◼
►
different answers 1 which is you don't
[TS]
01:14:28
◼
►
have to stop Swift right and I don't
[TS]
01:14:30
◼
►
think objective-c is going to go away
[TS]
01:14:31
◼
►
anytime soon
[TS]
01:14:32
◼
►
Apple sports c and c++ and it doesn't
[TS]
01:14:35
◼
►
have any specific data there's no
[TS]
01:14:38
◼
►
obvious benefit of dropping objective-c
[TS]
01:14:39
◼
►
as well as obviously they have a ton of
[TS]
01:14:42
◼
►
objective-c code themselves so I i don't
[TS]
01:14:44
◼
►
think that there's any reason you have
[TS]
01:14:47
◼
►
to adopt swift swift just tries to be a
[TS]
01:14:50
◼
►
better answer so that you'll want to
[TS]
01:14:52
◼
►
adopt it and in terms of Y Swift in its
[TS]
01:14:57
◼
►
name kind of his connotes a whole bunch
[TS]
01:14:59
◼
►
of different things including
[TS]
01:15:00
◼
►
performance but really to me the most
[TS]
01:15:03
◼
►
important aspect of it is programmer
[TS]
01:15:04
◼
►
productivity right the the idea that
[TS]
01:15:06
◼
►
Swift is really optimizing for is not
[TS]
01:15:08
◼
►
letting you pound out the code as fast
[TS]
01:15:10
◼
►
as possible
[TS]
01:15:11
◼
►
it really is designed and optimized for
[TS]
01:15:14
◼
►
as a programmer you can spend the least
[TS]
01:15:16
◼
►
amount of time to get to a working
[TS]
01:15:18
◼
►
program
[TS]
01:15:19
◼
►
as fast as possible right and so getting
[TS]
01:15:22
◼
►
to working program includes the time it
[TS]
01:15:23
◼
►
takes to debug something includes the
[TS]
01:15:25
◼
►
time it takes to iterate and develop and
[TS]
01:15:28
◼
►
fight the type system and all the other
[TS]
01:15:29
◼
►
things that you have to do but that time
[TS]
01:15:33
◼
►
you spend having to fight the type
[TS]
01:15:35
◼
►
system or figure out optionals or things
[TS]
01:15:37
◼
►
like that pays itself back because your
[TS]
01:15:39
◼
►
program works more often and so you're
[TS]
01:15:41
◼
►
actually not spending time chasing down
[TS]
01:15:43
◼
►
dangling pointer bugs or you know and in
[TS]
01:15:47
◼
►
the case of objective-c you get an
[TS]
01:15:49
◼
►
unrecognized selector air you know
[TS]
01:15:51
◼
►
whatever whatever those kinds of bugs
[TS]
01:15:53
◼
►
are and swift rise to help you by the
[TS]
01:15:56
◼
►
language guiding you and helping design
[TS]
01:15:58
◼
►
things so it also has a lot of things
[TS]
01:16:00
◼
►
that just make common things easier
[TS]
01:16:02
◼
►
so you can switch on a string for
[TS]
01:16:04
◼
►
example and then match the different
[TS]
01:16:05
◼
►
cases you can use enums which are a
[TS]
01:16:08
◼
►
super genomes or just from the language
[TS]
01:16:12
◼
►
geekery world is just algebraic data
[TS]
01:16:13
◼
►
types there are tons of different
[TS]
01:16:15
◼
►
functional languages
[TS]
01:16:16
◼
►
they're not novel by any means but
[TS]
01:16:18
◼
►
they're so useful and they solve so many
[TS]
01:16:21
◼
►
problems out of the box and just having
[TS]
01:16:24
◼
►
your fingertips is great so there's
[TS]
01:16:25
◼
►
there's a lot of things about Swift and
[TS]
01:16:27
◼
►
probably depends on who you are what
[TS]
01:16:29
◼
►
your experiences are one of the problems
[TS]
01:16:31
◼
►
I've seen with people moving from
[TS]
01:16:32
◼
►
objective-c Swift initially is that they
[TS]
01:16:34
◼
►
tend to write swiftcode just like they
[TS]
01:16:36
◼
►
wrote objective-c and while that's a
[TS]
01:16:38
◼
►
really good way to make a migraine
[TS]
01:16:41
◼
►
application / or to get familiar Swift
[TS]
01:16:43
◼
►
it really means that you're missing a
[TS]
01:16:45
◼
►
lot of the value and Swift and and I
[TS]
01:16:48
◼
►
think that that's okay it's just it
[TS]
01:16:50
◼
►
means that you know an objective secret
[TS]
01:16:52
◼
►
and we're going to swift first starts
[TS]
01:16:54
◼
►
out by saying I don't see what the big
[TS]
01:16:55
◼
►
deal is
[TS]
01:16:56
◼
►
and only after they spend some time and
[TS]
01:16:58
◼
►
do they start to realize that they are
[TS]
01:17:00
◼
►
more productive they do feel better they
[TS]
01:17:02
◼
►
reach for things that they otherwise
[TS]
01:17:04
◼
►
wouldn't have and I think it's really
[TS]
01:17:07
◼
►
interesting to talk to people that have
[TS]
01:17:09
◼
►
done for example your Swift programming
[TS]
01:17:10
◼
►
but then have to go back to objective-c
[TS]
01:17:12
◼
►
and to me that's all been there that
[TS]
01:17:14
◼
►
that's the really interesting and so it
[TS]
01:17:16
◼
►
was your experience it felt absolutely
[TS]
01:17:19
◼
►
archaic in a granted on and I like to
[TS]
01:17:22
◼
►
think of myself as a nice guy and so I'd
[TS]
01:17:23
◼
►
probably say something like that even if
[TS]
01:17:24
◼
►
it wasn't true but the reality situation
[TS]
01:17:26
◼
►
is it felt just so old it just felt old
[TS]
01:17:31
◼
►
and I don't know
[TS]
01:17:32
◼
►
i wish i could quantify that better but
[TS]
01:17:35
◼
►
it just felt like I was back in time in
[TS]
01:17:38
◼
►
a way that didn't feel good in something
[TS]
01:17:40
◼
►
like in some ways it was kind of nice so
[TS]
01:17:42
◼
►
I i do like optionals I understand why
[TS]
01:17:46
◼
►
their thing I i I'm all in on it but at
[TS]
01:17:50
◼
►
the same time there are times when I
[TS]
01:17:51
◼
►
have to do a guard ladder whatever the
[TS]
01:17:52
◼
►
case may be that a real right that I
[TS]
01:17:53
◼
►
really would just like to move on with
[TS]
01:17:55
◼
►
my life and so not having to worry just
[TS]
01:17:58
◼
►
being being able to be a little more
[TS]
01:18:00
◼
►
cavalier was kind of nice but the
[TS]
01:18:03
◼
►
reality of the situation is as usual as
[TS]
01:18:04
◼
►
you said earlier is that that's a
[TS]
01:18:06
◼
►
potential hazard down the road and and
[TS]
01:18:08
◼
►
that's why i like the way that that you
[TS]
01:18:10
◼
►
and the team of have set up the type
[TS]
01:18:12
◼
►
system and Swift but gosh going back to
[TS]
01:18:14
◼
►
objective-c is so frustrating for me
[TS]
01:18:17
◼
►
because it just feels like I'm going
[TS]
01:18:18
◼
►
back in time like I'm going backwards
[TS]
01:18:21
◼
►
yeah and i think that the challenge
[TS]
01:18:23
◼
►
that's what faces because this focus is
[TS]
01:18:25
◼
►
on building you know programs that work
[TS]
01:18:28
◼
►
and that can be maintained and all the
[TS]
01:18:30
◼
►
other things that we care about for
[TS]
01:18:32
◼
►
large-scale software it's maybe not the
[TS]
01:18:35
◼
►
best solution for I want to pound out a
[TS]
01:18:38
◼
►
quick script use it once and then throw
[TS]
01:18:41
◼
►
it away right because in that case you
[TS]
01:18:43
◼
►
don't care about maintenance you you can
[TS]
01:18:45
◼
►
fit all the code in your head you don't
[TS]
01:18:46
◼
►
care about good occupation of the other
[TS]
01:18:49
◼
►
things that Swift encourages and that's
[TS]
01:18:52
◼
►
that's the case we're having a dynamic
[TS]
01:18:54
◼
►
type system can be really really
[TS]
01:18:55
◼
►
liberating and so you know maybe that
[TS]
01:18:59
◼
►
will be a challenge for some people but
[TS]
01:19:01
◼
►
i think that as with games ecosystem
[TS]
01:19:03
◼
►
against libraries its other advantages
[TS]
01:19:06
◼
►
will be so great that hopefully it will
[TS]
01:19:09
◼
►
be a good solution for those kinds of
[TS]
01:19:11
◼
►
tools as well good those kinds of
[TS]
01:19:12
◼
►
scripts as well so I'm a minute ago you
[TS]
01:19:15
◼
►
mentioned how gypsy programmers people
[TS]
01:19:17
◼
►
like me who are new to Swift tend to
[TS]
01:19:20
◼
►
write Swift like objective-c and and
[TS]
01:19:23
◼
►
that's that's concerned I've had it it's
[TS]
01:19:24
◼
►
one of the reasons that i have
[TS]
01:19:26
◼
►
procrastinated adopting Swift up till
[TS]
01:19:28
◼
►
now because I have a have a pretty good
[TS]
01:19:32
◼
►
grasp of objective-c now and I i right
[TS]
01:19:36
◼
►
objective-c code that i know is
[TS]
01:19:38
◼
►
basically idiomatic and and soundly
[TS]
01:19:42
◼
►
designed like I write code
[TS]
01:19:44
◼
►
in the style of what I think apples code
[TS]
01:19:46
◼
►
would look like based on the little bit
[TS]
01:19:47
◼
►
of you know headers that we see I feel
[TS]
01:19:50
◼
►
like I right good to see code that is
[TS]
01:19:51
◼
►
kind of correct and an idiomatic leave
[TS]
01:19:53
◼
►
sound with Swift you know III assumed
[TS]
01:19:56
◼
►
that the the idioms would not yet be
[TS]
01:19:59
◼
►
developed for a while and an established
[TS]
01:20:01
◼
►
for a while and so I didn't want to
[TS]
01:20:03
◼
►
write a bunch of bad swiftcode it or or
[TS]
01:20:06
◼
►
like incorrect or or weird swiftcode you
[TS]
01:20:10
◼
►
know investing heavily in it so early on
[TS]
01:20:13
◼
►
do you think that it's at a point now
[TS]
01:20:14
◼
►
where the idioms are starting to get
[TS]
01:20:17
◼
►
worked out enough that's less of a
[TS]
01:20:19
◼
►
concern now
[TS]
01:20:20
◼
►
yeah I do I'm so I think it's definitely
[TS]
01:20:23
◼
►
fair to say that in the script one this
[TS]
01:20:25
◼
►
with two timeframes Swift as language
[TS]
01:20:28
◼
►
was changing really rapidly and I could
[TS]
01:20:31
◼
►
see why you'd feel like you're on uneven
[TS]
01:20:32
◼
►
footing and not really sure what the
[TS]
01:20:34
◼
►
language is much less what the idioms
[TS]
01:20:35
◼
►
are Swift three really is quite well
[TS]
01:20:39
◼
►
baked out and so I expect going forward
[TS]
01:20:41
◼
►
the the new things are going to be
[TS]
01:20:42
◼
►
additive they're not going to be
[TS]
01:20:43
◼
►
changing the existing patterns and so I
[TS]
01:20:46
◼
►
think this with community in general is
[TS]
01:20:48
◼
►
gone through the same same kind of thing
[TS]
01:20:50
◼
►
that you're feeling there where it's not
[TS]
01:20:52
◼
►
really clear the one right way to solve
[TS]
01:20:55
◼
►
the problem and maybe there are
[TS]
01:20:56
◼
►
different good ways to do it with
[TS]
01:20:58
◼
►
different trade-offs won't clear to
[TS]
01:21:00
◼
►
people but I think that's I think people
[TS]
01:21:02
◼
►
are starting to understand that no there
[TS]
01:21:04
◼
►
are a few style books that are being
[TS]
01:21:06
◼
►
written by people that I've heard about
[TS]
01:21:07
◼
►
and so when those come out those will
[TS]
01:21:09
◼
►
hopefully be good and those will be a
[TS]
01:21:11
◼
►
good resource but another thing to keep
[TS]
01:21:15
◼
►
in mind is the Swift is opinionated I
[TS]
01:21:18
◼
►
guess that it is the way to say so it
[TS]
01:21:21
◼
►
really does encourage you to do the
[TS]
01:21:22
◼
►
right thing where where it can and so
[TS]
01:21:24
◼
►
I'm for example if you use bar for
[TS]
01:21:27
◼
►
everything
[TS]
01:21:28
◼
►
the this with compiler will say hey you
[TS]
01:21:31
◼
►
mark this is a bar but it could be a let
[TS]
01:21:34
◼
►
and that's just it subtle way of and and
[TS]
01:21:37
◼
►
let me fix it for you right and that's
[TS]
01:21:38
◼
►
just it subtle way of encouraging you to
[TS]
01:21:40
◼
►
use and mutable values which is a very
[TS]
01:21:43
◼
►
small Clinton but it's just kind of
[TS]
01:21:45
◼
►
pushing you in the way that it it thanks
[TS]
01:21:48
◼
►
leads to better code and immutability
[TS]
01:21:50
◼
►
for local variable doesn't matter that
[TS]
01:21:52
◼
►
much accepted to communicate something
[TS]
01:21:54
◼
►
more to the person us to read maintain
[TS]
01:21:56
◼
►
your code
[TS]
01:21:57
◼
►
and and so I think this really does kind
[TS]
01:22:00
◼
►
of encourage you down the right lines in
[TS]
01:22:02
◼
►
some ways but on the other hand and
[TS]
01:22:04
◼
►
other places where you're saying hey
[TS]
01:22:06
◼
►
should only be a class should be a
[TS]
01:22:07
◼
►
struct the train out some more nuanced
[TS]
01:22:09
◼
►
and it's it's a hard thing in the Swift
[TS]
01:22:11
◼
►
compiler can't just know what your
[TS]
01:22:12
◼
►
problem is solved and so it can help you
[TS]
01:22:15
◼
►
with that you mentioned Swift style
[TS]
01:22:18
◼
►
guides before as as a creator of a
[TS]
01:22:22
◼
►
language how how much influence do you
[TS]
01:22:26
◼
►
do you feel like you want to have over
[TS]
01:22:28
◼
►
things like style things that really are
[TS]
01:22:31
◼
►
you know it's not it's not features it's
[TS]
01:22:34
◼
►
not technically it's just like you know
[TS]
01:22:36
◼
►
what you will know different style
[TS]
01:22:38
◼
►
things like oh you know I usually have
[TS]
01:22:40
◼
►
one exit at the bottom or you should
[TS]
01:22:41
◼
►
exit early or I mean like there are
[TS]
01:22:43
◼
►
things you can do even things like
[TS]
01:22:46
◼
►
spacing embraced out for crying out loud
[TS]
01:22:48
◼
►
or you know just the sort of idioms of
[TS]
01:22:50
◼
►
like this little three-line sequences
[TS]
01:22:52
◼
►
how you do this transformation on this
[TS]
01:22:53
◼
►
data structure you mentioned you know
[TS]
01:22:56
◼
►
language features can influence that's
[TS]
01:22:58
◼
►
obviously as language designer and
[TS]
01:22:59
◼
►
participate in that process you can
[TS]
01:23:00
◼
►
effectively guide the community
[TS]
01:23:04
◼
►
style-wise in one direction or another
[TS]
01:23:06
◼
►
but eventually you come to the stuff
[TS]
01:23:08
◼
►
that's just plain opinion and style and
[TS]
01:23:11
◼
►
several other languages have had fairly
[TS]
01:23:14
◼
►
concrete styles set forth early on by
[TS]
01:23:17
◼
►
the creators we're going to go like an
[TS]
01:23:19
◼
►
RC style type things
[TS]
01:23:21
◼
►
how much do you care about being able to
[TS]
01:23:24
◼
►
influence the i guess the personal
[TS]
01:23:26
◼
►
preference or the aesthetic portions of
[TS]
01:23:30
◼
►
style that are outside the things that
[TS]
01:23:32
◼
►
you can influence as part of language
[TS]
01:23:33
◼
►
design so as with any programmer the has
[TS]
01:23:38
◼
►
a pulse
[TS]
01:23:39
◼
►
I have my preferred style and so clearly
[TS]
01:23:43
◼
►
that's the right way
[TS]
01:23:44
◼
►
naturally naturally well so i guess more
[TS]
01:23:48
◼
►
seriously the land yourself does
[TS]
01:23:49
◼
►
influence some of the things you
[TS]
01:23:51
◼
►
mentioned so for example it's my
[TS]
01:23:53
◼
►
personal opinion that this style where
[TS]
01:23:56
◼
►
you have a single entry single exit from
[TS]
01:23:58
◼
►
every function i think that leads to
[TS]
01:23:59
◼
►
really difficult to maintain and read
[TS]
01:24:01
◼
►
code and that's one of the things that
[TS]
01:24:03
◼
►
led to the guard statement existing the
[TS]
01:24:05
◼
►
guard really does encourage you to use
[TS]
01:24:07
◼
►
early exit so you handle the exceptional
[TS]
01:24:09
◼
►
cases and they don't have to
[TS]
01:24:10
◼
►
worried about them so that's that's an
[TS]
01:24:12
◼
►
example of where the language design is
[TS]
01:24:14
◼
►
kind of encouraging you to you know have
[TS]
01:24:17
◼
►
multiple returns from a function other
[TS]
01:24:20
◼
►
more subjective things like the number
[TS]
01:24:21
◼
►
of spaces i personally I'm a fan of to
[TS]
01:24:24
◼
►
space in dense i know some people are
[TS]
01:24:25
◼
►
staunchly for other people are staunchly
[TS]
01:24:28
◼
►
ate some people think 80 columns is
[TS]
01:24:29
◼
►
right answer right i mean all these
[TS]
01:24:31
◼
►
things are there are actually really
[TS]
01:24:33
◼
►
good arguments on all sides
[TS]
01:24:35
◼
►
some people argue that you should use
[TS]
01:24:37
◼
►
three space and then because then you
[TS]
01:24:38
◼
►
certainly can't have tabs in your file
[TS]
01:24:40
◼
►
wow so this is where this it comes down
[TS]
01:24:45
◼
►
to you have to pick your battles print
[TS]
01:24:47
◼
►
and people will disagree for a long time
[TS]
01:24:50
◼
►
and you can make arguments on both sides
[TS]
01:24:52
◼
►
but the inn where we've come down is
[TS]
01:24:56
◼
►
that it's just more practical to let
[TS]
01:24:58
◼
►
people write code they like to look at
[TS]
01:25:00
◼
►
and that comes at a cost of if you
[TS]
01:25:02
◼
►
switch between teams or you pick up
[TS]
01:25:04
◼
►
somebody else's package then maybe it's
[TS]
01:25:05
◼
►
indented the wrong way but I don't think
[TS]
01:25:08
◼
►
that really actually actively hurts the
[TS]
01:25:11
◼
►
comprehensive comprehensibility of the
[TS]
01:25:13
◼
►
code that's merely annoying and having
[TS]
01:25:17
◼
►
something like go format which
[TS]
01:25:19
◼
►
rigorously enforces the one true way I
[TS]
01:25:21
◼
►
think would have been nice
[TS]
01:25:23
◼
►
it just wasn't a priority early on and
[TS]
01:25:25
◼
►
it also just wasn't a battle that we
[TS]
01:25:26
◼
►
were willing to tackle and I don't know
[TS]
01:25:29
◼
►
we'll see that I think this is still
[TS]
01:25:30
◼
►
also an open question in terms of what
[TS]
01:25:33
◼
►
other tool and gets built and what other
[TS]
01:25:36
◼
►
things come into the fray because it
[TS]
01:25:38
◼
►
would be great to have better tooling
[TS]
01:25:40
◼
►
around this it just hasn't been built
[TS]
01:25:41
◼
►
out yet and it's a great opportunity for
[TS]
01:25:43
◼
►
open source as well i was thinking about
[TS]
01:25:45
◼
►
it the sort of doomsday scenario where
[TS]
01:25:47
◼
►
like one of these the Swift style guide
[TS]
01:25:49
◼
►
books comes out and like it makes some
[TS]
01:25:51
◼
►
like blanket recommendation that like
[TS]
01:25:53
◼
►
you should you know always use protocols
[TS]
01:25:56
◼
►
for this and you should never use
[TS]
01:25:57
◼
►
glasses for that or whatever and it
[TS]
01:25:58
◼
►
becomes wildly popular accepted as like
[TS]
01:26:02
◼
►
the Bible of how you rights with
[TS]
01:26:04
◼
►
programming and you're just some are
[TS]
01:26:05
◼
►
shaking your head and go no you got it
[TS]
01:26:07
◼
►
all wrong but I guess you know we'll
[TS]
01:26:09
◼
►
cross that bridge when we come to it i
[TS]
01:26:11
◼
►
think at this point you did the language
[TS]
01:26:13
◼
►
design itself and the communities have
[TS]
01:26:14
◼
►
enough influence that's not likely to
[TS]
01:26:15
◼
►
happen but I mean I guess what i was
[TS]
01:26:17
◼
►
getting at is it do you feel like the
[TS]
01:26:18
◼
►
you want to write a switch style got
[TS]
01:26:20
◼
►
like if you had unlimited
[TS]
01:26:21
◼
►
I'm no I don't think that would be a
[TS]
01:26:23
◼
►
good use of my time but if I don't look
[TS]
01:26:25
◼
►
at a time maybe i don't know i started
[TS]
01:26:27
◼
►
stardancer that theoretical question but
[TS]
01:26:29
◼
►
but I also get to your concern about
[TS]
01:26:32
◼
►
somebody came out with a book that was
[TS]
01:26:33
◼
►
so wrong that would cause me to like you
[TS]
01:26:36
◼
►
know be really unhappy actually have a
[TS]
01:26:38
◼
►
ton of faith in the Swift community
[TS]
01:26:39
◼
►
because if something came out that was
[TS]
01:26:41
◼
►
so weird i don't think that the
[TS]
01:26:43
◼
►
community overall would would accept it
[TS]
01:26:46
◼
►
the community is again just kind of
[TS]
01:26:49
◼
►
blown away with how beautiful they are
[TS]
01:26:51
◼
►
and how how many great people have
[TS]
01:26:54
◼
►
gotten involved with Swift and Swift
[TS]
01:26:56
◼
►
evolution side of things and it's been
[TS]
01:26:58
◼
►
really amazing sees people you know they
[TS]
01:27:00
◼
►
they go through their own personal
[TS]
01:27:02
◼
►
trajectory on swift mailing list where
[TS]
01:27:06
◼
►
you know initially they're saying hi I
[TS]
01:27:08
◼
►
had this idea what you think and the
[TS]
01:27:11
◼
►
responses know that's a terrible idea
[TS]
01:27:12
◼
►
for this is a reason but then they come
[TS]
01:27:16
◼
►
back a little okay how about this you
[TS]
01:27:18
◼
►
think about this and it was like oh well
[TS]
01:27:19
◼
►
that's interesting that almost worked
[TS]
01:27:20
◼
►
but it didn't work because of that and
[TS]
01:27:22
◼
►
then they come back and say hey well
[TS]
01:27:24
◼
►
what about this is what we actually
[TS]
01:27:25
◼
►
tried that and we had that for a while
[TS]
01:27:27
◼
►
and then had to back out and change this
[TS]
01:27:28
◼
►
other way because we didn't even think
[TS]
01:27:29
◼
►
about this other thing and then the next
[TS]
01:27:31
◼
►
day they're the ones saying this is the
[TS]
01:27:33
◼
►
way it needs to go and erases you're
[TS]
01:27:36
◼
►
right we should do that and it's it's
[TS]
01:27:39
◼
►
it's really hard for people that have
[TS]
01:27:41
◼
►
been involved in the overall design of
[TS]
01:27:44
◼
►
anything is complicated Swift to be able
[TS]
01:27:47
◼
►
to discern the difference between
[TS]
01:27:48
◼
►
something that is the way it is out of
[TS]
01:27:51
◼
►
an intentional decision process or the
[TS]
01:27:54
◼
►
way it is as an actor an accident of
[TS]
01:27:56
◼
►
history and so as now that the design
[TS]
01:27:59
◼
►
processes public i think that it becomes
[TS]
01:28:01
◼
►
a lot easier for people to to tell that
[TS]
01:28:03
◼
►
and it's very easy for people to kind of
[TS]
01:28:07
◼
►
understand the difference
[TS]
01:28:10
◼
►
the one big debate that i haven't
[TS]
01:28:12
◼
►
actually seen is why is the funky word
[TS]
01:28:14
◼
►
the funky word and that's one that
[TS]
01:28:16
◼
►
luckily were now beyond this with three
[TS]
01:28:18
◼
►
source compatibility threshold so we
[TS]
01:28:21
◼
►
just can't have that discussion anymore
[TS]
01:28:23
◼
►
i think i'll be darned
[TS]
01:28:25
◼
►
but one of the best things of this world
[TS]
01:28:27
◼
►
open source thing or what
[TS]
01:28:29
◼
►
the whole evolution process has that
[TS]
01:28:31
◼
►
like the list of questions like the
[TS]
01:28:33
◼
►
Aston answers questions like this is a
[TS]
01:28:35
◼
►
commonly asked question we've dealt with
[TS]
01:28:36
◼
►
it before and you're probably gonna want
[TS]
01:28:38
◼
►
to ask it to here's here's about how it
[TS]
01:28:39
◼
►
was asked before and here's what the
[TS]
01:28:41
◼
►
answer is not that everybody's gonna go
[TS]
01:28:43
◼
►
and see that but i love that exists
[TS]
01:28:45
◼
►
well then it's also hilarious that
[TS]
01:28:46
◼
►
started out as the commonly proposed
[TS]
01:28:48
◼
►
list and then at some point it became
[TS]
01:28:50
◼
►
the commonly rejected list
[TS]
01:28:52
◼
►
yeah right because it because if it's
[TS]
01:28:54
◼
►
commonly proposed obviously it's not
[TS]
01:28:55
◼
►
getting through and so you have to go to
[TS]
01:28:57
◼
►
be rejected list that you're thinking
[TS]
01:28:58
◼
►
about asking to change funk to FN you
[TS]
01:29:01
◼
►
know well my I know you talked about
[TS]
01:29:03
◼
►
this before but it is well worth
[TS]
01:29:05
◼
►
touching it again because many people
[TS]
01:29:07
◼
►
have asked me to ask you this
[TS]
01:29:11
◼
►
swift and a rough style memory model you
[TS]
01:29:14
◼
►
you phrased it before as an add-on
[TS]
01:29:17
◼
►
feature for people who know that they
[TS]
01:29:20
◼
►
need that type of thing but that it
[TS]
01:29:22
◼
►
would not like the Swift wouldn't become
[TS]
01:29:24
◼
►
a language in which all memories manage
[TS]
01:29:25
◼
►
that way instead this would be a
[TS]
01:29:26
◼
►
special-purpose feature for particular
[TS]
01:29:29
◼
►
roles what what roles do you think it's
[TS]
01:29:33
◼
►
suited for and why why is it not the
[TS]
01:29:36
◼
►
great memory model for all Swift well so
[TS]
01:29:39
◼
►
here's here's the way I look at swift in
[TS]
01:29:42
◼
►
terms of memory management today so
[TS]
01:29:43
◼
►
Swift is using our it's not using GC if
[TS]
01:29:46
◼
►
you want to talk about the trailer i was
[TS]
01:29:48
◼
►
happy to do that thats its own well we
[TS]
01:29:50
◼
►
can fall into arc i think is overall
[TS]
01:29:54
◼
►
amazing default for swift because it
[TS]
01:29:56
◼
►
gives you deterministic destruction it
[TS]
01:29:58
◼
►
gives you a relatively predictable
[TS]
01:30:00
◼
►
performance and the ark optimizers able
[TS]
01:30:03
◼
►
to eliminate most of the reference
[TS]
01:30:06
◼
►
counting operations that happen
[TS]
01:30:08
◼
►
the problem that I see with with our at
[TS]
01:30:11
◼
►
as of today or states with three is that
[TS]
01:30:15
◼
►
it is not a very controllable model and
[TS]
01:30:19
◼
►
so if for example you have an inner loop
[TS]
01:30:22
◼
►
and it turns out the ark optimizers
[TS]
01:30:24
◼
►
doing a bunch of retains releases and
[TS]
01:30:26
◼
►
you know that they're not necessary
[TS]
01:30:28
◼
►
because you know the objects are alive
[TS]
01:30:30
◼
►
there's nothing you can really do to to
[TS]
01:30:33
◼
►
solve that problem unless you're willing
[TS]
01:30:35
◼
►
to drop down to something like the
[TS]
01:30:37
◼
►
unsafe operation Swift gives you for
[TS]
01:30:39
◼
►
manipulating references objects the
[TS]
01:30:41
◼
►
and so it's really kind of satisfying me
[TS]
01:30:44
◼
►
to have a really safe great memory model
[TS]
01:30:47
◼
►
that for performance reasons you have to
[TS]
01:30:48
◼
►
drop down to unsafety right this is a
[TS]
01:30:51
◼
►
huge cliff and is that also a huge
[TS]
01:30:53
◼
►
complexity cliff that you have to drop
[TS]
01:30:55
◼
►
into just solve that problem and that's
[TS]
01:30:58
◼
►
not really great so the promise the
[TS]
01:31:01
◼
►
dream is to instead say hey well if you
[TS]
01:31:03
◼
►
are a sufficiently advanced programmer
[TS]
01:31:05
◼
►
and you know how this stuff works well
[TS]
01:31:07
◼
►
what the we can give you options instead
[TS]
01:31:09
◼
►
of dropping down to unsafe constructs
[TS]
01:31:12
◼
►
you can actually just use more static
[TS]
01:31:14
◼
►
type information in annotations in your
[TS]
01:31:17
◼
►
code and so you add a few annotations
[TS]
01:31:19
◼
►
say compiler this is ok the compiler can
[TS]
01:31:22
◼
►
validate those type annotations and
[TS]
01:31:25
◼
►
check to make sure they're correct so
[TS]
01:31:26
◼
►
still memory see if it's still
[TS]
01:31:27
◼
►
guaranteed to be okay but you're paying
[TS]
01:31:30
◼
►
for it in terms of more of this
[TS]
01:31:31
◼
►
annotation the code and it's more more
[TS]
01:31:34
◼
►
heavyweight in terms of coding but when
[TS]
01:31:37
◼
►
you get out of that is the guarantee
[TS]
01:31:38
◼
►
that no arc operations are happening
[TS]
01:31:40
◼
►
once you get to that model then it
[TS]
01:31:42
◼
►
becomes really interesting because you
[TS]
01:31:43
◼
►
can say hey well this inner loop i'm
[TS]
01:31:45
◼
►
going i found in my profile that it
[TS]
01:31:47
◼
►
really does matter for performance and
[TS]
01:31:49
◼
►
the ark optimizers doing the wrong thing
[TS]
01:31:51
◼
►
i can add a few local annotations and
[TS]
01:31:53
◼
►
now the code is fast it's guaranteed to
[TS]
01:31:55
◼
►
be fast and the clients of my co don't
[TS]
01:31:58
◼
►
have to know about it right this is an
[TS]
01:32:00
◼
►
implementation detail and I think this
[TS]
01:32:01
◼
►
will really bring us to the best of both
[TS]
01:32:03
◼
►
worlds where you could have memory
[TS]
01:32:05
◼
►
safety you can have a progressively
[TS]
01:32:09
◼
►
disclosed complexity complexities system
[TS]
01:32:11
◼
►
or most people don't have to know about
[TS]
01:32:12
◼
►
or think about it but you can get to
[TS]
01:32:14
◼
►
really low level performance guarantees
[TS]
01:32:16
◼
►
that otherwise are possible and once we
[TS]
01:32:19
◼
►
do this i have a feeling there will be
[TS]
01:32:20
◼
►
certain communities of people that will
[TS]
01:32:22
◼
►
only want to work in this model and
[TS]
01:32:24
◼
►
these are the communities that that like
[TS]
01:32:26
◼
►
rust predominantly so if you're writing
[TS]
01:32:29
◼
►
a kernel for example maybe don't want to
[TS]
01:32:30
◼
►
have a reference count your object at
[TS]
01:32:31
◼
►
all maybe you just want to have you know
[TS]
01:32:36
◼
►
you say I will always use these
[TS]
01:32:37
◼
►
annotations my code pervasively and if
[TS]
01:32:40
◼
►
if that happens then there's a couple of
[TS]
01:32:42
◼
►
options we can investigate and we could
[TS]
01:32:43
◼
►
say hey well if you mark this class with
[TS]
01:32:45
◼
►
some attribute than that get that that
[TS]
01:32:48
◼
►
prevents the compiler from ever doing
[TS]
01:32:50
◼
►
reference counting and if it would ever
[TS]
01:32:51
◼
►
do that it just raises in there
[TS]
01:32:53
◼
►
or we can even theoretically have a
[TS]
01:32:55
◼
►
language dialect modes that hey produce
[TS]
01:32:57
◼
►
produce an heir anytime I did and our
[TS]
01:32:59
◼
►
cooperation
[TS]
01:33:00
◼
►
I don't like language dialects and so
[TS]
01:33:02
◼
►
we'd have to find a way to handle that
[TS]
01:33:04
◼
►
maybe it would be a warning and then
[TS]
01:33:06
◼
►
they would upgrade to an error or
[TS]
01:33:08
◼
►
something like that but I can imagine
[TS]
01:33:09
◼
►
doing something like that and once we do
[TS]
01:33:12
◼
►
that then I think you get to a really
[TS]
01:33:13
◼
►
interesting mode where those systems
[TS]
01:33:17
◼
►
programming type people that otherwise
[TS]
01:33:19
◼
►
would be using seriously + + can i use
[TS]
01:33:21
◼
►
swift and that means they only have to
[TS]
01:33:24
◼
►
learn one language that means that they
[TS]
01:33:26
◼
►
could use the same toolset that you know
[TS]
01:33:28
◼
►
the ID and everything else that works
[TS]
01:33:30
◼
►
great with Swift it means that they can
[TS]
01:33:33
◼
►
scale and use the same language for
[TS]
01:33:36
◼
►
different layers of their stack because
[TS]
01:33:38
◼
►
many applications have very low level
[TS]
01:33:41
◼
►
pieces and very high-level pieces and
[TS]
01:33:42
◼
►
having them written in different
[TS]
01:33:44
◼
►
languages is really kind of gross
[TS]
01:33:46
◼
►
I mean I think we've seen this in the
[TS]
01:33:48
◼
►
objective-c community where one of the
[TS]
01:33:50
◼
►
best and most annoying things about
[TS]
01:33:52
◼
►
objective-c is that it has seen it right
[TS]
01:33:54
◼
►
and so this has been hugely important
[TS]
01:33:56
◼
►
for objective-c and practice because if
[TS]
01:33:58
◼
►
you're into a performance problem with
[TS]
01:34:00
◼
►
obviously message send you can always
[TS]
01:34:01
◼
►
rewrite that algorithm in see that's
[TS]
01:34:04
◼
►
really really really important for
[TS]
01:34:06
◼
►
objective-c being successful and you
[TS]
01:34:09
◼
►
know both in the days of next on 16
[TS]
01:34:11
◼
►
acres processors but also today for the
[TS]
01:34:14
◼
►
low-level cult code the people are
[TS]
01:34:16
◼
►
writing but also means that that's one
[TS]
01:34:19
◼
►
of the problems that makes it so that
[TS]
01:34:20
◼
►
objective c and c are so tightly
[TS]
01:34:22
◼
►
intertwined and so you can actually take
[TS]
01:34:24
◼
►
the sea parte out of objective-c without
[TS]
01:34:26
◼
►
producing a different language who are
[TS]
01:34:28
◼
►
waiting for swift in the web browser
[TS]
01:34:30
◼
►
because it's your only Escape speaking
[TS]
01:34:31
◼
►
of applications that have to have one
[TS]
01:34:32
◼
►
language at the higher level that i was
[TS]
01:34:34
◼
►
in the lower one that's about then
[TS]
01:34:36
◼
►
well there-there are our that that i
[TS]
01:34:38
◼
►
think is a frontier that is probably the
[TS]
01:34:40
◼
►
biggest payoff because replacing
[TS]
01:34:42
◼
►
javascript would be such an amazing
[TS]
01:34:44
◼
►
service to the world music and art
[TS]
01:34:49
◼
►
before it's been tried
[TS]
01:34:51
◼
►
yeah but it's been tried and that's
[TS]
01:34:52
◼
►
where you know putting my hope on the
[TS]
01:34:55
◼
►
azan jas the web assembly those kinds of
[TS]
01:34:57
◼
►
efforts were its enabling languages like
[TS]
01:35:01
◼
►
Swift and swift swift compiler lv I'm
[TS]
01:35:04
◼
►
web assembly and Adam jazz both have lvm
[TS]
01:35:07
◼
►
backends in principle so make it
[TS]
01:35:08
◼
►
wearable Swift to one of those and go to
[TS]
01:35:10
◼
►
town with the if those end up winning
[TS]
01:35:15
◼
►
and they become big big things then
[TS]
01:35:19
◼
►
maybe that'll be good enough but i don't
[TS]
01:35:21
◼
►
really know I don't have my crystal ball
[TS]
01:35:23
◼
►
doesn't go out to the point where
[TS]
01:35:24
◼
►
javascript is not in web browsers
[TS]
01:35:26
◼
►
yeah that's the difficult part is not
[TS]
01:35:28
◼
►
the language mechanics it's the getting
[TS]
01:35:30
◼
►
a getting something we can understand
[TS]
01:35:32
◼
►
that in front of as many people as
[TS]
01:35:33
◼
►
possible because it's also very
[TS]
01:35:35
◼
►
interested me so again i'm not a web
[TS]
01:35:37
◼
►
developer and I'm not a I'm definitely
[TS]
01:35:39
◼
►
not an expert in space but to me it
[TS]
01:35:41
◼
►
seems the the trajectory of JavaScript
[TS]
01:35:44
◼
►
has basically made it into an
[TS]
01:35:46
◼
►
intermediate language it's not something
[TS]
01:35:48
◼
►
that developers are writing as much
[TS]
01:35:50
◼
►
directly as they used to
[TS]
01:35:52
◼
►
and so I c-type script and water other
[TS]
01:35:53
◼
►
languages that now compiled down to
[TS]
01:35:55
◼
►
JavaScript and you know they're really
[TS]
01:35:58
◼
►
using javascript like it like a bit code
[TS]
01:36:00
◼
►
representation not not a source language
[TS]
01:36:02
◼
►
that people are are thinking about as
[TS]
01:36:04
◼
►
much anymore and so I wonder if in five
[TS]
01:36:06
◼
►
years you know the natural conclusion of
[TS]
01:36:09
◼
►
that is the javascript is just an adams
[TS]
01:36:11
◼
►
is type of thing or maybe web assembly
[TS]
01:36:13
◼
►
does take over but but again I'm not the
[TS]
01:36:16
◼
►
expert don't know where that directional
[TS]
01:36:18
◼
►
go i know that some people of JavaScript
[TS]
01:36:20
◼
►
so we'll see on the topic of using
[TS]
01:36:25
◼
►
language of the JavaScript to write
[TS]
01:36:27
◼
►
JavaScript I have to say having done
[TS]
01:36:29
◼
►
that several times that the tooling why
[TS]
01:36:32
◼
►
the tooling is not quite where you'd
[TS]
01:36:34
◼
►
want to be in terms of being able to
[TS]
01:36:36
◼
►
write in debug and profile in the
[TS]
01:36:40
◼
►
preferred language and not in the
[TS]
01:36:42
◼
►
compiled down to JavaScript language but
[TS]
01:36:45
◼
►
yeah that maybe that'll be like stage 17
[TS]
01:36:47
◼
►
and this with world domination plan
[TS]
01:36:49
◼
►
people and I think that's always been
[TS]
01:36:51
◼
►
true for preprocessors so I mean even
[TS]
01:36:53
◼
►
see if you do crazy things the macro
[TS]
01:36:55
◼
►
preprocessor and see you get debugging
[TS]
01:36:59
◼
►
those things are still or oh yeah and
[TS]
01:37:02
◼
►
that's one of the reasons that we've
[TS]
01:37:04
◼
►
been careful about not adding a macro
[TS]
01:37:05
◼
►
systems Swift early it just brings lots
[TS]
01:37:08
◼
►
of interesting trade-offs in terms of
[TS]
01:37:10
◼
►
the debugging and developing and
[TS]
01:37:11
◼
►
designing experience of 11 last night
[TS]
01:37:16
◼
►
compatibility according to the timelines
[TS]
01:37:19
◼
►
that I've heard sketched out that ABI
[TS]
01:37:22
◼
►
stability could be a thing before async
[TS]
01:37:27
◼
►
you know our concurrency stuff lands and
[TS]
01:37:30
◼
►
Swift there any is there any
[TS]
01:37:31
◼
►
dependencies or chicken egg things
[TS]
01:37:34
◼
►
involving there like in order to other
[TS]
01:37:36
◼
►
words in order to do you have to nail
[TS]
01:37:39
◼
►
down some aspects of your concurrency
[TS]
01:37:40
◼
►
model before you can commit to ABI
[TS]
01:37:42
◼
►
stability are they totally orthogonal
[TS]
01:37:44
◼
►
and I think they're totally orthogonal
[TS]
01:37:46
◼
►
I'm i think the memory ownership model
[TS]
01:37:48
◼
►
has more of an impact on ABI stability
[TS]
01:37:51
◼
►
because there's some very low-level
[TS]
01:37:52
◼
►
things like how the the getters and
[TS]
01:37:56
◼
►
setters are code generated for a
[TS]
01:37:58
◼
►
property for example the end up getting
[TS]
01:38:01
◼
►
impacted by the ownership model that's
[TS]
01:38:04
◼
►
one of the reasons that were that this
[TS]
01:38:06
◼
►
15 is actually actively designing and
[TS]
01:38:08
◼
►
write it working on a proposal for the
[TS]
01:38:11
◼
►
memory ownership stuff right now it's
[TS]
01:38:13
◼
►
not so that it can be a swift for
[TS]
01:38:15
◼
►
feature it's so that the API stability
[TS]
01:38:18
◼
►
work can be done in light of the
[TS]
01:38:20
◼
►
ultimate model for the memory ownership
[TS]
01:38:22
◼
►
support and I think concurrency is not
[TS]
01:38:27
◼
►
going to be something that impacts avi
[TS]
01:38:29
◼
►
stability at all but we'll see in a so
[TS]
01:38:32
◼
►
than the sufficiently smart programmers
[TS]
01:38:34
◼
►
that work on swift we'll figure it out
[TS]
01:38:36
◼
►
and I'm sure it'll be great and I think
[TS]
01:38:39
◼
►
it's also interesting question of
[TS]
01:38:40
◼
►
whether ABI stability will be done for
[TS]
01:38:43
◼
►
swift for because it's a huge amount of
[TS]
01:38:47
◼
►
work the work as well in a way of course
[TS]
01:38:49
◼
►
but it's also not clear to me that's
[TS]
01:38:52
◼
►
really the the right or the most
[TS]
01:38:55
◼
►
important thing for the Swift community
[TS]
01:38:57
◼
►
and one of the things that ted has been
[TS]
01:38:59
◼
►
a huge champion for and I think he's
[TS]
01:39:02
◼
►
right about is that the most important
[TS]
01:39:04
◼
►
thing right now is with community is
[TS]
01:39:05
◼
►
making the compiler more reliable making
[TS]
01:39:08
◼
►
the error messages better making compile
[TS]
01:39:11
◼
►
times faster and making a it scale
[TS]
01:39:14
◼
►
better to large projects and you know
[TS]
01:39:17
◼
►
we'll see how the rest of the swift for
[TS]
01:39:18
◼
►
schedule goes but i wouldn't be
[TS]
01:39:20
◼
►
surprised if at some point they decided
[TS]
01:39:22
◼
►
that focusing on that is more important
[TS]
01:39:24
◼
►
than nailing ABI stability and so for
[TS]
01:39:27
◼
►
so you just mention Ted that's that's
[TS]
01:39:29
◼
►
Ted kramnik who is that is now the the
[TS]
01:39:31
◼
►
lead of of the Swift project is that
[TS]
01:39:33
◼
►
right yeah he's the project lead so ted
[TS]
01:39:36
◼
►
has been managing the Swift and Clank
[TS]
01:39:39
◼
►
projects before that for a number of
[TS]
01:39:41
◼
►
years he's been an apple for 10 years
[TS]
01:39:43
◼
►
now he's a Stanford PhD graduate he
[TS]
01:39:47
◼
►
built single almost single-handedly the
[TS]
01:39:50
◼
►
the first client sack analyzer yeah
[TS]
01:39:53
◼
►
instead so as they have I love it i'm
[TS]
01:39:56
◼
►
saying this now as a swift developer you
[TS]
01:40:00
◼
►
know she should I be like you know as we
[TS]
01:40:02
◼
►
saw when you announce that you're
[TS]
01:40:03
◼
►
leaving Apple that we saw some of the
[TS]
01:40:05
◼
►
people the community asking like she
[TS]
01:40:06
◼
►
would be worried about his future is
[TS]
01:40:08
◼
►
Swift in good hands and a minute you
[TS]
01:40:10
◼
►
know it seems like most of us didn't
[TS]
01:40:11
◼
►
know Ted at least didn't know his name
[TS]
01:40:13
◼
►
or or unfamiliar with contributions it
[TS]
01:40:16
◼
►
does seem like he's been doing quite a
[TS]
01:40:17
◼
►
bit there anyway
[TS]
01:40:19
◼
►
should we be worried i don't think you
[TS]
01:40:21
◼
►
should be worried at all i think swift
[TS]
01:40:22
◼
►
is an amazing hands as I mean all the
[TS]
01:40:27
◼
►
things that I am leaving behind an apple
[TS]
01:40:29
◼
►
and quotes are in really good hands and
[TS]
01:40:31
◼
►
that's one of the only reason I was
[TS]
01:40:33
◼
►
comfortable and moving on in the case of
[TS]
01:40:36
◼
►
Ted Ted is a rockstar he has been
[TS]
01:40:40
◼
►
running the Swift team and managing them
[TS]
01:40:42
◼
►
for mean for five years now the roles
[TS]
01:40:47
◼
►
that we had was that Ted own brand
[TS]
01:40:50
◼
►
esteem and then report to me and so I
[TS]
01:40:52
◼
►
would mess around and you know cause
[TS]
01:40:55
◼
►
trouble by you know trying to get people
[TS]
01:40:58
◼
►
to do the exciting important thing that
[TS]
01:41:00
◼
►
I thought and maybe didn't align with
[TS]
01:41:02
◼
►
the actually important thing and
[TS]
01:41:04
◼
►
therefore identities chaos into the
[TS]
01:41:06
◼
►
world but Ted was always the this table
[TS]
01:41:10
◼
►
runner and the one that was really
[TS]
01:41:11
◼
►
focused on getting the important things
[TS]
01:41:13
◼
►
done and he has a number of really
[TS]
01:41:15
◼
►
exceptional engineers in the team people
[TS]
01:41:17
◼
►
on the core team like the Gregor John
[TS]
01:41:19
◼
►
the call Joe Joe graph Dave Abrahams
[TS]
01:41:22
◼
►
these are all just amazingly brilliant
[TS]
01:41:25
◼
►
people and the E and also the team
[TS]
01:41:27
◼
►
includes a bunch of other engineers that
[TS]
01:41:29
◼
►
are equally dedicated and also just
[TS]
01:41:32
◼
►
totally amazing people to work with
[TS]
01:41:34
◼
►
so the Swift team is I think one of
[TS]
01:41:36
◼
►
apples biggest assets it's it's crazy
[TS]
01:41:39
◼
►
how brilliant and dedicated there
[TS]
01:41:41
◼
►
to the project and how excited they are
[TS]
01:41:43
◼
►
to get to world domination one step at a
[TS]
01:41:46
◼
►
time coming back to kind of a more broad
[TS]
01:41:49
◼
►
thing let's say that in this is not
[TS]
01:41:51
◼
►
meant to be tongue-in-cheek reference to
[TS]
01:41:53
◼
►
your next job this is just in general
[TS]
01:41:54
◼
►
you know you're at home you you kids are
[TS]
01:41:57
◼
►
in bed you know your wife is out or
[TS]
01:41:59
◼
►
something like that and you want to just
[TS]
01:42:01
◼
►
write some code you can't use swift and
[TS]
01:42:03
◼
►
you can't use objective c what are you
[TS]
01:42:05
◼
►
writing code in and I know that's often
[TS]
01:42:07
◼
►
dependent on what project you're
[TS]
01:42:08
◼
►
accomplishing but like what's
[TS]
01:42:09
◼
►
interesting to you these days that isn't
[TS]
01:42:11
◼
►
Swift is an objective-c also i mean i
[TS]
01:42:14
◼
►
have a ton of different interests i mean
[TS]
01:42:16
◼
►
i really love building great racers for
[TS]
01:42:18
◼
►
example and have done much stuff with
[TS]
01:42:20
◼
►
that and I guess I couldn't use Swift
[TS]
01:42:24
◼
►
with that then I would probably have to
[TS]
01:42:25
◼
►
use people's pot no also check i was
[TS]
01:42:29
◼
►
going to call that I wanted to give you
[TS]
01:42:30
◼
►
a chance to not second-class but what I
[TS]
01:42:34
◼
►
remind people that were they mentioned
[TS]
01:42:36
◼
►
you know what LVL is written in right
[TS]
01:42:38
◼
►
much applause and not have your your
[TS]
01:42:41
◼
►
answer bc of loss and and you know how
[TS]
01:42:43
◼
►
much banks in personal suffering causes
[TS]
01:42:45
◼
►
to have to be riding c++ all day and
[TS]
01:42:48
◼
►
building a beautiful world for other
[TS]
01:42:49
◼
►
people it's just yeah that's where
[TS]
01:42:52
◼
►
you're entitled down the mines
[TS]
01:42:54
◼
►
yeah yeah it's it's a pain and suffering
[TS]
01:42:56
◼
►
that's worth it for the bigger bigger
[TS]
01:42:58
◼
►
victory that's where the stress comes
[TS]
01:42:59
◼
►
from years having to use C++ so i could
[TS]
01:43:01
◼
►
do the same stuff but not feel this much
[TS]
01:43:03
◼
►
that's exactly right i mean there's a
[TS]
01:43:05
◼
►
lot of suffering that led to switch
[TS]
01:43:07
◼
►
needing to happen so but but also it
[TS]
01:43:11
◼
►
really depends i mean maybe if I was
[TS]
01:43:12
◼
►
doing you know if I was a crazy person
[TS]
01:43:14
◼
►
ideas pearl for something i don't know
[TS]
01:43:15
◼
►
from that instead haha well dot but well
[TS]
01:43:20
◼
►
done terrible to read it though nobody
[TS]
01:43:23
◼
►
correct
[TS]
01:43:23
◼
►
hey if it's throw a code then you never
[TS]
01:43:25
◼
►
need to rewrite haha for John these are
[TS]
01:43:31
◼
►
as well just wait for my process
[TS]
01:43:32
◼
►
grammars to land gently and Swift yeah
[TS]
01:43:35
◼
►
also I mean that's another that there is
[TS]
01:43:37
◼
►
a great example of pro really has nailed
[TS]
01:43:40
◼
►
the string processing thing even ants in
[TS]
01:43:42
◼
►
405 and I think 406 is even better and
[TS]
01:43:45
◼
►
Swift has a lot to learn from and that's
[TS]
01:43:47
◼
►
that's something where a
[TS]
01:43:49
◼
►
so for is really learning from Pearl so
[TS]
01:43:53
◼
►
that was great
[TS]
01:43:54
◼
►
oh please don't give him any ammunition
[TS]
01:43:56
◼
►
this is terrible i was enjoying this
[TS]
01:43:57
◼
►
interview so much until this very moment
[TS]
01:43:59
◼
►
look at this way once this happens John
[TS]
01:44:01
◼
►
will have no excuse
[TS]
01:44:03
◼
►
oh he will find one nothing is so
[TS]
01:44:07
◼
►
perfect that it can't be complained
[TS]
01:44:09
◼
►
about oh my goodness this is a perennial
[TS]
01:44:13
◼
►
topic on this with Mary lists about
[TS]
01:44:15
◼
►
dynamic features and Swift you know that
[TS]
01:44:18
◼
►
our record more dynamic and objective-c
[TS]
01:44:22
◼
►
and less so in swift swift community
[TS]
01:44:26
◼
►
there's a lot of angst about when if
[TS]
01:44:29
◼
►
ever will Swift allow me to essentially
[TS]
01:44:32
◼
►
you know like what you said before you
[TS]
01:44:33
◼
►
can write for training in any language
[TS]
01:44:34
◼
►
you can write a directory name is in any
[TS]
01:44:36
◼
►
language people will try to write their
[TS]
01:44:39
◼
►
code in Swift but using models from
[TS]
01:44:42
◼
►
objective-c that require things like you
[TS]
01:44:45
◼
►
know it was you know since sending
[TS]
01:44:48
◼
►
messages objects that you know will
[TS]
01:44:50
◼
►
receive them but the compiler can
[TS]
01:44:51
◼
►
guarantee are you know having big
[TS]
01:44:53
◼
►
heterogenous collections were just like
[TS]
01:44:54
◼
►
no everything's ID and it'll be fine
[TS]
01:44:57
◼
►
what I don't know how to frame this but
[TS]
01:45:00
◼
►
uh I think that the main question has
[TS]
01:45:03
◼
►
been our dynamic features possible and
[TS]
01:45:06
◼
►
Swift and are they coming in Swift or is
[TS]
01:45:09
◼
►
there some kind of philosophical divide
[TS]
01:45:11
◼
►
where the the most dynamic stuff that
[TS]
01:45:13
◼
►
people really want will never be
[TS]
01:45:16
◼
►
forthcoming up for technical reasons but
[TS]
01:45:17
◼
►
just for philosophical and safety
[TS]
01:45:19
◼
►
reasons
[TS]
01:45:20
◼
►
sure so I've been pretty outspoken about
[TS]
01:45:22
◼
►
this on the switch evolution let's hope
[TS]
01:45:23
◼
►
this isn't a huge surprise but i don't
[TS]
01:45:26
◼
►
think there's any tension between
[TS]
01:45:28
◼
►
dynamic features and Swift the a lot of
[TS]
01:45:32
◼
►
people want to make a and argue about
[TS]
01:45:34
◼
►
how it would be impossible to do
[TS]
01:45:35
◼
►
responders or you can pick your feature
[TS]
01:45:39
◼
►
the in Swift and the the worst-case
[TS]
01:45:45
◼
►
scenario frantic blog post I've seen our
[TS]
01:45:47
◼
►
are things that are along lines of
[TS]
01:45:50
◼
►
someday Apple rewrite all these
[TS]
01:45:52
◼
►
frameworks in Swift and then it will be
[TS]
01:45:54
◼
►
impossible to write first responder
[TS]
01:45:56
◼
►
chains and then bad things will happen
[TS]
01:45:58
◼
►
and then we'll be back in the days of
[TS]
01:46:00
◼
►
MSC or some other bed
[TS]
01:46:02
◼
►
right i don't even bring that up
[TS]
01:46:05
◼
►
exactly and so this is this is kind of
[TS]
01:46:08
◼
►
quite the slope that it's the discussion
[TS]
01:46:10
◼
►
ends up being I think this blow-up most
[TS]
01:46:15
◼
►
recently right before WC this year and
[TS]
01:46:17
◼
►
it was really interesting to wash the
[TS]
01:46:20
◼
►
the blog post that people are flying
[TS]
01:46:21
◼
►
around because everybody had a different
[TS]
01:46:25
◼
►
idea of what dynamic meant happen but
[TS]
01:46:28
◼
►
none that I'm really so apples not going
[TS]
01:46:33
◼
►
to counter blog somebody if he didn't
[TS]
01:46:36
◼
►
like being out somebody's a blog on
[TS]
01:46:38
◼
►
somebody's post and it's kind of bad
[TS]
01:46:40
◼
►
form to do that but I thought was very
[TS]
01:46:41
◼
►
interesting on that none of those people
[TS]
01:46:43
◼
►
actually came to the Swift evolution
[TS]
01:46:45
◼
►
list which is the right place to do that
[TS]
01:46:46
◼
►
and asked about it they all just want to
[TS]
01:46:49
◼
►
make these inflamed blog posts are very
[TS]
01:46:51
◼
►
skins so if you get to my opinion my
[TS]
01:46:54
◼
►
opinion is that none of those are in
[TS]
01:46:55
◼
►
tension with a swift current design it's
[TS]
01:46:58
◼
►
just a matter of prioritization and the
[TS]
01:47:01
◼
►
major problem that Swift has again
[TS]
01:47:03
◼
►
there's so much work to do there's
[TS]
01:47:06
◼
►
concurrency model there's actors their
[TS]
01:47:09
◼
►
systems programming their scripting
[TS]
01:47:10
◼
►
there's lots of little things that go in
[TS]
01:47:13
◼
►
there's better better things for static
[TS]
01:47:16
◼
►
analysis introducing type stay in
[TS]
01:47:17
◼
►
language there's there there's green
[TS]
01:47:20
◼
►
postconditions that there's so many
[TS]
01:47:22
◼
►
things that that will be bricks in the
[TS]
01:47:25
◼
►
house of Swift that we want to build
[TS]
01:47:27
◼
►
that need to happen that it doesn't
[TS]
01:47:30
◼
►
really make sense spent a lot of time
[TS]
01:47:32
◼
►
building dynamic features so that Apple
[TS]
01:47:35
◼
►
could theoretically someday do something
[TS]
01:47:38
◼
►
were the Swift team is much more focused
[TS]
01:47:40
◼
►
on the practical necessities of solving
[TS]
01:47:42
◼
►
the real world problems here now in
[TS]
01:47:44
◼
►
front of people and dynamic features
[TS]
01:47:47
◼
►
like many other things will just kind of
[TS]
01:47:49
◼
►
swap in place when the team s time to
[TS]
01:47:52
◼
►
design and roll them out and so you you
[TS]
01:47:55
◼
►
will be able to someday right i expect
[TS]
01:47:58
◼
►
that you will be able to reflect over
[TS]
01:48:00
◼
►
all the methods and the class has for
[TS]
01:48:03
◼
►
example today even the Swift compiler
[TS]
01:48:05
◼
►
generates all the metadata so you can
[TS]
01:48:07
◼
►
reflect over all the data members and
[TS]
01:48:10
◼
►
your and your values we just don't have
[TS]
01:48:12
◼
►
an API wrapped around that
[TS]
01:48:13
◼
►
that metadata is what the xcode memory
[TS]
01:48:16
◼
►
heap viewer uses for example and so
[TS]
01:48:19
◼
►
there's a lot of that kind of stuff
[TS]
01:48:20
◼
►
being put in place but just hasn't had
[TS]
01:48:23
◼
►
time to fully break out yet and when it
[TS]
01:48:25
◼
►
does come in i think it's gonna be
[TS]
01:48:26
◼
►
really exciting and will open more doors
[TS]
01:48:28
◼
►
for new kinds of patterns of people can
[TS]
01:48:30
◼
►
do and a lot of those will be familiar
[TS]
01:48:32
◼
►
to objective-c programmers but they're
[TS]
01:48:34
◼
►
also be super useful for things that
[TS]
01:48:36
◼
►
people really haven't done an object to
[TS]
01:48:37
◼
►
see so i don't i don't see a lot of
[TS]
01:48:40
◼
►
tension there though it's just a
[TS]
01:48:41
◼
►
prioritization question I think about
[TS]
01:48:44
◼
►
where your people are coming from is it
[TS]
01:48:46
◼
►
in terms of prioritization because if
[TS]
01:48:47
◼
►
you're used to doing things with certain
[TS]
01:48:49
◼
►
sort of design patterns broadly speaking
[TS]
01:48:52
◼
►
in objective-c and you want to come and
[TS]
01:48:53
◼
►
implement the same patterns and Swift
[TS]
01:48:55
◼
►
and you find that you can't because
[TS]
01:48:57
◼
►
you're lacking some feature it feels
[TS]
01:48:59
◼
►
like there's a barrier up in it that
[TS]
01:49:01
◼
►
students getting back to your writing
[TS]
01:49:02
◼
►
ready your swift and objective-c style
[TS]
01:49:04
◼
►
and that's more of a berry they retreat
[TS]
01:49:06
◼
►
back to breakfast because i can write it
[TS]
01:49:07
◼
►
the way I want to read it right and it
[TS]
01:49:08
◼
►
works and objective-c when I try to
[TS]
01:49:10
◼
►
write it that way and so if it doesn't
[TS]
01:49:11
◼
►
work for me your choices to change the
[TS]
01:49:13
◼
►
way you write it to be better fit for
[TS]
01:49:15
◼
►
swift has or to go back to objective-c
[TS]
01:49:17
◼
►
I'm so I don't agree with that though
[TS]
01:49:20
◼
►
because Swift does support all the
[TS]
01:49:23
◼
►
features for dynamic dispatch and method
[TS]
01:49:26
◼
►
look up and everything else that
[TS]
01:49:27
◼
►
objective c does it just requires you to
[TS]
01:49:29
◼
►
use the objective-c subset of the
[TS]
01:49:31
◼
►
language because it exposes it through
[TS]
01:49:33
◼
►
the runtime right that that's that's
[TS]
01:49:35
◼
►
thatthat's thatthat's the tension
[TS]
01:49:36
◼
►
because they're like oh I want to write
[TS]
01:49:38
◼
►
in pure Swift like as if there's
[TS]
01:49:40
◼
►
something special and magical about not
[TS]
01:49:42
◼
►
using the objective-c runtime for you
[TS]
01:49:44
◼
►
know I mean you do get a medal for that
[TS]
01:49:46
◼
►
oh yeah I guess that makes some people
[TS]
01:49:49
◼
►
feel good i mean that there are I I
[TS]
01:49:53
◼
►
can't really count that but I just don't
[TS]
01:49:55
◼
►
think that it the it's actually fair to
[TS]
01:49:57
◼
►
say you have to fall back to writing
[TS]
01:49:59
◼
►
objective-c code no no I got I'm just
[TS]
01:50:01
◼
►
I'm trying to I didn't write one of
[TS]
01:50:02
◼
►
these blog posts over to be trying I'm
[TS]
01:50:03
◼
►
trying I'm trying to express myself that
[TS]
01:50:05
◼
►
because that was a lot of the concerns
[TS]
01:50:06
◼
►
like they they want to do it it's they
[TS]
01:50:08
◼
►
want to do it like the new way and the
[TS]
01:50:11
◼
►
way and part of doing that is not you
[TS]
01:50:13
◼
►
know an objective seeing everything like
[TS]
01:50:14
◼
►
oh that feels like a compromise in the
[TS]
01:50:15
◼
►
old way so there they are setting their
[TS]
01:50:18
◼
►
own goal posts for themselves
[TS]
01:50:19
◼
►
arbitrarily to try to enter into this
[TS]
01:50:22
◼
►
new world and you know that they they
[TS]
01:50:25
◼
►
want to jump in with both feet or not at
[TS]
01:50:27
◼
►
all and and some of them might end up
[TS]
01:50:28
◼
►
bailing but i think this mean that the
[TS]
01:50:31
◼
►
way the way look at that is a look at
[TS]
01:50:34
◼
►
that is an area where the language is
[TS]
01:50:36
◼
►
not fully baked out it's not fully
[TS]
01:50:38
◼
►
serving their needs and I think that's
[TS]
01:50:40
◼
►
really unfortunate right and i'm not
[TS]
01:50:42
◼
►
going to say that I think that that's
[TS]
01:50:44
◼
►
not a good thing i want there to be an
[TS]
01:50:46
◼
►
awesome reflection model I want there to
[TS]
01:50:47
◼
►
be awesome features for sending messages
[TS]
01:50:49
◼
►
like there used to just want to be
[TS]
01:50:52
◼
►
developed and designed in the right way
[TS]
01:50:54
◼
►
and at the same time they're being
[TS]
01:50:56
◼
►
annoyed that they can't do those things
[TS]
01:50:58
◼
►
there are a lot of other people being
[TS]
01:51:00
◼
►
annoyed about compiled times right
[TS]
01:51:02
◼
►
ya know I know and and what we have to
[TS]
01:51:05
◼
►
do is balance between you know just
[TS]
01:51:08
◼
►
picking two random things where does the
[TS]
01:51:10
◼
►
engineering effort go and and that's
[TS]
01:51:13
◼
►
never black and white thing there's
[TS]
01:51:15
◼
►
never a right answer is all based on gut
[TS]
01:51:18
◼
►
and judgment and guesses listening to
[TS]
01:51:21
◼
►
the community talking to people and
[TS]
01:51:23
◼
►
that's one of the reasons why i think
[TS]
01:51:24
◼
►
the 15 is really phenomenal is that it
[TS]
01:51:27
◼
►
really cares that really cares about
[TS]
01:51:28
◼
►
what people are doing it read you know
[TS]
01:51:31
◼
►
the various people read the blog post or
[TS]
01:51:33
◼
►
people on Twitter that like the
[TS]
01:51:34
◼
►
engagement between us with team and the
[TS]
01:51:37
◼
►
community is really high because people
[TS]
01:51:39
◼
►
care and there's no management dictated
[TS]
01:51:41
◼
►
apple says that you know this engineer
[TS]
01:51:44
◼
►
should be on Twitter all the time
[TS]
01:51:45
◼
►
talking to people that's certainly not
[TS]
01:51:46
◼
►
the case
[TS]
01:51:47
◼
►
that's because of passion from the
[TS]
01:51:49
◼
►
developer is because they really care i
[TS]
01:51:51
◼
►
think that that's the thing that is so
[TS]
01:51:52
◼
►
amazing about the Swift team is just how
[TS]
01:51:56
◼
►
important it is in terms of customer
[TS]
01:51:58
◼
►
service and understanding understanding
[TS]
01:52:00
◼
►
what people are working through and that
[TS]
01:52:03
◼
►
insight is what guides the priority
[TS]
01:52:06
◼
►
decisions and guides the trade-offs that
[TS]
01:52:08
◼
►
have to be made all the time because
[TS]
01:52:10
◼
►
nothing really is as clear as you'd like
[TS]
01:52:13
◼
►
it to be so building on that when all of
[TS]
01:52:16
◼
►
us were going back and forth and I was
[TS]
01:52:18
◼
►
tangentially involved with this we're
[TS]
01:52:20
◼
►
going back and forth auto it switches
[TS]
01:52:22
◼
►
and dynamic it must be dynamic
[TS]
01:52:23
◼
►
this is it fair to say that that does
[TS]
01:52:26
◼
►
eventually make its way inside of apple
[TS]
01:52:28
◼
►
just and i'm just in that you guys are
[TS]
01:52:30
◼
►
aware of it that that that's talked
[TS]
01:52:33
◼
►
about in some way shape or form because
[TS]
01:52:34
◼
►
it's nice to know and i suspect that it
[TS]
01:52:37
◼
►
does but it's nice to know that when the
[TS]
01:52:39
◼
►
community gets perturbed whether or not
[TS]
01:52:41
◼
►
that that that feeling is justified that
[TS]
01:52:45
◼
►
at least somebody inside Apple has
[TS]
01:52:46
◼
►
hurted whether or not they can respond
[TS]
01:52:48
◼
►
to it at least they've heard it so when
[TS]
01:52:50
◼
►
we all get our our our pants all twisted
[TS]
01:52:54
◼
►
up does that does that make it in
[TS]
01:52:56
◼
►
I absolutely i mean the there are tons
[TS]
01:53:00
◼
►
of people actually care about what's
[TS]
01:53:01
◼
►
happening in the developer community and
[TS]
01:53:03
◼
►
and elsewhere right and that's one of
[TS]
01:53:05
◼
►
the the things about Apple's approach in
[TS]
01:53:08
◼
►
terms of not commenting on things that
[TS]
01:53:09
◼
►
can be frustrating because you don't
[TS]
01:53:11
◼
►
know but again there's so many people
[TS]
01:53:14
◼
►
apple that really do care and that
[TS]
01:53:16
◼
►
sought and you know again I wish those
[TS]
01:53:20
◼
►
people that were really worried about it
[TS]
01:53:23
◼
►
would come to Swift evolution and ask
[TS]
01:53:25
◼
►
because they're exempt discussion about
[TS]
01:53:26
◼
►
it but that wasn't happening for some
[TS]
01:53:28
◼
►
reason but certainly there's a ton of
[TS]
01:53:31
◼
►
people who saw the blogs and i'm sure
[TS]
01:53:33
◼
►
there are tons of engineers at Apple to
[TS]
01:53:34
◼
►
feel the same way and wish the
[TS]
01:53:35
◼
►
priorities were different and I think
[TS]
01:53:38
◼
►
that the engineering community inside of
[TS]
01:53:40
◼
►
Apple reflects quite closely to the
[TS]
01:53:43
◼
►
engineering community outside of Apple
[TS]
01:53:44
◼
►
as well and i don't think that I hope
[TS]
01:53:48
◼
►
that's not surprising right angle as
[TS]
01:53:50
◼
►
many different engineers with different
[TS]
01:53:52
◼
►
feelings of different opinions and and I
[TS]
01:53:54
◼
►
think that's a really good thing if if
[TS]
01:53:56
◼
►
it were a supermodel culture or
[TS]
01:53:58
◼
►
something like that that probably very
[TS]
01:53:59
◼
►
unhealthy taking a little bit of a turn
[TS]
01:54:03
◼
►
so i started writing Swift almost
[TS]
01:54:06
◼
►
exactly a year ago now and the project
[TS]
01:54:09
◼
►
that i'm doing at work
[TS]
01:54:10
◼
►
we're using RX Swift and in
[TS]
01:54:12
◼
►
quote-unquote reactive programming and
[TS]
01:54:14
◼
►
i'm curious have you looked into that at
[TS]
01:54:16
◼
►
all and do you have any particular
[TS]
01:54:18
◼
►
thoughts on it doesn't seem barbaric to
[TS]
01:54:20
◼
►
you does it seem clever does it just
[TS]
01:54:21
◼
►
seem like an odd choice at ya what what
[TS]
01:54:24
◼
►
is your take on this whole RX thing
[TS]
01:54:26
◼
►
yeah I i I've definitely seen it i have
[TS]
01:54:29
◼
►
no real world usage experience for sure
[TS]
01:54:32
◼
►
most of my opinion is based on reading
[TS]
01:54:35
◼
►
blogs and reading people talk about how
[TS]
01:54:37
◼
►
awesome it is well not talking about the
[TS]
01:54:39
◼
►
problems
[TS]
01:54:40
◼
►
yeah I from what I gather it seems like
[TS]
01:54:44
◼
►
it is a way of letting you write a lot
[TS]
01:54:46
◼
►
less code and code that often works
[TS]
01:54:50
◼
►
the first time and i can see that super
[TS]
01:54:51
◼
►
appealing it also seems like it'd be
[TS]
01:54:53
◼
►
really challenging to debug it and
[TS]
01:54:54
◼
►
maintain it and so I don't know between
[TS]
01:54:56
◼
►
the two proteins between the pros and
[TS]
01:54:59
◼
►
cons out balances out if I writing a lot
[TS]
01:55:02
◼
►
of high-level apps i would probably try
[TS]
01:55:04
◼
►
it out on an opportunity if I liked it
[TS]
01:55:06
◼
►
but but aside from that are really have
[TS]
01:55:10
◼
►
a good insight either way if it's the
[TS]
01:55:12
◼
►
right thing to do or not sure sure
[TS]
01:55:14
◼
►
absolutely
[TS]
01:55:15
◼
►
you mentioned just a second ago that you
[TS]
01:55:16
◼
►
see some problems and you mentioned
[TS]
01:55:18
◼
►
debugging is there anything else that
[TS]
01:55:19
◼
►
jumps out at you is being a big concern
[TS]
01:55:21
◼
►
or or disinterest that it's so different
[TS]
01:55:23
◼
►
I mean I'm not afraid of different
[TS]
01:55:26
◼
►
things i think that it's it's more of AI
[TS]
01:55:30
◼
►
mean the questions I'd raise and this is
[TS]
01:55:31
◼
►
out of ignorance not out of church or
[TS]
01:55:33
◼
►
here but you know is what is the
[TS]
01:55:35
◼
►
community doing is their support line
[TS]
01:55:37
◼
►
are it is the you know is it changing
[TS]
01:55:41
◼
►
and evolving in a way that is good or
[TS]
01:55:44
◼
►
and these are just things i don't know
[TS]
01:55:46
◼
►
because i haven't used to but I have
[TS]
01:55:48
◼
►
nothing against the RX community at all
[TS]
01:55:50
◼
►
and I've seen a lot of really cool
[TS]
01:55:51
◼
►
things I've done and I've read many of
[TS]
01:55:52
◼
►
the the positive post in RX and and rach
[TS]
01:55:57
◼
►
native than many of the other things for
[TS]
01:55:59
◼
►
people using active techniques so and
[TS]
01:56:01
◼
►
reactive cocoa has also been around for
[TS]
01:56:03
◼
►
quite a while and at and I think that's
[TS]
01:56:05
◼
►
a really interesting application that
[TS]
01:56:07
◼
►
maybe became a lot easier when Swift
[TS]
01:56:09
◼
►
came out then doing an objective-c
[TS]
01:56:11
◼
►
absolutely so i think that is great this
[TS]
01:56:13
◼
►
with can support different kinds of
[TS]
01:56:15
◼
►
programming models like that because you
[TS]
01:56:18
◼
►
know if a awesome new right answer to
[TS]
01:56:20
◼
►
some problem comes out you'd hope that
[TS]
01:56:22
◼
►
you know that your system can support it
[TS]
01:56:25
◼
►
and can make it really elegant and
[TS]
01:56:27
◼
►
beautiful i feel kind of like this is
[TS]
01:56:30
◼
►
fighting you know the last war instead
[TS]
01:56:33
◼
►
of the current war but you mentioned
[TS]
01:56:35
◼
►
garbage collection for his ark bunch of
[TS]
01:56:37
◼
►
times and obviously that ship has sailed
[TS]
01:56:39
◼
►
but i would love for you to give a a
[TS]
01:56:44
◼
►
reasonable summary of what the
[TS]
01:56:46
◼
►
trade-offs are there because objective-c
[TS]
01:56:49
◼
►
garbage collection as you mentioned sort
[TS]
01:56:51
◼
►
of at yeah it's not there and eventually
[TS]
01:56:56
◼
►
objective-c dropped the garbage
[TS]
01:56:57
◼
►
collection and got our kind of course
[TS]
01:56:59
◼
►
Swift doesn't have garbage collection at
[TS]
01:57:01
◼
►
all can you talk about the trade-offs
[TS]
01:57:02
◼
►
there and why Swift is the way it is
[TS]
01:57:04
◼
►
what would you like a comparison of Arc
[TS]
01:57:07
◼
►
against the garbage collector
[TS]
01:57:09
◼
►
objective-c head or garbage collection
[TS]
01:57:12
◼
►
in theory but you could pick garbage
[TS]
01:57:14
◼
►
collection in a language perhaps not as
[TS]
01:57:16
◼
►
burdened as objective-c with see
[TS]
01:57:18
◼
►
backwards compatibility but you know
[TS]
01:57:20
◼
►
that's worth mentioning is well i think
[TS]
01:57:21
◼
►
so i think thats objective-c a decision
[TS]
01:57:23
◼
►
based on Lovato Lovato had a bunch of
[TS]
01:57:25
◼
►
implementation concerns and other things
[TS]
01:57:27
◼
►
that I think don't reflect they don't
[TS]
01:57:31
◼
►
obviously reflect on to the ultimate
[TS]
01:57:33
◼
►
garbage collector that you'd ever want
[TS]
01:57:35
◼
►
to have and so I don't think the
[TS]
01:57:36
◼
►
comparing against that is interesting
[TS]
01:57:38
◼
►
but let me turn around so what why do
[TS]
01:57:40
◼
►
you think our reflections interesting
[TS]
01:57:41
◼
►
what what is compelling about garbage
[TS]
01:57:43
◼
►
collection beyond our well it did the
[TS]
01:57:46
◼
►
idea that
[TS]
01:57:46
◼
►
yeah memory management is completely out
[TS]
01:57:48
◼
►
of the hands of the programmer and it's
[TS]
01:57:50
◼
►
some magical fairy behind-the-scenes
[TS]
01:57:51
◼
►
will make it all good for you and that
[TS]
01:57:54
◼
►
you know obviously what you're giving up
[TS]
01:57:56
◼
►
as you mentioned before that you know
[TS]
01:57:57
◼
►
even with our cue you lack some amount
[TS]
01:58:00
◼
►
of control that you'll need to to have a
[TS]
01:58:01
◼
►
language that becomes a system
[TS]
01:58:02
◼
►
programming which obviously give that up
[TS]
01:58:04
◼
►
with the garbage collection because
[TS]
01:58:05
◼
►
you're not gonna be doing assistant
[TS]
01:58:06
◼
►
program language in the garbage
[TS]
01:58:07
◼
►
collected with a garbage collector
[TS]
01:58:09
◼
►
behind it although i think Microsoft has
[TS]
01:58:12
◼
►
some project to do that singularity
[TS]
01:58:13
◼
►
product but they were trying to build a
[TS]
01:58:14
◼
►
hall West off of garbage collection not
[TS]
01:58:16
◼
►
quite sure how that's good that's going
[TS]
01:58:18
◼
►
right but even if even if you ignore the
[TS]
01:58:20
◼
►
the systems programming side of things
[TS]
01:58:22
◼
►
because i think it's fair to say a lot
[TS]
01:58:23
◼
►
of people don't care about that and so
[TS]
01:58:27
◼
►
garbage collection is proven in the
[TS]
01:58:28
◼
►
application space for java for example
[TS]
01:58:32
◼
►
right and pearl but do this reference
[TS]
01:58:37
◼
►
counting come on
[TS]
01:58:39
◼
►
oh that's right it's python that users
[TS]
01:58:40
◼
►
reference counting plus cycle collector
[TS]
01:58:42
◼
►
so but let me ask you again so you said
[TS]
01:58:45
◼
►
it means you don't have to think about
[TS]
01:58:47
◼
►
memory is that true
[TS]
01:58:49
◼
►
well that's the pitch the pitches that
[TS]
01:58:51
◼
►
the programmers tend to think about it
[TS]
01:58:52
◼
►
they have to think about it when the
[TS]
01:58:53
◼
►
garbage collector and understand the
[TS]
01:58:55
◼
►
pitch but is it true when the garbage
[TS]
01:58:57
◼
►
collector starts doing things you don't
[TS]
01:58:58
◼
►
want and then all of a sudden you do
[TS]
01:59:00
◼
►
have to think about it but then there's
[TS]
01:59:01
◼
►
almost nothing you
[TS]
01:59:02
◼
►
do about it yeah so so here's here's the
[TS]
01:59:05
◼
►
way I look at it and as you said that
[TS]
01:59:07
◼
►
the ship has somewhat sale
[TS]
01:59:08
◼
►
I am totally convinced the artists right
[TS]
01:59:10
◼
►
way to go up front it is better a whole
[TS]
01:59:14
◼
►
bunch of different ways it gives you
[TS]
01:59:16
◼
►
deterministic behavior so you don't get
[TS]
01:59:19
◼
►
you know it doesn't have the
[TS]
01:59:21
◼
►
unpredictable stutter problem that
[TS]
01:59:22
◼
►
people like to bash on gc's the starter
[TS]
01:59:26
◼
►
problem to me isn't really the issue
[TS]
01:59:28
◼
►
even though that's what GC haters will
[TS]
01:59:31
◼
►
bring up all the time it's more about
[TS]
01:59:33
◼
►
being a reason about when the memory
[TS]
01:59:35
◼
►
goes away and the most important aspect
[TS]
01:59:38
◼
►
of that is that are conservative
[TS]
01:59:40
◼
►
finalized errs so if you use a garbage
[TS]
01:59:42
◼
►
collector of language use finalized errs
[TS]
01:59:44
◼
►
finalizer Tsar the thing that gets run
[TS]
01:59:46
◼
►
when your object is destroyed finalizes
[TS]
01:59:48
◼
►
have so many problems there are entire
[TS]
01:59:50
◼
►
that there's entire bodies of work
[TS]
01:59:53
◼
►
talking about how to work around
[TS]
01:59:54
◼
►
problems with finalizer for example the
[TS]
01:59:57
◼
►
finalizer gets around the wrong thread
[TS]
01:59:58
◼
►
it has get run multiple
[TS]
01:59:58
◼
►
it has get run multiple
[TS]
02:00:00
◼
►
x the object get resurrected while the
[TS]
02:00:02
◼
►
final is running happens non-statistical
[TS]
02:00:05
◼
►
later you can't count on it and so you
[TS]
02:00:08
◼
►
can't use it for resource management for
[TS]
02:00:10
◼
►
database animals and things like that
[TS]
02:00:12
◼
►
for example there are so many problems
[TS]
02:00:14
◼
►
with finalizes the artist defines away
[TS]
02:00:17
◼
►
by having deterministic destruction
[TS]
02:00:18
◼
►
beyond that art though so the the common
[TS]
02:00:25
◼
►
that another common thing they're there
[TS]
02:00:28
◼
►
to two arguments that people make
[TS]
02:00:29
◼
►
against are in favor of a trace and
[TS]
02:00:32
◼
►
garbage collector one of which is the
[TS]
02:00:34
◼
►
arcades overhead because you have
[TS]
02:00:36
◼
►
retained release operations that run and
[TS]
02:00:39
◼
►
that is true
[TS]
02:00:40
◼
►
the other is that you have to think
[TS]
02:00:44
◼
►
about cycles in arc because it doesn't
[TS]
02:00:46
◼
►
automatically collects cycles and that
[TS]
02:00:48
◼
►
is also true and the the rebuttal I'd
[TS]
02:00:51
◼
►
give to people is that those problems
[TS]
02:00:54
◼
►
are also true in garbage collection just
[TS]
02:00:56
◼
►
in different ways so in a garbage
[TS]
02:00:59
◼
►
collector for example people don't think
[TS]
02:01:00
◼
►
about it but garbage collection injects
[TS]
02:01:03
◼
►
additional code into your application
[TS]
02:01:05
◼
►
just like artists and so you know there
[TS]
02:01:08
◼
►
are many different garbage collection
[TS]
02:01:09
◼
►
algorithms not all of them are the same
[TS]
02:01:10
◼
►
but the most modern garbage collectors
[TS]
02:01:16
◼
►
that use a nursery for short lifetime
[TS]
02:01:19
◼
►
objects and then promote them out there
[TS]
02:01:21
◼
►
generational use something called the
[TS]
02:01:24
◼
►
right barrier the right barrier is every
[TS]
02:01:26
◼
►
time you store to a property of an
[TS]
02:01:30
◼
►
object say you have to run additional
[TS]
02:01:32
◼
►
code garbage collectors also need the
[TS]
02:01:34
◼
►
ability to stop all the threads or at
[TS]
02:01:36
◼
►
least to be able to stop threads at some
[TS]
02:01:38
◼
►
point in time and they need to be able
[TS]
02:01:40
◼
►
to do so within a specific time down
[TS]
02:01:42
◼
►
because they don't want the garbage
[TS]
02:01:43
◼
►
collector to take forever
[TS]
02:01:44
◼
►
the artifact that is the typical garbage
[TS]
02:01:48
◼
►
collectors in Java for example will
[TS]
02:01:49
◼
►
introduce what's called a safe point
[TS]
02:01:51
◼
►
into loops and so now in your loops
[TS]
02:01:55
◼
►
extra code is being run because of the
[TS]
02:01:57
◼
►
garbage collector and on more aggressive
[TS]
02:02:00
◼
►
garbage collection algorithms for
[TS]
02:02:01
◼
►
example i was reading a blog post
[TS]
02:02:03
◼
►
recently about goes tricolor algorithm
[TS]
02:02:06
◼
►
they they're touting the advantage of
[TS]
02:02:09
◼
►
you get really low latency and you get
[TS]
02:02:11
◼
►
the ability to guarantee response times
[TS]
02:02:15
◼
►
and more firing level than most garbage
[TS]
02:02:17
◼
►
collectors but to do that they use this
[TS]
02:02:19
◼
►
tricolor algorithm which dramatically
[TS]
02:02:21
◼
►
lowers throughput and that dramatically
[TS]
02:02:23
◼
►
lower throughput because they're doing
[TS]
02:02:25
◼
►
almost exactly the same kinds of
[TS]
02:02:26
◼
►
operations that are kids doing the
[TS]
02:02:29
◼
►
problem that it then introduces those
[TS]
02:02:31
◼
►
that these operations that the garbage
[TS]
02:02:33
◼
►
collectors introducing are sometimes but
[TS]
02:02:35
◼
►
not nearly as well optimized elazig the
[TS]
02:02:38
◼
►
ark overhead that the ark optimize it
[TS]
02:02:40
◼
►
applies to and furthermore there's no
[TS]
02:02:42
◼
►
kind of out on it so with our I think
[TS]
02:02:45
◼
►
and hope that the ownership model will
[TS]
02:02:46
◼
►
give people the ability to take control
[TS]
02:02:47
◼
►
of those overheads and if it becomes a
[TS]
02:02:50
◼
►
problem practice or if they're just that
[TS]
02:02:52
◼
►
kind of person they can take full
[TS]
02:02:53
◼
►
control over the lifetime of their
[TS]
02:02:55
◼
►
objects and then know the ark will never
[TS]
02:02:57
◼
►
happen in the garbage collector you
[TS]
02:02:58
◼
►
don't have that so the performance side
[TS]
02:03:01
◼
►
of things I think is still up in the air
[TS]
02:03:04
◼
►
because are certainly doesn't reduce
[TS]
02:03:06
◼
►
overhead some of that's unavoidable at
[TS]
02:03:12
◼
►
least without lots of annotations in
[TS]
02:03:13
◼
►
your code but I also i think that arc is
[TS]
02:03:16
◼
►
not done yet a ton of energy has been
[TS]
02:03:18
◼
►
poured into research for garbage
[TS]
02:03:20
◼
►
collection particularly since Java has
[TS]
02:03:23
◼
►
come up there have been hundreds of
[TS]
02:03:24
◼
►
papers written in the academic circles
[TS]
02:03:25
◼
►
tons of work and hotspot another other
[TS]
02:03:29
◼
►
job implementations to do different
[TS]
02:03:32
◼
►
tweaks and different tunings and
[TS]
02:03:33
◼
►
different new kinds of albums and
[TS]
02:03:35
◼
►
garbage collection and that work really
[TS]
02:03:37
◼
►
hasn't been done for archaea and so I
[TS]
02:03:39
◼
►
think there's still a big future ahead
[TS]
02:03:40
◼
►
on the programming side of things the
[TS]
02:03:43
◼
►
cycle side of things i think it's also
[TS]
02:03:45
◼
►
really interesting question of how much
[TS]
02:03:47
◼
►
people think about memory when you when
[TS]
02:03:51
◼
►
you when I was baiting you a little bit
[TS]
02:03:53
◼
►
he said anything about garbage
[TS]
02:03:55
◼
►
collection is that you don't have to
[TS]
02:03:56
◼
►
think about memory but of course we know
[TS]
02:03:58
◼
►
that's not true right because if you
[TS]
02:04:00
◼
►
have a reference to some big object
[TS]
02:04:02
◼
►
graph they didn't mean to keep around
[TS]
02:04:03
◼
►
maybe it's in your undo stack then you
[TS]
02:04:05
◼
►
will quote unquote leak that memory
[TS]
02:04:07
◼
►
right and that that's true a garbage
[TS]
02:04:11
◼
►
collector that's true of arc as well
[TS]
02:04:12
◼
►
it's just any any automatic memory
[TS]
02:04:15
◼
►
management approach has that problem and
[TS]
02:04:19
◼
►
so that that is a really interesting
[TS]
02:04:21
◼
►
thing that there's
[TS]
02:04:24
◼
►
this question of if you're building a
[TS]
02:04:26
◼
►
large scale system do you want people to
[TS]
02:04:29
◼
►
quote-unquote never think about memory
[TS]
02:04:31
◼
►
do you want them to think about memory
[TS]
02:04:33
◼
►
all the time like they did in
[TS]
02:04:35
◼
►
objective-c classic retain and release
[TS]
02:04:37
◼
►
man retain release or do you want
[TS]
02:04:39
◼
►
something in the middle and I think the
[TS]
02:04:41
◼
►
ark strikes a really interesting balance
[TS]
02:04:42
◼
►
that either whether it's in objective-c
[TS]
02:04:45
◼
►
orin swift where I look at manual retain
[TS]
02:04:50
◼
►
really releases being a very imperative
[TS]
02:04:52
◼
►
style of memory management or Malcolm
[TS]
02:04:54
◼
►
free all these things where you're
[TS]
02:04:55
◼
►
telling the code line by line this is
[TS]
02:04:58
◼
►
where you should do a reference count
[TS]
02:04:59
◼
►
operation this is where you should
[TS]
02:05:00
◼
►
release the memory
[TS]
02:05:02
◼
►
this is what you should do at this point
[TS]
02:05:03
◼
►
I'm are then takes that model and
[TS]
02:05:05
◼
►
bubbles it up a big step and it makes it
[TS]
02:05:07
◼
►
being it makes it be a very declarative
[TS]
02:05:09
◼
►
model so instead of telling the compiler
[TS]
02:05:11
◼
►
or the the the telling the compiler that
[TS]
02:05:15
◼
►
this is the place you should do retain
[TS]
02:05:17
◼
►
you said say this is an open
[TS]
02:05:19
◼
►
relationship
[TS]
02:05:20
◼
►
the cool thing about that to me is that
[TS]
02:05:22
◼
►
not only does that get rid of the the
[TS]
02:05:24
◼
►
mechanics of maintaining reference
[TS]
02:05:26
◼
►
counting and define away tons above by
[TS]
02:05:28
◼
►
doing that it also means that is now
[TS]
02:05:30
◼
►
explicit in your code what your
[TS]
02:05:32
◼
►
intention was and that's something that
[TS]
02:05:34
◼
►
people who maintain your code benefit
[TS]
02:05:36
◼
►
from and so by saying that I have a weak
[TS]
02:05:38
◼
►
point or to the parent object of my my
[TS]
02:05:41
◼
►
thing that's a really important
[TS]
02:05:44
◼
►
relationship to know about and as you're
[TS]
02:05:46
◼
►
looking at the code you maintain the
[TS]
02:05:47
◼
►
code having that be explicit is very
[TS]
02:05:49
◼
►
valuable because it talks about the the
[TS]
02:05:51
◼
►
the relationship between values and to
[TS]
02:05:55
◼
►
me again with the goal of being ever
[TS]
02:05:57
◼
►
write large-scale applications and Swift
[TS]
02:05:59
◼
►
I think that's really useful
[TS]
02:06:00
◼
►
I also don't think it's hugely
[TS]
02:06:01
◼
►
burdensome though it is definitely part
[TS]
02:06:04
◼
►
of the learning curve of learning how
[TS]
02:06:05
◼
►
swift works that you know has to be
[TS]
02:06:08
◼
►
balanced in there as well and so i don't
[TS]
02:06:11
◼
►
know i mean i like it is there are has
[TS]
02:06:14
◼
►
clear advantages in terms of allowing
[TS]
02:06:18
◼
►
Swift to scale down two systems that can
[TS]
02:06:21
◼
►
tolerate having a garbage collector for
[TS]
02:06:23
◼
►
example if you want to write from where
[TS]
02:06:25
◼
►
I think it does provide a better
[TS]
02:06:28
◼
►
programming model where programmers
[TS]
02:06:29
◼
►
think just a little bit about memory and
[TS]
02:06:32
◼
►
i think that you know going forward it
[TS]
02:06:34
◼
►
provides a really high performance model
[TS]
02:06:37
◼
►
that you can get better than better than
[TS]
02:06:40
◼
►
garbage collection and almost every way
[TS]
02:06:41
◼
►
so i think that in terms of trade-offs
[TS]
02:06:43
◼
►
it's the right one push forward the
[TS]
02:06:46
◼
►
other I guess third piece that that
[TS]
02:06:49
◼
►
garbage collection is really bad about
[TS]
02:06:51
◼
►
is kind of a showstopper for swift which
[TS]
02:06:54
◼
►
is inner interoperability with C code so
[TS]
02:06:57
◼
►
if you've ever worked with java or with
[TS]
02:06:59
◼
►
other similar garbage collector of
[TS]
02:07:01
◼
►
languages one of the major advantages
[TS]
02:07:04
◼
►
the garbage collectors give you is they
[TS]
02:07:05
◼
►
move objects and they need to do that so
[TS]
02:07:07
◼
►
they can compact those objects so that
[TS]
02:07:09
◼
►
they can then efficiently doo doo
[TS]
02:07:11
◼
►
allocations but the problem is that once
[TS]
02:07:13
◼
►
you start moving objects around if
[TS]
02:07:15
◼
►
you're interfacing with C code
[TS]
02:07:17
◼
►
you can't have some random c-code having
[TS]
02:07:19
◼
►
a pointer to your object and have it
[TS]
02:07:20
◼
►
moved because then you get a dangling
[TS]
02:07:22
◼
►
pointer and so once you get down that
[TS]
02:07:25
◼
►
line you end up with things like J&I the
[TS]
02:07:27
◼
►
java native interface where you have to
[TS]
02:07:29
◼
►
explicitly pin things you have to
[TS]
02:07:31
◼
►
maintain them it's very complicated it's
[TS]
02:07:34
◼
►
really buggy and are completely defines
[TS]
02:07:37
◼
►
us away by just saying that ok
[TS]
02:07:40
◼
►
something's in memory its it has
[TS]
02:07:42
◼
►
predictable lifetime you can reason
[TS]
02:07:44
◼
►
about it but provides tools for dealing
[TS]
02:07:47
◼
►
with unsafe pointers and things like
[TS]
02:07:48
◼
►
that and that makes the interoperability
[TS]
02:07:50
◼
►
with existing seco but also with
[TS]
02:07:52
◼
►
Objective C and maybe someday c++ code
[TS]
02:07:54
◼
►
really simple really natural and really
[TS]
02:07:57
◼
►
efficient and I think that's a huge
[TS]
02:07:58
◼
►
advantage that are provides that really
[TS]
02:08:01
◼
►
would be impossible to do with with the
[TS]
02:08:03
◼
►
garbage collector so that's my opinion
[TS]
02:08:07
◼
►
I mean I think reasonable people just
[TS]
02:08:09
◼
►
agree obviously but it's something that
[TS]
02:08:12
◼
►
does come up now and then or used to
[TS]
02:08:14
◼
►
come up anyway i'm convinced i think you
[TS]
02:08:15
◼
►
should use our for swift got to get on
[TS]
02:08:18
◼
►
yeah Chris thank you so very very very
[TS]
02:08:21
◼
►
much for coming on the show
[TS]
02:08:23
◼
►
obviously we are not an interview show
[TS]
02:08:25
◼
►
is its listeners have discovered over
[TS]
02:08:27
◼
►
the last hour to but uh but to take your
[TS]
02:08:30
◼
►
time on what is presumably a very busy
[TS]
02:08:32
◼
►
time of your life in to spend it with us
[TS]
02:08:35
◼
►
three knuckleheads I really appreciate
[TS]
02:08:37
◼
►
it was very kind of you to do and
[TS]
02:08:39
◼
►
hopefully this won't be the last time
[TS]
02:08:41
◼
►
that we'll hear you want to put on a
[TS]
02:08:42
◼
►
show or maybe even the show we'll see
[TS]
02:08:44
◼
►
so thank you Chris I really appreciate
[TS]
02:08:46
◼
►
it yeah well thank you for having me and
[TS]
02:08:47
◼
►
I've had fun even though I'm terrified
[TS]
02:08:49
◼
►
and probably a fool of myself and not at
[TS]
02:08:51
◼
►
all just me that's that's normal
[TS]
02:08:53
◼
►
I'm still trying to get over that plus
[TS]
02:08:55
◼
►
that's our job they're alright thanks
[TS]
02:08:57
◼
►
lat 43 sponsors this week 0 square space
[TS]
02:09:00
◼
►
and audible and we will see you next
[TS]
02:09:05
◼
►
now the show is over they didn't even
[TS]
02:09:09
◼
►
mean to be in because it was accidental
[TS]
02:09:12
◼
►
death was accidental
[TS]
02:09:16
◼
►
John didn't research Marco and Casey
[TS]
02:09:20
◼
►
wouldn't let him
[TS]
02:09:22
◼
►
because it was accidentally was
[TS]
02:09:25
◼
►
accidental and you can find show know
[TS]
02:09:30
◼
►
DP died and it for twitter follow them
[TS]
02:09:37
◼
►
[Music]
[TS]
02:09:38
◼
►
yes byl ISS so that's Casey list and a
[TS]
02:09:43
◼
►
co-pay RM Angie Marco Arment our CC
[TS]
02:09:50
◼
►
Syracuse
[TS]
02:10:04
◼
►
we didn't talk about a woodworking stuff
[TS]
02:10:09
◼
►
yeah making splitters is fun what about
[TS]
02:10:12
◼
►
what kind of wood was a table Nina it's
[TS]
02:10:14
◼
►
it's one that's gonna be tough
[TS]
02:10:17
◼
►
that's a lot of that's a lot of kinds
[TS]
02:10:18
◼
►
pretty hard wood right yeah yeah i mean
[TS]
02:10:21
◼
►
it takes time because it's fun it's one
[TS]
02:10:23
◼
►
of these one of these areas where you
[TS]
02:10:25
◼
►
can learn a lot about it over time and
[TS]
02:10:26
◼
►
keep going deeper and deeper in
[TS]
02:10:28
◼
►
different spaces and there's never you
[TS]
02:10:30
◼
►
never know everything so it's a lot of
[TS]
02:10:32
◼
►
fun to dive into woodworking is also
[TS]
02:10:34
◼
►
very very different than sitting in
[TS]
02:10:36
◼
►
front of a computer all day now you're
[TS]
02:10:38
◼
►
actually going to make something with
[TS]
02:10:39
◼
►
your hands and you gotta build much
[TS]
02:10:40
◼
►
higher chance for dismemberment that
[TS]
02:10:43
◼
►
that is true that is true i think i
[TS]
02:10:45
◼
►
think it's interesting when programmers
[TS]
02:10:47
◼
►
have like incredibly analog hobbies
[TS]
02:10:50
◼
►
it's also letters because the
[TS]
02:10:52
◼
►
woodworking communities going to this
[TS]
02:10:53
◼
►
whole cnc thing
[TS]
02:10:54
◼
►
well they're turning into a very
[TS]
02:10:57
◼
►
programmed thing again
[TS]
02:10:58
◼
►
people always say well why don't you get
[TS]
02:11:00
◼
►
cnc indubitable own like but that's
[TS]
02:11:02
◼
►
exactly what I'm escaping think I don't
[TS]
02:11:04
◼
►
want to have to program my little you
[TS]
02:11:07
◼
►
can't even escape like the community
[TS]
02:11:09
◼
►
arguments over standards and had to make
[TS]
02:11:13
◼
►
it so you just cut down a tree in your
[TS]
02:11:14
◼
►
throat into your workshop and then out
[TS]
02:11:15
◼
►
comes a table
[TS]
02:11:16
◼
►
yeah well so that's that's the that's
[TS]
02:11:18
◼
►
the funny thing about people is that
[TS]
02:11:19
◼
►
people are all the same they just don't
[TS]
02:11:21
◼
►
want to notice the greater the effect
[TS]
02:11:23
◼
►
you know you get two very different
[TS]
02:11:25
◼
►
communities and they think they're all
[TS]
02:11:26
◼
►
different but they're actually the same
[TS]
02:11:27
◼
►
at route so Chris you're obviously
[TS]
02:11:31
◼
►
changing careers while careers
[TS]
02:11:34
◼
►
necessarily change employers would you
[TS]
02:11:36
◼
►
consider yourself a car person I was
[TS]
02:11:39
◼
►
that's a funny question
[TS]
02:11:40
◼
►
I mean I obviously need a car cars
[TS]
02:11:44
◼
►
important but I'm what i consider to be
[TS]
02:11:47
◼
►
a nun car person I want to accelerate
[TS]
02:11:49
◼
►
the path to cars being appliances that
[TS]
02:11:53
◼
►
solve people's problems and i'm
[TS]
02:11:54
◼
►
personally not the kind of guy who loves
[TS]
02:11:56
◼
►
doing I'll changes and fiddling around
[TS]
02:11:59
◼
►
with them I just want something that is
[TS]
02:12:01
◼
►
reliable that works
[TS]
02:12:02
◼
►
ideally drives me where I want to go and
[TS]
02:12:04
◼
►
I don't have to think about it it's just
[TS]
02:12:07
◼
►
you know solving my problems it's not
[TS]
02:12:09
◼
►
something I have to care for feed and
[TS]
02:12:10
◼
►
maintain so but that's kind of the way I
[TS]
02:12:13
◼
►
look at cars can you drive a stick
[TS]
02:12:16
◼
►
I did drive a stick before i got my test
[TS]
02:12:19
◼
►
a few years ago so yeah I it all comes
[TS]
02:12:22
◼
►
clear now they really from the point of
[TS]
02:12:23
◼
►
view like it kind of sounds like you you
[TS]
02:12:25
◼
►
you want to make cars boring and in all
[TS]
02:12:28
◼
►
in a good weight really and that's a
[TS]
02:12:30
◼
►
noble goal and I think I can see why you
[TS]
02:12:33
◼
►
went to Tesla however it is kind of
[TS]
02:12:35
◼
►
funny that like Tesla is in my opinion
[TS]
02:12:37
◼
►
clearly the most exciting car company
[TS]
02:12:40
◼
►
that the world is known for quite some
[TS]
02:12:41
◼
►
time and to go there
[TS]
02:12:43
◼
►
well while having a you know such like a
[TS]
02:12:46
◼
►
an almost nonchalant opinion about cars
[TS]
02:12:49
◼
►
is interesting to me hehe yeah well I
[TS]
02:12:51
◼
►
admit that I never considered going to
[TS]
02:12:54
◼
►
work at a car company before but that's
[TS]
02:12:57
◼
►
because I always considered car
[TS]
02:12:59
◼
►
companies to be you know not not in
[TS]
02:13:03
◼
►
native the kinds of skills that I bring
[TS]
02:13:05
◼
►
the autopilot i think is really exciting
[TS]
02:13:07
◼
►
and really big problem and it kind of
[TS]
02:13:09
◼
►
fits with my my desire solved nearly
[TS]
02:13:13
◼
►
impulse possible problems and take on
[TS]
02:13:16
◼
►
new things and so I'm really excited
[TS]
02:13:18
◼
►
about it so I'm I'm a little curious
[TS]
02:13:21
◼
►
on that note we've talked on the show
[TS]
02:13:24
◼
►
before about you-know-what whether we
[TS]
02:13:26
◼
►
think that that full self-driving cars
[TS]
02:13:30
◼
►
you know basically when and whether we
[TS]
02:13:32
◼
►
think those will exist like and what
[TS]
02:13:33
◼
►
kind of time frame are we talking to
[TS]
02:13:34
◼
►
decade our lifetimes ever because you
[TS]
02:13:37
◼
►
know it's one thing to make something
[TS]
02:13:38
◼
►
that can work on clearly marked highways
[TS]
02:13:41
◼
►
it's only thing that can make that
[TS]
02:13:42
◼
►
something work where john lives where
[TS]
02:13:44
◼
►
there's where there's ice all over the
[TS]
02:13:45
◼
►
road for most of the year and so like
[TS]
02:13:47
◼
►
there's no more lane markings there's
[TS]
02:13:49
◼
►
barely any flat road surfaces or you
[TS]
02:13:51
◼
►
have all these different ambiguities
[TS]
02:13:53
◼
►
that you have in in real-world roads do
[TS]
02:13:57
◼
►
you think you know it again obviously
[TS]
02:13:59
◼
►
this is not any kind of official
[TS]
02:14:00
◼
►
capacity as an about to be tested
[TS]
02:14:02
◼
►
employee do you think big picture that
[TS]
02:14:07
◼
►
we will see completely self-driving cars
[TS]
02:14:10
◼
►
capable of driving on effectively all
[TS]
02:14:11
◼
►
roads within say the next decade and if
[TS]
02:14:15
◼
►
not maybe within our lifetimes
[TS]
02:14:17
◼
►
yeah i think that it's very possible
[TS]
02:14:20
◼
►
within the next decade and hopefully
[TS]
02:14:22
◼
►
that's a long long long view but keep in
[TS]
02:14:25
◼
►
mind the goal is to drive better than
[TS]
02:14:29
◼
►
and significantly better than him and I
[TS]
02:14:32
◼
►
think one of the things that gives me
[TS]
02:14:34
◼
►
confidence in this is that it's not an
[TS]
02:14:37
◼
►
even playing field because the
[TS]
02:14:40
◼
►
autonomous cars have more sensors than
[TS]
02:14:42
◼
►
humans do you know they have they have a
[TS]
02:14:44
◼
►
radar for example and that means that
[TS]
02:14:46
◼
►
they're capable of doing things that
[TS]
02:14:48
◼
►
humans just physically can't
[TS]
02:14:50
◼
►
and there's a huge technology problem
[TS]
02:14:53
◼
►
there's huge software problems is not a
[TS]
02:14:55
◼
►
overnight kind of a thing that you wake
[TS]
02:14:58
◼
►
up and solve immediately but I I have
[TS]
02:15:01
◼
►
confidence can be solved certainly
[TS]
02:15:02
◼
►
within a decade
[TS]
02:15:03
◼
►
well the good news is it's not gonna
[TS]
02:15:06
◼
►
take a lot to be better than your
[TS]
02:15:08
◼
►
average driver from Massachusetts
[TS]
02:15:09
◼
►
because that's a pretty low bar now
[TS]
02:15:11
◼
►
because they know how to navigate these
[TS]
02:15:12
◼
►
intersections like seven different exits
[TS]
02:15:15
◼
►
all a different angle some of which are
[TS]
02:15:17
◼
►
one-way none of which are marked so the
[TS]
02:15:19
◼
►
humans can figure that out it's going to
[TS]
02:15:21
◼
►
be tough with the sensors family I will
[TS]
02:15:23
◼
►
drive a Manhattan without any problems
[TS]
02:15:25
◼
►
I would never drive in Boston oh I amen
[TS]
02:15:28
◼
►
brother hi completely great
[TS]
02:15:29
◼
►
alright so bring this back around Chris
[TS]
02:15:31
◼
►
you made mention why early in the
[TS]
02:15:32
◼
►
episode that you like yellow cars
[TS]
02:15:35
◼
►
what ya was awesome
[TS]
02:15:39
◼
►
my-my-my one of my favorite cars was a
[TS]
02:15:42
◼
►
yellow mini cooper with black hood
[TS]
02:15:44
◼
►
stripes on it nice and I make it for
[TS]
02:15:47
◼
►
convertible it was totally awesome that
[TS]
02:15:51
◼
►
doesn't get you in the carpool lane but
[TS]
02:15:52
◼
►
it was a beautiful car in his defense
[TS]
02:15:56
◼
►
like yellow it like I've seen a like
[TS]
02:15:58
◼
►
that kind of that kinda category of
[TS]
02:16:01
◼
►
color like yellow orange maybe teal or
[TS]
02:16:04
◼
►
maybe even like a pink like the kind of
[TS]
02:16:06
◼
►
like bright almost neon ish colors can
[TS]
02:16:09
◼
►
work really well they often don't but
[TS]
02:16:12
◼
►
then when they work well they look
[TS]
02:16:14
◼
►
pretty good i could totally see that the
[TS]
02:16:16
◼
►
only fly see in this plan is that Tesla
[TS]
02:16:19
◼
►
does not currently offer either yellow
[TS]
02:16:21
◼
►
as an option or custom paint colors as
[TS]
02:16:24
◼
►
an option
[TS]
02:16:24
◼
►
well so now you've broken the real
[TS]
02:16:26
◼
►
secret they want to hire compiler ok
[TS]
02:16:28
◼
►
that's why would you gotten your Tesla
[TS]
02:16:31
◼
►
and yellow if you could have but yes
[TS]
02:16:33
◼
►
absolutely
[TS]
02:16:35
◼
►
it was a giant banana
[TS]
02:16:38
◼
►
yeah and really fully thought the
[TS]
02:16:43
◼
►
surgeon i don't i don't know if you get
[TS]
02:16:45
◼
►
that car component you were talking
[TS]
02:16:47
◼
►
about model s right yeah yeah now i
[TS]
02:16:49
◼
►
would yellow doesn't seem right for that
[TS]
02:16:51
◼
►
we're gonna do some shopping mock-ups
[TS]
02:16:53
◼
►
workshop in a little bit will see that
[TS]
02:16:55
◼
►
maybe if you got like stripes down the
[TS]
02:16:57
◼
►
yeah I'm if this is the case for details
[TS]
02:16:59
◼
►
matter so what ya got me that's like it
[TS]
02:17:02
◼
►
if there's anything if there's any way
[TS]
02:17:03
◼
►
for you to get like a pet feature
[TS]
02:17:04
◼
►
implemented in the model line that seems
[TS]
02:17:07
◼
►
like a pretty good one to do it at least
[TS]
02:17:09
◼
►
and you know i would ask if I'm sure I
[TS]
02:17:12
◼
►
know you're probably not gonna be
[TS]
02:17:12
◼
►
working on on the Bluetooth you I but
[TS]
02:17:15
◼
►
i'm sure you could probably put in a
[TS]
02:17:17
◼
►
word with the right people to please
[TS]
02:17:19
◼
►
improve bluetooth audio but but
[TS]
02:17:23
◼
►
otherwise if you can't make a yellow one
[TS]
02:17:25
◼
►
that would be you know in addition to
[TS]
02:17:27
◼
►
have potentially saving thousands of
[TS]
02:17:29
◼
►
lives a year with autopilot soft you
[TS]
02:17:32
◼
►
know getting getting improved bluetooth
[TS]
02:17:33
◼
►
and yellow option will be pretty
[TS]
02:17:34
◼
►
impressive
[TS]
02:17:35
◼
►
well yellow would make are more visible
[TS]
02:17:36
◼
►
to other drivers are they can drive a
[TS]
02:17:39
◼
►
bright colors to know that you're there
[TS]
02:17:40
◼
►
since you don't have any engine sound
[TS]
02:17:46
◼
►
and i have to say the most effort I've
[TS]
02:17:49
◼
►
ever done to win over one swift
[TS]
02:17:51
◼
►
programmer haha so i'm not sure this is
[TS]
02:17:58
◼
►
scalable approach yeah that's the best
[TS]
02:18:00
◼
►
strategy forced adoption you should see
[TS]
02:18:02
◼
►
other me instead of coming on
[TS]
02:18:03
◼
►
everybody's podcast part of the
[TS]
02:18:05
◼
►
individual like that's amazing
[TS]