PodSearch

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.