Under the Radar

166: API Wish List


00:00:00   Welcome to Under the Radar,

00:00:02   a show about independent iOS app development.

00:00:04   I'm Marco Arment.

00:00:05   - And I'm David Smith.

00:00:06   Under the Radar is never longer than 30 minutes,

00:00:08   so let's get started.

00:00:09   - So WWDC is next week.

00:00:12   We are super, super excited.

00:00:14   I know I am.

00:00:15   This to me, this is like the biggest event

00:00:17   of the year for me,

00:00:18   'cause I don't watch any sports or anything.

00:00:20   This to me, this is my Super Bowl.

00:00:21   This is everything.

00:00:22   This is everything Apple's gonna lay out

00:00:25   for the next year in software.

00:00:27   It affects so much of what our jobs will be.

00:00:30   Sometimes they tease some new hardware too,

00:00:32   but this is mostly a software-focused event,

00:00:34   and so I am just so excited for this.

00:00:37   - Yeah, and it's like Apple Friends Thanksgiving,

00:00:40   where we all get together in one place

00:00:43   and get to see each other,

00:00:45   which is also kinda nice.

00:00:46   - Yeah, that's true.

00:00:47   - It is both the spectator spectacle of it.

00:00:51   There's the work aspect that just dictates

00:00:53   what I'm gonna do,

00:00:54   how busy I am gonna be this summer.

00:00:56   If I'm, you know, how much I can,

00:00:58   it's like work on new stuff or be changing old stuff,

00:01:00   and then plus, yeah, it's just being,

00:01:02   spending a week in San Jose with all my Apple friends.

00:01:05   I think that worked out.

00:01:06   This is the 11th year I'll be going to WWDC,

00:01:11   which is kind of amazing when I think about.

00:01:13   Like, it's, you know, I've been going for essentially,

00:01:16   you know, basically as long as my son is old,

00:01:18   and like he's pretty old.

00:01:20   He's in upper elementary school now,

00:01:21   so it's like WWDC has been a part of his entire life,

00:01:24   and as a result, it's kind of an important part

00:01:27   of my life as well.

00:01:29   - Yeah, that's great.

00:01:30   Yeah, coincidentally, this is also my 11th year there.

00:01:32   And yeah, I just love it so much.

00:01:35   And so anyway, we decided this week,

00:01:37   you know, a lot of our podcasts and everything

00:01:39   are doing like predictions and everything

00:01:41   for what might be announced in iOS,

00:01:42   what kind of hardware might come out.

00:01:44   We're gonna focus our WWDC episode,

00:01:46   or our pre-WWDC episode,

00:01:47   on our wish list for what we want from an API perspective.

00:01:53   So as developers, like, what kinds of API additions

00:01:56   or changes are we looking for from the platforms

00:01:58   to make our jobs easier, to make our apps better, et cetera?

00:02:02   - Yeah, and I think too, it's fun for us to look at,

00:02:04   yeah, perhaps at a lower level than many

00:02:07   of the other tech podcasts might look,

00:02:08   because obviously that's what we do.

00:02:10   We get more into the weeds,

00:02:11   and at a bit more of a technical level.

00:02:13   But I'm kind of imagining, like, every year

00:02:16   at the platform State of the Union,

00:02:18   which is the big event after the, you know,

00:02:20   sort of there's the keynote in the morning,

00:02:22   and they have, like, a two-hour break for lunch,

00:02:24   and then they have the platform State of the Union.

00:02:26   And what I always find really fascinating is during that,

00:02:29   there'll be certain points when people are cheering

00:02:32   and, like, losing their minds over ostensibly really small

00:02:36   or minor changes to things.

00:02:38   Like, there'll be some tweak in Xcode

00:02:40   that everyone goes wild for,

00:02:42   and, like, those are the kind of things

00:02:43   that I'm kind of trying to think about,

00:02:45   like, what would I be cheering for

00:02:47   if they announced or changed or tweaked

00:02:49   and announced to the platform State of the Union?

00:02:51   Like, this isn't the stuff that they're gonna announce

00:02:52   in the morning, which is all the big user-facing features

00:02:54   and cool stuff like that.

00:02:55   Like, this is much more, you know, for us, for developers.

00:02:59   - So for me, I think my very first thing

00:03:01   is something that, you know,

00:03:03   a lot of my wishes are more specific to Overcast

00:03:05   and my specific needs,

00:03:06   but I think this one would be one of those things

00:03:08   that would get literally every single person

00:03:11   in the audience to cheer.

00:03:12   I want to eliminate the need

00:03:15   for as many of my UITableView hacks as possible.

00:03:19   - Yes.

00:03:21   - I feel like UITableView hacks

00:03:23   have been the bedrock of iOS development

00:03:25   since day one, 10 years ago,

00:03:27   or whatever it was, 11 years ago now, whatever it was.

00:03:30   We all have had to do crazy hacks

00:03:32   to get UITableView to do what we want,

00:03:34   and over time, they have made it better.

00:03:36   They have certainly, like, reduced the amount of hacking

00:03:40   we need to do for common things,

00:03:41   but there's still a lot of common things

00:03:43   that end up being really hacky in UITableView,

00:03:46   and so one thing I think, like, you know,

00:03:48   right on top of this list is

00:03:50   there needs to be better and more straightforward support

00:03:53   for auto layout everywhere in UITableView

00:03:56   and UICollectionView.

00:03:57   Right now, like, there's some places you can use it,

00:03:59   there's some places you kind of can't

00:04:00   or it's really hacky to use.

00:04:02   We need better auto layout support

00:04:03   in TableView and CollectionView.

00:04:05   We also, like, so many apps do things

00:04:08   that are a little bit more dynamic.

00:04:10   Like, in Overcast, I have basically an expanded state

00:04:14   for a table cell, so when you select an episode in a list,

00:04:16   it expands by default and presents buttons

00:04:18   along the bottom, kind of like Tweetbot

00:04:20   does the same thing, I kind of stole it from them.

00:04:21   Like, you know, you tap it and it expands,

00:04:24   and so therefore it has to change sizes

00:04:26   depending on its state, so that is really hacky right now.

00:04:29   I would love to make that less hacky.

00:04:32   Also, the entire, the way the drag and drop system

00:04:35   interacts with CollectionViews and TableViews,

00:04:38   especially TableViews, is really weird and hacky,

00:04:41   and it basically requires a lot of code

00:04:45   and state management and weird edge case handling

00:04:49   in our view controllers, and I would love

00:04:52   to get rid of that code.

00:04:53   I would love for the platform to be able

00:04:54   to do more of that with less hacking,

00:04:56   and there's also an extra reason for this.

00:04:59   You know, obviously, like, the big thing

00:05:01   I'm hoping for, really, is Marzipan,

00:05:03   and maybe we'll get to that, but when you're dealing

00:05:05   with the same code base going between these two platforms,

00:05:09   one of the rumbly rumors we've heard

00:05:10   is that there's gonna have to be some kind of

00:05:12   dealing with, like, selection.

00:05:14   You know, if you think about, like, how a TableView

00:05:18   or a CollectionView would work on the Mac,

00:05:20   you need to deal with things like keyboard navigation,

00:05:23   having, you know, up and down arrows,

00:05:25   navigating up and down the list.

00:05:27   What if you hold down Shift and you select down,

00:05:29   and you can select multiple things at once

00:05:30   using the keyboard or drag a box around them

00:05:33   using the mouse, all of these things are gonna require,

00:05:36   I think, more use that conforms to the system APIs

00:05:40   and less hacking to make it work right,

00:05:42   especially if you want the same code to run on iOS and Mac,

00:05:45   and so the more the built-in functions can do

00:05:49   without us having to write all these hacks,

00:05:51   the better, not only for us and our apps and our sanity,

00:05:54   but also the better sharing between the platforms

00:05:56   that can be achieved that way,

00:05:57   like, especially as this stuff comes to Mac.

00:05:59   - Yeah, and I feel like, too, the UI TableView,

00:06:01   it's this weird, it's like, they gave us UI CollectionView,

00:06:04   which in many ways, you could say, like,

00:06:06   well, that's the super flexible, like,

00:06:07   you can write a complete layout manager if you want,

00:06:10   and, like, you can do everything you want with that,

00:06:12   like, why don't you just roll your own

00:06:13   if you sort of want to go down that road,

00:06:15   but I feel like there is this,

00:06:16   the TableView is such an essential part of iOS development

00:06:21   that there is a benefit for the platform

00:06:24   if it got a modern take on its, like,

00:06:28   most essential widely used control,

00:06:31   and I think that would be beneficial to the platform.

00:06:33   Like, it's kind of amazing in many ways

00:06:34   that many of the behaviors and attributes of UI TableView

00:06:38   are there from, like, iPhone OS 2.0,

00:06:43   that the editing state and the, like, red buttons that appear

00:06:46   and all of the, there's lots of things that feel kind of old,

00:06:51   for lack of a better word, like, they still work,

00:06:53   and it's kind of amazing how this API has been able to,

00:06:57   you know, sort of carry itself forward for so long,

00:07:00   but yes, I would love for it to see kind of a,

00:07:04   a modernization of that,

00:07:06   and that I think would definitely make sense

00:07:07   as they sort of seek to make the platform work

00:07:09   across more computing devices and for a TableView

00:07:13   or a CollectionView to be used in more places

00:07:15   to kind of standardize in a, you know,

00:07:18   in a better way with a better API

00:07:20   that just lets us do a lot of these things

00:07:21   that I think are very standard behaviors.

00:07:23   Like, having TableViews that expand and contract

00:07:25   is a very common behavior now,

00:07:27   making that a native experience

00:07:29   rather than something weird with hacks

00:07:31   that inevitably leads to these weird states

00:07:32   where, you know, you have some row that is,

00:07:35   it's like, its height is the expanded height,

00:07:38   but it doesn't have its expanded content

00:07:39   because something didn't get updated correctly.

00:07:41   Like, making that a first class experience,

00:07:43   I think, would be a huge win.

00:07:46   - And it's hard to think of an, of a API

00:07:49   or, you know, like a class on the OS

00:07:52   that is more frequently used in apps than that.

00:07:54   Like, pretty much any app that is not a game

00:07:57   and even many games, like, almost every app,

00:08:00   especially non-games, have a TableView somewhere in them.

00:08:03   If you talk about, like, bang for the buck,

00:08:04   like, how much value can you give the developer community

00:08:07   in improvements to certain APIs?

00:08:08   Like, it's hard to find a bigger target

00:08:10   than UITableView for the combination of

00:08:13   quite how frequently and extensively it is used

00:08:17   and how often we have to resort to bad hacks

00:08:19   to get stuff done.

00:08:20   So, anything that can fix that, I think,

00:08:22   will have a huge payoff in the community

00:08:24   and I certainly want it myself as well.

00:08:26   - So, top of my list of these kind of changes

00:08:29   is a improvement or change in app icons

00:08:34   and the way that we provide them to the system.

00:08:37   As it stands right now, like, especially if you

00:08:40   just sort of get into alternative icons,

00:08:42   like, we provide the system with something like

00:08:45   20 different sizes if you support both the iPhone

00:08:50   and the iPad, of different sizes of the iPad.

00:08:54   Some of them are, like, shockingly similar.

00:08:56   Like, you'll have two of them that differ only

00:08:59   by one or two pixels, but for some reason

00:09:01   we have to provide both of them.

00:09:03   If you provide alternate icons, like, right now,

00:09:05   some apps have up to, like, 16, 17 alternative icons

00:09:09   and so I have 16, 17 times the 20 icons,

00:09:12   like, it just, something seems wrong there.

00:09:15   And I, you know, and we're writing to,

00:09:19   like, I always kind of, you can tell that you're using,

00:09:21   they're kind of using these old APIs that really

00:09:25   aren't intended for the modern uses

00:09:26   and the flexibility we have with icons,

00:09:28   where, like, you have to specify the includes gloss key

00:09:33   still when you specify, like, app icons.

00:09:35   One of the keys you have to specify in it is that, like,

00:09:38   which is something that if you remember way back in the day,

00:09:40   you could either bake in the gloss effect

00:09:43   that you were supposed to have on your icon,

00:09:44   where it was kind of, you know, shaded light on the top

00:09:47   and then darker on the bottom,

00:09:49   or the system would apply that for you.

00:09:52   And, like, that hasn't been in, you know,

00:09:53   been in iOS for years, but it's still kind of

00:09:56   part of the system.

00:09:57   I would love to see some kind of modernization within that,

00:10:01   that I'm not having to sort of bake and export

00:10:03   just literally hundreds of these files,

00:10:06   which is both, just seems silly from a,

00:10:08   sort of size perspective that, you know,

00:10:12   I'm including these assets that are so similar

00:10:15   and are largely just scaled versions of each other,

00:10:18   like, for them to move to some other file format,

00:10:20   potentially, or just doing something better here.

00:10:23   And I don't know exactly what that is.

00:10:25   That's up to them to decide, but, you know,

00:10:27   if I can provide, like, an SVG and then I can overwrite it

00:10:30   for particular ones if I care, or something like that

00:10:33   would be a massive improvement and just make the process

00:10:37   of kind of handling app icons and alternative icons

00:10:41   much better, 'cause especially, like,

00:10:43   alternative icons seem to be something that

00:10:45   customers just really like.

00:10:46   Like, I've gotten a lot of positive reaction to them,

00:10:50   but the actual process of managing them

00:10:51   just is super cumbersome, so a very low-level API change

00:10:55   that I would love to see.

00:10:56   - And it also, like, that would also just improve

00:10:58   whenever, you know, every fall comes around

00:10:59   and there's new devices that come out

00:11:01   and there's frequently new screen sizes

00:11:03   or new form factors or whatever else,

00:11:05   and so every time one of those changes,

00:11:06   or every time Apple just decides that the new OS

00:11:09   has a new design for, like, let's say, like,

00:11:12   the icon in a notification is now two pixels bigger,

00:11:15   and so we have to then create those icons again

00:11:18   at that new size, and, like, so there's frequently a need

00:11:21   for not only are there already a ton of sizes,

00:11:24   but there's frequently a need for new sizes,

00:11:26   and so that would just, like, it would just reduce

00:11:29   all that busy work that we have to do

00:11:31   fairly frequently in the Apple world.

00:11:33   So yeah, I agree, that's a good one.

00:11:34   We are sponsored this week by Linode.

00:11:37   With Linode, you can instantly deploy and manage

00:11:39   an SSD server in the Linode cloud.

00:11:41   You can get a server running in just seconds

00:11:43   with your choice of Linux distro,

00:11:44   resources, and node location.

00:11:46   It doesn't matter if you're working in your first server

00:11:48   or deploying a complex system.

00:11:50   Linode is where to go.

00:11:52   I have, you know, for my blog, I have one server,

00:11:55   and that's its own account, and then I have,

00:11:57   for Overcast, I have, I think, about 25 servers now,

00:12:00   and everything in between I've seen and used,

00:12:03   and it is just wonderful.

00:12:04   Linode is perfectly scaled, whether you want just one server

00:12:08   for a simple thing, or whether you're running something

00:12:11   very complex that has high needs, high demand,

00:12:14   Linode is great for all of it.

00:12:15   I've been with them for about eight years now,

00:12:17   and I just cannot say enough good things about Linode.

00:12:20   They offer the fastest hardware network,

00:12:21   they have outstanding customer support

00:12:23   if you ever need help.

00:12:23   It is super easy to launch a Linode cloud server.

00:12:26   They also now have block storage,

00:12:28   they have new data centers coming up all the time,

00:12:30   and they're hiring.

00:12:32   If you wanna learn more and check out what they're hiring,

00:12:33   go to linode.com/careers.

00:12:36   Now on their hosting side, they have amazing pricing.

00:12:39   This is one of the reasons I've been with them for so long.

00:12:41   They're the best value I've ever seen in web hosting,

00:12:43   especially on an ongoing basis.

00:12:44   So their plans start at just $5 a month.

00:12:48   That gets you an instance with one gig of RAM,

00:12:50   and they have all sorts of resources and specialties

00:12:53   above that if you have bigger needs than that.

00:12:55   As a listener of this show, you can go to linode.com/radar

00:12:59   and use promo code radar2019 to get $20

00:13:02   towards any Linode plan.

00:13:04   So on the one gig plan, that could be four months free.

00:13:06   And with a seven day money back guarantee,

00:13:08   you have nothing to lose.

00:13:10   So give Linode a try today.

00:13:11   That's linode.com/radar, promo code radar2019

00:13:15   to learn more, sign up, and make the most

00:13:17   at a $20 credit.

00:13:18   Our thanks to Linode for their support of this show

00:13:20   and all of Relay FM.

00:13:22   So my big next thing, you know,

00:13:24   obviously, I mean, let's just say Marzipan, right?

00:13:26   Like, we both want Marzipan, we're looking forward to it.

00:13:29   We've done episodes on that already,

00:13:30   so I don't think we need to cover it much here, right?

00:13:32   - Yeah, no, I mean, it is, and I think it overhangs

00:13:36   so much of what we're kind of expecting

00:13:37   to be happy coming this year.

00:13:39   It is both that technology and that platform

00:13:43   and what that's gonna mean, as well as, I think,

00:13:46   I have tremendous curiosity for all of the little, like,

00:13:49   like effects that it's gonna have that ripple out

00:13:52   through the other platforms.

00:13:53   Because lots of these things are suddenly going to have,

00:13:57   like, there's gonna be different changes to,

00:13:58   like we're seeing with UI table view,

00:13:59   or you even start to think about all the basic controls,

00:14:01   like sliders and switches and all of, you know,

00:14:05   these things that are designed with touch in mind,

00:14:07   the tap targets, like, there's so many changes

00:14:09   that are gonna kind of ripple out into all the APIs

00:14:11   in order for this to be a platform that kind of makes sense.

00:14:14   And so it's, you know, I think that's definitely, like,

00:14:17   that's the shadow that overhangs all of the W3C this year.

00:14:21   - Exactly.

00:14:22   So more specifically than that,

00:14:24   I want to eliminate watch connectivity.

00:14:29   - Yes.

00:14:30   - This is the framework.

00:14:31   Now, I have a lot of wishes on watchOS.

00:14:34   I wish for the entire replacement of watch kit

00:14:35   with actual native UI that Apple uses,

00:14:37   but that seems like it's too much to ask.

00:14:40   I want custom watch faces.

00:14:41   That seems like it's too much to ask.

00:14:42   So I'm going smaller.

00:14:43   I want to get what I need to significantly reduce

00:14:47   or eliminate my use of watch connectivity,

00:14:49   which is the framework there,

00:14:50   which is the framework that is used for the phone app

00:14:54   to communicate with the watch app and vice versa.

00:14:57   Watch connectivity causes me a lot of stress,

00:15:00   a lot of problems.

00:15:00   It is, for Overcast, it is the framework

00:15:02   that both communicates the state of the iPhone app,

00:15:05   if you're playing it and using the watch, like, as a remote,

00:15:08   it communicates back your button presses,

00:15:10   and it also is responsible for the file transfers

00:15:12   that happen between the phone and the watch.

00:15:15   And, you know, so if you have standalone watch playback

00:15:19   for Overcast, those file transfers happen

00:15:21   over watch connectivity, and this has been the source

00:15:23   of a lot of just shortcomings, bugs, performance problems,

00:15:28   bad behavior, confusion for users.

00:15:32   So often, watch transfer problems are only solvable

00:15:36   by, like, rebooting the watch on the phone,

00:15:39   and then they suddenly start working again.

00:15:40   Like, it's just a mess, and it's been a mess

00:15:42   since the Apple Watch first came out,

00:15:44   and so I don't think they're really putting

00:15:45   a lot of work into it.

00:15:46   I don't think it's going to ever be reliable,

00:15:48   so I want to get rid of it completely.

00:15:49   I want to, I want what it takes to have my Apple Watch app

00:15:54   only use watch connectivity, if necessary,

00:15:57   for the phone to watch communication,

00:16:00   and get rid of the file transfer aspect completely,

00:16:02   'cause that's the worst part.

00:16:03   So my goal here is to make the watch

00:16:06   a standalone app for local playback.

00:16:09   So it would communicate with Overcast sync servers itself,

00:16:12   it would be able to play and download

00:16:15   the files locally itself,

00:16:17   and that's, so what I need to do that,

00:16:20   basically, I need, like, you know,

00:16:22   reliable background downloading,

00:16:23   which I think it might already have,

00:16:26   but I need a few more things from my audio engine

00:16:28   to really work.

00:16:29   Like, for me to actually offer a good audio experience

00:16:31   on the watch, I really could use a few more audio APIs there

00:16:36   so that's what I really need,

00:16:37   and it could take pretty much any form,

00:16:39   like, it could take, you know, the low-level stuff

00:16:42   for decoding audio files, like EXD audio file,

00:16:45   audio file open, stuff like that,

00:16:46   or it can be higher level, it can be AV audio engine based,

00:16:50   but most of that is not on watchOS yet,

00:16:52   so that's what I want.

00:16:54   Give me what I need on watchOS

00:16:56   so that I can eliminate watch connectivity

00:16:58   as much as possible.

00:16:59   - Yeah, and I think the key thing in my mind

00:17:01   for what we need to replace or improve watch connectivity

00:17:06   is for it to not be so horrifically throttled.

00:17:10   Like, so many of its problems,

00:17:11   and the things that, like you said,

00:17:13   like, you know, having background file downloads

00:17:17   is something that exists in the system,

00:17:19   but the issue you have is that they are horrifically slow,

00:17:23   like, and incredibly inconsistent,

00:17:25   so it isn't like, like, if it was just always slow,

00:17:29   like, that would be one thing,

00:17:30   but sometimes it's really fast,

00:17:32   and sometimes it's really slow,

00:17:33   and it's very inconsistent as to what you're doing,

00:17:37   and sometimes the best advice, like, the advice we get

00:17:39   is like, put your phone, put your watch on the charger,

00:17:42   and then it will go faster, which, like--

00:17:45   - Which works about 2/3 of the time.

00:17:46   - It doesn't work every time, which is A, a problem,

00:17:49   and then two, it's, like, that's, why?

00:17:51   Like, the watch is very capable,

00:17:53   and I understand, I'm sure, it's like,

00:17:54   maybe it's battery life or whatever it is,

00:17:57   but it means that there are so many use cases and issues,

00:18:00   and like, your whole system with background file transfers

00:18:03   is because, like, file downloads are super slow,

00:18:06   and I ran into this with work I've done

00:18:07   where it's like, the funny thing is,

00:18:09   it's only because of watch connectivity that this is slow.

00:18:12   Like, because so everything is going through the watch,

00:18:16   and like, transfers over Bluetooth and WiFi on watches

00:18:21   are just super throttled, super slow,

00:18:23   and then the amusing thing is if you take,

00:18:26   if you go out with an LTE watch to somewhere with,

00:18:29   like, leave the phone behind, go out and walk somewhere else

00:18:31   that has no WiFi, all you have is LTE,

00:18:34   you can download from the internet at, like, full speed,

00:18:36   and you get, like, nice, blazing LTE data,

00:18:38   and it's like, why can I only get this in the situation

00:18:42   where I'm, like, farthest away from my phone,

00:18:44   and in this, like, very edge case situation?

00:18:47   Like, this should be the primary use case,

00:18:50   that if I have a file that I want, you know,

00:18:51   a user has said they want to move something

00:18:53   onto their watch, it should go at full speed,

00:18:55   and I understand there's battery life,

00:18:57   but like, I think it's, there's so many use cases

00:18:59   that are being held back in the watch because of this,

00:19:04   that it's, ultimately, it would be better for the platform

00:19:07   for battery life to be a little shorter,

00:19:09   but its utility to be dramatically better, and so--

00:19:12   - Exactly.

00:19:13   - Like, that is, I would love to say,

00:19:14   either say goodbye to watch connectivity,

00:19:16   or for it to just, if it worked in such a way

00:19:18   that I didn't notice it, then it's like, at that point,

00:19:22   okay, great, we can keep it, and it's fine,

00:19:24   but otherwise, yeah, replace it with something better,

00:19:26   or just do something to make it so that it isn't so painful

00:19:30   to move data back and forth between the watch and the phone,

00:19:33   and, you know, so, like, just, yeah, inconsistent is,

00:19:36   I think, to be-- - And, like, for me,

00:19:38   like, the number one thing it could do is give us a flag

00:19:41   on the file transfers to say only transfers over Wi-Fi,

00:19:44   because I think almost everything that it's doing

00:19:46   is power saving, trying to do as much transfer

00:19:49   over Bluetooth as possible, and only if Bluetooth

00:19:52   is not available, then it falls back to Wi-Fi or cellular,

00:19:55   and that, it seems to be that logic

00:19:57   that is causing most of the problems,

00:19:59   because Bluetooth is way, way slower for data transfer

00:20:02   than Wi-Fi and cellular, and so, most of the problems,

00:20:06   it seems to be related to that kind of power management

00:20:08   logic, whereas if they just let us, like, okay, look,

00:20:11   here's a file transfer, let us transfer it over Wi-Fi

00:20:14   if I say so, like, the user specified to do this, just do it

00:20:17   and if it offered us that ability,

00:20:18   that would solve a lot of problems.

00:20:19   - Yeah, and there's all kinds of, in the same way that I,

00:20:24   like, watch apps get special abilities when they're,

00:20:28   when they're a workout app, and, like, you ask for

00:20:30   an entitlement, and you, you know, sort of have,

00:20:34   when you're in that, then you can kind of elevate yourself

00:20:36   into a mode where suddenly you run all the time,

00:20:38   and you have way bigger thresholds and quotas,

00:20:42   and everything gets increased, like, make that part

00:20:44   of the system, too, that you ask for, like,

00:20:46   a file transfer entitlement that you kind of, you know,

00:20:48   that presumably they would vet and look at it

00:20:50   a little bit more closely when they're doing review,

00:20:52   to see, to make sure that you're doing it

00:20:53   in an appropriate way, that, you know,

00:20:54   it isn't every time in Overcast that you,

00:20:57   it's like that you're just constantly sending files over,

00:20:59   or, you know, completely destroying the battery.

00:21:01   I mean, I remember they used to do this with the iPhone,

00:21:03   that if you used to download too much data too quickly,

00:21:05   they would reject your app from the App Store,

00:21:07   like, that was a thing that they used to do,

00:21:08   you could do the same thing here,

00:21:10   but, like, make it this thing that you can say,

00:21:11   or it's a user state thing, that if, you know,

00:21:13   there's a way for a user, you know, to initiate this,

00:21:16   that if you start a transfer while the app is

00:21:18   in the foreground, then that gets extra ability,

00:21:22   versus something that is just purely happening

00:21:24   in the background, or whatever, but yes,

00:21:26   like, make this, make this not so crazy.

00:21:28   - All right, what's up next for you?

00:21:31   - So, I think I can follow along with the watchOS,

00:21:34   with something that I think, so I've given up hope

00:21:36   in many ways that it will have custom watch faces this year.

00:21:40   It seems unlikely.

00:21:42   I will always, I will continue to make them,

00:21:44   I continue to make watch faces, like I've made,

00:21:47   you know, since whatever, last fall,

00:21:49   when I kind of went on, like, this vision quest

00:21:52   of making watch faces, I continue to do it to this day.

00:21:54   Like, I have an idea, and I make it, and that's fun,

00:21:57   and I look forward to the day when that skill

00:21:59   will come back to actually be a useful thing.

00:22:01   But, what I would really like to see,

00:22:03   and I think is perhaps a more realistic change,

00:22:06   is a sort of dramatic improvement

00:22:09   to the flexibility of Clock Kit,

00:22:11   which is the complication system that we have in watchOS.

00:22:16   'Cause as it stands right now, it is something

00:22:18   that is clear, it was built, I think,

00:22:21   very much for the early, it's like,

00:22:23   for the complications back when, like,

00:22:27   time travel was a thing, that, like,

00:22:30   you did all the, you do all this stuff

00:22:31   with, like, dynamic timelines, and you specify data ahead

00:22:35   in the behind of the current time,

00:22:37   so that it can kind of do time travel back and forth,

00:22:40   and there's just all of these things

00:22:42   in the complication system that feel very,

00:22:45   I mean, it's like, just static.

00:22:48   And I understand there's a desire and a need

00:22:51   for it to be somewhat static, that because the data

00:22:54   needs to be immediately available to the user,

00:22:56   it isn't something that you can kind of,

00:22:58   as soon as the user is raising their wrist,

00:23:01   you call into the application and ask

00:23:03   for the current display, because that would take too long

00:23:05   to show that data to the user, and you don't kind of,

00:23:08   that's not the experience they necessarily want.

00:23:11   But there's so many things in Clock Kit

00:23:14   that I think could be better.

00:23:14   I mean, one that is just, seems really obvious,

00:23:17   is even if you had the same system you have right now,

00:23:20   but allowing apps to provide multiple complications

00:23:24   of a particular family or type, that's just something

00:23:27   that we just can't do right now.

00:23:29   So if a user, for example, wanted you to have two slots

00:23:32   on the modular face, where you have those rows

00:23:36   with three slots, and say you wanted to put two there,

00:23:39   like imagine you're a weather app, and you wanted

00:23:41   to be able to display both the temperature

00:23:44   and the likelihood of precipitation, for example.

00:23:48   Like, there's just something that you just can't do

00:23:50   right now, because for a particular complication family,

00:23:53   you can only export one value at a time.

00:23:57   It's like, that's a very minor change,

00:23:58   but I would love to see that, because there's so many things

00:24:01   that you can kind of imagine that you could make

00:24:03   that experience so much more rich for a user.

00:24:06   And similarly, I think if we can have just more types,

00:24:11   like I feel like so many of the complication types

00:24:15   are so limited and tied down, and use the weird

00:24:19   two-part image system, which I never really understood

00:24:22   why they did that, like vaguely for consistency,

00:24:25   where you can have only two colors at any time

00:24:29   in your images for anything other than the infograph types,

00:24:32   and one of them has to be white, and you can't have

00:24:35   transparency or anything like that.

00:24:37   There's all these strange limits that feel like,

00:24:39   you know, they're kind of holdouts from an earlier time

00:24:43   when Clock Kit was first getting started,

00:24:45   and when they had a different thing for it in mind.

00:24:47   Whereas I think now, complications are very primary,

00:24:51   if not the most primary interaction that a user has

00:24:54   with a watchOS app, and so that system could benefit a lot

00:24:57   from getting a lot, lot better.

00:24:59   - Going to a slightly larger view, my next thing is,

00:25:05   I would love, probably for Marzipan, probably for just iPad,

00:25:09   a three-column split view that we can use.

00:25:12   - Ooh, nice, yeah.

00:25:13   - Because when you look at like, you know, so many apps,

00:25:16   you look at the iPad versions, and they kind of need

00:25:19   a three-column split view, and when you think about

00:25:21   when they move to Mac, they're gonna really need

00:25:23   a three-column split view.

00:25:24   It's such a common interaction pattern among Mac apps

00:25:27   that, you know, we already have the two-column one,

00:25:29   it's fine, it's very limited, like the API for it's

00:25:32   very limited, there's rumors that it's gonna be improved,

00:25:34   but I haven't heard a single rumor saying that they're

00:25:36   gonna also have a three-column option, and I wish they would.

00:25:39   That's it, that's a nice simple one.

00:25:41   - And I think too, there's so many like, really cool,

00:25:45   flexible layouts of that type that you could imagine

00:25:48   and that people make, where you know, it's like,

00:25:50   in making it variable width, where you can change the width

00:25:53   of things dynamically or swipe in, like, there's so many

00:25:56   cool things, and I think many of these, you definitely see

00:25:59   it on the Mac a lot, but it does seem like something

00:26:03   that is kind of, just kind of an obvious need, and would,

00:26:08   yeah, it would be useful in so many cases, and like,

00:26:10   because iOS development is so often based on navigation

00:26:14   controllers, like, which is functionally, in some ways,

00:26:18   like multi-column layouts, like you're just pushing

00:26:20   from view to view to view, like it seems like such a,

00:26:23   it seems such an obvious thing for them to do,

00:26:26   and maybe even is, in many ways, it would be even better

00:26:28   if it wasn't just three, it was just, you know,

00:26:31   like multi-column layout, and you can decide however many

00:26:35   you want, and it'll just handle it, would be even better

00:26:38   in that score.

00:26:39   - That's a good point, yeah, because like,

00:26:40   'cause as you mentioned, there is a very close relationship

00:26:43   between navigation controllers and split views, like,

00:26:45   'cause so often the pattern is, you show in the right side

00:26:49   of the split view, the topmost controller in a navigation

00:26:52   stack, and if you collapse the app down to more of a phone

00:26:55   size, then it'll re-collapse onto a single navigation

00:26:58   controller, instead of having these two different sections,

00:27:00   and so a three-pane version has to do basically the same

00:27:03   thing of like, if there's room for one pane, you show it

00:27:05   in one big stack, if there's room for two, you show it,

00:27:07   you know, you show the last one on the right, et cetera,

00:27:09   and so, the same logic going to three, I think, would be

00:27:12   obvious, and a very easy thing to put into the system

00:27:16   split view controller, and the good thing is, like,

00:27:17   this is one thing that is fairly easy for third parties

00:27:20   to write, you know, we don't have as much, like,

00:27:22   we don't have any access to any private navigation controller

00:27:25   APIs that might be necessary to do some of this stuff

00:27:27   more gracefully, but we can do it, like, overcast split view

00:27:29   controller is 100% custom, it is not a UI split view

00:27:32   controller at all, it is totally custom, because I needed

00:27:35   some more of this control, but yeah, so to have that

00:27:37   built in would be wonderful.

00:27:39   - Yeah, and I think that, just, that uniformity would be

00:27:41   great, I've built my own UI split view controller as well,

00:27:43   for the same reason, like, it's just, there is, it's like,

00:27:46   the current one we have doesn't do enough, and so everyone

00:27:50   writes their own, which means that users have to learn

00:27:53   how to use each of them, and they all behave slightly

00:27:56   differently, which is never quite as good of an experience.

00:27:58   - And again, now that we're coming to the Mac with all this

00:28:00   stuff, it's really important to have it work, you know,

00:28:03   perfectly, and as expected on the Mac as well, and the more

00:28:06   complicated the problem set becomes here, the less likely

00:28:10   it is that each app is going to do it well.

00:28:13   - Yeah, exactly.

00:28:15   And one quick thing I just wanted to mention, I would,

00:28:17   I thought that I would get used to it, and this is not

00:28:19   an API change, this is an Xcode change, I thought I would

00:28:22   get used to it, I have not, the new interface builder,

00:28:26   like, control picker, where you have to--

00:28:28   - Oh yeah, you have to, like, search?

00:28:29   - You have to click on it, and then, like, search around

00:28:31   and, like, in this floating window that then goes away,

00:28:33   and you, if you wanna drag two things in, you have to click

00:28:35   the thing twice, I thought I'd get used to it, it's a year

00:28:38   later, I have not gotten used to it, still hate it every

00:28:40   time I use it, I would love to have the old one back,

00:28:43   thank you.

00:28:44   - Yeah, me too.

00:28:45   And finally, I also would love audio intents, full blown

00:28:49   audio SiriKit intents for picking things by a search,

00:28:53   you know, audio intents with variables in them, like,

00:28:55   anything like that, that would help.

00:28:57   - Variables in programming, Marco, what are you talking

00:28:59   about, this seems-- - I know, right, like,

00:29:00   'cause we already have, the thing is, they're in there,

00:29:02   the variables are in there already, they just aren't

00:29:05   activated by the user, so, like, let us make parameterized

00:29:09   intents and shortcuts.

00:29:11   Anyway, good luck, everybody, getting everything you want,

00:29:14   thanks for listening to our wish list, and we will talk

00:29:16   to you in two weeks.

00:29:17   - Yeah, and if you run into us, or see us next week,

00:29:19   by all means, say hi, it's always nice to interact

00:29:22   with listeners.

00:29:23   - Absolutely, bye everyone.

00:29:25   - Bye.

00:29:25   [BLANK_AUDIO]