Show 2
00:00:00
◼
►
Hello, and welcome to Developing Perspective.
00:00:02
◼
►
Developing Perspective is a near daily podcast discussing the news of note in iOS, Apple,
00:00:07
◼
►
and the like.
00:00:08
◼
►
I'm your host, David Smith.
00:00:10
◼
►
I'm an independent iOS developer based in Herndon, Virginia.
00:00:13
◼
►
This is show two, and today is Friday, July 28th, 2011.
00:00:19
◼
►
The format of Developing Perspective is that I'll cover a handful of links and articles
00:00:24
◼
►
that I found interesting in roughly the last 24 hours, and then move on to a slightly more
00:00:29
◼
►
general discussion towards the end.
00:00:31
◼
►
The show will never be longer than 15 minutes and will never include third-party advertising.
00:00:37
◼
►
And so without further ado, let's get to it.
00:00:39
◼
►
It's going to probably be a little bit of a shorter show today.
00:00:42
◼
►
Not a whole lot of news going on, but I found some interesting links, some things that you
00:00:46
◼
►
may not have heard of or definitely things to check out.
00:00:49
◼
►
First, I'm going to start off with just sort of a general link to the Bjango, bjango.com,
00:00:57
◼
►
their blog, which is just Django.com/articles.
00:01:01
◼
►
There's just some really interesting articles and things
00:01:04
◼
►
here focused mostly on design, but also just generally
00:01:07
◼
►
about being in the App Store, some of the things
00:01:09
◼
►
they found dissecting iTunes links, all kinds of things.
00:01:13
◼
►
It's definitely a place that you want to add to your RSS reader.
00:01:16
◼
►
You could be constantly checking out.
00:01:18
◼
►
They recently started doing a podcast, it looks like,
00:01:20
◼
►
or are part of a podcast.
00:01:22
◼
►
And just definitely, if you want to make your apps increase
00:01:25
◼
►
in polish, you want to make your apps look better,
00:01:28
◼
►
this is definitely a place to go look out.
00:01:30
◼
►
They do a lot of stuff talking about the retina display,
00:01:33
◼
►
talking about different Photoshop tools,
00:01:36
◼
►
those kinds of things.
00:01:36
◼
►
So it really just works with the entire site.
00:01:39
◼
►
If you haven't read every word of it,
00:01:41
◼
►
you're not doing a good job.
00:01:44
◼
►
Next, there's just one of these fascinating articles
00:01:47
◼
►
over on Asymco that Horace put together.
00:01:50
◼
►
We were talking about not just market share, which
00:01:53
◼
►
is something that you hear a lot about in the smartphone,
00:01:55
◼
►
mobile phone industry.
00:01:57
◼
►
He was talking about profitability.
00:01:59
◼
►
And this is-- he just announced this back from Q2 2007
00:02:06
◼
►
And it's just kind of a remarkable thing
00:02:08
◼
►
where you see how dramatically Apple disrupted this industry.
00:02:12
◼
►
And he's disrupted in the actual sort of real term
00:02:15
◼
►
there rather than just the startup term, where basically
00:02:19
◼
►
they just came in and stole Nokia's lunch.
00:02:23
◼
►
Nokia had been doing huge, huge profits in this area.
00:02:28
◼
►
They accounted for 55% of the total smartphone operating
00:02:34
◼
►
share back in 2007, whereas now Apple takes 66% of that number.
00:02:40
◼
►
And Nokia is running at a loss, which
00:02:42
◼
►
is quite a remarkable change.
00:02:44
◼
►
And just one of those things that, as you look at,
00:02:47
◼
►
just reminds you how important it
00:02:49
◼
►
is to not get too complacent, not get too comfortable,
00:02:52
◼
►
and don't think too much about what it is you're doing.
00:02:57
◼
►
All right, next, I have just a link to something.
00:03:00
◼
►
This is a link I originally heard from this week's
00:03:03
◼
►
Hypercritical episode.
00:03:05
◼
►
It's over secrets.blacktree.com.
00:03:09
◼
►
And Secrets is basically a database
00:03:11
◼
►
of hidden settings and adjustments
00:03:13
◼
►
that you can make in Mac OS.
00:03:14
◼
►
So if you've ever done one of those things
00:03:16
◼
►
where you open up terminal, type defaults right,
00:03:19
◼
►
and add some crazy setting to change Finder, to change Mail,
00:03:24
◼
►
to change some application that you like,
00:03:26
◼
►
this is definitely the way to improve your experience,
00:03:29
◼
►
or at least to customize your experience.
00:03:32
◼
►
And this is a great little app that you
00:03:34
◼
►
can install as a preference pane on your Mac, which
00:03:36
◼
►
allows you to change them without having to do all
00:03:39
◼
►
the crazy stuff at the terminal.
00:03:40
◼
►
But also, it's just an interesting thing to browse,
00:03:42
◼
►
to look through, to see if there's anything that you're
00:03:45
◼
►
like, hey, I wish I did that.
00:03:46
◼
►
Didn't happen.
00:03:47
◼
►
I wish they didn't have those crazy animations in Mail,
00:03:50
◼
►
or the window opening animation in Lion,
00:03:54
◼
►
or those types of things.
00:03:55
◼
►
And so there's just lots of stuff to look into.
00:03:57
◼
►
Definitely worth checking out.
00:04:00
◼
►
And lastly, this is kind of a link,
00:04:03
◼
►
but it's also probably the lead-in
00:04:04
◼
►
to the general discussion.
00:04:06
◼
►
And this is talking about what I-- I was recently using Reader,
00:04:11
◼
►
and I was noticing some of the crazy things they do in the
00:04:14
◼
►
status bar, where while the app's syncing and refreshing,
00:04:20
◼
►
it changes the status bar to show this.
00:04:22
◼
►
And at first, I was thinking, oh, that's crazy.
00:04:25
◼
►
Are they using some private API?
00:04:26
◼
►
Somehow they found a way to sneak that by Apple.
00:04:29
◼
►
And I started digging a little bit more.
00:04:31
◼
►
And I found that basically they're just doing it
00:04:33
◼
►
by doing some stuff in NSWindow, kind of overlaying stuff
00:04:37
◼
►
on top of the status bar by playing with exactly where you
00:04:42
◼
►
put things with some frame offsets and things like that.
00:04:45
◼
►
And then I was like, oh, that's interesting.
00:04:47
◼
►
And I wonder if anyone's standardized that.
00:04:49
◼
►
And I found a project, empty status bar overlay,
00:04:52
◼
►
over on GitHub, which I'll link to in the show notes, which
00:04:55
◼
►
does this and allows you to do a couple of standard operations
00:04:58
◼
►
where you can take over the status bar,
00:05:00
◼
►
you can show a spinner in the side,
00:05:02
◼
►
you can do all kinds of things like that,
00:05:05
◼
►
which is a tricky thing.
00:05:06
◼
►
And definitely, from reading their descriptions,
00:05:08
◼
►
it sounds like there's definitely--
00:05:10
◼
►
it's a dangerous thing to do.
00:05:11
◼
►
Some people who have been doing this kind of thing
00:05:13
◼
►
have found their apps rejected from the App Store
00:05:16
◼
►
for breaking the Hague or the style of what applications
00:05:20
◼
►
should and how they should operate.
00:05:23
◼
►
The thing that I found most interesting about this,
00:05:25
◼
►
A, it's really cool.
00:05:26
◼
►
Just it's something that I would love to have in applications
00:05:30
◼
►
I think the risk factor of being rejected
00:05:33
◼
►
would probably exclude it from a lot of my apps, though.
00:05:36
◼
►
But it's definitely something I'm keeping an eye on.
00:05:38
◼
►
But what it really led me into was
00:05:40
◼
►
a thought discussion I was having about third party
00:05:44
◼
►
code in your applications.
00:05:47
◼
►
And so if you're a developer, you've
00:05:49
◼
►
almost certainly come across this in something
00:05:51
◼
►
where you're trying to do something and you're like,
00:05:53
◼
►
hey, I wonder if someone's done this better.
00:05:55
◼
►
You go over to GitHub, do a search,
00:05:56
◼
►
and you find some MIT licensed library that says,
00:06:00
◼
►
hey, that's basically what you want.
00:06:02
◼
►
It's something, for example, some of the most--
00:06:05
◼
►
sort of probably the most widely used are things like ASI,
00:06:07
◼
►
HTTP request for handling network traffic.
00:06:11
◼
►
There are some great things for doing modal blockers.
00:06:14
◼
►
There's this thing.
00:06:15
◼
►
There's a thing I linked to a couple days ago
00:06:18
◼
►
about string formatting.
00:06:20
◼
►
There's any number of applications and libraries
00:06:22
◼
►
that you could use that would allow
00:06:26
◼
►
you to do all kinds of things without having code
00:06:30
◼
►
that you write yourself.
00:06:31
◼
►
And I started thinking, well, really,
00:06:33
◼
►
what are the boundaries?
00:06:35
◼
►
What are the things that a developer should
00:06:37
◼
►
be thinking about when they see something that sort of works
00:06:40
◼
►
like they want, but they're not sure if it's for them.
00:06:44
◼
►
These are kind of some of the thoughts that I came up with.
00:06:46
◼
►
I think first, it's important to always think
00:06:50
◼
►
of the context of what application
00:06:52
◼
►
is that you are writing.
00:06:55
◼
►
Is this an application that you're writing for yourself?
00:06:58
◼
►
Is it just sort of an experiment?
00:07:00
◼
►
Is it a client project?
00:07:01
◼
►
Is it something that you're expecting
00:07:03
◼
►
to be doing maintenance on for years to come?
00:07:07
◼
►
Because I think those types of discussions
00:07:09
◼
►
really help sort of balance the trade-offs that you're making,
00:07:12
◼
►
where essentially you're getting sort of free code
00:07:15
◼
►
at the expense of increased maintenance, increased
00:07:18
◼
►
unpredictability in your code, and potentially sometimes
00:07:21
◼
►
problems that are going to be very hard to track down,
00:07:24
◼
►
because it's code you didn't write.
00:07:27
◼
►
And so I think it's important to have that kind of a thing
00:07:30
◼
►
in mind when you work on something like this,
00:07:32
◼
►
of like, really, what am I doing with this?
00:07:34
◼
►
something that I want to have worked for years and years.
00:07:38
◼
►
If it's a prototype, that's something
00:07:40
◼
►
that you're throwing together.
00:07:41
◼
►
Say it's a client project where they're saying,
00:07:43
◼
►
we want a proof of concept.
00:07:46
◼
►
Something like that.
00:07:47
◼
►
Then maybe using a bit more third party code
00:07:49
◼
►
to just get that head start makes a lot of sense.
00:07:52
◼
►
If it's something that you're writing for yourself
00:07:54
◼
►
or for your company that you're going
00:07:56
◼
►
to be maintaining for weeks, months, years,
00:07:59
◼
►
it's something that you probably want to try and avoid.
00:08:01
◼
►
I mean, there's certainly a spectrum.
00:08:02
◼
►
There's some things that make sense to use.
00:08:05
◼
►
Because at the end of the day, you're using a lot of third
00:08:09
◼
►
party-- all of the SDK is a third party thing.
00:08:11
◼
►
You're just relying on Apple to support it.
00:08:13
◼
►
Now, clearly, they have a lot of incentive
00:08:16
◼
►
to keep it upgraded, to keep it working in a way
00:08:19
◼
►
that GitHub repo from someone you don't know is.
00:08:23
◼
►
But it's not necessarily that using third party code is bad.
00:08:27
◼
►
It's just something that you want to be very weary of.
00:08:30
◼
►
And then I think a second thing, in addition
00:08:31
◼
►
of thinking about the context of your application
00:08:34
◼
►
and thinking about, OK, how am I going to be maintaining it?
00:08:38
◼
►
What's that going to look like?
00:08:40
◼
►
I was also just struck by the importance
00:08:42
◼
►
of thinking about what would be the impact of pulling this out
00:08:46
◼
►
of my application?
00:08:47
◼
►
Would it dramatically and catastrophically
00:08:49
◼
►
change the way that I use my application?
00:08:53
◼
►
And something I was thinking about here--
00:08:54
◼
►
so for example, there's a very famous iPhone library
00:08:59
◼
►
called 320, which was extracted from the Facebook application.
00:09:04
◼
►
And the thing that's challenging here
00:09:06
◼
►
is that it does a lot of UI stuff.
00:09:08
◼
►
It just makes a lot of changes and adjustments
00:09:10
◼
►
that you can be like, hey, here's a whole view controller
00:09:12
◼
►
stack that lets you create a gallery of images
00:09:16
◼
►
and those types of things.
00:09:17
◼
►
And the thing that would make me very worried about something
00:09:19
◼
►
like that is pulling that out would basically
00:09:22
◼
►
render your application useless.
00:09:24
◼
►
Whereas, for example, say you changed
00:09:28
◼
►
from using something that did a nice modal blocker
00:09:31
◼
►
with animation.
00:09:31
◼
►
It's like, well, that didn't work.
00:09:33
◼
►
Well, maybe I'll just use an alert view now.
00:09:36
◼
►
You can very easily switch out that behavior
00:09:39
◼
►
in a way that wouldn't destroy your application.
00:09:41
◼
►
If your entire application, the core of it, is based on that,
00:09:44
◼
►
then you're going to think you're
00:09:45
◼
►
going to have a lot of trouble down the road,
00:09:47
◼
►
especially if something comes up, you have some weird bug.
00:09:50
◼
►
I mean, another example of this, also picking on 320,
00:09:53
◼
►
is I remember once working on an application where
00:09:57
◼
►
They were, instead of using the standard navigation,
00:10:01
◼
►
view controller hierarchy kind of thing,
00:10:04
◼
►
they were using this thing in 320
00:10:05
◼
►
where you had essentially URL-based navigation.
00:10:09
◼
►
So each view controller published a URL.
00:10:12
◼
►
And when you navigated, you navigated to a link,
00:10:15
◼
►
kind of like you would on a web page.
00:10:17
◼
►
I was just struck by how horribly brittle that is,
00:10:21
◼
►
how unlikely that is to really continue
00:10:25
◼
►
work well going forward.
00:10:27
◼
►
You look at that thing six months later,
00:10:29
◼
►
I thought that that's a bad idea.
00:10:30
◼
►
I mean, if that had been the way that Apple had decided
00:10:32
◼
►
to handle that view hierarchy navigation, that'd be fine.
00:10:37
◼
►
But as new OS versions come out, as new platforms come out,
00:10:40
◼
►
that just seems like a very difficult thing
00:10:43
◼
►
to keep updated, to keep working correctly, to keep happy.
00:10:48
◼
►
And so I think those are the types of things
00:10:50
◼
►
that you really want to shy away from.
00:10:52
◼
►
If it's something that, hey, someone-- for example,
00:10:55
◼
►
there's a great thing called the gradient buttons, which
00:10:57
◼
►
is something that Jeff LaMarche wrote over on the iphonedevelopment.blogspot.com
00:11:02
◼
►
And he was talking-- and it's just a little thing that stylizes a UI button
00:11:06
◼
►
and makes it look a little prettier, makes-- lets
00:11:08
◼
►
you do some things without having to get into Photoshop.
00:11:11
◼
►
It's something that I've used before, and I think
00:11:13
◼
►
it's just a really nice, pretty thing.
00:11:15
◼
►
And the great thing is if, for whatever reason, that stopped working.
00:11:18
◼
►
Say iOS 5 comes out, I run my app.
00:11:21
◼
►
And the way he's done the graphics in that application
00:11:23
◼
►
just doesn't work.
00:11:25
◼
►
Well, I can pull it out, and I've got a UI button.
00:11:28
◼
►
Nothing's changed.
00:11:29
◼
►
My application still works fine.
00:11:31
◼
►
He had just subclassed UI button and added a few methods.
00:11:34
◼
►
So in those cases, I think you can really justify using it.
00:11:39
◼
►
But in cases where you'd really be destroying your application
00:11:43
◼
►
to pull it out, you definitely want to avoid it.
00:11:46
◼
►
All right, well, that's it for today's show.
00:11:48
◼
►
Hope you enjoyed it.
00:11:49
◼
►
And if you have any questions, comments, concerns, thoughts,
00:11:53
◼
►
hit me up on Twitter.
00:11:54
◼
►
I'm @_davidsmith.
00:11:56
◼
►
That's underscore D-A-V-I-D-S-M-I-T-H.
00:12:00
◼
►
Otherwise, have a good Friday.
00:12:02
◼
►
Have a good weekend.
00:12:02
◼
►
And happy coding.