Developing Perspective

#58: Managing new SDKs


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:04   news of note in iOS development, Apple and the like. I'm your host, David Smith. I'm

00:00:08   an independent iOS developer based in Herner, Virginia. Today is Thursday, June 21st, and

00:00:13   this is show number 58. Developing Perspective is never longer than 15 minutes, so let's

00:00:17   get started.

00:00:18   All right, so today's topic I'm going to talk about is a response to a question from

00:00:23   Naylin B. on Twitter, who's asked a couple of good questions actually, and probably it's

00:00:28   It's good to take a moment and say that if you have questions,

00:00:30   if you have things that you're struggling with, things

00:00:32   that you think I might know about,

00:00:35   definitely just send me a reply on Twitter.

00:00:38   I'll add it to the list and try and work through them.

00:00:41   So what Nalen was asking about is, basically,

00:00:46   how do I manage and handle the kind of awkward place we're in

00:00:49   now as iOS and actually to the same degree Mac developers,

00:00:54   where they have these beta builds that Apple is producing?

00:00:58   So currently, there's essentially

00:00:59   three versions of Xcode.

00:01:02   There's the main shipping gold master in the App Store build.

00:01:06   Then there's the mountain line, whatever

00:01:10   that they called it, like a near final preview

00:01:12   or something like that.

00:01:14   And then there's the iOS 6 beta, which is definitely

00:01:17   nowhere near final.

00:01:19   And it's kind of a tricky thing when you look at that,

00:01:21   of like, OK, so what exactly do we--

00:01:25   as a developer, how do I manage that?

00:01:27   And how do I work on adding new features while still

00:01:32   being able to do fixes and updates to the current stuff

00:01:36   that you can't ship?

00:01:38   So first, probably worth saying is that Apple typically

00:01:43   doesn't allow, or at least very strongly discourages,

00:01:47   people from submitting applications

00:01:50   with anything other than the current gold master Xcode.

00:01:54   So currently, that's the iOS 5.1 SDK, I believe.

00:02:00   And that's the version that you should

00:02:01   be using if you're submitting to the App Store.

00:02:03   Similarly, that last-- it's the final version in the Mac App

00:02:07   Store of Xcode for if you're submitting an app for Lion.

00:02:11   So that's kind of what Apple would recommend.

00:02:13   And in some ways, I think they even enforce it.

00:02:15   Often, if you try to submit a build that

00:02:19   was built against, say, the iOS 6 stuff,

00:02:23   I believe they reject it.

00:02:25   I think it's an automated rejection rather than having

00:02:28   to go through a review one, so it wouldn't be too problematic.

00:02:30   It'll just catch it and yell at you.

00:02:32   But definitely not something you'd want to do,

00:02:36   especially if you're trying to actually ship a build.

00:02:38   So instead, it's going to be this funny place of,

00:02:40   what do you do?

00:02:42   So typically, this is the way that I handle it.

00:02:46   And it may not work for everybody.

00:02:48   It requires a little bit of extra technology.

00:02:51   But I found it worked pretty well.

00:02:53   Apple has shifted to this new kind of Xcode as an app

00:02:58   approach, where rather than the Xcode being this thing that

00:03:03   gets installed into /developer and sticks its fingers all

00:03:06   over your system, in theory, Xcode is now entirely bundled

00:03:10   into one .app file.

00:03:12   So installing multiple copies of it shouldn't interact with

00:03:15   each other.

00:03:17   But at this point, that approach is a little too new

00:03:20   for me to truly trust that if I install the new beta,

00:03:24   that it's not going to mess up something

00:03:26   about my main shipping version.

00:03:29   And that could either prevent me from getting an update out

00:03:31   as quickly or fail in some strange, subtle way that

00:03:35   takes forever to hunt down.

00:03:37   And so that's kind of what I'm looking for to serve

00:03:43   with my thing is I want the most reliable developer setup

00:03:47   possible for my main machine.

00:03:49   I don't want something that has any unexpected behaviors,

00:03:54   weird bugs, things like that.

00:03:56   What I really want in my main--

00:03:58   like my iMac that I sit in front of every day

00:04:01   and just pour out the code, I want

00:04:03   that to be stable and rock solid.

00:04:05   And so I always install the gold master version on that.

00:04:08   And that's it.

00:04:09   I never install any betas, anything like that.

00:04:11   Pretty much that never touches that computer

00:04:14   until it's a gold master.

00:04:16   And so typically this process works

00:04:18   appable at some point release a gold master of Xcode,

00:04:22   for example, with Mountain Lion, my guess

00:04:24   is that it will probably be in the next couple weeks.

00:04:26   They'll be kind of like, here's the GM version of it that

00:04:29   includes the Mountain Lion SDK.

00:04:31   And at that point, I'll install that and submit

00:04:34   the Mountain Lion updates to the Mac App Store

00:04:36   for my applications.

00:04:39   Typically, they don't really allow--

00:04:41   like I said before, you can't link against the new stuff

00:04:45   in a version until typically the Google GM's released.

00:04:50   And so you can do some kind of forward compatibility updates.

00:04:54   So this is like-- you'll probably

00:04:56   have heard a bunch of this recently, where people

00:04:58   need to make updates to their 5.1 SDK apps

00:05:03   to make them compatible with iOS 6.

00:05:06   What they have to do there is not necessarily taking the--

00:05:09   they're not linking against the new stuff to make it work.

00:05:12   It's usually that they are--

00:05:14   they're doing something in their 5.1 code that is broken on iOS 6.

00:05:19   And so they're sort of fixing it in almost like a future proofing

00:05:23   way, if that makes sense, rather than actually adding

00:05:26   in the future stuff.

00:05:28   And so you can kind of do those, but you'll just

00:05:30   use those with your main versions of Xcode.

00:05:33   So anyway, so that's kind of the process that I'll do is,

00:05:35   on my main machine, it's whatever the latest is,

00:05:37   pretty much all the time.

00:05:39   Really, the only exception is, unless I really

00:05:41   need to rush out an update, I often will--

00:05:45   I typically wait like maybe 18 hours, almost a day,

00:05:49   maybe before I install the new version once it's released,

00:05:53   just because you kind of are waiting for that Twitter

00:05:55   feedback of, wait, the new version of Xcode

00:05:58   totally destroys XYZ.

00:06:00   And I try not to be an early adopter with my job,

00:06:06   because if something goes weird and wrong,

00:06:08   that could be very problematic to me.

00:06:11   So I usually wait a little bit.

00:06:12   And one nice thing about the new Xcode being shipped as an app

00:06:16   file is it's very easy to back up.

00:06:19   So typically what I'll do is I'll just grab that .app bundle,

00:06:22   create a zip file, throw it on a big hard drive I have,

00:06:25   and just in case.

00:06:27   If I ever need to bring it back, I can.

00:06:29   Because it's very hard to get the old past versions.

00:06:32   You can't get them in the Mac App Store, I don't think.

00:06:35   There may be some somewhere available on the dev portal,

00:06:38   but I'm not even sure about that.

00:06:40   So I always just back them up and have a whole bunch of

00:06:42   archives of my old Xcode installs, just in case.

00:06:47   So then that begs the question, what do I do with

00:06:49   the new stuff?

00:06:50   And so for that, I'm going to walk through some of the

00:06:52   changes I've been making to Five Live, one of my Mac

00:06:57   applications that I've recently been making

00:06:59   Mountain Lion ready.

00:07:00   So Mountain Lion includes this new notification center, which

00:07:03   is great for something like Five Live, whose purpose is to

00:07:07   monitor the 5x5 live stream status

00:07:11   and alert you when shows are being recorded.

00:07:13   And so that's a great thing for Notification Center

00:07:15   to be able to pop up an alert and say,

00:07:17   hey, build and analyze, hey, Hypercritical

00:07:20   are being recorded, would you like to listen to them?

00:07:22   And so I've been working on that.

00:07:23   And for me, what I do is I have an old Mac laptop.

00:07:27   It's an old MacBook Pro.

00:07:28   It's fairly performant, does a pretty good job.

00:07:30   And I use that as my--

00:07:32   I guess you could almost call it my sandbox.

00:07:35   That's where I go to work on stuff that is beta, that is

00:07:39   volatile, that I want to play with without having any risk

00:07:42   to my main machine.

00:07:44   And so right now, that's running the latest developer

00:07:47   preview of Mountain Lion.

00:07:48   It's running the absolute latest Xcode.

00:07:50   It's got all the iOS 6 stuff in it.

00:07:52   And that's kind of my sandbox.

00:07:53   And I can really do whatever I want on that machine.

00:07:56   And I don't have to worry that I'm going to be messing up

00:07:59   my production, important for shipping, actual money

00:08:03   machine.

00:08:05   And I'll work on that.

00:08:06   And so I've got notification center support all baked in

00:08:10   and ready to go in the new 5 Live

00:08:12   as soon as Apple starts accepting Mountain Lion apps.

00:08:14   It'll be one of the things that I submit.

00:08:16   But by segregating those machines,

00:08:18   it just gives me such peace of mind.

00:08:20   And I may be overly paranoid with this,

00:08:22   but I've been bitten by it so many times, especially

00:08:25   in the old days, where you'd install some new beta

00:08:29   and it would mess up some weird thing.

00:08:30   And you couldn't build, and you couldn't submit for two days.

00:08:33   You had to find the old version and install it.

00:08:35   And it's just one of those things that--

00:08:38   if you were a carpenter, it's like having a sharp ax,

00:08:43   or I guess maybe if you're a lumberjack, having a sharp ax.

00:08:47   But your tools are important to you,

00:08:51   and so I take very good care of them.

00:08:52   And so I'm very conscious and very careful

00:08:54   about what I do with them.

00:08:56   So that's kind of my process.

00:08:58   I'd say it's a little overly paranoid,

00:09:00   but I think it works.

00:09:01   And I think it really--

00:09:02   if this is your job, this is your profession,

00:09:04   you've got to be careful about this.

00:09:06   Similarly, related to this on the side

00:09:08   is how I manage the betas on my devices.

00:09:11   And so what I always do with this is--

00:09:13   what works pretty well is I typically

00:09:16   am installing the new iOS.

00:09:19   So in this case, iOS 6.

00:09:20   I install it on my previous generation iPhone.

00:09:25   I own one of almost every iPhone since the iPhone 3G, I think.

00:09:30   So what I do is I'll install one before.

00:09:32   So currently, it's on my iPhone 4.

00:09:34   And I tend to prefer iPhones rather than iPod touches

00:09:36   for playing around with it, primarily because I can

00:09:39   actually then use it as my phone, which

00:09:41   is really convenient.

00:09:42   I can pop the SIM out of my current iPhone.

00:09:44   I can pop it in.

00:09:45   And I can get a sense of those features in day-to-day use

00:09:47   without the risk of actually-- if somehow it

00:09:50   breaks my phone or something weird,

00:09:52   I'm not totally out of luck.

00:09:53   I can just probably take the SIM out,

00:09:55   put it in my main phone, which is running--

00:09:56   I think now it's iOS 5.1.1.

00:09:59   and that's you know i can

00:10:00   pick that up right at right where i left off no problem

00:10:03   and

00:10:03   you know that seems to work pretty well for me i'll do that and that you know

00:10:06   and the i_m_ the ipad side is kinda pick a device

00:10:10   it any matters as much there just because it's they're all kind of the

00:10:13   same in many ways

00:10:15   so i think on stall i was six probably on one of my

00:10:18   problem i've had three

00:10:20   that it's

00:10:21   i think that i'll probably where i go just because

00:10:24   going to be wanting iOS 5 on my older devices, probably more

00:10:29   than iOS 6 on my older devices.

00:10:31   So that's probably what I'll do.

00:10:33   It's kind of interesting, of course,

00:10:35   because iOS 6 is not compatible with the first-gen iPad.

00:10:39   So those will be stuck forever on iOS 5.1.1.

00:10:45   But that's not really a big deal.

00:10:47   I still actually even have an iPad running 3.2,

00:10:49   the absolute original build.

00:10:52   I just can't bear to update it because that machine is

00:10:56   irreplaceable.

00:10:57   Not that I even have many users stuck on that.

00:11:01   There's just something kind of hard.

00:11:02   It's almost like if I had an original iPad or iPhone

00:11:05   running like iOS 1.

00:11:06   I'd just-- there's something kind of cool.

00:11:08   At some point, I'll probably break down and install iOS 5.1,

00:11:10   put 1 on it.

00:11:11   That may just be when I want to sell it or something like that.

00:11:15   Though I mentioned it here.

00:11:16   In case you have some weird bug on someone running an iOS 3.2,

00:11:21   you need me to try something out,

00:11:22   just let me know.

00:11:23   I've got it sitting there, and it hardly ever gets any use.

00:11:26   Anyway, so that's kind of my version strategy.

00:11:28   It seems to work for me.

00:11:29   And so hopefully that's helpful.

00:11:30   Hopefully it's a useful thing to kind of be thinking about.

00:11:33   A little pro tip, if you don't have another computer that you

00:11:35   can kind of make your sandbox, I'd

00:11:37   definitely recommend just getting it, whatever,

00:11:39   the cheapest external hard drive you can,

00:11:41   and just installing Mac OS on that and booting from that.

00:11:44   And you can, since you completely

00:11:47   reproduce your-- it's as though you have a new computer,

00:11:49   even if it's running on your main computer.

00:11:51   So you just boot from the external drive.

00:11:53   You can do what you want.

00:11:54   You could even start from a super duper backup or copy

00:11:57   of your main computer.

00:11:58   So all your applications and stuff are there.

00:12:00   And then you can just upgrade it,

00:12:01   as long as you're just kind of careful.

00:12:03   It's like, whenever I do something like that,

00:12:05   I always change the desktop on my new computer

00:12:07   to something really obvious and gaudy,

00:12:10   so that I'm very aware of what machine I'm on.

00:12:13   So that's it for today's show.

00:12:15   Hopefully that's helpful.

00:12:16   As I said, if you have any questions, thoughts,

00:12:18   comments, definitely the best place--

00:12:20   Just reply me on Twitter.

00:12:21   I'm @_DavidSmith there, and I'll do my best to respond.

00:12:26   I think it's really helpful when I

00:12:27   get a sense of what people are actually interested in,

00:12:30   what people want to hear about.

00:12:31   It just helps hopefully makes the show more engaging

00:12:33   and more kind of a dialogue rather than just a monologue.

00:12:37   But yeah, otherwise, have a good week, happy coding,

00:12:39   and I'll talk to you later.

00:12:40   Bye.