PodSearch

Developing Perspective

#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:33 ◼   ► all time.

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:08 ◼   ► through.

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:18 ◼   ► out.

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 ◼   ► together.

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:56 ◼   ► them.

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:22 ◼   ► 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.