Under the Radar

34: tvOS 10, macOS 10.12 and Swift 3


00:00:00   Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.

00:00:05   And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.

00:00:10   So for the last few weeks, we've been covering WWDC announcements, platform by platform.

00:00:15   And this week is kind of like the cleanup week because we're going to talk first about

00:00:18   tvOS and macOS, and then some bonus stuff after that. And we're kind of lumping this

00:00:23   together because, honestly, from the point of view of two iOS developers, there's not

00:00:28   a whole lot of new stuff in tvOS or macOS

00:00:31   that's really relevant to us.

00:00:33   I guess let's start out with tvOS.

00:00:35   I mean, neither of us have a tv app,

00:00:37   but we've both kind of looked at it, considered it,

00:00:40   even gone to the tvOS tech talks this past winter.

00:00:43   So David, what do you think,

00:00:45   has anything changed in regards to like,

00:00:47   is anything in tvOS now going to make it more appealing

00:00:52   or more relevant or more compelling

00:00:55   for us to make apps for it?

00:00:57   I don't think so. I mean, it's a strange thing to have an Apple platform that I really don't

00:01:03   feel much drawn to making apps for. Because almost so many other platforms, I've always

00:01:11   had an app available and ready on the first day. That was just sort of been my thing for—I

00:01:17   did it for as close as I could for the iPhone, definitely did it for the iPad, for the watch.

00:01:24   And I did it for Mac App Store even too, if I remember right.

00:01:28   But there's something on the TV that just doesn't really appeal to me or feel compelling.

00:01:33   And I think a lot of it's just the TV.

00:01:36   And this is in large ways that Apple kind of is pitching it, is TV OS is like the future

00:01:42   of TV is apps.

00:01:44   But implicit in that in some ways is that the apps are reflecting the previous content

00:01:50   that was shown on TV.

00:01:52   And I think there's a lot of, unless you have a, you know, you're a content creator or producer,

00:01:59   you're a network, you're a TV network or a movie station or something, or you're a game

00:02:03   producer, someone who would alternatively be playing on a game console, there's not

00:02:08   a lot there.

00:02:09   I mean, maybe I'm just not creative enough.

00:02:11   And I think in general, this has been borne out.

00:02:13   Like I don't hear a lot of talk from, about interesting tvOS apps that aren't from networks.

00:02:22   and largely it's just a slightly more convenient way to access content that you previously

00:02:27   would have access to some other way.

00:02:30   And the changes we see in TVOS this year seem lined up with that.

00:02:33   There's really not much there, which fair enough to TVOS was announced in between the

00:02:38   last WWDC and this one, and so there's less time for things to have changed.

00:02:43   But the biggest change is the single sign-on thing, which is useful and awesome if you're

00:02:48   a TV network or someone who needs to do a way to authenticate whether someone has bought

00:02:53   a cable package. But that's a very narrow use case. And so generally it's like, cool,

00:02:59   I'm glad there's more stuff happening here, I suppose, but in general, I'm like, yeah,

00:03:03   that's kind of, it'll keep doing its thing and maybe I'll check in with it periodically,

00:03:06   but I don't see much there for me. Do you see anything there for you? Because obviously

00:03:10   you have, of the two of us, you have the closest sort of need or reason to be there, insofar

00:03:17   as you make a media consumption app, which you could reasonably imagine existing on a

00:03:22   television. Do you have any plans to go towards that, though?

00:03:26   I still am kind of waiting and seeing on that, because, you know, I mean, as you mentioned,

00:03:30   like, it really does seem, you know, like when the TV first came out, and when we first

00:03:35   were hearing that we were going to have access to make apps for Apple TV, and there was this

00:03:39   new TV platform with this new crazy remote that you can't hold and everything, I thought,

00:03:43   And a lot of people thought, wow, this is gonna be really great once we figure out stuff

00:03:49   we haven't even thought of before.

00:03:50   Like apps that right now, as we think about it beforehand, it's like apps that right now

00:03:55   we can't even consider, that we haven't even thought of, and there's gonna be something

00:03:59   really cool that you can do on the TV now that we can put apps on it.

00:04:03   And I think so far that has proven not to be the case yet.

00:04:08   that so far we as an industry of app makers

00:04:13   and Apple TV users, we really haven't figured out

00:04:16   anything else to do on TVs than we weren't

00:04:18   basically already doing before.

00:04:21   Maybe now we're doing things better,

00:04:22   and maybe we're doing things on different platforms.

00:04:27   Before, there were no games on the Apple TV.

00:04:28   Now there are games for it.

00:04:29   Not a ton of them.

00:04:30   They aren't all great, but there are games for it.

00:04:33   But we're still basically using TV

00:04:36   to watch video, maybe occasionally play some music,

00:04:40   and play games.

00:04:41   Like that's mainly what people use their Apple TVs for.

00:04:45   So as you mentioned, like if you're not,

00:04:47   you know, watching video is tough

00:04:49   if you're not a content owner.

00:04:51   Like there's not a whole lot for non-content owners to do,

00:04:55   because for the most part, there's no good source

00:04:59   where you can get video content to play in your app.

00:05:01   Like there are video podcasts,

00:05:03   you could make a video podcast player,

00:05:04   Those are pretty, it's a pretty small market

00:05:08   both of content and of viewers

00:05:09   relative to something like YouTube or a TV network.

00:05:12   So there's not a whole lot for you to do

00:05:15   in making a video consumption app

00:05:17   if you aren't a video producer

00:05:19   or working for a video producer.

00:05:21   And then most people I know who are indie developers

00:05:26   make either some kind of media consumption app

00:05:29   or what I would generally classify as productivity apps

00:05:32   or utility apps.

00:05:34   Like I don't know a lot of people who make games,

00:05:36   and I don't know a lot of people

00:05:38   who own TV stations and TV networks.

00:05:40   So the vast majority of apps, of programmers I know

00:05:45   who are like working for themselves

00:05:46   and not contracting for somebody like a media company,

00:05:49   I don't really see a lot for any of us

00:05:50   to do on the Apple TV.

00:05:52   There is that one area though

00:05:54   that you mentioned of media consumption,

00:05:55   like what else is there besides video

00:05:56   that you might be able to get on there?

00:05:57   And you know, like I know people who make RSS readers,

00:06:00   I don't see much of a use for that on the TV,

00:06:02   especially given there's no WebKit,

00:06:03   but even if there was, I don't think that would solve the problem. So then I guess that

00:06:07   boils down to, okay, what about audio? You know, I make an audio playback app. I don't

00:06:11   need to worry about where the content comes from because it's free and open because it's

00:06:14   actually the last useful medium. So, sorry, getting political there. So, there is a good

00:06:20   question of like, well, is there a use for overcast on the Apple TV? And no question,

00:06:25   there is a use for overcast for some people. Some people have asked for it. But for the

00:06:31   most part, most people don't use their TVs, as far as I can tell. Most people don't use

00:06:36   their TVs to just play audio content and then sit there with nothing else happening on screen.

00:06:44   Most TV media consumption is video. And because I don't even play video, even the World of

00:06:49   Video podcast, I'm not in. So because I don't even handle video at all, and I don't really

00:06:53   intend to change that, I just don't think there's enough reason for me to be there to

00:07:00   justify the fairly sizable amount of work it would take. The whole bottom half of the

00:07:07   app, like the data layer, the sync layer, the audio engine, I got those built and running

00:07:11   on Apple TV back when the SDK first came out with a couple hours of work. That was the

00:07:16   easy part because it was already all iOS code. The hard part is the entire TV UI, which all

00:07:24   basically has to be written from scratch. You pretty much can't use any code, or at

00:07:29   you can't use most code that you wrote for iOS on tvOS

00:07:33   'cause things just work differently,

00:07:34   they're structured differently,

00:07:35   the input is completely different,

00:07:36   the navigation is completely different.

00:07:38   So you basically have to write

00:07:40   the entire UI layer from scratch.

00:07:42   And I just, I started doing it,

00:07:46   I made the login screen and stuff,

00:07:47   and after making login and registration and everything,

00:07:50   and I was like, you know,

00:07:51   I really am not enjoying this at all,

00:07:53   and what's the benefit really gonna be here?

00:07:55   Like, a podcast app has a lot of screens,

00:07:58   way, way more than you might think if you haven't built one.

00:08:01   And yeah, I could just port over a subset of functionality,

00:08:04   but it doesn't really, I don't know.

00:08:06   It doesn't seem worth it unless there's really strong demand.

00:08:09   And I just haven't seen evidence of that.

00:08:12   I've seen evidence of a few people who want it,

00:08:14   but not most.

00:08:16   - Yeah, and I think it's a tricky platform too,

00:08:18   'cause I was even trying to imagine

00:08:21   if Apple has likely sold more Apple TV fourth generations

00:08:25   or Apple Watches.

00:08:27   And my guess is they've sold more Apple watches.

00:08:30   And that's even, in and of itself,

00:08:32   a relatively small and narrow audience,

00:08:36   certainly compared to something like iOS,

00:08:37   which is where it's just immense and massive.

00:08:42   And so I think of something like TVOS,

00:08:44   and it's like, usually if you have

00:08:46   a relatively small addressable market,

00:08:49   you have to be able to charge a lot for an app,

00:08:51   for it to sort of make sense financially,

00:08:54   and I'm not sure, like in general,

00:08:56   the app store, that's always been kind of a tricky thing to have, or there's always

00:09:01   been a downward force on pressure, pressure on prices. And so it's kind of a strange thing

00:09:06   to be like, well, if it's, there's only, I don't know, a few million of them in the world.

00:09:11   And of those, how many people are looking for third party apps that aren't just, you

00:09:16   know, major TV networks or things like that. And so, in general, it may just be fine for

00:09:21   to be a platform that there isn't a lot of interest from people like us, which seems

00:09:27   like that's probably fine, that's okay. Maybe it's for other people, it's cool,

00:09:31   it's—I have one in my house and I use it, but it's not a platform that I expect to

00:09:37   really dive into until there is such—something changes to where that becomes compelling.

00:09:42   And I don't really know what that change could or would be, but as it is now, I don't

00:09:46   expect that to change in the near future.

00:09:48   Right. I mean, one obvious big thing they could do is the App Store environment really

00:09:53   needs some help on the Apple TV. It is a very limited, difficult to browse App Store. There

00:09:58   are still no conveniences like web links to Apple TV. So if you convince somebody to go

00:10:04   look for your Apple TV app, they can't just click a button and buy it from their phone

00:10:08   or computer. They have to go to the Apple TV, which they might not even be near at the

00:10:12   time. They might be reading Twitter on their phone away from home or something. But they

00:10:15   to go to the Apple TV at home, if they remember to do that, go to the App Store, search for

00:10:20   your app, find it. There's no link or buy for later or anything like that. So a lot

00:10:26   of that could help this a little bit. But also, I just feel like you as an Apple TV

00:10:32   user, me as an Apple TV user, I've used the Apple TV every day for years. And of course

00:10:37   we got the new one immediately. And I've been using that every day since it came out.

00:10:41   The Apple TV is our primary TV connected device. The vast majority of the time the TV is on,

00:10:45   what we're using. So as a user though, I hardly ever go to browse the App Store on the Apple

00:10:52   TV. Like that's not what I'm sitting down there to do. I'm sitting down in front of

00:10:56   the TV usually to play video content in like two or three apps. And I think for most people

00:11:02   that's probably the biggest use cases. Like you're not sitting down to browse through

00:11:07   the App Store and buy a bunch of crap and see what you like, you're probably sitting

00:11:10   down to watch TV. And even if you were sitting down to browse, I think, "What would I be

00:11:16   browsing for?" I'd probably be browsing for games. So like, I--and when I have--the

00:11:23   handful of times I have browsed the App Store on Apple TV, that's the only--I was only looking

00:11:27   for games. I was not looking for like, "Oh, I wonder if there's any podcast players."

00:11:30   That never even crossed my mind. It was only about, "Okay, I'm at this thing. I either

00:11:34   want to watch TV or play games." And that just might always be the case. Like, that

00:11:39   might never actually change with the Apple TV. And that's okay. That's just how people

00:11:43   use their TVs most of the time. And if the TV never ends up becoming a general purpose

00:11:49   computing platform, that's okay. We have lots of other general purpose computing platforms

00:11:53   that are really good and really compelling. And so not everything needs to be one. Obviously

00:12:00   you can say a lot of similar things about the watch, honestly. But I think the TV is

00:12:03   even more limited because it's like this fixed thing in your house that you're accessing

00:12:06   through this distant remote with very little interaction possible and you just kind of

00:12:12   want to sit back and watch TV or play a game. So I think if you're a game maker, the case

00:12:16   is fairly compelling to, you know, if you can get your game ported to the Apple TV without

00:12:21   a whole ton of work, it is almost certainly worth doing that. But if you are pretty much

00:12:26   any other kind of app maker besides a TV content producer, I think you can safely avoid it

00:12:32   for now. Our sponsor this week is Pingdom. Start monitoring your websites and servers

00:12:38   today with Pingdom. Go to Pingdom.com/Radar. You get a 14-day free trial, and when you

00:12:43   use offer code radar at checkout, you get 20% off your first invoice. Pingdom is focused

00:12:47   on making the web faster and more reliable for everyone who has a site or runs a service.

00:12:51   They offer powerful, easy-to-use tools and services for monitoring your site and its

00:12:56   performance. For example, you can monitor a server, a database, an entire website, and

00:13:00   such a breeze to do it. They use more than 70 global test servers that emulate visits

00:13:04   to your site, checking its availability as often as every minute. And they give detailed

00:13:08   performance metrics. They can alert you when it's down after one minute. And of course,

00:13:13   you can customize that if you just have a flaky site and you already know that. But

00:13:17   they can alert you immediately or after a certain period of downtime or with certain

00:13:20   thresholds being crossed or if a certain string doesn't appear on the page, like a string

00:13:24   saying everything's okay or your footer or whatever else. It is incredibly useful. I've

00:13:28   I've used Pingdom now for what, seven years was it?

00:13:32   - Something like that, yeah, and I think I'm six years,

00:13:34   I'm just behind you on that.

00:13:35   - Yeah, I mean, it's such a good service

00:13:37   for monitoring your stuff, and anybody else's stuff too.

00:13:39   Like, we used to use it to monitor changes

00:13:41   to the WWDC site back when you had to rush in

00:13:43   and get tickets, you can monitor any URL,

00:13:45   you don't have to own it.

00:13:47   It's a really great service, we love Pingdom,

00:13:48   I love Pingdom, check it out today.

00:13:51   Go to pingdom.com/radar, and use code radar

00:13:56   to get 20% off your first invoice.

00:13:58   Use Pingdom.

00:13:59   You should not learn that your site is down

00:14:01   by people telling you on Twitter.

00:14:02   You should already know, and you should be fixing it

00:14:04   before anybody sees it.

00:14:05   Thanks a lot to Pingdom for sponsoring our show.

00:14:08   - So the other platform that I think

00:14:10   seemed like it made sense to just briefly touch on

00:14:13   is macOS, and macOS is an interesting platform

00:14:17   in so far as I use it constantly,

00:14:20   but I don't develop for it.

00:14:22   I develop on it, and so there are a variety

00:14:25   of interesting changes happening to macOS.

00:14:27   name, it has a new file system, and there's a few other user-facing things, but the only

00:14:34   thing that actually caught my attention in this WWDC on the Mac that I think I'm excited

00:14:39   about as a developer is the new console app, which is a bit of a low-level thing, I suppose,

00:14:46   to be excited about. But I got a chance to play with this when I was in WWDC, and it

00:14:51   It is going to be extraordinarily useful to be able to keep track and diagnose problems

00:14:57   when I'm debugging to have the new console app on Mac OS Sierra.

00:15:02   Because essentially the thing that it can now do, and this is part of this whole new

00:15:06   re-architecting they've done of the way console and logging works in the various platforms,

00:15:13   but is you will be able to get the logs from your devices.

00:15:19   So like from your watch or your phone or your iPad,

00:15:23   streamed to your Mac if you have a debug session,

00:15:26   if you have a sort of a development session in active.

00:15:29   And once they're in the console app,

00:15:31   you can start to do clever and interesting things with them.

00:15:34   Like you can start to filter them down

00:15:36   based on particular keywords,

00:15:37   or what I find this is really hopeful

00:15:41   for me in watch development,

00:15:42   where watch development can get really, really annoying

00:15:46   because a lot of the things that you're trying to do,

00:15:49   you don't want to be connected to Xcode

00:15:52   while they're happening.

00:15:53   So all the background refresh stuff.

00:15:55   You want it to be running off on its own

00:15:57   and then be reporting results as it goes.

00:16:00   And you want to see, OK, every 15 minutes

00:16:02   it woke up and refreshed itself.

00:16:05   So right now what I end up doing is I have my iPhone connected

00:16:09   to my watch, connected via Lightning port,

00:16:11   and then Xcode open to the Devices tab.

00:16:14   And then I have the full and complete console log from the watch shown there.

00:16:19   And then I need to go through and take that file, save it to a disk, run it through grep

00:16:24   to find the various relevant things and kind of go through it.

00:16:27   It's a bit of a nightmare.

00:16:28   In the new console, you'll be able to do that much more straightforwardly.

00:16:30   I can just say, "Show me messages from my app from my watch."

00:16:35   And that'll just stream live and I don't have to fuss with grep or anything like that.

00:16:39   So that's kind of exciting, kind of nice, very low-level and straightforward.

00:16:43   but I almost missed it in the announcements

00:16:45   that that was coming.

00:16:47   But other than that, I didn't see anything in it

00:16:49   that was really exciting or interesting to me.

00:16:51   I was like, yep, hopefully at this point,

00:16:53   all I want from the Mac is for it to be stable, reliable,

00:16:56   a place that I can sit down, open Xcode, and get to work.

00:16:59   And I think macOS Sierra will probably be that,

00:17:03   and so I'm happy.

00:17:05   - Yeah, I mean, as a user, it seems I'm pretty happy with it.

00:17:08   As a developer, I am a Mac developer slightly,

00:17:13   in that I did recently write a Mac app called Quitter,

00:17:16   and now I'm working on another one

00:17:18   for podcast post-production utilities, basically.

00:17:22   But because I'm such an elementary-level Mac programmer,

00:17:28   imagine if you were learning iOS development,

00:17:32   and you started learning iOS development in March.

00:17:36   And that was the first time you ever did it.

00:17:39   Whatever was announced at WBC wouldn't really be

00:17:42   that important to you because you were at such an elementary level that you still need

00:17:48   to learn the basics that were announced five, ten years ago, if it was that old. So that's

00:17:53   kind of where I am with macOS development, where I'm still using the basic stuff and

00:17:59   any new things they introduce to the Mac. First of all, the Mac API doesn't change

00:18:03   much these days anymore because it's much older and has matured and the rate of change

00:18:09   much slower than an iOS, but whatever they would change

00:18:13   would be so far above my head unless they radically

00:18:16   revamped AppKit, which I have doubts on whether

00:18:19   they will ever do that.

00:18:21   So it's not really relevant to me, whatever they change.

00:18:25   I don't even know what they change, but whatever it is,

00:18:26   it's almost certainly not relevant to me,

00:18:30   except for stuff that's shared with iOS.

00:18:33   So as a developer, cool.

00:18:35   I love that there's no App Store.

00:18:36   Let's move on.

00:18:37   (laughs)

00:18:38   So I guess the last thing to talk about for major WWDC announcement areas is Swift. Now,

00:18:47   Swift is interesting because ever since it went open source, which was what, last fall?

00:18:54   Was that it?

00:18:55   It was right before the end of the year, I think. Because I think it was because they

00:19:00   had said—what sticks in my head is that they had said, "We're going to open source

00:19:03   Swift this year," and then they ended up open sourcing it in December, like towards

00:19:08   the end of December, but it was along those lines.

00:19:10   - Right, so ever since Swift has been open sourced,

00:19:14   there's, you know, we've seen the roadmap,

00:19:17   like they've developed the vast majority of it in the open,

00:19:20   so we've seen the roadmap and we know what's coming.

00:19:23   In many cases, the community has input

00:19:25   and influences what's coming, which is great.

00:19:28   So there wasn't really any kind of surprise

00:19:31   to announce at WWDC, except maybe the Playgrounds app

00:19:34   for iPad, but, and that's big and that's good,

00:19:37   but I don't think it's really that relevant to existing Swift developers. What is new

00:19:41   in Swift?

00:19:42   >>

00:19:43   So I think the biggest things that—I'm by no means a Swift expert, but the biggest

00:19:48   goals as best I could understand for Swift 3 was to get to a place where they would be

00:19:54   able to maintain source compatibility going forward. Because in the first versions of

00:20:00   Swift, Swift 1 and Swift 2, those jumps, and from 2 to 3 in fact, there have been a variety

00:20:06   of source-breaking changes that I hear from a variety of people who are Swift developers,

00:20:11   where something new comes out and sometimes there's tools to help them with this, but

00:20:16   then they need to go and sit down for a day and fix all the things to make it not broken

00:20:21   anymore, which is a little bit scary. If you imagine if you had a project of any kind of

00:20:28   significance and you go through this massive refactoring process, to have confidence that

00:20:33   at the end of it, like everything works in the way that you expected it to work.

00:20:37   So as best I understand, for Swift 3, their goal was to get all of those kinds of changes

00:20:44   done with at once.

00:20:45   And so now, from Swift 3 going forward, there should be very few things that would break

00:20:51   source compatibility going forward.

00:20:53   There may be things that change, you know, I believe the binary format and things is

00:20:59   not stable yet and things like that, but that doesn't really matter practically.

00:21:03   It's an important thing, but in general, that's more of a tooling problem than a developer

00:21:10   problem.

00:21:11   There's certainly some overlap there, but in general, that's fine.

00:21:13   Then now in Swift 3, they've gone through and they've done all these things, like they've

00:21:16   changed the way things are named, so they got rid of a lot of prefixes, they did some

00:21:22   really cool and clever things to take C APIs and make them look swifty, which I thought

00:21:28   was really clever. So like now if you're working with core graphics, which even felt awkward

00:21:34   in Objective-C, now in Swift it actually looks really Swift, and it looks really clever and

00:21:40   clear to be able to, you know, you take your context and you call methods on it in a way

00:21:44   that you would expect from Swift. And I believe all it's doing is under the hood, it's taking

00:21:49   your Swift syntax and like unwrapping it and turning it into this, the old sort of very

00:21:56   verbose C syntax, but it's doing things like that. So it's just trying to make the platform

00:22:02   make it a really nice, clear and concise language to start writing in. And going forward, I

00:22:08   think the big things they're expecting to they're working on for like, I don't even

00:22:12   know if it's 3.1 or Swift 4 or whatever the roadmap will go get towards like they're

00:22:17   going to make the binary more stable, work on generics, slightly improved concurrency,

00:22:23   I think is something that I remember being on the roadmap. But in general, Swift seems

00:22:27   to be in a pretty good place after, you know, it's two years in from when it was first announced.

00:22:34   I think it finally seems to have entered into the slightly mature phase of its life, where

00:22:41   this is probably a reasonable time to sort of start diving into it, because what you're

00:22:47   you're learning now is unlikely to be, sort of,

00:22:51   need to be unlearned a year from now.

00:22:54   - I really should dive into it.

00:22:56   I just keep wanting to do things faster

00:22:59   and with less time investment,

00:23:01   and so I keep falling back to Objective C,

00:23:03   but I do admit I am tempted to jump into Swift this summer.

00:23:06   I just haven't quite done it yet.

00:23:08   Do you plan on anything with that?

00:23:10   - So, shockingly, yes.

00:23:11   This is actually one of these,

00:23:14   So this last week, I decided that I was going to learn Swift, and I sat down with the Swift

00:23:23   developer book in iBooks, and I read the first sort of third of it, which is essentially

00:23:29   the language overview, and I'm delighted to say that I am going to be—I'm a little nervous

00:23:35   in saying it, but I think I need to say it in order to make it actually happen—that

00:23:38   I'm going to write my next app in Swift.

00:23:42   And if you are a follower of my work, I tend to release a new app every summer, at least

00:23:47   one.

00:23:48   And so the next app I write is going to be in Swift.

00:23:52   All right, congratulations!

00:23:54   Earlier this week, I think on Tuesday, I went into Xcode, you know, "File a new project,"

00:24:00   and for the first time ever changed the language dropdown from Objective-C to Swift.

00:24:07   And so I've been spending the last few days just kind of digging into how I would actually

00:24:12   write an app in Swift.

00:24:14   And it's weird.

00:24:15   It's taken a lot of like, it's just this really strange feeling.

00:24:20   And it almost makes me think of what I imagine people who switch to like, try and learn a

00:24:24   Dvorak keyboard, their experience where it's like, it feels really familiar, like typing

00:24:29   feels familiar.

00:24:30   But it's like, I'm writing Swift and it looks familiar.

00:24:34   Like I know all the API's.

00:24:35   It's not like I'm doing something new that I had to learn.

00:24:38   I know how UIKit works, I know how HealthKit works, I know how all these frameworks work,

00:24:43   but I have no idea how to call it.

00:24:45   And so I keep running off to Google and being like, "How do I do this in Swift?

00:24:50   How do I do this in Swift?"

00:24:51   And it keeps learning the syntax and exactly all the idioms for it.

00:24:57   But overall, it's been pretty cool.

00:25:00   It's an interesting language because I think ultimately Objective-C is a better fit for

00:25:06   my mentality than Swift is.

00:25:09   I think I like Swift as a language and I can see its utility.

00:25:14   The thing that always kind of frustrates me with it, at least so far, and I'm certainly

00:25:18   a bit of a noob with it at this point, but it values correctness higher than I would

00:25:27   value correctness, which maybe makes me a bad programmer. But the way I think about

00:25:32   a lot of things is I don't write code that has these elaborate error checking things

00:25:40   in it. I tend to do best effort and then just throw up my hands. It's sort of the approach

00:25:46   that I'll often take in my apps. And that's just the nature of the way that I program.

00:25:50   I go for quick, and I'm experienced enough that I know how to not write horrible code

00:25:56   that's going to be very problematic. And I mean, I would, this is the way that I built

00:25:59   my apps. And if you look at my apps, I wouldn't think you would say that they're, you know,

00:26:04   like poorly, poorly designed or created. But in Swift, there's all of these things that

00:26:09   you just have, you can't get around, like everything has to be super correct and type

00:26:12   safe and the whole thing with optionals and like, is this nil? Or is it not? No. And you

00:26:17   have to always check. Whereas in Objective C, I can be like, I know it's not or I know

00:26:21   that if it is nil, I don't care. And there's a philosophical difference there that I have

00:26:28   to give into and be like, "Okay, no, it's fine that I have to be explicit about all

00:26:33   these things," which I imagine in a team environment would be huge, that you don't

00:26:39   have all of this meta information that is just stuck in my brain about how this function

00:26:45   works because I'm the one who wrote it and I'm the only one who's ever going to see

00:26:49   it. Whereas if you work in a team environment, it might be more important to have everything

00:26:53   like, it's almost like self-documenting in a way where all the conditions and things

00:26:59   have to be so much more explicit. But overall, I like it. It's been weird. I like that there's

00:27:05   a lot less code, it feels like. Like I have more code per line, because I often have to

00:27:10   do a lot of extra kind of like casts and little checks. But overall, it seems like there's

00:27:17   no header files and things. Overall, the lines of code count goes down, and so it's been

00:27:23   fun. And I guess we'll check in in a couple of months at the end of the summer when I've

00:27:27   actually written this app, and it's not just this terrible, basic, learning my first UI

00:27:35   kit program to see if this experiment succeeds. But so far, so good, and I recommend trying,

00:27:43   because I think this seems like the right time. One of our first episodes was about

00:27:48   when we were going to get into Swift, and I think I remember we were saying, "Well,

00:27:53   we want to do it when it's stable and it's a reasonable thing to tackle." And this

00:27:58   felt like the right time for me, so I've taken the plunge.

00:28:02   All right, well congratulations. Now I'm the last one, so I'll probably take the

00:28:08   point myself soon, but I'm not quite there yet. Probably later this summer. It's always

00:28:14   like the year of desktop Linux. I'm always going to write Swift starting next month.

00:28:18   All you need to do is write a new app, right? You need to just broaden your horizons, think

00:28:25   of something new to make, and then just do that scary thing of changing the dropdown

00:28:29   from Objective-C to Swift, and you can go from there.

00:28:33   Yeah, I'm curious, do you think you're going to be writing all or mostly Swift from

00:28:38   this point forward, even in existing code bases?

00:28:41   I doubt it.

00:28:43   I expect to be writing Objective-C in my existing products and Swift in my new things, I think

00:28:48   is probably what I expect to do.

00:28:51   The context shifting has been—the little bit I've done so far where I would look

00:28:56   at the way I did something previously in Objective-C and then try and Swiftify it, it really hurts

00:29:01   your brain to—they're so similar but so different that if I think I'm going to want—if

00:29:07   I'm working on a particular project, I want to just be in the Objective-C mindset, or

00:29:11   if I'm in this one, I want to be in the Swift mindset. That jumping back and forth between

00:29:15   them I think would just drive me insane. Like the number of times I do ampersand quote for

00:29:22   a string or things like that, where it's like all—or add a semicolon to the end of

00:29:26   a line, which are just habits I have from a JFC, but in Swift I don't need them, and

00:29:32   so I think I would just drive myself crazy jumping back and forth. So I have this one

00:29:36   new project, it's one I'm going to work on in the summer, and it'll be in Swift,

00:29:40   and we'll see how it goes.

00:29:41   Awesome. All right, well we're out of time this week. Thank you very much for listening,

00:29:45   everybody, and good luck, Dave, with your new Swiftification.

00:29:48   Thanks.

00:29:49   And we'll talk to you next week.

00:29:51   Bye.

00:29:51   [BLANK_AUDIO]