#18 - Books and Learning
00:00:00
◼
►
Hello, and welcome to Developing Perspective.
00:00:03
◼
►
Developing Perspective is a near-daily podcast discussing the news of Note and Apple, iOS,
00:00:07
◼
►
and the like.
00:00:08
◼
►
I'm your host, David Smith.
00:00:09
◼
►
I'm an independent iOS developer based in Herndon, Virginia.
00:00:12
◼
►
This is show number 18, and today is Monday, August 29, 2011.
00:00:18
◼
►
The format of Developing Perspective is that I'll walk through a handful of articles and
00:00:21
◼
►
links, things I've found interesting since the last show, then move over to a more general
00:00:25
◼
►
discussion towards the end.
00:00:26
◼
►
The show will never be more than 15 minutes, so let's get to it.
00:00:30
◼
►
All right, first, just a little kind of a fun link
00:00:32
◼
►
that I saw over the weekend, which
00:00:34
◼
►
is probably the most interesting tribute to Steve Jobs
00:00:37
◼
►
that I saw in an amount to all the things about him resigning.
00:00:41
◼
►
Joseph Tame went on a run in Tokyo.
00:00:44
◼
►
And basically in 21 kilometers, he ran the Apple logo
00:00:50
◼
►
and reported it back with Runkeeper.
00:00:52
◼
►
It was just kind of a cool thing to see,
00:00:54
◼
►
and I just thought it was kind of fun.
00:00:56
◼
►
Next, I just did something.
00:00:58
◼
►
I discovered a page on GitHub that is just kind of super cool.
00:01:02
◼
►
So if you go to github.com/languages/objectivec,
00:01:05
◼
►
or you'll find the link in the show notes, which is just
00:01:08
◼
►
if you look at the body of the podcast,
00:01:10
◼
►
all the links are there, which any good podcasting tool
00:01:13
◼
►
will be able to get you.
00:01:14
◼
►
Or you just go to developingperspective.com/ whatever
00:01:17
◼
►
the show is.
00:01:19
◼
►
But anyways, if you go there, you'll
00:01:20
◼
►
find this very interesting list, essentially,
00:01:22
◼
►
of all what's going on essentially within the iOS
00:01:26
◼
►
Objective-C Mac developer community.
00:01:30
◼
►
It shows you what's been watched today, this week, this month,
00:01:34
◼
►
And it's just actually kind of interesting.
00:01:36
◼
►
I found a lot of really cool repositories
00:01:38
◼
►
there that I hadn't seen.
00:01:40
◼
►
And you can see some fairly topical things too.
00:01:42
◼
►
So for example, there's a thing for generating unique device
00:01:45
◼
►
identifiers in iOS 5.
00:01:47
◼
►
There's a new change in iOS 5 where the device had
00:01:51
◼
►
unique ID for each device who's no longer programmatically
00:01:54
◼
►
going to be accessible at some point.
00:01:56
◼
►
There's also a really cool framework called Quick Dialog,
00:01:58
◼
►
which lets you make user entry forms very, very easily
00:02:02
◼
►
and saves a lot of the hassle and grunt work of that.
00:02:06
◼
►
There's just a couple of examples of even just poking
00:02:09
◼
►
I've definitely bookmarked this site,
00:02:10
◼
►
and I think I'll be checking back on a regular basis
00:02:13
◼
►
just to see what's going on, what's new,
00:02:15
◼
►
what's happening right now in the Objective C community.
00:02:20
◼
►
Next, I just wanted to point out that today, the third part
00:02:24
◼
►
of the What's New for Developers in macOS Lion,
00:02:27
◼
►
Ole Bergman's amazing description of change notes
00:02:32
◼
►
in Lion, was published over the weekend.
00:02:36
◼
►
And it doesn't disappoint.
00:02:37
◼
►
It continues to talk about some really cool stuff,
00:02:40
◼
►
specifically things like Core Data's new concurrency model.
00:02:44
◼
►
And probably the thing that I saw in it
00:02:45
◼
►
that I hadn't seen before but is very cool
00:02:48
◼
►
is the new send asynchronous request queue completion
00:02:52
◼
►
handler method on an SURL connection.
00:02:55
◼
►
Which, if you're not a developer,
00:02:56
◼
►
that's getting a little bit into shop talk.
00:02:58
◼
►
But basically, it's a really neat way
00:02:59
◼
►
that they have for wrapping up in a block-based way
00:03:02
◼
►
sort of network communications, which
00:03:04
◼
►
I was pretty excited about.
00:03:06
◼
►
And see, next, over on bjango.com,
00:03:10
◼
►
they posted a great article on exporting from Photoshop.
00:03:14
◼
►
So if you do any kind of mock-up work in Photoshop--
00:03:17
◼
►
We're not even going to do mock-up work.
00:03:19
◼
►
But if you're building your UI in Photoshop
00:03:21
◼
►
and then transferring that into iOS,
00:03:23
◼
►
inevitably at some point you're going
00:03:25
◼
►
to have to take that interface and split it up
00:03:27
◼
►
into the different sort of sprites and widgets
00:03:30
◼
►
and then import that into iOS.
00:03:32
◼
►
And there's a lot of different ways that you can do that.
00:03:34
◼
►
He talks about the way that I think most people do,
00:03:36
◼
►
which is just sort of copy merge.
00:03:38
◼
►
You select what you want to export,
00:03:41
◼
►
and essentially you're just copy, pasting it
00:03:42
◼
►
into your document, save the document.
00:03:44
◼
►
But he talks about some more advanced ways to do it.
00:03:47
◼
►
for example, exporting layers as files,
00:03:49
◼
►
or introduce something that I had never even encountered,
00:03:52
◼
►
but is actually very cool, which is Photoshop Slice Tool.
00:03:56
◼
►
And essentially what this does is lets you break out
00:03:59
◼
►
your whole PSD into sub-PSDs that you can export sort
00:04:04
◼
►
of in a batch in group fashion, which is just kind of cool.
00:04:08
◼
►
I mean, I haven't played around with it too much in Photoshop
00:04:10
◼
►
itself, but knowing what I know about these guys
00:04:13
◼
►
and their prowess with design, that's
00:04:15
◼
►
is something that I think is pretty cool and worth checking
00:04:20
◼
►
All right, so that's it for today's links.
00:04:22
◼
►
And for today's general discussion,
00:04:25
◼
►
I recently got an email asking me
00:04:28
◼
►
to talk a little bit about the books
00:04:30
◼
►
that I found most helpful in learning programming.
00:04:33
◼
►
And it's kind of an interesting question,
00:04:35
◼
►
because I could probably spout off a couple of good books.
00:04:38
◼
►
And by good books, typically what I mean
00:04:40
◼
►
is by good authors, like the pragmatic books about it
00:04:44
◼
►
by Bill Dudeney and Chris Adamson.
00:04:51
◼
►
Anyway, that book is a great book.
00:04:53
◼
►
I think I've tech reviewed it a little bit.
00:04:56
◼
►
And I mean, it's a great book.
00:04:58
◼
►
But honestly, I don't find programming books
00:05:00
◼
►
to be very helpful.
00:05:01
◼
►
I've been involved in writing a chapter for one of them.
00:05:04
◼
►
And I've kind of explored what it
00:05:06
◼
►
would be to write a larger book before.
00:05:08
◼
►
I've done a lot of tech reviewing for books.
00:05:11
◼
►
But the thing that I find is, for me,
00:05:14
◼
►
developing is about developing a base set of skills.
00:05:19
◼
►
And for me, I developed those in college.
00:05:21
◼
►
I had a pretty good CS degree or CS program where I went.
00:05:26
◼
►
And that develops a base set of understandings
00:05:30
◼
►
for how to do things.
00:05:32
◼
►
And it's not so much language-oriented or
00:05:36
◼
►
platform-oriented, those types of things.
00:05:38
◼
►
It's just how to structure an efficient algorithm, how
00:05:41
◼
►
to use recursion, how to use good data structures,
00:05:45
◼
►
good algorithms, clean code, those types of things,
00:05:49
◼
►
how testing works, why it's important,
00:05:51
◼
►
what does test coverage mean.
00:05:53
◼
►
And those types of things, I think, are important.
00:05:56
◼
►
And those things are reasonably good to learn from a book,
00:05:58
◼
►
because they're abstract and theoretical.
00:06:02
◼
►
But for actually learning to program--
00:06:04
◼
►
and so, for example, the classic question
00:06:06
◼
►
that I would say I get is, I'm looking to learn iOS.
00:06:08
◼
►
I want to write iPhone apps.
00:06:10
◼
►
How do I get into that?
00:06:11
◼
►
It's like, well, if you have that basis in programming--
00:06:14
◼
►
which if you don't, it's a harder thing.
00:06:16
◼
►
I'm not sure at this point what books to recommend for that.
00:06:19
◼
►
In many ways, I think the best place for that is to get some
00:06:22
◼
►
kind of formal education, just because that structure that
00:06:26
◼
►
that brings is very helpful in kind of making sure you cover
00:06:29
◼
►
the whole breadth of what you really should know.
00:06:32
◼
►
But once you have a basic level of understanding,
00:06:36
◼
►
the next level I find is you just
00:06:38
◼
►
need to start building things.
00:06:40
◼
►
And the language shouldn't matter too much,
00:06:41
◼
►
because if you have a basic understanding,
00:06:44
◼
►
a lot of the rest of it is just learning how things work.
00:06:48
◼
►
For example, with iOS, I wrote my first iOS app
00:06:52
◼
►
while I was on vacation with my family at the beach.
00:06:54
◼
►
I'm not a big beach person, so I just
00:06:56
◼
►
stayed in a little bit and wrote my first iPhone app.
00:06:59
◼
►
And to start with, it was a mess.
00:07:01
◼
►
I mean, if I look back at that code now, I'm like,
00:07:04
◼
►
what are you doing?
00:07:05
◼
►
That's horrible.
00:07:06
◼
►
But I just kind of started with it.
00:07:07
◼
►
You kind of just go into Xcode, new project.
00:07:11
◼
►
That kind of template looks vaguely like what I want.
00:07:15
◼
►
And it built an app that had a table view in it.
00:07:17
◼
►
And so I just started kind of extending that
00:07:18
◼
►
and playing with it and doing a lot of looking for blog posts
00:07:22
◼
►
and articles on Stack Exchange and all the different places
00:07:25
◼
►
that I can kind of get hints and tips and kind of piecing it
00:07:28
◼
►
And after a little while, you kind of start learning.
00:07:31
◼
►
What I did there, that was wrong.
00:07:33
◼
►
I should do that better.
00:07:34
◼
►
What I did wrong over here, and so on.
00:07:37
◼
►
And for me, that's the only way that I've learned.
00:07:39
◼
►
I have a lot of programming books on my shelf.
00:07:41
◼
►
I've bought a lot of programming books.
00:07:43
◼
►
And recently I've been trying to cut myself off from doing that because inevitably I find
00:07:49
◼
►
that I don't really read them.
00:07:50
◼
►
I'll read a chapter here or two maybe.
00:07:52
◼
►
I have a few little nuggets maybe that are somewhat helpful, but I never get through
00:07:57
◼
►
I never, and not even just in the sense that I don't cover to cover, read them.
00:07:59
◼
►
I just-- that doesn't really--
00:08:03
◼
►
all it does really is I'll get slightly into a topic
00:08:06
◼
►
and then be like, oh, let me try that.
00:08:08
◼
►
Let me go build it.
00:08:08
◼
►
And I'll just go off and build it and forget entirely
00:08:11
◼
►
about the book.
00:08:12
◼
►
And so I think that's what I would recommend most.
00:08:14
◼
►
If you're a developer who's thinking, hey,
00:08:16
◼
►
I want to get into this.
00:08:17
◼
►
I want to write iPhone apps.
00:08:18
◼
►
It's like, just start writing iPhone apps.
00:08:21
◼
►
And just start.
00:08:23
◼
►
And look for templates.
00:08:24
◼
►
Look for examples.
00:08:25
◼
►
A great example is to go to GitHub.
00:08:28
◼
►
A lot of applications that have frameworks
00:08:30
◼
►
have examples with them too.
00:08:32
◼
►
So if you're looking for-- I'm going
00:08:34
◼
►
to write a thing with Twitter integration.
00:08:36
◼
►
If you go to-- I think the best one is the MG Twitter engine.
00:08:39
◼
►
You look at that library, it also
00:08:42
◼
►
includes an example that does some basic stuff.
00:08:44
◼
►
And you can kind of get a sense of how
00:08:45
◼
►
people who've been doing this for a while do things.
00:08:48
◼
►
And that's a great way to get at it.
00:08:49
◼
►
Another thing I'd also recommend is looking up your local chapter
00:08:52
◼
►
of NS Coder Night, which they typically meet on Tuesdays.
00:08:57
◼
►
And these are just sort of local groups
00:08:58
◼
►
where a couple of developers get together and code.
00:09:01
◼
►
And they're very informal.
00:09:02
◼
►
It's not typically something like a Cocoa Heads, which
00:09:05
◼
►
if you're not familiar with is more of a sort
00:09:08
◼
►
of a presentation style typically,
00:09:10
◼
►
where someone's going and talking.
00:09:11
◼
►
And it's much more kind of formal.
00:09:13
◼
►
NS Coder Night is just a bunch of guys, like my local one,
00:09:15
◼
►
they get together at a coffee shop.
00:09:17
◼
►
And they just code and talk.
00:09:20
◼
►
And almost always, if you show up there with a desire
00:09:23
◼
►
to learn and you've put in some preparation,
00:09:25
◼
►
you have some questions, you've, you know, it's not just like showing up and say, "Hey,
00:09:29
◼
►
can someone teach me how to program?" You're coming up and saying, "Hey, I've been brand
00:09:32
◼
►
new to this. Here's the five things that I've been trying to do and I can't. Here's the
00:09:37
◼
►
five places I'm stuck." Almost certainly someone there would be like, "Sure, no problem. You
00:09:41
◼
►
know, set up your MacBook right next to me and we'll walk through it." Because that's
00:09:44
◼
►
what they're there for too. I mean, that helps, you know, experienced people stay sharp and
00:09:48
◼
►
it helps, you know, new people get sharper. And so that's definitely, I think, a far better
00:09:53
◼
►
I think you'd be far better served putting in that kind of time.
00:09:57
◼
►
I mean, I think sometimes it's always nice people think, oh, it's like the quick fix.
00:10:02
◼
►
What can I buy?
00:10:03
◼
►
It's like that $20 that I can spend that gets all the benefit that I want.
00:10:08
◼
►
I'm not sure if that really exists.
00:10:10
◼
►
The best thing is to just start writing apps and write apps that you are excited about,
00:10:15
◼
►
that interest you, that are fairly simple.
00:10:19
◼
►
You just kind of go from there.
00:10:20
◼
►
I mean, I didn't have a sort of a major success with one of my apps for after, till after
00:10:25
◼
►
I built probably four or five actual apps.
00:10:28
◼
►
I mean, and that was fine.
00:10:30
◼
►
That was sort of the learning process and I got better and better.
00:10:33
◼
►
And now when I look back on those, I'm kind of embarrassed and that's good.
00:10:36
◼
►
It means that I'm getting better at my craft.
00:10:39
◼
►
That's kind of the way that I'd recommend learning how to do iOS development.
00:10:42
◼
►
And then the last thing I'd say about it, which is a little bit sort of off from what
00:10:47
◼
►
I was talking about is the WWDC videos are an excellent resource. Watching those, you're
00:10:53
◼
►
very rarely sort of be wasting your time. But I would say it's good for you to have
00:10:59
◼
►
some kind of basis before you start getting into those or a lot of it will go over your
00:11:03
◼
►
head and you will kind of miss a lot of what makes those really cool. So definitely check
00:11:08
◼
►
those out. They're really worthwhile. And then another thing I would say is if you're
00:11:12
◼
►
looking for a structured way to learn iOS specifically, I can really recommend the Pragmatic
00:11:18
◼
►
Studios course. It's put on by Mike Clark and a couple of really good instructors. I
00:11:25
◼
►
think it varies around a little bit. But those guys really know their stuff. And if you want
00:11:30
◼
►
a structured way to go and spend a week, and at the end of the week, be sort of, if you
00:11:34
◼
►
imagine the spectrum from beginner to intermediate to advanced, I would say after a week of that
00:11:39
◼
►
course I took it back when I was starting, you really are sort of solidly in that sort
00:11:44
◼
►
of early intermediate phase where from there you can, it's like a launchpad, from there
00:11:49
◼
►
you can really kind of dive into stuff at a higher level.
00:11:52
◼
►
And again there that's very hands-on practical sort of learning environment.
00:11:56
◼
►
So definitely recommend checking that out.
00:11:58
◼
►
That's just PragmaticStudio.com I think.
00:12:02
◼
►
All right, so that's it for today's show.
00:12:06
◼
►
that is helpful and interesting. As always, if you have any questions, thoughts, corrections,
00:12:11
◼
►
complaints, hit me up on Twitter. I am @_DavidSmith. And otherwise, if you enjoy the show, make
00:12:19
◼
►
sure you tell a friend, tell two, tell three. It definitely helps me and keeps me motivated
00:12:25
◼
►
in making the show. Alright, otherwise, have a good day and happy coding.