Under the Radar

93: New Screen Sizes


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 this summer, as most summers are filled with, there's been a sizable amount of speculation

00:00:17   and rumor-mongering around what the new iPhones will look like this fall.

00:00:22   And this summer has been particularly interesting, I think,

00:00:26   as we got way more details than we normally do from the HomePod firmware leak.

00:00:31   But what I thought would be interesting to dive into this week is to talk a little bit,

00:00:38   not a little bit maybe about what we're expecting to happen this fall,

00:00:41   but I think more generally an interesting discussion around making apps and developing apps

00:00:48   and designing apps in a way to accommodate the varying screen sizes that we have to deal with.

00:00:53   Because I think as of right now, if you're making an app that, say, supports iOS 10,

00:01:01   so in terms of which devices are knocked out from it, you have to deal with the iPhone 5 size,

00:01:08   the iPhone 6 size, the iPhone 6 Plus size.

00:01:12   On the iPad side, there's the three sizes of iPad size physically.

00:01:21   There's the big Pro, the baby Pro, and then regular--oh, no, there's four there now,

00:01:26   because there's the new iPad Pro size as well.

00:01:29   You may or may not have to also deal with different resolutions.

00:01:34   I think we've eliminated an iOS 10 on non-retina devices, I think.

00:01:40   I think we finally got rid of the iPad 2, which was the one that was holding us back on that.

00:01:44   So now we have 2X and 3X.

00:01:47   It's a lot of devices, and I'm sort of going back in history.

00:01:52   I remember distinctly developing my initial applications in a world where developing an app

00:02:00   for that then iPhone OS was 320 by 480.

00:02:05   That was it.

00:02:07   My entire world fit into 320 by 480.

00:02:10   That was the screen size forever for years.

00:02:16   It made a lot of things very straightforward.

00:02:19   When I'm coming up with a design, I just have to see, does it fit in this screen size?

00:02:23   If I'm doing localization testing, when I load up German, do any of my strings overflow and get truncated?

00:02:32   All I have to do is look at them in one screen size.

00:02:35   That was nice for a while.

00:02:37   Then we got the iPhone 4 and then introduced Retina,

00:02:41   which at the time was this genius way to make the screen better and in some ways show more on it,

00:02:49   but as a developer to do almost no work.

00:02:52   The Retina transition was, from a design perspective, fairly straightforward.

00:02:57   Mostly what it just required was re-rendering some assets to be more detailed,

00:03:03   but the actual layout and design stuff for a retina and non-retina was fairly minor.

00:03:09   Maybe you could have gotten away with slightly smaller fonts and a few other tricks like that

00:03:14   just because you have a bit more resolution, but overall it wasn't too bad.

00:03:18   Then we got the iPhone 5, which introduced the tall version of that, basically,

00:03:25   which again wasn't too bad of a transition because a lot of layouts tend to be flexible vertically.

00:03:34   At the time, anyway, you have a lot of the obvious examples in a table view,

00:03:39   where it doesn't really matter how tall you make it.

00:03:42   The width is the thing that is much more constraining and you tend to design around.

00:03:46   Then the iPhone 6 rolls around and it all just falls apart

00:03:51   because now we have support for the old versions of all these old screens,

00:03:57   and now we have these new screens.

00:03:58   Then on the iPhone 6 Plus, we have the 3X mode.

00:04:03   It's also really big, and in theory, though, I don't think it actually really...

00:04:07   See, it didn't seem to really take on in a way that I think Apple was hoping for.

00:04:11   It was supposed to also have a more common landscape use for most apps.

00:04:17   They were trying to push that a little bit with the way that it was a phone that you could use in either orientation,

00:04:22   but still, there's a lot of things that we have to deal with when we're having to navigate that.

00:04:27   I'm in the process of finishing up a big update and just got a whole bunch of new localization strings in.

00:04:32   It takes a non-substantial amount of time to go through my app in all the different screens

00:04:38   and on all the different test devices I have to make sure it looks good in a variety of different languages.

00:04:43   There's that kind of practical side, but on the design side, it gets really hard

00:04:48   because I often struggle with this tension between,

00:04:53   "Do I want to optimize my app for one size in particular?"

00:04:58   You know, whatever the most common screen size is, which I think for me and for my phones is the...

00:05:05   Or for my apps is the iPhone 6 and the iPhone 7 size,

00:05:10   the smaller of the two modern big sizes.

00:05:16   That's what I see most of.

00:05:18   And do I want to optimize for that? I think for me it's about 50% of my users are on that screen size.

00:05:23   Or do I need to scale up and scale down the other two?

00:05:28   Or should I try and be more flexible? It's this constant source of stress.

00:05:32   And then of course now, as I start to think about this fall,

00:05:35   and we get these wide reports of a new size, at least there's only one size,

00:05:41   which I've got to say I'm slightly encouraged by, that there's not two new screen sizes.

00:05:46   But there's going to be this whole new screen size, and this one sounds pretty different

00:05:51   and potentially with some kind of odd and interesting quirks to it,

00:05:55   in terms of it may have a cutout into the top of the screen, which you didn't have to deal with before.

00:06:00   And it may be edge-to-edge, and so now you have to deal with margins where you can't go put your content

00:06:07   all the way to the edge if the display goes all the way to the edge,

00:06:10   because now you'd have problems with people accidentally touching things.

00:06:14   And so it's going to be an interesting fall, but it's an interesting journey,

00:06:17   and it's something that I think is worth unpacking.

00:06:21   This is not even to get into the iPad side. The iPad is a mess in my experience,

00:06:27   because there you even have, not only do you have full-screen apps,

00:06:31   but you also now have partial screen apps, and partial screen apps of so many different sizes and widths

00:06:38   that ultimately with anything I do on the iPad, it's just sort of like make things as absolutely fluid as possible,

00:06:46   try not to worry too much about it, and just hope for the best,

00:06:50   because that's the best I've been able to come up with.

00:06:53   I think it is worth diving into the iPad a little bit more, though,

00:06:56   because it does relate in some ways to the realities of designing a modern app for multiple screen sizes,

00:07:02   because when Apple introduced universal layout, and I forget exactly when this main thing was,

00:07:08   maybe around iOS 7 or 8, when they introduced this concept of you don't have a separate iPhone and iPad,

00:07:15   and you don't have a separate iPhone and iPad interface anymore,

00:07:17   now you use a split view controller or something like that,

00:07:20   and you have just one interface that adapts itself to whether it's running on a phone or an iPad.

00:07:25   And the reason why is because when you resize iPad apps in multitasking modes,

00:07:31   they can get super skinny in one of the modes, where it's like the sidebar app,

00:07:36   and in that mode it basically is running a phone layout,

00:07:39   but then if you make it half screen or full screen or two-thirds screen or whatever,

00:07:43   then it will adapt an iPad layout. So you kind of had this need all of a sudden

00:07:46   to make your iPad app be able to scale down to iPhone sizes while running,

00:07:53   and then scale back up as necessary, which was certainly not easy to do in other ways.

00:07:58   And so Apple bringing out these adaptive UI things actually helped that quite a bit.

00:08:03   And then also Apple and the market pushed us very heavily to just use universal apps,

00:08:09   to no longer do the thing that many of us did when the iPad first came out,

00:08:13   of you have a separate iPad app and an iPhone app. Like even in the store, they're separate apps.

00:08:18   These days, the market and Apple are strongly encouraging people to have one universal app

00:08:25   that runs on every size phone and every size iPad, and can transition between the sizes while running.

00:08:32   And if you try to do this, as I said, if you try to do this without universal layout stuff,

00:08:38   like split views and some of those size class based things that we have in the APIs,

00:08:43   it can be remarkably difficult and not worth doing at all.

00:08:47   And then if you do it with the universal API stuff, it's still not easy. It's just less difficult.

00:08:55   You have problems like, you mentioned the 6 Plus's landscape mode,

00:09:01   or I guess now the 5.5 inch screen landscape mode on the phone that kind of treats split views like iPad layouts.

00:09:10   So you have this little tiny skinny bar on the left and slightly less skinny bar on the right.

00:09:15   That messes up universal layouts like crazy. You have different things like certain layouts will work in portrait on the iPad,

00:09:23   but will bomb out horribly in landscape or vice versa.

00:09:26   Again, rotation itself is a whole different problem with screen sizes basically,

00:09:31   because the aspect ratio of your app can change and you have to be able to accommodate that in most cases.

00:09:37   And so what this always leads me back to, and I haven't always followed this advice,

00:09:44   in fact I almost never follow this advice, but it's something I keep in the back of my head,

00:09:48   that you are really rewarded in this problem domain here by sticking to standards,

00:09:55   sticking to UI kits, stock layouts, stock components, not trying to be too fancy with custom stuff.

00:10:02   This was helped tremendously with the move away from textured bitmap interfaces from iOS 6 and earlier,

00:10:10   once iOS 7 came out and everything was basically just big white bars with text.

00:10:14   And there wasn't a lot of pixel perfect design anymore.

00:10:18   That has helped us a lot, because if you're still doing pixel perfect graphics heavy design,

00:10:24   you have to do so much more work for all these new screen sizes,

00:10:27   and every time a new screen size comes out you have to do more work.

00:10:31   Whereas if you have a more visually simple and more flexible, more web-like layout in your UI,

00:10:39   then when a new phone comes out or a new iPad comes out, you might not have to do any real work on the UI to get it to work.

00:10:46   So in order to keep this manageable, especially for individuals like us,

00:10:51   where we don't have a huge team like Instagram does, although they're a bad example since they still don't have an iPad app,

00:10:58   but we don't have a huge team like some of these big companies do that can throw 15, 20, 100 engineers at their iOS apps,

00:11:06   and somebody has a team responsible for adapting to new screen sizes. No, it's just us.

00:11:11   And adapting to new screen sizes is not something that we should be spending a ton of our time on.

00:11:17   It's not a great use of our time. That should be something that we keep as simple as possible so we can focus on other stuff about our apps.

00:11:24   And so we are very well rewarded by using stock stuff, by not altering it too much, by not customizing it too much,

00:11:34   by not hacking around or relying on things being a certain size.

00:11:37   When the iPhone 5 came out, as you mentioned, because it was mostly just like,

00:11:42   "Well, it's the same width, but just add another table row." It was 88 points taller, so that's two toolbars or a table row, basically.

00:11:50   It was very, very easy to adapt to that, because most apps had the scrolling table view.

00:11:58   But the ones that didn't, the ones that had the big graphical things, some of those apps are still running Letterbox today.

00:12:05   Some of them are still not updated. Even the Tesla app was not updated for the screen size for a very long time.

00:12:13   Modern apps that are being updated, or banking apps, they're famous, the reason they haven't updated in a lot of these cases,

00:12:22   or the reason it takes so long, is because it's hard for them.

00:12:25   So the best thing we can do is keep it easy for us.

00:12:28   Don't get too crazy with hacking UIKit or making custom layouts that can't be very easily adapted to new screen sizes,

00:12:36   new aspect ratios, new arrangements.

00:12:39   But it also is worth, as you mentioned, considering what we should be optimizing for.

00:12:45   In my designs, I try very hard to just optimize for the middle case, for the most.

00:12:54   My analytics basically reflects what you said about yours, which is about half the people are using the 4.7 inch screen size.

00:13:02   And unfortunately, the other half is split pretty well between the iPhone SE 4 inch size and the Plus phone 5.5 inch size.

00:13:13   So I don't really, I can't really lean one way or the other on that.

00:13:16   I have to design for the middle, but also be really sure it works on both sides.

00:13:21   And one of the concerns I had when choosing my own device even, is when I was weighing whether I wanted to get a Plus size phone or not,

00:13:30   one of the downsides of getting a Plus size phone for me is that I would, my own use of the app would be skewed a little bit towards this large screen,

00:13:39   and that's not what most users are using.

00:13:41   And because I have a self designed app, I think it's important for me to be using what the most of my customers are going to be using,

00:13:50   so that I can design it for that.

00:13:52   So that's another consideration in here, but I don't know.

00:13:57   Yeah, because I think from an optimization perspective, like the only sane approach that I've really been able to land on is to optimize for one device,

00:14:08   and that's what I'm making my layout for.

00:14:10   And then in my technical approach, do make no assumptions about the size of things, and make everything essentially scale up and scale down

00:14:23   between the bigger phone and the smaller phone.

00:14:26   So like optimize for the midpoint, just like you said, and especially because it works out well, the middle size is the most used size,

00:14:33   and so you can optimize for that, and then most of my code is structured such that you can give it any arbitrary height or width,

00:14:44   and it will adjust the frames and the layout accordingly, but it's doing essentially just a dumb scaling of that.

00:14:53   It's not radically changing things, it's not like when you go down to the small ones, suddenly the controls that were laid out side by side

00:15:01   are now on top of each other and it's taller, like I've never gone down that road, and instead it's basically just having things scroll up,

00:15:09   sort of scale up and down, but not doing it in the way that it looks bad, and it's not rendering it at a small size and squishing it up or down.

00:15:18   It's just making everything a little bit bigger and smaller.

00:15:22   And then usually it's just a question of adding a few adjustments to make sure labels don't get truncated and so on.

00:15:30   But anything other than that can just, in my experience, become so unwieldy to try and keep track of,

00:15:38   and it's just too much work and things to think of.

00:15:41   In some ways it reminds me of the way that I design watchOS apps.

00:15:46   So in watchOS we have the same problem but in a slightly different way, where there's two different watch sizes,

00:15:53   a big one and a small one, and in that case I actually designed my apps for the small size,

00:16:00   and then the way watchOS is geared and designed, it'll almost naturally just expand out to fill the bigger 42mm size watches,

00:16:12   and it seems to work pretty well.

00:16:14   It's an approach that's not perfect, it's definitely one of these things where I think you have to just become okay with the fact that you're not,

00:16:22   it's probably impractical to have a perfect layout and design that is, you know,

00:16:29   the more I go down the design road I run into all these terms and things,

00:16:35   where things are on 8 pixel grids and terms that you start to get into for how people are being very precise in their layout.

00:16:43   I tend to do something sort of like that, like I'll do a fairly precise layout to make sure the aesthetics are perfect on that middle size,

00:16:51   and then things just sort of scale up and down accordingly, and that works.

00:16:56   I mean, it's probably a fair place to confess too that I also don't use size classes in any of my apps.

00:17:01   You're not missing much.

00:17:02   At all?

00:17:03   They're such a pain.

00:17:05   Yeah, I mean, size classes, storyboards, like the crazy advanced stuff that you can do in nib files now,

00:17:14   there's all this stuff that is theoretically possible to do there, where when you open up a file in Interface Builder,

00:17:21   or an Interface Builder file in Xcode now, you see, you know, you can look at this layout in this phone size,

00:17:29   this phone size, this layout, this layout, I mean, you have this huge array of options there,

00:17:33   and that's just so cumbersome to me, and especially because those kind of files are so opaque.

00:17:39   I've said it before on the show, I just do all my layout in viewable layout subviews,

00:17:45   and there's a bunch of math, and it just sort of sits there, and as long as I don't hard code any values,

00:17:51   if all the values are relative and parametric, so I can change them, every now and then we'll have something

00:17:59   where it's like on the small phone, decrease the padding amount a bit more than you do on a bigger phone,

00:18:06   or things like that, but in general, like taking that approach where it's very straightforward and simplistic,

00:18:12   is the only approach that I found that keeps me sane, because otherwise there's just too many things to think about,

00:18:18   and it's optimizing for something that I don't know, maybe for different, for other apps it would be super important,

00:18:25   but in general, I find that a really well thought out, well conceived design for the middle case,

00:18:35   tends to scale pretty well up, and tends to scale pretty well down.

00:18:39   If it doesn't, that's probably an indication that it's a bad design in the first place, rather than the need to be like,

00:18:45   "Okay, well let's do this totally different thing on this size, let's do this totally different thing on this size."

00:18:50   And so, that's the approach I take, and it seems to work pretty well, I mean, maybe if I spent more time optimizing it,

00:18:58   it would be better, but the reality too is, like you said, it's hard because I've tried having multiple phones

00:19:07   that I switch between on a regular basis, in terms of, it's hard if you don't use a phone or a layout on a regular basis,

00:19:16   to really know what's going to feel good there and be nice, because as much as it's, you know,

00:19:25   when I'm developing, I'm constantly, on a regular basis, I'm cycling through which simulator I'm running it on,

00:19:32   or what iPhone I'm testing on at my desk, but it's never going to be the same as if I was actually using that phone

00:19:39   on a day-to-day basis, using the app in regular use, and unless I'm willing to do that, which can get complicated and awkward,

00:19:48   and some of the things that have held me back from doing that before are getting slightly better,

00:19:52   and I was eleven with the sinking of health kit data and things, but still, you have all the issues with like,

00:19:57   which phone is your Apple Watch paired to, or do you pair a different watch to each phone,

00:20:02   and just hope for the best, and hope it all sinks out, but in general, I find I'm just going to pick one,

00:20:08   I'm going to optimize for it, and then that's hopefully just sort of good enough.

00:20:13   Yeah, because you have to draw a line somewhere, you know, as Indy's, like, how much time do we have,

00:20:18   how much money do we have for devices, how much of a hassle is it to switch between them,

00:20:22   you know, one of the things I usually do is, most of my simulator use, I use the smallest device,

00:20:30   so I use like the iPhone SE for the phone, I use a 38mm for the watch, and then on, you know,

00:20:36   on my actual devices, I have a 42mm watch, and I have the 4.7 inch phone, and so, because about half of my design

00:20:43   and development is on the simulator, and about half is on the device, I get a decent blend there.

00:20:47   I also, you know, because again, like, failing on a small device, I feel like is a worse failure mode

00:20:53   than not looking great or not taking advantage of a big device, so my standalone testing device,

00:21:00   you know, my main phone, which I do most of my testing on, is the 4.7 inch, but also on my desk,

00:21:06   in a charging dock all the time, is an iPhone 5S, and so whenever I need to test something that I think might be slow,

00:21:13   or might, where like I need to see how it fits on the small screen, like in my hand, not just in the simulator,

00:21:19   I kick it over to the iPhone 5S, and there, you know, I can't like take this phone outside and do anything,

00:21:24   there's no SIM, I don't have any service on it, it's just an old iPhone 5S, but it is like a physical device

00:21:30   of the smallest size that my app supports, that is useful for testing. I don't have a 38mm watch,

00:21:36   just because I don't, you know, my watch apps aren't that important to me, so it's not that big of a deal,

00:21:40   I feel like, you know, the simulator is good enough for that, and similarly with iPads, I don't have a 12.9 inch iPad Pro,

00:21:48   because like, this is another area, you know, you have to kind of figure out like for your app,

00:21:52   if hardly anybody uses it on the watch, or hardly anybody uses it on the iPad, you don't really need to invest too much

00:21:59   in optimizing those, like, the overcast interface on the iPad is fine in landscape, and pretty rough in portrait,

00:22:07   and the main reason why is because almost no one uses overcast on the iPad, and I used to optimize like crazy for it,

00:22:14   and it was tons of overhead, tons of code, tons of testing, tons of bugs, trying to manage the universal layout

00:22:22   between portrait modes on the iPad, and so when I redesigned the layout for 3.0 with the little slidey-pain thing,

00:22:29   I kind of half-assed the iPad portrait version, because almost no one uses it, and it was going to be a huge ordeal,

00:22:36   to try to fix that, so now if you launch overcast on the iPad, you get this giant, expansive white space that includes the play controls,

00:22:45   and a little square thing above it for artwork, and to fix that again would be so much work, I just decided this isn't worth it to me,

00:22:52   and you have to do that, you know, with some of these things, like if no one uses something, that's just, you know,

00:22:57   that's something you have to do, but make it usable, but it doesn't have to be pretty.

00:23:01   This episode of One of the Radars brought to you by ZOJO. ZOJO is a cross-platform development tool for creating native apps for desktop, mobile, web, and Raspberry Pi.

00:23:12   ZOJO currently supports macOS, Windows, Linux, iOS, and even Android coming soon.

00:23:17   With ZOJO, you just write one version of your app, so for example, you can write it on the Mac, and then you check a checkbox,

00:23:23   and you can have a completely native Windows version as well, and ZOJO apps use native controls, so your app looks at home on every platform.

00:23:30   You'll be able to build apps ten times faster, which will save you time and money.

00:23:34   ZOJO is great for everyone, from newbies to professional developers.

00:23:38   It's currently used by over 300,000 developers worldwide, from students to Fortune 500 companies.

00:23:44   So go take a look at their site, and you will see just how many companies you know use ZOJO.

00:23:49   It's free to use, and licenses are required to build standalone applications, so you can see for yourself, try it out for free.

00:23:55   Go to ZOJO.com, that's X-O-J-O dot com slash radar to find out more, and listeners of this show can get 20% off any license with the code radar.

00:24:05   Thank you so much to ZOJO for their support of this show.

00:24:09   So the thing that probably makes sense to wrap up talking about is a little bit of expectations for what's going to happen in a few weeks when the new iPhones are released,

00:24:19   because I will say one of the things that does drive me crazy is when we're in a cycle like this where we had WWDC and Apple laid a few hints,

00:24:30   maybe there's a few APIs that are kind of indications that things are going to be different,

00:24:35   but then we spend the summer working, and we're working on updates for iOS 11, and just trying to be all ready,

00:24:41   and then in the back of my mind I know that I'm developing an app without knowing a big important aspect of how this will ultimately be used.

00:24:53   That there is this information that exists in the world that I do not have that I can't really make any choices about in the meantime.

00:25:02   So it always leads to this mad rush in the sense that what I expect will happen is sometime in early September,

00:25:11   probably the first Wednesday or the second Tuesday of September, there will be an event, Apple will announce it,

00:25:19   "Hey, show all this fancy new stuff on the new phone," is why they expect it will have a new layout,

00:25:24   and then a few hours later there will be a new version of Xcode that comes out that includes a simulator for that screen size,

00:25:32   and probably a little bit of documentation about how we're supposed to deal with it,

00:25:36   if there's weird constraints or things that we have to do, the way we indicate to the OS that we're sort of ready for it,

00:25:43   because typically what Apple has always done is when there's a new screen size you have to actively opt into it,

00:25:49   and if you don't you just run in a compatibility mode where typically the phone will report to your app that the screen is

00:25:58   whatever the biggest size that would fit inside of the new phone size,

00:26:06   and so you get tricked into thinking, "Oh, I can just run like I'm running on a plus size or a regular or a four-inch size,"

00:26:14   and then we'll kind of have this bad rush, and then I'll probably be getting up in the middle of the night to pre-order a phone

00:26:21   so that I can actually try this out in real life.

00:26:24   iPhone launch day will happen, in which case I'm frantically waiting for my UPS box,

00:26:30   or I used to go and wait in line at the Apple store in the middle of the night, but I think I'm getting too old for that,

00:26:36   so I'll just wait around for the UPS guy, and then just kind of like hope that, you know, grab the phone as soon as it comes.

00:26:41   The first thing I do is I'm just kind of sad in some ways when you get this brand new phone that's super cool.

00:26:45   The first thing I do is I run downstairs into my office, plug it in, and just launch all my apps and see how broken they are,

00:26:52   because inevitably something's different from the simulator, and this is kind of the cycle that I'm expecting,

00:26:57   and it's a little annoying and a little frustrating, but that's probably what we have to look forward to for us in the middle of September this year.

00:27:05   Yeah, I mean, again, that's kind of all we can do, right? And it's going to be one of those things, like depending on how different it is from what we've seen before,

00:27:13   you know, like there's speculation about this status bar notch and this possible function area on the bottom,

00:27:19   and if these things are accessible to developers in some ways, we're probably going to have to do some work to adopt to that.

00:27:25   And I would guess, based on how things have gone in the past, this is another one of those areas where if you stick with stock controls, you are better off,

00:27:34   and Apple is kind of pushing you into sticking with stock controls. You know, for things like, if for example, you know, bars scroll under the status bar tabs up there, up top,

00:27:44   or if bar button items from navigation bars get put in the function area, as some designers have speculated,

00:27:50   like, if that kind of thing happens, you need to be using the standard controls probably to take advantage of those.

00:27:56   Like, again, keeping things standard and not messing with them too much is almost certainly going to help you with transitions like this.

00:28:04   So, I guess if there's a theme to this, it would be don't mess around too much with custom layouts,

00:28:10   because the standard stuff Apple tends to, you know, force us into over time to get the best stuff or to have flexible layouts or to not have tons of headaches.

00:28:21   So, with that, I guess that's the end of the episode.

00:28:25   Yeah, and I think we just look forward to a slightly frantic middle of September, but otherwise, hopefully, if we've been flexible enough in our designs and, you know, code, it shouldn't be too bad.

00:28:36   I can definitely say that the transition has gotten easier over time because I've learned the lesson to not hard code anything.

00:28:44   You know, I remember distinctly going through my app in the first, like, the first one, I think it was the iPhone 4 came out, I remember going through and searching for, you know, searching for 320 all over my app.

00:28:54   Command shift F, 320.

00:28:56   Like, finding all these places that I was hard coding values that I learned, don't do that, you know, pull it from the screen or pull it from the view rather than having a hard coded value.

00:29:04   And if we've done that, we should be in good shape.

00:29:07   Alright, thanks for listening everybody and we'll talk to you next week.

00:29:09   Bye.