Podcast Search

Under the Radar

Under the Radar 10: Designed by a Programmer

Select a time to play from there. The line being spoken is highlighted as the audio plays.

0:00:00welcome to under the radar or show about

0:00:02independent app development I'm Marco

0:00:04Arment and I'm David Smith under the

0:00:06radar is never long within 30 minutes so

0:00:08let's get started

0:00:09so this week we wanted to talk about how

0:00:12you can be kind of like us independent

0:00:14developers who work for yourself without

0:00:16having a full-time designer or trying to

0:00:19minimize how much of a designers time

0:00:21you need because oftentimes people who

0:00:24are working for themselves can't afford

0:00:27a full-time designer or much design at

0:00:29all from up from other people and

0:00:31sometimes even when you can afford it if

0:00:33you're working on on like a small app or

0:00:36you need to get something out quickly or

0:00:37you're not sure of the market of

0:00:39something you often want to keep your

0:00:41expenses on that app very low and it's

0:00:43often hard to justify having a full-time

0:00:46designer or or having lots of hours from

0:00:48a contract designer helping you out

0:00:50there so we kind of wanted to talk about

0:00:52the reality and process of being a

0:00:56programmer who kind of designs it kind

0:00:59of does your own design or and and

0:01:01having how that works out and then other

0:01:04things later on about things like how

0:01:05you can do programmatic style assets

0:01:07versus static assets in your apps so

0:01:10David what's what is your experience

0:01:12been with with design for your apps so I

0:01:15do most of the core design of my apps

0:01:21myself which is definitely it isn't it's

0:01:24a it's a mixed bag in terms of what that

0:01:26ends up doing but for the reasons you

0:01:29just outlined like I it's a hard thing

0:01:31to hire a designer

0:01:33especially I find refer like at the

0:01:36first app or like the first version of

0:01:37the app which is a little bit backwards

0:01:39in some ways but for the way that I make

0:01:40apps

0:01:41I never know if the app I'm making is

0:01:44going to be worth putting a lot of time

0:01:47and energy and resources into and so for

0:01:48a lot of my apps like the first version

0:01:50is just a couple weeks of work and like

0:01:53the concept of hiring a designer even

0:01:55just like the time overhead if you know

0:01:57like the cost aside if I could find a

0:01:59really inexpensive designer like the

0:02:01cost overhead in terms of time of going

0:02:03back and forth and trying to underlie

0:02:05k-- getting everybody on the same page

0:02:07and then waiting for the assets and

0:02:08doing all that like it doesn't work as

0:02:10well for me and so I tend to just sort

0:02:13of

0:02:13hope for the best and design things and

0:02:17you know the result is maybe it's a bit

0:02:19mixed but and what I find though is at

0:02:23least like once you get if you haven't

0:02:24once you have some experience designing

0:02:26apps like the core design questions I

0:02:29guess this would be the UX design I'm

0:02:32not really as familiar with the terms

0:02:33all the different like UI us don't email

0:02:35us and like graphic design maybe other

0:02:39three kinds of design I don't know like

0:02:41the making an app that sort of like

0:02:43works right and function is functional

0:02:45and intuitive that part I think I have a

0:02:48good handle on and I can make apps that

0:02:50do that they just tend to not be pretty

0:02:52and in general I found that people are

0:02:55pretty forgiving about things not being

0:02:56pretty they rather it be functional and

0:02:59so you can kind of get away with a lot

0:03:01more than you may otherwise have and

0:03:04definitely this has been a lot easier

0:03:05since people don't expect apps to be

0:03:07pixel perfect anymore like it's there

0:03:10was a time when it was really hard if

0:03:12you app didn't have like the crazy

0:03:13textures and everything is just aligned

0:03:15just so like you know right now you're

0:03:18building an app that has to be let's see

0:03:21it's pretty 4s sized iPhone 5 size

0:03:24iPhone 6 size iPhone 6 plus size then

0:03:29you have iPad you have 1x iPad and 2x

0:03:32iPad and iPad pro and so like it's your

0:03:36design has to scale to everything anyway

0:03:38and so you can be you can get away with

0:03:40that feel like in some ways a lot more

0:03:41because you're trying to design

0:03:43something more fluid anyway like in some

0:03:45ways it's more like a web design you

0:03:47know now whereas before it was this this

0:03:49very like texturally in graphically rich

0:03:52style in like the the iOS 6 and earlier

0:03:55days and and then since the iOS 7 style

0:03:59UI with you know all these clean flat

0:04:02colors and thin text everywhere and lots

0:04:04of white space I think it has shifted

0:04:06more into what Web Design kind of always

0:04:08was where you know you you because you

0:04:12have to design for so many screen sizes

0:04:14and be ready to adapt to new ones that

0:04:16might come out that we don't even know

0:04:17about yet now you you are kind of forced

0:04:19to make things simpler and more reliant

0:04:21on like text flow and stuff like that

0:04:24and and less about it these giant

0:04:27images and and also those your

0:04:29out-of-style now which has been such a

0:04:31huge benefit to people like us who don't

0:04:34have or can't afford full time design

0:04:37help it's been a huge boon for us yeah

0:04:41but I think of course it probably ends

0:04:43up with meaning that me we become much

0:04:45more reliant on I feel like there's a

0:04:48certain I don't really know where I

0:04:50learned these and I think you actually

0:04:51have a better handle on these some

0:04:53people ask you but like there's certain

0:04:55seem like there's a certain basic set of

0:04:57like rules about layout about how you

0:05:01structure like typography or the white

0:05:05space of a page and to make it like look

0:05:08right and when it isn't it at least at

0:05:11this point now I have enough of a sense

0:05:13of it like I don't necessarily know why

0:05:14it's wrong but I know it is wrong and I

0:05:17picked that up just as you go but like

0:05:19once you like it's more important in

0:05:21some ways because things aren't pixel

0:05:22perfect you just have these basic like

0:05:24elements of good design under your belt

0:05:27and this isn't I notice in all of your

0:05:29apps like as you've gone there always

0:05:30seems to have that nice clean sharp look

0:05:33where do you think you learned to do

0:05:35that well I mean there's these different

0:05:39parts of design right so there's like

0:05:41there's the the like graphical artistry

0:05:43part of it and that's things like

0:05:45textures things like designing like rich

0:05:47icons stuff like that that part I have

0:05:50never been good at and I probably never

0:05:52will be good at and I'm okay with that

0:05:54that part I'm happy to outsource and and

0:05:58pay whatever it takes to get you know a

0:06:00great app icon made you know if I need

0:06:02if the textures ever come back in style

0:06:04I hope they don't they probably

0:06:06eventually will and you know then I'll

0:06:09Karzai bridge when I come to it because

0:06:11that will basically drive my costs up

0:06:13substantially but it's alright you can

0:06:16just have retro apps that are without

0:06:18without texture you just be retro it'll

0:06:20be fine yeah it will always become an

0:06:22effect rather than this is what people

0:06:24do but you know I think you know so

0:06:28there's different parts of design the

0:06:29graphical stuff I really can't do but

0:06:31the rest of it as you mentioned like the

0:06:34you know the rest of what you you

0:06:35encounter are most apt design things

0:06:36like layout basic text and type

0:06:40agra fee you know spacing that I've just

0:06:44kind of slowly developed my own

0:06:46sensibilities for that over time by you

0:06:49know starting some of it started in web

0:06:51design but also just like just kind of

0:06:53paying attention and developing a feel

0:06:55for it over time which is totally

0:06:57unhelpful like that I know I recognize

0:06:59like if you're listening and trying to

0:07:01figure you know trying to answer the

0:07:02question of like how do I become

0:07:03familiar with the basics of design like

0:07:05I don't know I can't tell you that

0:07:07there's probably some decent books about

0:07:09it that are made for for this purpose

0:07:12I'll try to find them and put them the

0:07:13show notes if I if I can but I I just I

0:07:17haven't gone that pad I've just kind of

0:07:18slowly developed a sensibility by just

0:07:20like kind of paying attention to

0:07:22designers and to design even though I'm

0:07:25I've never really been trained as a

0:07:26designer or consider myself one and a

0:07:29lot of it is just like kind of like you

0:07:31know what when you see it you know like

0:07:32when when you lay something out in a way

0:07:35that is visually pleasing like you

0:07:38yourself will notice that this looks

0:07:40good

0:07:40in most case you know like it because

0:07:43you are also a Burres and you were also

0:07:44a user of this app so you kind of like

0:07:47play with it following some basic

0:07:50principles you can kind of play with it

0:07:51and work it out until until it looks

0:07:53really good but what you said is also

0:07:54correct like people are very forgiving

0:07:56of this I mean god help you if you ever

0:07:59look up a screenshot of Instapaper 1.0

0:08:01it like it to some degree in many cases

0:08:06it doesn't matter as much as people

0:08:07think it does design is kind of like

0:08:10good marketing where it is really nice

0:08:13to have if you want if you if your app

0:08:16is going to become big and successful

0:08:18you probably need good design but you

0:08:22can you can you can get an app out there

0:08:24and you can start building a market for

0:08:26yourself without having professional

0:08:28quality design it is not it is not like

0:08:31a strict requirement for success and and

0:08:34in many cases in many markets especially

0:08:37like the the more narrow the market gets

0:08:39the more specialized or professional a

0:08:41market gets the less design is valued or

0:08:44the less it matters and so if you're

0:08:46making an app like you know for somebody

0:08:49to get their job done and you know it

0:08:51basically needs like four buttons and a

0:08:53text field

0:08:53you know that then like it doesn't

0:08:55really matter to a lot of it like it

0:08:57whether that's really pretty or not it's

0:08:59probably not going to affect your

0:09:01success in in in that narrow market as

0:09:03much as much as it would in like a mass

0:09:06consumer photography app say you know so

0:09:08it really depends on what you're making

0:09:09and how much this is worth but

0:09:11ultimately you know good design

0:09:13something that if you can do it you

0:09:14should do it and if you can't afford it

0:09:16you should do it in almost every case

0:09:19but that could be very expensive I mean

0:09:22like you know like hiring a professional

0:09:23designer could cost hundreds to

0:09:27thousands of dollars per day of their

0:09:29work and and it's really it can be it

0:09:33adds up so quickly it just just to get

0:09:36an app icon made you can get a an okay

0:09:40icon made for a few hundred dollars to

0:09:42get a great icon made might cost a few

0:09:44thousand dollars I mean again this it's

0:09:46this is big money we're talking about

0:09:47for for independent programmers like

0:09:50because most designers most of their

0:09:52work comes from corporate clients so so

0:09:55you have to build in all these high

0:09:56prices you have to you have to account

0:09:58for how much of a pain corporate clients

0:10:00are to deal with how much overhead

0:10:02you're going to have for every billable

0:10:03hour that you can actually get paid for

0:10:05you have to account for all that and

0:10:07price things accordingly whereas you

0:10:09know when you're independent hiring an

0:10:11iron your designer these prices are

0:10:13often out of reach so you know it does

0:10:15help to familiarize yourself with the

0:10:17basics of design or to hire a designer

0:10:19you know for for the stuff that really

0:10:22matters like your app icon and and you

0:10:25know maybe like a once-over if your main

0:10:27interface but not to have somebody that

0:10:29you're like paying every single day or

0:10:30every single month ongoing so it depends

0:10:34it depends a lot on the people you can

0:10:35find you know if you can find a great

0:10:37designer who will take on your work for

0:10:40a price you can afford great that's

0:10:42awesome

0:10:43you know but I I have found that to be

0:10:44very difficult most of the time myself

0:10:46yeah because I think the difficulty

0:10:48there is it's the best designers like

0:10:52are like if you're not paying them well

0:10:56then you they're kind of ripping them

0:10:57off like it's like right

0:10:59Vic that's the nature of like there

0:11:00really is like if they really are that

0:11:01good then they should be in some ways

0:11:04like they they should be we know well

0:11:06paid for their work and doing

0:11:07you know and doing that probably with

0:11:10both clients who can do it and so you

0:11:13end up with kind of a lot of you know

0:11:15for small independent apps you just

0:11:17doesn't yeah economics just don't tend

0:11:19to work out and in some ways you're

0:11:21probably better off

0:11:23it's like rather than spending that

0:11:25money on the design that design it's

0:11:29like I don't even know like training

0:11:30buying yourself books or spending the

0:11:32equivalent amount of time that you would

0:11:34have spent in money just trying to

0:11:37practice and get better at your but edit

0:11:39yourself because that's certainly a

0:11:40skill that isn't going to like go out of

0:11:44use or become useless to you that if you

0:11:46are effective here once you get having a

0:11:48stronger sense of design that's only

0:11:51going to help your programming that's no

0:11:52I'm not going to and ever come back to

0:11:55invite you to be like oh no now you know

0:11:56too much about design like your apps are

0:11:58getting worse like it's it's a good

0:12:00thing to invest in if you in like if you

0:12:02can afford it great but I mean you're my

0:12:05guess is you're probably then either

0:12:06working for a bigger company or I just

0:12:10somehow very wealthy I suppose yeah I

0:12:12mean you know you could you can look at

0:12:14it also as like you know can you afford

0:12:15any other kind of staffing or help like

0:12:17if you can afford to pay other

0:12:18programmers to be with you to to help

0:12:21make bigger and more complex apps then

0:12:24the cost of a designer relative to other

0:12:25programmers is very reasonable yeah but

0:12:28you know it but if you like if the idea

0:12:29of paying another programmer to help you

0:12:32out is completely out of reach because

0:12:33the economics aren't working out it's

0:12:35probably also going to be challenging to

0:12:37paid to pay a designer anyway in in much

0:12:41less expensive news we are sponsored

0:12:42this week by hover hover is quite simply

0:12:46the best way to buy and manage domain

0:12:48names and it costs way less than hiring

0:12:50a full-time programmer or designer now

0:12:52when you have an idea for a project

0:12:54naming it can be difficult once you

0:12:55finally get that name you want to be

0:12:57able to quickly and easily get the

0:12:58domains you need however provides a

0:13:00simple fast and hassle-free method of

0:13:02buying domain names it is very easy to

0:13:04search for new domains search for the

0:13:06means that are available you enter the

0:13:07phrase you want or some keywords if you

0:13:09don't know an exact name and they will

0:13:11find available matches for you and show

0:13:13you a list of all the crazy new TLDs

0:13:15that are available with that name they

0:13:16have of course you know the nice old

0:13:18ones ComNet and all the stuff but they

0:13:21also have all the

0:13:21crazy new ones dot Plumbing dot coffee

0:13:23dot sexy if you go that way all these

0:13:25TLDs they have recently lowered their

0:13:27prices on pretty much all of them

0:13:29so dot-com domains are now just 1299 a

0:13:32year and all this includes

0:13:34free who is privacy for all their

0:13:36domains they believe that you should not

0:13:38have to pay extra to keep your private

0:13:39information private and they have

0:13:41fantastic customer support if you ever

0:13:43need it hover offers a no hold no wait

0:13:45no trends for telephone support policy

0:13:47they are famous for this and there's a

0:13:49good reason why when you call them you

0:13:51talk to an actual human being there's no

0:13:53robots no menus but if you do prefer

0:13:55robotic communication they also have

0:13:56great support documents and guides on

0:13:58their website for getting everything you

0:13:59need as well as email support if you

0:14:01need that and I don't forget their hover

0:14:03valet service where if you want if you

0:14:05if you have a bunch of domain somewhere

0:14:06else or just even just one any number

0:14:09that means if somewhere else you want to

0:14:10transfer them over to hover they will if

0:14:12you want do the whole transfer for you

0:14:14because I've never met anybody who said

0:14:17you know what I love doing domain name

0:14:18registration transfers no not a single

0:14:20person ever wants to do that

0:14:22hover will do it for you if you want

0:14:23it's fantastic there's so much great

0:14:25stuff at hover check it out today go to

0:14:27hover comm to try them out use code

0:14:29Swift at checkout and you'll get 10% off

0:14:32your first purchase at hover comm and

0:14:33show your support for under the radar

0:14:35and all of real AFM thank you so much to

0:14:37hover use code Swift to check out for

0:14:3910% off thank you so much for sponsoring

0:14:41this episode

0:14:42alright so I think the next thing that

0:14:44we wanted to dive into a little bit is

0:14:47the something that I know I think I know

0:14:50you I've heard you talk a lot about this

0:14:52and it's something that I know I've

0:14:52started doing a lot more of my own apps

0:14:54is once you have your design and this is

0:14:57especially for the graphical assets in

0:14:59your app so like you know button icons

0:15:01or images of any kind like there's you

0:15:06can either pre render that image so it's

0:15:08like have it come out of Photoshop or

0:15:10illustrator or whatever design tool

0:15:12sketch whatever it is that you're using

0:15:14rendered out as a PNG put that PNG and

0:15:17well I will put all three of the PNG s

0:15:18like the 1 X the 2 X - 3 X version of

0:15:21that asset and add it to your project

0:15:23and bundle it in that way or you can

0:15:26programmatically generate it either as

0:15:29like in the draw rect of a uiview or

0:15:32generating an image that you put in a UI

0:15:34as you turn into a UI image and I know I

0:15:39think we've both been on the path

0:15:41towards less and less static assets and

0:15:44more and more programmatic assets and so

0:15:47it's probably something that's worth

0:15:48talking about some of the reasons why we

0:15:50do that oh yeah I mean like for me

0:15:52static assets are a liability for future

0:15:55work because anything any kind of image

0:15:58like you know it let's suppose I hire a

0:16:00designer to to make like toolbar icons

0:16:02in my out which I've done before and

0:16:03it's often worth doing

0:16:05so I have these toolbar icons and then

0:16:07Apple comes out says oh by the way you

0:16:10know there's gonna be a new iPad

0:16:11resolution it's now gonna be iPad at 3 X

0:16:13then you need new versions of those

0:16:15icons that can that can be rendered at

0:16:17Brendan at 3 X you can attempt to do it

0:16:20yourself

0:16:20but generally you won't have like a

0:16:23source vector file you will you will

0:16:25have like a stack of PNG so the designer

0:16:27gave you when you paid them 2 years ago

0:16:29and so you can try to make it or resize

0:16:33it yourself it'll probably look bad you

0:16:35probably shouldn't do that so oftentimes

0:16:37you have to then go back to the designer

0:16:39and pay for even more of their time for

0:16:41them to do something that's really very

0:16:42trivial that they probably don't even

0:16:43want to do because that's pretty pretty

0:16:45uninteresting work you know dig up old

0:16:47files and rerender or something out as a

0:16:49different resolution and everything so

0:16:51it's it's this kind of clunky procedure

0:16:54that like if you rely on the on

0:16:55graphical assets that are baked into

0:16:58static images you have all this

0:17:00liability whenever the technology

0:17:02changes under you or what if you just

0:17:03want to tweak the design like what if

0:17:05you want to make all the line widths you

0:17:08know half a pixel narrower in the next

0:17:10version of in the next design it that

0:17:12becomes very difficult if you if you're

0:17:14if you just have a bunch images and you

0:17:15have to like rerender all this assets

0:17:17out on the other hand if you have all

0:17:20those images and stuff there's a lot of

0:17:22upsides to that your app first of all

0:17:24will load faster because you won't have

0:17:26to be like drawing these things every

0:17:27time you know certain certain art styles

0:17:31are only really possible in static

0:17:33images and become pretty impractical to

0:17:35impossible to recreate with like quartz

0:17:38drawing commands in a draw rect function

0:17:41so the

0:17:43there are there are definitely advantage

0:17:44to disadvantages generally speaking

0:17:46programmatically generated images make

0:17:49your app bundle very small this is one

0:17:50of the reasons why overcast is only

0:17:51something like seven Meg's it's a very

0:17:54very small iPhone because I have almost

0:17:55no images in it almost everything that

0:17:57overcast is generated procedurally so it

0:18:00makes your Apple very small it makes it

0:18:02very easy to adapt to new devices and

0:18:04new sizes but it also but but static

0:18:06images almost certainly will load faster

0:18:08there's also like the OS will cache them

0:18:11any kind of like UI image image name to

0:18:14call like those kind of things that

0:18:15cache the GPU will cache certain things

0:18:17the framework for cache certain things

0:18:18so generally speaking for for speed of

0:18:22operation you want static images but for

0:18:26for ease of programmer work

0:18:29programmatically generated stuff can be

0:18:31a lot easier and I think the biggest

0:18:33thing too is with programmatic it's it's

0:18:36there's even like probably just the feel

0:18:38of like the philosophy of it of making

0:18:40sure that like what you're say the

0:18:42biggest thing that I think you're

0:18:43pointing out is if you're your art

0:18:46assets need to be right are ideally in

0:18:49some-some format that you're going to be

0:18:52able to scale and adjust and re-render

0:18:55later at the very least right if you if

0:18:59you are using a completely like if

0:19:01you're if you have a designer or even if

0:19:03you're in with yourself like if you're

0:19:04going to if you're just building things

0:19:07in such a way that you cannot just

0:19:09easily scale them up and down like

0:19:10keeping them having vector artwork in

0:19:14Photoshop or illustrator or sketch or

0:19:16doing it in some way like that that you

0:19:18can scale up and down it's yeah it's a

0:19:20ticking time bomb for at some point

0:19:21you're going to need something different

0:19:24like there was a time when we just had

0:19:261x everywhere and then there was 2x + 1

0:19:30X and then now there's 3x as well and

0:19:33like it's always going to change

0:19:35everything like the one of the few I

0:19:38don't know if we'll ever get to 4x but

0:19:40something else is going to happen like

0:19:42all of a sudden I for a long time I

0:19:43think I had the thought that the iPad

0:19:45was always going to be sort of 1024 by

0:19:48768 and we're hinge terms of functional

0:19:50size and it's like no turns out they're

0:19:52going cuz like when they went to the

0:19:53MIDI they kept the same resolution they

0:19:54just smushed it a bit

0:19:56and with a pro though it's like oh no

0:19:57here's this massive new screen and so

0:20:01it's like the most important thing is to

0:20:02be able to overtime

0:20:05really like update that have those

0:20:07assets be dynamic and to change over

0:20:10time whether that's like rendered in

0:20:11your app which like you were saying like

0:20:12sometimes that's good sometimes it's bad

0:20:14like it's some trade-offs but whatever

0:20:16it whatever form you're doing it in it

0:20:18needs to be something that you can very

0:20:20easily if all of a sudden it's like I

0:20:22need them at a different size even if

0:20:24it's not a different resolution even if

0:20:25it's just like you know I think the

0:20:27alignment on this isn't quite right I

0:20:29need to make it a bit smaller mm-hmm

0:20:31like being able to rent re-render that

0:20:33from source rather than taking the image

0:20:36and like resizing it which is always

0:20:38never going to look good like you need

0:20:40to be able to say like let's rerender

0:20:42this from the beginning

0:20:43within the exact dimensions that I want

0:20:46it to be and if you can do that like

0:20:48then your workflow is like good if you

0:20:51can't then you probably need to fix it

0:20:53because you it's yours waiting for at

0:20:55some point down the road it to come back

0:20:57and bite you yeah and even like there's

0:20:59like there's like a hybrid approach you

0:21:00can do here which i I've employed for my

0:21:02all my watch assets like some in some

0:21:04contexts in the OS or in the frameworks

0:21:07in some contexts you can't do a

0:21:09programmatic rendering of something you

0:21:11have to have an image in the app bundle

0:21:14with a certain name like you know so

0:21:15things like your launch icons like you

0:21:17your app icon just can't be programmatic

0:21:19in iOS today other things like in watch

0:21:23kit there in and watch iOS - I would

0:21:26imagine it's more flexible but in in

0:21:27watch kit you watch kit one many things

0:21:32had to be static images like there were

0:21:34there were certain things that

0:21:35everything had to be yeah right and so

0:21:38with overcast what I what I did like you

0:21:40know like my I have my like my my themed

0:21:42buttons that are that are in the app and

0:21:44those buttons are all generated by just

0:21:47calls to my one of my appearance manager

0:21:49functions that in my custom appearance

0:21:50class and you just specify how you know

0:21:55what size canvas to render this icon

0:21:57into and you know the line width and the

0:22:00color and you know some of them will

0:22:02display things like like the seek

0:22:04buttons that have the number of seconds

0:22:06inside of them that will be that will be

0:22:07seeked so on whatever

0:22:10like that's all customizable by the user

0:22:12and so like those buttons just you know

0:22:15like there's a function that just says

0:22:16you know render seek button at this size

0:22:18with this color this line with and with

0:22:20this number in the middle and the

0:22:22function has a text drawing call and it

0:22:24went you know in the middle of all these

0:22:25shapes and by the way paint code is a

0:22:27great app for for generating the code

0:22:29for any kind of non-trivial shape

0:22:30recommend that but then you know and

0:22:33then it just wraps it in like an image

0:22:34context where it just does it does a

0:22:36transform that scales it so you can I

0:22:38can render this image that you know the

0:22:40source is in like you know I'm 100 by

0:22:42100 great or whatever I set paint code

0:22:44to and then just scales that with CG

0:22:47code to to whatever output size you

0:22:50wanted it at and so when you have a

0:22:52context like watchkit where you you're

0:22:55required to have static images I have a

0:22:58special build mode that I can set the

0:22:59app in where it just generates the house

0:23:01for me hitting it in every in every

0:23:03configuration that that it might ever

0:23:04need with my current code so it

0:23:06literally just like calls that function

0:23:07and renders out static asset that I can

0:23:10that I can then include in the Hat

0:23:12bundle so that like that that kind of

0:23:14hybrid approach I think has a lot of

0:23:15advantages it is more complex it will

0:23:18not save any space in your app bundle

0:23:19but it will allow you to use these

0:23:22images in calls like like image named

0:23:25and in context where you need static

0:23:28images and it preserves all like the

0:23:30load time optimizations the caching

0:23:33optimization on the platform so the

0:23:34hybrid approach I think is worth

0:23:35considering but ultimately like I just I

0:23:39love doing things programmatically

0:23:40because I think you're right like it it

0:23:42feels more semantically right like if I

0:23:44have a graphic that is just like you

0:23:47know a circle with an arrow going into

0:23:49it like why does it need to be a bitmap

0:23:51file somewhere like why why can't that

0:23:54just be represented as vectors it seems

0:23:55as a programmer and I recognize this

0:23:58isn't how design works but it seems as a

0:24:00programmer that is like the most correct

0:24:02way to represent that it's by vectors

0:24:03and and that doesn't this isn't true for

0:24:06everything of course but so much of what

0:24:08we do today and then the current styles

0:24:10of interfaces that is true for and it

0:24:14just feels right you know it feels right

0:24:16to represent it as a function and and

0:24:18even in many ways like like I mentioned

0:24:20my scaling technique earlier with these

0:24:22with these function calls like

0:24:23a lot of times something really simple

0:24:25like drawing an X you know like an icon

0:24:27that's just like a big X or a plus sign

0:24:29like I would rat like I've rendered that

0:24:31in a you know in a 1.0 scale graph like

0:24:34it's you know one by one and it's

0:24:35alright render for me now draw a line

0:24:37from 0.5 to 0.5 you know like and then

0:24:40just render to any size like that that

0:24:41is actually easier and simpler to to

0:24:43write and to and to conceptualize than

0:24:46having 16 different PNG files that

0:24:50different thicknesses and everything and

0:24:52and sometimes you need the dynamism you

0:24:54know if you offer things like like if if

0:24:57the icon has to be right it has to be

0:24:59read in two different colors different

0:25:00fonts for any kind of embedded text

0:25:02different line thicknesses or if it's

0:25:05something that's being reflected in the

0:25:07UI that is some kind of dynamic element

0:25:09like you know if you have some kind of

0:25:11UI widget where you're showing progress

0:25:14you know do you actually want to render

0:25:15out a progress bar at a hundred

0:25:18different widths for all the different

0:25:21percentages or you know do you which I

0:25:22actually did for my watch app or you

0:25:26know or if you want to just have one

0:25:28that you can call a function and you can

0:25:30generate it at whatever value you need

0:25:32so in a different there's obviously

0:25:35different needs here in different

0:25:36situations usually I prefer to go

0:25:38programmatic wherever possible for Miami

0:25:40generation because usually the the

0:25:42downsides are either non-existent or

0:25:45very very small and the upsides are

0:25:47quite big and I think - one thing that I

0:25:49like about the more I've gotten into

0:25:52doing programmatic rendering is it keeps

0:25:55my it matches matches matches well with

0:25:58my ability so if I open Photoshop which

0:26:02I don't really have that much business

0:26:04getting into but like I can do a lot of

0:26:07stuff there that probably ultimately

0:26:09doesn't look very good like I can over

0:26:12design and try and be clever than I

0:26:15actually am whereas when I'm like

0:26:18writing it in either even in paint code

0:26:20or just like in core graphics calls like

0:26:22it limits in constrains me but I find to

0:26:26be a positive way that like I understand

0:26:29core graphics in a way that I don't

0:26:30understand Photoshop and so it's

0:26:33constructive for me to like okay I can

0:26:35only do of like

0:26:37ten drawing operations or whatever it is

0:26:39like you can do in court graphics like

0:26:40functionally it's like you can stroke a

0:26:42path you can fill a shape like there's a

0:26:44few basic things and so if I make my art

0:26:47assets align with that I'm probably not

0:26:50gonna like reach beyond what I'm

0:26:52actually capable of doing or is if I go

0:26:55into Photoshop and like oh I can do

0:26:56layer styles ooh that's pretty

0:26:58oh let me go into the sea or I can blur

0:27:00this over here like doing stuff that I

0:27:02have no business doing and so at least

0:27:04if I keep it as programmatic and simple

0:27:07then I'm not exceeding that and I

0:27:10understand it too like that's maybe

0:27:11another part of it like we're saying

0:27:13from the beginning of like if you're

0:27:14doing this all yourself

0:27:15like it's danger the dangerous things

0:27:19too in some ways is if you have if

0:27:22you're an external designer is making

0:27:24something for you that you have no way

0:27:26then of recreating or adjusting or

0:27:28adjusting or tweaking like I don't

0:27:30understand it then I can't change it

0:27:33really and that's just you know has

0:27:36definitely come back to bite me a few

0:27:38times where I just need to change

0:27:40something slightly and I can't because

0:27:43like it's a baked PNG and so it's like I

0:27:45just have to make do or I need to try

0:27:47and get back on my designers schedule to

0:27:49make a really smiter adjustment for them

0:27:51and work out the contracting for that

0:27:53like it's a night if it's nice and easy

0:27:55and understandable it's probably gonna

0:27:57be better down the road and I think so

0:28:00for me like this is where I'm heading

0:28:01like I very do very few static images

0:28:04anymore I tend to do a lot more

0:28:06programmatic things or at least storing

0:28:09my assets in a form that I can easily

0:28:12rerender and regenerate and I can look

0:28:15at on my kit I understand what that's

0:28:16doing like I see the lines drawing the

0:28:18shapes it's filling and like that makes

0:28:20sense to me yeah and and and the result

0:28:23of that usually isn't as good as what

0:28:26you can get with a pro designer sure but

0:28:28it's a kind of it's one of those things

0:28:29where like you can get like you know

0:28:31two-thirds of the way there for for a

0:28:35lot less cost and and with a lot of

0:28:37other benefits so like that isn't always

0:28:39worth it sometimes it is and and

0:28:41sometimes you don't have a choice so

0:28:43it's nice to be able to be able to to do

0:28:46to do the minimum required with the

0:28:49resources you have

0:28:51rather than being forced to go and spend

0:28:53a lot of money you don't have so it's

0:28:55it's good to have this option exactly

0:28:57alright that wraps it up for this week

0:28:59thanks a lot to our sponsor this week

0:29:01hover

0:29:02thanks a lot for all our listeners

0:29:03please do recommend us to friends and

0:29:05rate us on overcast and iTunes and

0:29:06everything and we will see you next week

0:29:08bye