Under the Radar

30: A Brief Visit to Android


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:03   I'm Marco Arment.

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

00:00:06   Under the Radar is never the longer than 30 minutes, so let's get started.

00:00:10   So in a bit of a surprise move in the run-up to WWDC, we are not going to be talking about

00:00:17   iOS today.

00:00:19   In a strange way, I took our own advice.

00:00:21   If you've been listening back since, I think it was episode 25, where we talked a little

00:00:25   bit about what do you do in the kind of awkward time right in the run-up before WWDC, where

00:00:32   you don't necessarily want to start a whole new project, you don't necessarily want to

00:00:36   do something big because when WWDC happens in about a little over a week now, you may

00:00:43   have to drop everything and be moving in a totally different direction and all those

00:00:47   types of things. And so I've been spending the last couple of weeks since then doing

00:00:54   updates and polishing on most of my applications.

00:00:57   And I got to the point where I had most of my iOS apps in a really good place.

00:01:03   And so I started looking around at my various other projects that aren't kind of like my

00:01:07   main focuses, and I noticed that the Android app that I had released many, many years ago,

00:01:15   mostly as an experiment, but nevertheless out in the world, had rather been neglected

00:01:23   insofar as it was last updated in August of 2012, which is something like 196 weeks ago.

00:01:33   But I went and looked, and in its download stats, people are still downloading it, it

00:01:37   still has a reasonable amount of interest.

00:01:41   And so I thought to myself, "Well, this is probably one of the few windows I'm going

00:01:45   to have where it's going to make sense for me to dive back into Android development,

00:01:51   to work on an Android app and get it updated, get something out before WWDC.

00:01:57   Because it's pretty rare that I have these windows for like a couple of weeks without

00:02:00   any other pressing work.

00:02:02   And so that's what I did.

00:02:04   And I thought it would be an interesting discussion for today to unpack a little bit of the experience

00:02:08   of that because it's interesting.

00:02:10   I'm by no means an Android expert.

00:02:12   I'm the opposite of that.

00:02:14   I am barely competent as an Android developer.

00:02:19   If it wasn't that I learned Java as the first sort of academic language I ever learned,

00:02:24   like back when I was doing computer science in high school, I probably wouldn't be able

00:02:28   to even attempt it, because I have very limited experience.

00:02:33   But it's interesting to look at it coming from a day-to-day iOS developer diving into

00:02:40   Android, especially because the last time I dived into Android was almost four years

00:02:45   ago.

00:02:46   So that's kind of what I wanted to dive into.

00:02:49   Have you ever done any Android work?

00:02:51   - So when, I mean the short answer is no.

00:02:55   The slightly longer answer is when the Nexus One

00:03:00   first came out.

00:03:01   I decided, I was working on Instapaper at the time,

00:03:04   a few months I think before the iPad was announced.

00:03:07   Something in that time span, so you know,

00:03:09   early 2010 or late 2009.

00:03:12   And so I had this Nexus phone and so my first idea

00:03:15   was let me just try to optimize the website for it

00:03:17   because it had that weird,

00:03:19   I believe it was either the pen tile display

00:03:21   or something like a pen tile display

00:03:23   where the RGB sub-pixels were not lined up

00:03:26   exactly the way they normally are

00:03:27   like on a regular screen layout.

00:03:30   And so there were a lot more green pixels

00:03:32   than anything else.

00:03:33   So I started experimenting with color schemes

00:03:35   of what makes the most legible text.

00:03:38   So things like, should I do green on black?

00:03:41   I was like, can I do things to maximize battery life

00:03:43   that are still legible that will maybe

00:03:46   let me to save on brightness by using more green

00:03:49   than other colors or whatever else.

00:03:51   And then a few weeks into the experimentation,

00:03:53   the iPad was announced, and then I stopped working on it.

00:03:56   And that was the end of that.

00:03:57   Because the iPad was just way more important for me

00:04:01   to be working on for a reading app.

00:04:03   And that proved to be correct.

00:04:05   When Instapaper eventually had its own Android app,

00:04:08   I contracted that out.

00:04:10   I never even saw the code.

00:04:12   I have never seen what Android development is actually like.

00:04:16   - So then I guess this will be an enlightening journey

00:04:19   for you to hear what it's like

00:04:21   to dive into Android development.

00:04:23   - Yeah, I mean, I think it's funny that here you are saying

00:04:25   like, well, I'm not that much of an expert.

00:04:26   Like, you would know way more than I do.

00:04:28   You've actually done it.

00:04:28   Like, doing it at all.

00:04:31   - I have a whole two weeks experience

00:04:33   with Android at this point.

00:04:34   - That is literally infinitely more than I have.

00:04:38   - So, it seems like the best place to start

00:04:40   was to talk through some of the things that I like about Android, some of the things that

00:04:45   coming to it I was pleasantly surprised by.

00:04:49   And the first thing that comes to mind is Android Studio, which is their new, well new

00:04:55   to me, development environment that he used to make Android apps by you download Eclipse,

00:05:01   which is sort of like the open source generic Java SD development environment, and you'd

00:05:07   add all these extra add-ons and plugins to it, and that would become the Android development

00:05:13   environment. But I believe Google either partnered or bought or somehow got a hold of the IntelliJ

00:05:18   environment and have turned that into their development environment. And I gotta say,

00:05:24   coming from Xcode, visually it's kind of rough. It has that kind of cross-platform generic look

00:05:33   to it that a lot of Java apps have, so it doesn't look like Xcode in terms of being

00:05:38   really native on the Mac, but functionally it's actually really pretty good.

00:05:43   And there's a lot of things that -- and a lot of this has to do with -- I mean, most

00:05:47   Java tools have had this for a while, and I've always kind of wondered why Objective-C

00:05:50   and maybe Swift tools have it, I don't think so.

00:05:53   There's a lot of things where it can do auto imports for you.

00:05:58   So if the first time you mention a new class, it'll be like, hey, would you like me to import

00:06:04   this for you?

00:06:05   And those types of things and its refactoring tools and in general environment is actually

00:06:12   pretty pleasant to work in, especially even all the stuff that it has to do in terms of

00:06:16   managing different emulators and devices and all this kind of stuff.

00:06:21   There's a lot of moving parts, it seems, with developing an Android app, which would kind

00:06:25   of makes sense given the flexibility of the platform.

00:06:31   And their development tools are actually surprisingly good at that and related to that.

00:06:35   Like, it's kind of funny, they have emulators rather than simulators.

00:06:39   That's an important distinction though too, because aren't the emulators, because they're

00:06:43   emulating, substantially slower than the iOS simulator?

00:06:48   Well, so this was the thing, that was my experience four years ago, where the Android emulator,

00:06:53   you'd start it and it would run, it would spend many minutes trying to boot up and all

00:07:00   this type of thing. Whereas now, I believe they're doing some kind of Intel hypervisor

00:07:07   thing with them now, I think it's the HaxM process or something. There's a way in which

00:07:13   the emulators are now running at very close to native speeds, which once they've crossed

00:07:20   over that point means that the emulators are so much better than a simulator would be,

00:07:24   because it's an actual representation, especially with, as I'll get to with the not-so-great

00:07:29   parts, when you're starting to deal with the number of devices you have to manage on Android.

00:07:33   Being able to, I can create like a Nexus 7, and it's pretty close to an actual Nexus 7

00:07:41   in terms of how it will behave and operate, and you don't have the same problem in the

00:07:47   the same way with the simulator where a lot of things on iOS, they sort of work in the

00:07:52   simulator but they don't work, it'll work on the simulator but it won't work on the

00:07:56   device or vice versa, or there's a whole bunch of APIs that you can only use on device you

00:08:01   can't use in the simulator, whereas with the Android stuff it seems like the emulators

00:08:06   are true emulators that you can do pretty much anything with that you would be able

00:08:11   to do on a device, which is really nice.

00:08:14   And so in general, I'd give the tools for Android

00:08:16   a big thumbs up.

00:08:17   It seems like they really have come a long way

00:08:20   in the last four years, and make for a pretty pleasant place

00:08:22   to work.

00:08:24   That sounds great.

00:08:25   I think there was one or two times where I did install

00:08:27   the SDK long ago, in the early days,

00:08:30   probably about four years ago when you were doing

00:08:33   your previous work.

00:08:34   And I had only very negative things

00:08:36   to say about it because of things like performance issues

00:08:39   and everything else.

00:08:40   But if it's come a long way, that's fantastic.

00:08:42   because I know well enough in this industry

00:08:46   to never say never, and so I very well might find myself

00:08:49   doing Android development at some point in the future,

00:08:51   so it's nice to know that these tools are way better

00:08:54   and way further ahead of where I last saw them.

00:08:58   - Yeah, and it definitely seems like,

00:09:00   I mean, it's like, it definitely sounds a bit funny,

00:09:03   'cause I think of how, in my mind,

00:09:06   they were just as they were four years ago,

00:09:08   but obviously this is very important

00:09:10   for Google and the Google developer community that this has definitely been driving forward

00:09:15   and they are making great progress there.

00:09:19   And the actual building things too has gotten...

00:09:21   I mean, I guess this hasn't changed, but this is something that was quite a nice relief

00:09:26   coming back from iOS work.

00:09:29   One thing that I noticed too is back when I was doing my early Android work, the iOS

00:09:36   of ecosystem was very unfragmented from a screen size resolution device perspective.

00:09:43   I can't remember exactly which phone we would have had then, but at the most I think

00:09:47   we would have had two different device screens back in 2012.

00:09:52   It was very straightforward on the layout side and handling things.

00:09:57   You didn't have a lot of flexible layouts and all the size class stuff and all this

00:10:01   other stuff that has kind of been bolted on to iOS since.

00:10:05   always had to have that. And so back in the day I looked at this and it was like, "Oh

00:10:09   man, this is so complicated, having to work out and making sure that my app can scale

00:10:13   dynamically." But the strange thing is now, coming back to it, it's really nice that it's

00:10:19   kind of built into the fundamentals of the way everything works. Everything is dynamic

00:10:24   by default. In general, nothing on Android, when you're working on it, they're all very

00:10:30   flexible layouts, in some ways very similar to the way the WatchKit SDK is, where everything

00:10:37   is sort of designed to flow and be dynamic and not have any sort of hard-coded values

00:10:43   into it.

00:10:44   Because for an Android app, there are so many different device types that it kind of has

00:10:48   to be.

00:10:49   And it's been really refreshing working on that, versus when I do work on iOS now, like

00:10:54   all the size class stuff and some of the things that you can do with auto layout potentially,

00:11:00   can do a lot of this kind of stuff, but it's always, it feels a bit more shoehorned in

00:11:06   on iOS to me. Whereas on Android, it's because it's always had to be in there, it feels quite

00:11:10   natural. And on the other, a random little side thing that I've absolutely really, really

00:11:16   love now that I've experienced it is the Android equivalent of nibs, where you would sort of

00:11:24   UI components that you're expressing not in code is they're just big, easily editable

00:11:31   XML files, which if you have ever viewed the source on a nib, it's the complete opposite.

00:11:39   It's this very nice declarative markup language that you can specify your UI in, that you

00:11:45   can view in source control really easily.

00:11:48   If you make a change, you can actually see a diff, whereas with a nib, any time you even

00:11:53   can look at it, it'll change in source control in ways that don't make any sense, where all

00:11:58   of a sudden all these components got jumped around, and that's certainly gotten better.

00:12:03   But it is lovely to be able to look at something, in their design tool, you can look at it like

00:12:08   the visual version or the text version.

00:12:11   And often I find I just work in the text version.

00:12:13   And it's kind of nice to have this type of thing that's...

00:12:17   UI is such an essential part of building an application, that having precision, being

00:12:23   able to go in and look at the code,

00:12:25   that's the markup, I guess, for that UI,

00:12:28   and just make little tweaks and changes in a very precise way,

00:12:31   I've found to be really, really helpful.

00:12:33   Combining that with the dynamic layout stuff,

00:12:36   making a UI on Android is actually pretty nice.

00:12:39   That sounds awesome, honestly.

00:12:41   It sounds very refreshing compared

00:12:43   to some of these challenges we face in iOS,

00:12:45   some of the things that aren't so great.

00:12:47   As you mentioned, that sounds nice.

00:12:49   Because we are in a world now where

00:12:52   I think we are moving towards having more variety in screen sizes, not less, and Android

00:12:58   was first to that, obviously. And so, you know, anything the tools can do to help that

00:13:03   is great. And, you know, iOS does have lots of tools to assist with that and lots of APIs

00:13:08   that are good at dealing with that, but I think you made it where, like, Android was

00:13:11   written that way from day one out of necessity and by design, whereas iOS, a lot of it does

00:13:15   feel still pretty bolted on.

00:13:17   Yeah, and it's interesting because this experience of the last couple of weeks has

00:13:24   been definitely very helpful in making sure that I'm aware of the blind spots I have

00:13:30   in terms of if I'm going to be an independent iOS developer, which is sort of what I'd

00:13:35   say is my title, if I don't have at least a glancing familiarity with Android and being

00:13:41   aware with it, it seems like I'm kind of tying one hand behind my back in terms of

00:13:45   my ability to do what I'm doing.

00:13:47   And I'm not saying that I'm gonna be diving in head first

00:13:49   and becoming an Android developer.

00:13:50   Like, let's not get crazy.

00:13:52   (laughing)

00:13:53   - I would love to see you get crazy.

00:13:55   - Just go crazy.

00:13:56   (laughing)

00:13:58   - I love that that's your version of getting crazy too.

00:13:59   - That's me getting crazy.

00:14:00   - Getting crazy is becoming an Android developer.

00:14:03   Which, and just more than you already are one.

00:14:06   - Exactly.

00:14:08   That's just how I roll.

00:14:09   So, I look at this though, and I'm like, okay,

00:14:12   this is not as bad as I had in my mind,

00:14:14   And it's a good thing to be aware of.

00:14:17   And so I'm glad I've kind of gone through this process.

00:14:19   And another thing that I've loved that's been kind of a nice--

00:14:24   and a nice thing to see is the Google Play infrastructure,

00:14:28   which you kind of imagine, given that Google made it,

00:14:31   is really good.

00:14:33   The number of things that you can just do natively,

00:14:36   which is their equivalent of iTunes Connect for us,

00:14:41   is there's a lot of stuff just baked into that that

00:14:44   really powerful and really clean and simple and it's nice, I mean obviously there's things

00:14:48   like not having review, and even I've run into this, like I haven't fully submitted

00:14:53   my app yet but I've done a couple of beta tests just internally, and it's really nice

00:14:59   that you just upload the APK file and you say add who you want to be beyond the beta

00:15:05   test which at this point is just myself, but then in the Google Play Store you just, like

00:15:11   an app update will appear in just the same way that if I push it out to a customer through

00:15:17   the main interface, you get a little update.

00:15:19   It would be like in the equivalent of in the App Store in that Updates tab, a little thing

00:15:23   would pop up.

00:15:24   There's no extra app that you have to install, there's no extra complexity there.

00:15:28   Like your beta testers just get an update.

00:15:31   It just happens to be a beta update.

00:15:33   And you see a lot of these kinds of things that are just really nice.

00:15:36   Their analytics is really good.

00:15:40   All the things are kind of just baked in nicely together, whereas I feel like iTunes Connect

00:15:44   has been adding a lot of this.

00:15:47   For a while, Google Play definitely destroyed iTunes Connect in terms of analytics, in terms

00:15:51   of being able to see a lot of information, which is really important in Android, where

00:15:57   I go into the analytics and I break down the distribution of my installs by Android version

00:16:04   or device type or device screen size.

00:16:07   And on iOS, a lot of those pie charts are kind of boring because it's like 80% of people

00:16:12   are on the latest iOS version, and the distribution between iPhone and iPad is fairly stable and

00:16:19   so straightforward.

00:16:20   But a lot of these pie graphs for Android are pretty complicated in terms of which versions

00:16:25   of Android is things.

00:16:26   But it's all been in there and is very easy to sort of understand and go through.

00:16:31   iTunes Connect is getting analytics and stuff, which is great, but it's kind of the interface

00:16:36   that they have in Google Play is really nice.

00:16:38   And it's been a nice, pleasant experience

00:16:42   to be good to go in there and work with.

00:16:46   - Our sponsor this week is Hover.

00:16:48   When you have a great idea for your project or blog,

00:16:51   you need to give it a great domain name.

00:16:52   And finding that perfect domain name

00:16:53   is ridiculously easy with Hover.

00:16:56   Now, it's incredibly easy with Hover

00:16:57   to set up your domain name

00:16:58   with your most popular website builders.

00:17:00   With this feature called Hover Connect,

00:17:02   you can set it up automatically with just a few clicks

00:17:04   with tons of popular website hosts.

00:17:06   There's no more digging through help articles

00:17:08   to figure out the DNS settings or anything else like that.

00:17:10   Hover Connect lets you set it up very quickly and easily.

00:17:13   And they also have transfers that are really easy.

00:17:15   If you already have a bunch of domains

00:17:16   scattered across other domain providers,

00:17:18   you can save tons of money by bringing them all to Hover.

00:17:21   All eligible domains will include free Whois privacy,

00:17:23   and with volume discounts,

00:17:24   the more domains you have in your account,

00:17:26   the more of a discount Hover will automatically apply.

00:17:28   So use Hover today to find the perfect domain name

00:17:30   for your idea.

00:17:32   Go to hover.com and use the promo code FASTREVIEW

00:17:34   at checkout to save 10% off your first purchase.

00:17:37   Once again, it's hover.com/promocode/fastreview

00:17:40   at checkout for 10% off your first purchase.

00:17:42   Thank you so much to Hover for their support of this show

00:17:44   and all of Relay FM.

00:17:46   Now, you probably noticed that the first few things

00:17:49   that I was talking about of being an Android developer

00:17:52   were pretty positive.

00:17:53   Overall, it's a pretty good experience.

00:17:56   It's not all positive, and I think

00:17:58   it seemed like I might spend the rest of the episode kind

00:18:01   of unpacking some of the things that were not so great.

00:18:05   And the first one that I wanted to talk about is the mind-bending experience of thinking

00:18:12   through and managing device compatibility.

00:18:15   So if I go into Google Play, and it has a little area that says, "This build of your

00:18:23   app is compatible to work with a certain number of devices."

00:18:27   and for my application right now,

00:18:29   that number of devices is 12,346.

00:18:33   - Wait, that's like models, not like users?

00:18:36   - That is models, so like in a way that like a 4S

00:18:40   or a 5S or a 6S would be a different device,

00:18:44   I believe it's 12,346, 12,346 devices.

00:18:49   - Well, this raises the obvious question,

00:18:50   how many Android devices are there?

00:18:53   - I don't know, a lot.

00:18:54   (laughing)

00:18:55   - Wow. - More than that,

00:18:57   Because I'm only at this point supporting back to Android 4.4,

00:19:03   which is a relatively old but not so old version.

00:19:07   So there's a lot of devices.

00:19:09   And in practical terms, some of that doesn't really matter.

00:19:13   A lot of these devices are similar.

00:19:16   If you're trying to worry-- I don't

00:19:18   worry about the difference between some iOS devices

00:19:22   too much these days either.

00:19:24   Conceptually, that lies them into the different screen

00:19:26   sizes. I don't differentiate between the 5 and the 5S, so maybe there's similar things.

00:19:32   But still, that's a lot of devices.

00:19:34   Yeah, I mean, it sounds like it's almost like the web in the world of Android in a

00:19:37   lot of ways, where it's like you have with your layout, you have this kind of flexible

00:19:42   flow box-based thing because you're really just targeting who knows what screen size.

00:19:47   It seems like the device models, it would probably be not that much different for most

00:19:53   and this obviously excludes things like games where the exact hardware specs are a lot more

00:19:58   important. But it seems like it'd be kind of like worrying about what kind of laptop

00:20:03   people are using to connect to your website. You basically need to know the screen size

00:20:07   and their browser, and that's about it.

00:20:11   And it's a weird thing though, because on my desk right now, where we're podcasting,

00:20:16   I can see probably eight to ten iOS devices that I've accumulated over the years, because

00:20:23   I've learned the lesson the hard way of I basically have kept every single iOS device

00:20:30   I've ever bought, and I only ever will give it to a friend or a family member or something

00:20:37   when it has aged out of compatibility with my applications. So at this point, anything

00:20:43   from a 4S and up, I've capped.

00:20:46   I have all these devices, whereas on Android, I have one Android device.

00:20:50   I think I have a Nexus 5, I think it's a Nexus 5, I'm not really sure.

00:20:54   I have a Nexus device that I bought a while back just to kind of play with and try, and

00:21:01   so I have to rely on emulators a lot.

00:21:04   Like I have, I don't know, at this point I think I have tested my app on six different

00:21:09   trying to try different things, but it's a really weird feeling to not be able to try

00:21:17   the app that you're shipping on a representative sample of the platforms or the devices where

00:21:24   you expect it to actually be used.

00:21:27   Which is, maybe it doesn't matter in practice, I'm not Alex Oft to find out when I actually

00:21:30   ship this update, but it is really disconcerting coming from the iOS world where I have a,

00:21:37   a physical copy of every iPhone that my apps currently support available to me.

00:21:46   Somewhere in this house, all the way back from my 4S from years ago to my 6S now, I

00:21:53   have a device that I can try my apps on.

00:21:56   Whereas I'm obviously never going to have 12,000 devices to test on, and even the thought

00:22:02   of trying to have a representative sample of those gets really expensive and complicated,

00:22:06   because these aren't devices that I buy naturally.

00:22:10   My iPhone collection has just been a natural thing that I've collected in real time, rather

00:22:15   than trying to go out and buy a bunch of $400-$600 devices.

00:22:20   And so that's definitely intimidating.

00:22:22   And related to that is definitely the SDK question.

00:22:27   The vast majority of people are not running the latest version of Android.

00:22:33   adoption curve is really, really slow.

00:22:37   When I look at my stats, the biggest hump right now for me is around Android 4.4, which

00:22:44   I think is at least three or four years old.

00:22:47   And so it's a really strange thing when you're trying to make sure that your app works well

00:22:54   on all of those.

00:22:55   There's a lot of stuff they do that's just really cool.

00:22:57   We have this app compatibility system where Google writes, like, it's kind of mind-bending,

00:23:04   but they write a bunch of classes that are backwards compatible with really old versions

00:23:09   of Android with the new features in them that you can include as a library into your application

00:23:17   so that your app will run and behave somewhat in a modern way on an old system.

00:23:24   That's interesting.

00:23:25   Which is really clever.

00:23:27   But also, that's never going to be quite as good as just, "Well, 90% of my users are

00:23:33   running iOS 9.3.2," or whatever the latest version is.

00:23:37   And that is very close to what we find with iOS.

00:23:41   And so there's just no need for any of this type of compatibility system.

00:23:48   And maybe in practice, I'm not sure how much it will really come to bite me, but it makes

00:23:51   me feel really nervous when I'm shipping something and I'm like, "I hope this works. I think

00:23:57   I've tried it on enough devices. I really don't know. I guess I'll just have to go through

00:24:01   and read my one-star reviews and see what they look like." Wow.

00:24:08   And the other thing, as I'm going through this, that has kind of been a little bit...

00:24:14   This is the softer, more emotional part of Android development, but it's a really strange

00:24:20   thing to not feel like I really know what I'm doing. It's a bit humbling, which is probably

00:24:27   a good thing, but it's definitely this strange feeling of I've been doing iOS work for so

00:24:33   long at this point that I feel like, I don't think it's hubris to say that I'm an expert

00:24:40   iOS developer. I've been doing this as a full-time profession for seven or eight years now.

00:24:46   Yeah, you definitely are an expert iOS developer.

00:24:48   If anybody in the world is, it's you.

00:24:52   Which is nice to have that feeling.

00:24:53   And then when I go to Android, I'm like, "I have no idea what I'm doing."

00:24:57   I'm going in and reading the Getting Started documentation.

00:25:01   I'm really diving in and trying to understand these things.

00:25:06   And some of it is even just really hard because I don't use an Android phone on a regular

00:25:10   basis.

00:25:11   my apps, and I'm like, "I'm just making iOS apps on Android," which probably means that

00:25:18   I'm not making really good apps on Android.

00:25:21   In a lot of ways, I'm making functional apps that work, but it's weird to, on the iOS side,

00:25:29   be able to feel like I'm able to ship top-tier apps in terms of what they're capable of doing,

00:25:35   the way they visually look, the way they behave, etc.

00:25:37   I can be confident on that end.

00:25:40   And it's, I guess the best word is humbling on Android to look at it and be like, "I

00:25:46   really don't know what I'm doing."

00:25:48   And some of this has been a good experience, I think, of getting over that and just saying,

00:25:52   like, "Okay, it's fine.

00:25:54   These apps aren't going to be as good as some of the apps, their equivalents on iOS.

00:25:59   That's fine.

00:26:01   It's a good thing for me as a developer and as a person to sort of be okay with that and

00:26:06   do the best I can, and it works out well in this particular case because I have a very

00:26:10   definite end to when I'll be able to work on this, so I can't be like, "Well, I'm going

00:26:15   to need to learn everything and dive into this for months and months because I'm definitely

00:26:19   not going to be working on Android starting the Monday of WWDC."

00:26:24   So I have to ship this update before then, and so it's just whatever the best I can do

00:26:28   between now and then is the best I'm ever going to be able to do.

00:26:32   But it's definitely a weird feeling, and I guess it gives me some sympathy for what it

00:26:35   it must be like for new iOS developers, too, when you come to the platform and you're like,

00:26:40   "Wow, this has gotten really complicated."

00:26:42   The number of things that a modern application has to be able to do is not insignificant,

00:26:49   and so learning all of those things in some ways from scratch again is a good reminder

00:26:53   of just how hard this job can be.

00:26:56   Although at least now you can click the "Fix code signing issues in Xcode" and it usually

00:27:00   works.

00:27:01   Does it?

00:27:02   Yeah, if you have a clean slate, it usually does work.

00:27:09   It's questionable.

00:27:12   I would not have the same confidence that you've had there.

00:27:15   I know what you're talking about.

00:27:16   It has gotten better.

00:27:17   It has definitely gotten better.

00:27:22   Code signing is always a funny thing.

00:27:24   Amusingly, I ran into this with Android, too.

00:27:28   I thought for a minute that I had misplaced my private signing key for Android, which

00:27:35   would be awkward because as best I can tell you can't reissue it.

00:27:40   And so in order for me to update my application, I have to have the same private key for subsequent

00:27:45   updates.

00:27:46   That's interesting.

00:27:47   And so I definitely had a moment of panic where like, "Oh gosh, I haven't signed this

00:27:52   for four years.

00:27:54   Where is this key?"

00:27:55   Eventually I found it, but definitely a pro tip if you're an Android developer, put that

00:28:00   somewhere safe.

00:28:02   It's important.

00:28:03   All right, well, I know we have almost no time left, but can you tell yet?

00:28:11   Was it worth it?

00:28:12   I think so.

00:28:13   Like I said, ultimately the things that I want to, professionally I want to make sure

00:28:19   that I'm doing good work in a way that is sustainable.

00:28:24   At its core, that's all I want to come,

00:28:26   one out of my career at this point.

00:28:28   I want to be doing work that I'm proud of

00:28:30   in a way that can sustain and feed my family

00:28:34   and be successful in that way.

00:28:37   And I feel like doing something like this,

00:28:39   spending a couple of weeks of working on Android,

00:28:41   like the app itself,

00:28:42   I don't expect to make a lot of money from,

00:28:44   I don't expect for it to be a runaway success.

00:28:47   But I like that in the back of my mind,

00:28:50   if iOS takes a turn in a direction

00:28:52   makes it really hard for me to work, I have Android as a backup in a way that is a bit

00:28:57   more tangible and a bit more concrete than if it was just this amorphous thing that I

00:29:02   hadn't touched in four years.

00:29:03   So I'd recommend it.

00:29:04   It seems like it's a good thing to be more diversified and more broadly experienced.

00:29:09   Okay, and with that we're out of time this week, so thanks for listening everybody and

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

00:29:14   Bye.

00:29:14   Bye