136: Freshly Cleared Decks
00:00:00
◼
►
Welcome to Under the Radar, 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, so let's get started.
00:00:10
◼
►
So we are back from WWDC after a full week of all manner of things in terms of meeting
00:00:18
◼
►
people, learning new things, and unfortunately I don't think either of us have quite had
00:00:22
◼
►
enough time to dig out from that experience and to really get down to the nitty-gritty
00:00:26
◼
►
details around the technical announcements that were announced.
00:00:30
◼
►
I think there's a lot of interesting topics and useful things for us to discuss that came
00:00:35
◼
►
out of the technical side.
00:00:37
◼
►
I think what we decided is that it made sense.
00:00:38
◼
►
Rather than diving into those this week, we're going to talk about the more technical announcements
00:00:43
◼
►
and things that came up in the following weeks to the show.
00:00:46
◼
►
But for today, I think there's many things that we can talk about, though, that are not
00:00:50
◼
►
specifically detailed into low-level API changes or those types of things.
00:00:56
◼
►
And I think the first one that I think is an interesting one to talk about is just the
00:01:01
◼
►
high-level point around, so now we have all of these changes, now we know finally what
00:01:07
◼
►
is going to be coming for us this summer.
00:01:10
◼
►
It's sort of a little bit of a discussion around release planning and working out what
00:01:13
◼
►
we ship, when we ship it, and how that process goes.
00:01:19
◼
►
As for years, I've always followed this process where I do a bunch of updates in the fall
00:01:25
◼
►
with the previous iOS update.
00:01:28
◼
►
That sort of fall through spring period is typically a very busy, busy, busy time, lots
00:01:34
◼
►
And then around mid-spring, it starts to get really awkward because you start to think,
00:01:38
◼
►
"Well, is it worth--how much do I want to work on a feature that might be Sherlock'd
00:01:42
◼
►
or that might be fundamentally changed technically, or new opportunities might appear that Monday
00:01:49
◼
►
And so, in general, in the back of my mind, as I get closer to WWDC, I start working less
00:01:54
◼
►
on more adventurous features and tend to focus mostly on things like bug fix updates and
00:02:00
◼
►
those types of changes.
00:02:02
◼
►
And so it's like, "Gee, that Monday at WWDC, in a large way, just completely dictates what
00:02:08
◼
►
my summer is going to be like."
00:02:10
◼
►
And now we have that information, and now we can kind of work out what we're going to
00:02:14
◼
►
And I'm curious, Marco, what are you thinking right now in terms of the way to structure
00:02:19
◼
►
Do you have a lot of updates you're just going to keep working on for your old things, or
00:02:21
◼
►
just drop everything and focus on updates that are going to appear this fall?
00:02:27
◼
►
I like to think it's the latter in practice.
00:02:28
◼
►
That's a little bit of the former two.
00:02:31
◼
►
We talked in the past about how the Apple development year kind of has seasons to it,
00:02:37
◼
►
and that the summer is kind of like the big reset.
00:02:40
◼
►
And like you were just saying, typically the best way for us to spend our springtime, which
00:02:45
◼
►
is kind of like the calm before the storm of WWDC, is to basically clear the decks.
00:02:51
◼
►
Basically get your house in order, get bug fixes out there, make your app as stable as
00:02:58
◼
►
possible in the existing branch or version of it.
00:03:01
◼
►
So that way, when WWDC happens, you have a clear plate, and you can start working on
00:03:08
◼
►
the new stuff.
00:03:09
◼
►
You can start taking advantage of the new stuff.
00:03:11
◼
►
And that's mostly what I did this past spring.
00:03:13
◼
►
I was adding basically refinement features to Overcast.
00:03:16
◼
►
I was doing some security improvements and privacy stuff with GDPR.
00:03:21
◼
►
But for the most part, I was doing pretty much an entire springtime of minor bug fix
00:03:28
◼
►
And that has worked out pretty well.
00:03:30
◼
►
I have one in review right now that I think should probably, hopefully, if I've done my
00:03:34
◼
►
job right, should be my last update until iOS 12.
00:03:39
◼
►
That might not happen.
00:03:40
◼
►
If I have to fix a bug sometime later in the summer, then I'll do that.
00:03:42
◼
►
But hopefully, this is it for this branch.
00:03:44
◼
►
Because what I want to do, and what I have already started a little bit doing, is every
00:03:50
◼
►
time we get our beta 1 and our SDK beta 1, I start a new branch of the app in Git.
00:03:57
◼
►
And this is my iOS 12 branch.
00:03:59
◼
►
And I set the build target to iOS 12 only.
00:04:04
◼
►
And I see all the new warnings and deprecations and everything that I have to deal with.
00:04:09
◼
►
Because every time you get a new iOS version, there's a whole list of stuff that gets added
00:04:15
◼
►
to your to-do list.
00:04:16
◼
►
And it's kind of hard to know where to start, how to prioritize it.
00:04:21
◼
►
And it's difficult, because some of the more fun stuff, like, hey, there's a new API I
00:04:25
◼
►
want to use.
00:04:26
◼
►
Or my app can now do this thing.
00:04:27
◼
►
Or I can replace a lot of my own hacky code with this new system-provided way to do this.
00:04:33
◼
►
And a lot of that stuff is really tempting to do first.
00:04:38
◼
►
But in reality, what I usually need to do first is fix everything that breaks with the
00:04:43
◼
►
new iOS version.
00:04:44
◼
►
And so there's different degrees of what it means to be broken.
00:04:49
◼
►
A deprecation is kind of a future promise that a thing will break.
00:04:54
◼
►
And so that is something that you should fix pretty soon in the summertime.
00:04:58
◼
►
But it doesn't necessarily have to be week one of working on your new thing.
00:05:03
◼
►
New compiler warnings are usually a big pain in the butt, but usually things that you should
00:05:08
◼
►
Again, pretty soon.
00:05:09
◼
►
It doesn't need to necessarily be day one, but you should really put it up there pretty
00:05:13
◼
►
high on the list.
00:05:15
◼
►
And then every time the OS changes, and every time especially you require the newest version
00:05:19
◼
►
only, which basically disables a bunch of compatibility modes in iOS, then you might
00:05:26
◼
►
have bugs in your app.
00:05:28
◼
►
Especially minor visual bugs with things like, oh, they changed the way table views worked
00:05:31
◼
►
a little bit, or something like that.
00:05:32
◼
►
And so you might now have things that worked fine in previous versions, but in the current
00:05:36
◼
►
version are broken.
00:05:38
◼
►
And so my priority order of how I tackle new things when we get our first betas, assuming
00:05:44
◼
►
my app is already in the stable state that I hopefully left it at for the main public
00:05:49
◼
►
branch of it, basically job number one is find things that have broken and fix them.
00:05:56
◼
►
Job number two is fix all the new warnings and update the project settings and everything
00:06:01
◼
►
And job number three is fix all the deprecated stuff that is newly deprecated in the app.
00:06:07
◼
►
And so that's basically what I've been doing.
00:06:09
◼
►
And then unfortunately, I really don't feel very good tackling the new fun APIs until
00:06:15
◼
►
all three of those things are done.
00:06:17
◼
►
So usually it's a few weeks in, at least before I try anything new.
00:06:19
◼
►
And this is not that efficient for certain things.
00:06:23
◼
►
It's kind of hard to motivate yourself after the fun of WWDC week to then say, all right,
00:06:29
◼
►
let's go do some boring maintenance work on my app so I can fix all these warnings and
00:06:33
◼
►
deprecations because that stuff usually is not that fun.
00:06:37
◼
►
But I don't like having that hanging over me forever.
00:06:41
◼
►
And I find it hard to enjoy the new stuff unless I have a clear plate.
00:06:48
◼
►
And I feel like you can get the app to a low bug state before the conference.
00:06:55
◼
►
But once you run your app on the new beta, it's like your plate gets piled on top of
00:07:00
◼
►
-- you get a giant pile of all these warnings and maintenance things that you just have
00:07:05
◼
►
to deal with.
00:07:07
◼
►
And so to me, my plate is no longer clear.
00:07:10
◼
►
And so I can't enjoy the new stuff until my plate is re-cleared of all that maintenance
00:07:15
◼
►
And in certain years, the OSs we get are better or worse at that than others.
00:07:21
◼
►
Like certain years, you have more maintenance stuff or it's harder to fix or it takes more
00:07:25
◼
►
work to fix or it's something that could be a very long process like a design refresh.
00:07:31
◼
►
That's usually more complex to update your app for like an iOS 7 kind of thing.
00:07:37
◼
►
That's usually more complex than, oh, they deprecated UI WebView, stuff like that.
00:07:42
◼
►
So anyway, that's kind of what I'm doing is dealing with all those deprecations and everything.
00:07:47
◼
►
I don't think this year is too bad of a year for that.
00:07:50
◼
►
I think we got off pretty easy.
00:07:52
◼
►
So I do hope to get into the newer stuff probably by next week.
00:07:57
◼
►
But we'll see.
00:07:58
◼
►
Those deprecations and things can be deceptively time consuming.
00:08:03
◼
►
I mean, the thing that I always struggle with with that, and in general, I think I follow
00:08:06
◼
►
a similar pattern to you, but I always kind of -- it feels awkward to largely put the
00:08:12
◼
►
app from a user-facing perspective on the shelf and to essentially enter into a period
00:08:21
◼
►
where other than significant bug fixes, there'll be no user-facing activity for a couple of
00:08:28
◼
►
months potentially, until sometime in mid-September probably.
00:08:33
◼
►
That always feels like kind of -- it's a strange and it's a missed opportunity in a way that
00:08:37
◼
►
for three months of the year, there's no new updates, there's no new interest.
00:08:42
◼
►
The app is what it is in the store.
00:08:44
◼
►
And obviously, I have enough apps that many of my apps go three months without getting
00:08:48
◼
►
updated normally.
00:08:50
◼
►
So it's not like it's a completely outrageous thing.
00:08:52
◼
►
But it is always -- one thing that I just wanted to mention is slightly awkward about
00:08:56
◼
►
this time of year.
00:08:57
◼
►
And I think maybe it's an interesting thing that if you're working on an app that doesn't
00:09:01
◼
►
have a lot of new iOS 12 stuff in it, or you don't see much this fall that you can be pushing
00:09:07
◼
►
towards, it is potentially an opportunity to have a period of time when you may have
00:09:12
◼
►
a easier time getting Apple or just general user attention for an app update, just because
00:09:19
◼
►
it is likely a quieter time more generally.
00:09:21
◼
►
But I think for my own apps, that's largely what I'm doing.
00:09:23
◼
►
I have a couple of bug fixes and minor feature changes that I expect to do, and then it'll
00:09:28
◼
►
be this sort of -- yeah, there's this sort of -- you have this pivot where you have to
00:09:30
◼
►
change as you head towards iOS 12.
00:09:33
◼
►
And in general, that kind of managing two concurrent development branches or even just
00:09:40
◼
►
keeping track in your head of what's the new stuff and what's the old stuff just gets really
00:09:44
◼
►
complicated.
00:09:45
◼
►
So literally just sort of diving into it and committing to it and only kind of going back
00:09:50
◼
►
to the old branch as needed for small bug fixes or things is probably the sane way to
00:09:57
◼
►
But it is definitely kind of an awkward thing and something that I kind of wish I had a
00:10:02
◼
►
slightly better answer to, but I think the reality is it's fine.
00:10:06
◼
►
Most people won't probably notice.
00:10:08
◼
►
And having a strong showing this fall is ultimately probably more important for most apps.
00:10:16
◼
►
I think that is definitely a time when there's a lot of user interest.
00:10:19
◼
►
There's a time when there's a lot of press interest and Apple interest in adopting the
00:10:23
◼
►
new technologies and putting yourself onto the radar for all those things in terms of
00:10:29
◼
►
all the different lists and things that come up is I think a very compelling and useful
00:10:35
◼
►
But it is a little tricky.
00:10:36
◼
►
And honestly the hardest part for me at this point is I still don't think I fully have
00:10:43
◼
►
my list of all of the things I want to do this summer to my various apps.
00:10:49
◼
►
And I think it's always so hard to know what to prioritize, to know what things are actually
00:10:55
◼
►
going to be a big deal.
00:10:57
◼
►
Say we get something like Siri or shortcuts.
00:10:59
◼
►
Ostensibly, it seems like a big deal that every app that I'm working on should adopt
00:11:04
◼
►
But at the same time, there's always in the back of my head, is this going to be one of
00:11:08
◼
►
these really big new compelling things or is it going to turn out more like iMessage
00:11:13
◼
►
apps or something, which was fine.
00:11:15
◼
►
It's exactly the example I was thinking of in my head as you were reading that sentence.
00:11:19
◼
►
I'm like, "Oh, I hope he says iMessage apps."
00:11:22
◼
►
You know, where it's like iMessage apps kind of fizzled out.
00:11:26
◼
►
I think stickers became a bigger thing.
00:11:28
◼
►
But actually putting rich functionality in iMessage didn't really happen.
00:11:32
◼
►
And is Siri shortcuts going to be one of those or, you know, like, but for example, today
00:11:36
◼
►
with to debut widgets, I would say is a feature that I'm very glad I adopted, I think is widely
00:11:41
◼
►
used, and especially if anything has become more and more important.
00:11:44
◼
►
So like adopting them in day one was important.
00:11:47
◼
►
And I think finding from a release planning perspective, that balance of like, is this
00:11:50
◼
►
actually going to be the new hotness?
00:11:52
◼
►
Or is this just kind of one of these features that's going to appear and then fizzle or
00:11:56
◼
►
appear and then become something different down the road, I think is really hard.
00:12:01
◼
►
And I think at a certain point, we just kind of have to guess.
00:12:04
◼
►
And we just kind of go with our gut of what we think we're going to be we're interested
00:12:08
◼
►
in working on.
00:12:09
◼
►
Do we have a, you know, I think do we have a thing I've learned many times the hard way
00:12:13
◼
►
is do I feel like I have something that is actually compelling for this feature?
00:12:19
◼
►
Or am I just trying to find a way to shoehorn it into my app?
00:12:23
◼
►
And if I'm, you know, I think I'm much more reticent to do a shoehorn shoehorning feature
00:12:27
◼
►
now than I once was where I was just every new feature, I'm going to try and adopt it
00:12:32
◼
►
and just hope that in aggregate that kind of works for me.
00:12:35
◼
►
I think now I'm much more circumspect about, you know, is this compelling?
00:12:39
◼
►
Is this actually going to make my app better?
00:12:41
◼
►
If it is, I'll do my best to make it ready, you know, day one, take advantage of all of
00:12:44
◼
►
those types of things.
00:12:45
◼
►
But I'd be much more thoughtful than I used to be for sure.
00:12:50
◼
►
We are brought to you this week by Linode.
00:12:52
◼
►
With Linode, you have access to a powerful suite of hosting options with prices starting
00:12:57
◼
►
at just $5 a month.
00:12:58
◼
►
You can be up and running with your own virtual server in the Linode cloud in under a minute.
00:13:04
◼
►
Linode offers industry leading performance with native enterprise SSD storage, a 40 gigabit
00:13:10
◼
►
network, and Intel Xeon E5 processors.
00:13:13
◼
►
Linode now has 10 data centers spread across the world.
00:13:16
◼
►
So you can serve your customers even quicker than before.
00:13:19
◼
►
And if you know if you're a programmer listening to the show, which you probably are, they
00:13:22
◼
►
even have an API lets you easily automate tasks or develop custom applications in the cloud.
00:13:27
◼
►
And all this is manageable via their awesome web interface or the command line.
00:13:31
◼
►
All of the pricing tiers feature hourly billing with a monthly cap on all plans and add on
00:13:36
◼
►
services like backups and node balancers.
00:13:39
◼
►
So Linode has fantastic pricing options available.
00:13:43
◼
►
Their plans are one gig of RAM for just $5 a month.
00:13:47
◼
►
And they offer lots of other plans above that and even specialized things like high memory
00:13:51
◼
►
plans that those start with 16 gigs of RAM and go up from there.
00:13:55
◼
►
As a listener of this show, if you sign up at linode.com/radar, you will not only be
00:13:59
◼
►
supporting us, which we will definitely appreciate, but you will also get $20 towards any Linode
00:14:06
◼
►
On the one gig plan, that could be four free months.
00:14:08
◼
►
And with a seven day money back guarantee, there is nothing to lose.
00:14:11
◼
►
So go to linode.com/radar.
00:14:14
◼
►
This is the host that David and I use.
00:14:17
◼
►
I've been there a long time and I'm very, very happy there.
00:14:19
◼
►
I highly recommend them.
00:14:21
◼
►
Once again, go to linode.com/radar.
00:14:23
◼
►
You will learn more there.
00:14:24
◼
►
You can sign up there and you can take advantage of that $20 credit or use promo code radar2018
00:14:30
◼
►
at checkout.
00:14:31
◼
►
Thank you so much to Linode for supporting the show.
00:14:35
◼
►
So the other sort of wrench that was thrown into our release planning sort of thoughts
00:14:40
◼
►
this year is the addition of I think what is generally being referred to as the marzipan
00:14:46
◼
►
UI kit on the Mac.
00:14:48
◼
►
It doesn't actually give the Apple didn't give it a name, which just creates more confusion,
00:14:54
◼
►
But anyway, the sneak peek.
00:14:55
◼
►
Well, I'll just keep calling it marzipan and Apple will keep pretending like we're not
00:14:57
◼
►
calling it that.
00:14:58
◼
►
So the ability to run UI kit apps or to bring UI kit functionality to the Mac in Mojave is
00:15:09
◼
►
a very interesting thing from a release planning perspective.
00:15:13
◼
►
I think it's interesting, obviously, in that this isn't this year.
00:15:16
◼
►
This is something that they're talking about releasing sometime next year.
00:15:20
◼
►
That's I mean, it could be WDC.
00:15:23
◼
►
It could be before that could be after that, but sometime next year, this is going to be
00:15:27
◼
►
And I think from a release planning perspective, that's for me is kind of interesting because
00:15:32
◼
►
it's a new platform that ostensibly is something that we're going to be able to take advantage
00:15:36
◼
►
of with relatively little work.
00:15:38
◼
►
And in many ways, it seems like these apps are if you have a compelling, strong iPad
00:15:45
◼
►
app that exists in your application, that the effort to take that and turn that into
00:15:52
◼
►
a Mac app is suddenly potentially going to be not necessarily like click a button and
00:15:57
◼
►
off it goes, but a dramatically reduced scope of work.
00:16:02
◼
►
Or honestly, in some ways, even an iPhone app.
00:16:04
◼
►
And I imagine there are certainly some Mac apps that I have.
00:16:08
◼
►
I mean, I'm looking at my audio recorder right now, which is a fully native Mac app, which
00:16:13
◼
►
is piezo by rogue Amoeba, and it is an iPhone size block on the screen that doesn't change
00:16:22
◼
►
So even there, like you could have an app that would just run naturally on the Mac,
00:16:26
◼
►
give it irrespective of size.
00:16:27
◼
►
But I think for me, especially I think about, are there things that I want to be doing this
00:16:31
◼
►
year to beef up my iPad app and get it ready for UI kit on the Mac whenever that comes?
00:16:39
◼
►
Or conversely, it's like if I was thinking, I mean, I wasn't personally, but I think in
00:16:42
◼
►
the back of my mind, overcast on the Mac is always this open question.
00:16:46
◼
►
Like it's this funny place of if any work you were going to do on that now probably
00:16:50
◼
►
wouldn't make sense to do now, other than the work potentially of getting your UI kit
00:16:54
◼
►
code base, you know, flexible and ready for a big wide screen.
00:16:59
◼
►
Yeah, I mean, this to me, marzipan is probably the most interesting, like long term planning
00:17:05
◼
►
aspect that we learned this year.
00:17:07
◼
►
You know, like, you know, like you mentioned, you know, bringing overcast to it.
00:17:10
◼
►
I would love to do that right now.
00:17:12
◼
►
I'm pretty sure it won't work because I use UI WebView and UI WebView is deprecated.
00:17:17
◼
►
And according to Steve Trout and Smith's digging through marzipan and the work of a lot of
00:17:21
◼
►
other people who are working on it as well, it seems like what is included right now in
00:17:27
◼
►
that runtime is only the like, you know, mainstream and non deprecated functionality.
00:17:33
◼
►
Everything like anything that's deprecated now and UI kit is gone in marzipan.
00:17:37
◼
►
So that's one of the reasons why I want to get off of deprecated stuff pretty soon.
00:17:42
◼
►
And actually the very first thing I what I was doing yesterday was converting UI WebView
00:17:46
◼
►
to WK WebView, which surprisingly not easy given how much I abuse UI WebView.
00:17:50
◼
►
It's doable.
00:17:51
◼
►
I finally figured it out.
00:17:52
◼
►
It also does not help that I'm doing that conversion in Swift, which just slows me down
00:17:57
◼
►
tremendously because I'm still very, very new to Swift.
00:17:59
◼
►
But I think this is the time to do it.
00:18:01
◼
►
But anyway, getting back to, you know, more general things with marzipan, I think what
00:18:06
◼
►
this shows you is, you know, this is really valuable for Apple to have told us about this,
00:18:11
◼
►
even though they have nothing to let us use yet with it, because this lets us plan things
00:18:17
◼
►
that like this is why businesses like when their vendors and suppliers and, you know,
00:18:22
◼
►
things give them roadmaps.
00:18:24
◼
►
It helps you plan important decisions.
00:18:26
◼
►
There's a lot of value to that.
00:18:27
◼
►
And we're not used to having a roadmap in Apple land.
00:18:29
◼
►
And it's really nice that right now we have one for this.
00:18:32
◼
►
Not a very detailed one, but we have one nonetheless.
00:18:35
◼
►
And so what this tells me as an iOS developer is, first of all, if I was thinking about
00:18:42
◼
►
maybe undertaking the massive project of writing a Mac app from scratch, which I wasn't, but
00:18:46
◼
►
just for the sake of argument, suppose I was, maybe I would cancel that ambition and just
00:18:51
◼
►
say, all right, you know what, I don't need to write my own AppKit.
00:18:54
◼
►
Since I already have this giant iOS code base, I don't know AppKit very well.
00:18:58
◼
►
And I don't have any existing customers using it.
00:19:01
◼
►
So I might as well not do it at all now.
00:19:04
◼
►
But also, if you read the tea leaves a little bit with the Marzipan stuff, with Mark Gurman's
00:19:11
◼
►
rumored iOS redesign next year, John Gruber's rumored new UI declarative framework, it would
00:19:19
◼
►
make a lot of sense to release all those things at the same time and for that same time to
00:19:24
◼
►
be next summer.
00:19:26
◼
►
That would make a whole lot of sense for a lot of reasons.
00:19:28
◼
►
So not only is Marzipan a big looming thing on the one year from now horizon, but it also
00:19:36
◼
►
seems likely that we might also get a UI redesign and possibly a new UI framework.
00:19:42
◼
►
So what this tells me is this year is not a good time to write a bunch of UI code, to
00:19:50
◼
►
invest heavily in UI redesigns or new UI or lots of UI coding.
00:19:58
◼
►
This is probably a good time to hold off on that.
00:20:01
◼
►
So I use that inference and the knowledge of Marzipan, I use that to prioritize what
00:20:08
◼
►
I should be working on instead.
00:20:11
◼
►
So for me, that is under the hood stuff, back end improvements, server improvements in the
00:20:16
◼
►
app, audio engine improvements, things like obviously bug fixes, adopting new APIs, doing
00:20:23
◼
►
things like WKWebView, replacing that kind of stuff.
00:20:27
◼
►
There's a lot I need to do with the audio engine to make it compatible with AirPlay 2,
00:20:30
◼
►
which now seems increasingly important.
00:20:33
◼
►
And there's a lot I have to do on the watch because I love all the developers who we talk
00:20:38
◼
►
to who are like, "Yeah, you know, I don't really have anything to do this summer.
00:20:40
◼
►
They didn't really give me much."
00:20:41
◼
►
I'm like, "You don't make a podcast app."
00:20:43
◼
►
Because if you make a podcast app, you have a lot to do this summer actually, which is
00:20:50
◼
►
It's a great problem for me to have.
00:20:51
◼
►
Anyway, so because of the information we have and the rumors that point to additional supporting
00:21:00
◼
►
things, I'm choosing to spend this year on under the hood stuff.
00:21:06
◼
►
And there will be a few features here and there or a few design tweaks here or there,
00:21:10
◼
►
but ultimately I don't think it's very smart for me to spend this year doing a lot of design
00:21:16
◼
►
and UI coding.
00:21:17
◼
►
And there's so many under the hood things that could definitely occupy me for a year
00:21:22
◼
►
that require either no UI or not that much UI.
00:21:26
◼
►
Even things like search, people have asked me for search since day one.
00:21:30
◼
►
Very, very common feature.
00:21:31
◼
►
And there's all sorts of little nice to have features like that that people have asked
00:21:35
◼
►
me for over the years that I just have never really had the time to do because I've been
00:21:38
◼
►
keeping up with the UI bandwagon.
00:21:41
◼
►
And so when I take a year off the UI bandwagon to kind of give that a pass and say, "I'm
00:21:46
◼
►
gonna work on other things this year besides major UI work," that I think will free me
00:21:52
◼
►
up to do a lot of really cool stuff.
00:21:54
◼
►
- Yeah, and I think what's really interesting about what you just said is how all of these
00:21:59
◼
►
things combine into one another.
00:22:03
◼
►
Or starting with the starting point of that UI kit is coming to the Mac and the other
00:22:09
◼
►
things that we've heard about, and then you end up with this is the year of the behind
00:22:13
◼
►
the scenes rather than the visual design, potentially.
00:22:17
◼
►
I think that's a really interesting approach.
00:22:22
◼
►
I think it's very smart to try and draw those kinds of broader inferences because one thing
00:22:26
◼
►
I will say that Apple is usually very good about is they leave lots of clues.
00:22:31
◼
►
They're actually a very secretive company.
00:22:35
◼
►
But I think as well, I would love it if they were a bit more obvious with these types of
00:22:40
◼
►
There are often these clues in breadcrumbs that lead you forward into the future.
00:22:47
◼
►
And I think if you pick up on those, maybe the most obvious examples are the things that
00:22:51
◼
►
they started doing around flexible screen sizes.
00:22:55
◼
►
Or last year we had the safe area inset stuff, and then, wow, look at this, we have an iPhone
00:23:00
◼
►
10 where suddenly there's a need for safe area insets.
00:23:05
◼
►
And I think there's all these...
00:23:07
◼
►
It's good you can get carried away trying to read the tea leaves a little too much,
00:23:11
◼
►
but I think there's definitely something in this that there's going to be a more fundamental
00:23:17
◼
►
change to the visual side of our applications probably sometime next year.
00:23:23
◼
►
And so doing major work this year is probably unwise.
00:23:27
◼
►
It is kind of weird to me, though, that in the back of my mind, it's like a year is a
00:23:31
◼
►
really long time.
00:23:34
◼
►
For most of our apps, they've only been around for a few years, and so a year is a pretty
00:23:40
◼
►
long time to have that kind of thing looming over us that maybe we don't want to do this,
00:23:46
◼
►
or maybe we want to make changes accordingly.
00:23:49
◼
►
And so I struggle a little bit with that, that I still want to feel like I can keep
00:23:54
◼
►
driving forward and keep making the app better or making it visually interesting or those
00:23:58
◼
►
types of changes that I don't want to feel like my hands are totally tied as a result.
00:24:02
◼
►
But at the same time, I think it is certainly true that it's not a year for, "Hey, I'm going
00:24:08
◼
►
to do this complete visual rebuild," or those types of things, where that may be forced
00:24:13
◼
►
upon us, or at least we may have the opportunity next summer, maybe this is the positive way
00:24:17
◼
►
to look at it, to dramatically change and improve the way our app is structured visually,
00:24:23
◼
►
and so we can take advantage of that at that point.
00:24:28
◼
►
But yes, it's interesting to think, too, I do like sometimes where having a constraint
00:24:34
◼
►
of saying, "Well, I'm not going to focus on visual design much this year.
00:24:38
◼
►
I'm going to focus on behind the scenes or performance."
00:24:40
◼
►
I mean, that's what Apple has themselves explicitly said.
00:24:43
◼
►
iOS 12 is all about performance, and so taking a good part of the summer or this fall and
00:24:50
◼
►
saying, "I'm just going to sit down in the profiler and just see if I can squeeze more
00:24:55
◼
►
performance out of my app and just have that be a focus and have that be something that
00:24:59
◼
►
isn't flashy, potentially.
00:25:01
◼
►
It isn't something that's going to garner a lot of attention in an overt way, but it's
00:25:06
◼
►
certainly something that you would hope in aggregate will gradually improve the user's
00:25:12
◼
►
experience of your application, and that gradual improvement will ultimately lead to more satisfied
00:25:16
◼
►
customers, which is good for business."
00:25:19
◼
►
And so in some ways, I like having that constraint to say, "It's so easy."
00:25:23
◼
►
I think sometimes to just do that kind of visual work because it's fun, or at least
00:25:30
◼
►
it's cognitively interesting.
00:25:32
◼
►
And so having a constraint to say, "You know, probably not this year is the best time.
00:25:38
◼
►
Only do the essentials.
00:25:39
◼
►
Only do the things that really you can't get away with otherwise."
00:25:42
◼
►
And then beyond that, just leave it be and focus on behind the scenes changes, and hopefully
00:25:50
◼
►
that's better.
00:25:51
◼
►
- And to kind of close out this thought, I think a really good way to look at this year
00:25:56
◼
►
is, I mentioned earlier about the seasonality of Apple's development year and how springtime
00:26:03
◼
►
is, when you know something big is coming in June, but you don't know what it is and
00:26:08
◼
►
you kind of have to wait around, that's when you do a lot of your refinement features.
00:26:12
◼
►
And honestly, that's when I've done some of my most interesting features and some of my
00:26:15
◼
►
most successful features because I didn't have, like I had done all of my catching up
00:26:21
◼
►
with the Apple train for the year.
00:26:24
◼
►
I had nothing else to do for the new OS, so I could focus on new user-facing things that
00:26:29
◼
►
were just nicer or that were quality of life kind of improvements.
00:26:33
◼
►
In a way, since there isn't that much for most apps to do this year with the new stuff,
00:26:38
◼
►
this whole year could basically be like the spring, just a year-long spring, which it
00:26:45
◼
►
could really result in really nice improvements for everyone's apps because there isn't that
00:26:50
◼
►
much Apple is forcing us to do this year.
00:26:53
◼
►
We can spend way more of the year on those refinements and on new user-facing features
00:26:59
◼
►
and things like that rather than having to keep up with the Apple treadmill of, "Okay,
00:27:05
◼
►
new design, new API, new language, new technology, new stack."
00:27:08
◼
►
That has kind of paused for a year, at least as we see it.
00:27:13
◼
►
So it's kind of nice to actually do this.
00:27:14
◼
►
It's also, you know, it's a good time for, like this is one of the reasons I'm diving
00:27:17
◼
►
into Swift now because the reason I didn't do it in the past was I couldn't keep up.
00:27:24
◼
►
Like I had too much to do and learning a whole new language would just slow me down too much.
00:27:29
◼
►
This year, I finally have that time because at this point, not knowing Swift should be
00:27:35
◼
►
considered technical debt because we know it's only a matter of time before there's
00:27:41
◼
►
Swift-only frameworks and Swift-only platforms maybe.
00:27:45
◼
►
We really need to know that.
00:27:46
◼
►
So this is a good time for me to do something that will slow me down but will pay off technical
00:27:53
◼
►
debt and pave the way for future efficiency.
00:27:57
◼
►
And if everyone's doing stuff like that this year, that's pretty good for the apps and
00:28:01
◼
►
pretty good for us as a whole.
00:28:03
◼
►
And ultimately, I think it will probably end up in a really good place as a platform.
00:28:09
◼
►
It's good, I think, that Apple is doing it.
00:28:10
◼
►
I mean, for all accounts, it's bearing dividends for them that running iOS 12 on older devices
00:28:16
◼
►
works a lot better now.
00:28:18
◼
►
And if we can be part of that movement or that effort in our own apps, I think that
00:28:24
◼
►
that ultimately is going to help everybody.
00:28:26
◼
►
By the way, I do have one question.
00:28:28
◼
►
Have you installed Beta 1 on your main phone, which you told everybody not to do?
00:28:31
◼
►
I have not, no.
00:28:32
◼
►
I have a testing device that is explicitly for that purpose.
00:28:36
◼
►
I will say the call of the beta is strong this year.
00:28:38
◼
►
Everyone who has done it, I've had very few regrets.
00:28:41
◼
►
I've heard many people who—very few people who regret it, but I've held strong.
00:28:44
◼
►
Maybe Beta 2, maybe Beta 3, but Beta 1, no go.
00:28:48
◼
►
I'll tell you what, I might have done it.
00:28:51
◼
►
You may have done it.
00:28:52
◼
►
And if I would have done it, I can possibly maybe theoretically report that it's possibly
00:28:58
◼
►
maybe super stable and totally fine.
00:29:00
◼
►
But I couldn't recommend anybody else do it.
00:29:03
◼
►
Of course not.
00:29:04
◼
►
Not that I would have done it or did it.
00:29:06
◼
►
I mean, you'd never think of that.
00:29:07
◼
►
That would be a terrible idea.
00:29:08
◼
►
And especially, and specifically against the advice that you gave to our listeners on the
00:29:12
◼
►
show, and so I would be kind of irresponsible to go against your own advice.
00:29:18
◼
►
But had I done that, it might have ended up being even more stable than iOS 11.
00:29:23
◼
►
Anyway, thank you for listening, everybody.
00:29:25
◼
►
I'll talk to you next week.
00:29:27
◼
►
[BLANK_AUDIO]