1 00:00:00,000 --> 00:00:02,700 I'm here with Jeff LaMarche. [treehouse friends] 2 00:00:02,700 --> 00:00:06,200 He is a prominent developer in the iPhone development community. 3 00:00:06,200 --> 00:00:10,480 He's written quite a few books, and he is the founder of MartianCraft. 4 00:00:10,480 --> 00:00:12,770 One of. >>One of. Right. 5 00:00:12,770 --> 00:00:17,810 Why don't you tell us a little bit about how you became an iPhone developer. 6 00:00:17,810 --> 00:00:20,120 I've been programming for a long time. [Jeff LaMarche - Programmer and Author] 7 00:00:20,120 --> 00:00:23,400 I didn't actually start doing it professionally until the dot com boom. 8 00:00:23,400 --> 00:00:25,890 There was such a shortage of talent that they were willing to look at people 9 00:00:25,890 --> 00:00:28,110 who didn't have traditional backgrounds. 10 00:00:28,110 --> 00:00:31,040 I sort of got my foot in the door working at a company called PeopleSoft. 11 00:00:31,040 --> 00:00:34,520 What were you doing? >>I did a number of things. 12 00:00:34,520 --> 00:00:37,410 I actually went to law school. >>So you were a lawyer. 13 00:00:37,410 --> 00:00:41,390 For about 20 days. >>Oh, okay. [laughs] 14 00:00:41,390 --> 00:00:45,490 I passed the bar, and less than a month later I was out the door. 15 00:00:45,490 --> 00:00:49,060 And then I did whatever I needed to make money. 16 00:00:49,060 --> 00:00:53,290 I did clerical temping. I did pretty much anything. 17 00:00:53,290 --> 00:00:56,490 I did some graphic design work even though I didn't really have a background with it. 18 00:00:56,490 --> 00:01:01,810 I just kind of bounced around and did whatever I could to make money. 19 00:01:01,810 --> 00:01:04,920 So what made you get into software development? 20 00:01:04,920 --> 00:01:11,880 I had been programming as a hobby since 1980 just for fun. 21 00:01:11,880 --> 00:01:14,120 I was going to go to school for it. 22 00:01:14,120 --> 00:01:18,280 Sort of a long story. I didn't end up going to school for it. 23 00:01:18,280 --> 00:01:22,110 This place where I went to school wouldn't let me test out 24 00:01:22,110 --> 00:01:25,430 of some of the earlier level classes, and it was just really boring for me, 25 00:01:25,430 --> 00:01:27,760 so I decided to do something else. 26 00:01:27,760 --> 00:01:30,630 And then it got to a point where I didn't have the right background. 27 00:01:30,630 --> 00:01:34,510 And then the whole dot com thing, there was such a shortage 28 00:01:34,510 --> 00:01:36,650 it gave me the chance to get back into it. 29 00:01:36,650 --> 00:01:41,240 So basically, the dot com boom you got into software development. 30 00:01:41,240 --> 00:01:43,630 Doing it professionally. >>Full time. >>Right. 31 00:01:43,630 --> 00:01:48,540 I did that for a few years and then I went out and was doing consulting, 32 00:01:48,540 --> 00:01:53,610 travel-based consulting, which was interesting technical problems 33 00:01:53,610 --> 00:01:56,050 but a horrible work environment--awful. 34 00:01:56,050 --> 00:02:00,930 Large bureaucracies, big companies, and just traveling all the time, 35 00:02:00,930 --> 00:02:02,670 48, 50 weeks a year. 36 00:02:02,670 --> 00:02:05,040 So what were you consulting on? Java or--? 37 00:02:05,040 --> 00:02:09,360 A lot of what I did was PeopleSoft. 38 00:02:09,360 --> 00:02:12,780 I didn't start this way, but I sort of ended up with a specialty 39 00:02:12,780 --> 00:02:16,330 in doing very large volume data integrations between systems, 40 00:02:16,330 --> 00:02:23,270 which is not what I would have chosen, but it paid well and it was steady work. 41 00:02:23,270 --> 00:02:25,060 So you were actually coding. >>Oh yeah. 42 00:02:25,060 --> 00:02:27,240 I was always a technical consultant when I was out there. 43 00:02:27,240 --> 00:02:29,570 I worked in the management consulting realm, 44 00:02:29,570 --> 00:02:32,250 but I was always the technical guy. 45 00:02:32,250 --> 00:02:37,750 And so I did that, and I was rolling off of about a 2-year, 2½-year project 46 00:02:37,750 --> 00:02:42,190 in March of 2008 when they announced the iPhone SDK. 47 00:02:42,190 --> 00:02:46,590 I had been coding for a long time, I had been doing Cocoa on a hobby level 48 00:02:46,590 --> 00:02:54,020 since whenever they came out with OS X DP3, so--I don't know--'98, '99. 49 00:02:54,020 --> 00:02:58,070 I had written for MacTech magazine. I did their Cocoa article for a while. 50 00:02:58,070 --> 00:03:03,240 And before the press event was over, I called Dave Mark, 51 00:03:03,240 --> 00:03:07,420 who had been my editor-in-chief back at MacTech, 52 00:03:07,420 --> 00:03:10,330 and I said, "I think this is going to be big. I want to write something." 53 00:03:10,330 --> 00:03:14,310 At that point he was actually in the process of selling-- 54 00:03:14,310 --> 00:03:17,560 he had a small publishing company--his catalog of books to Apress. 55 00:03:17,560 --> 00:03:22,120 They wanted a book on the iPhone, so within a week or 2 56 00:03:22,120 --> 00:03:24,420 we had the contract to write the book. 57 00:03:24,420 --> 00:03:27,640 So had you written an app yet or you just wanted to write the book 58 00:03:27,640 --> 00:03:29,360 because you knew the language? 59 00:03:29,360 --> 00:03:35,900 I actually had made this call before we could download it. >>Oh, wow. Okay. 60 00:03:35,900 --> 00:03:39,510 So I made the call and then I went and downloaded the SDK. >>[laughs] 61 00:03:39,510 --> 00:03:43,690 But I knew it was going to be based on a technology that I had worked with 62 00:03:43,690 --> 00:03:45,130 and had even written about. 63 00:03:45,130 --> 00:03:50,800 I actually had written about 90% of the Cocoa book for Dave's company 64 00:03:50,800 --> 00:03:52,360 that had never gotten published. 65 00:03:52,360 --> 00:03:56,040 Actually, part of it did get recycled into the Apress Learn Cocoa book 66 00:03:56,040 --> 00:03:59,670 but very heavily recycled and rewritten by Jack. 67 00:03:59,670 --> 00:04:05,350 I actually was in the process of writing a very similar book, 68 00:04:05,350 --> 00:04:10,010 was able to recycle some of the conceptual stuff, 69 00:04:10,010 --> 00:04:16,550 and yeah, it was lucky timing and an opportunity for me to get off the road 70 00:04:16,550 --> 00:04:19,260 and to get into something that I wanted to be doing more 71 00:04:19,260 --> 00:04:22,190 rather than doing something that paid well. 72 00:04:22,190 --> 00:04:25,820 I took quite a cut in income-- >>I can imagine. 73 00:04:25,820 --> 00:04:28,040 for a while and it's starting to recover now 74 00:04:28,040 --> 00:04:30,680 because obviously this is a great place to be right now. >>Oh, absolutely. 75 00:04:30,680 --> 00:04:33,340 You went from something tried and tested to-- 76 00:04:33,340 --> 00:04:34,830 You took a risk because back then 77 00:04:34,830 --> 00:04:36,850 nobody knew what was going to happen with the iPhone. >>It was a risk. 78 00:04:36,850 --> 00:04:40,210 It was a pretty big risk, mostly because I had to take several months of no pay 79 00:04:40,210 --> 00:04:42,170 to write the book. 80 00:04:42,170 --> 00:04:44,070 But I always knew I could go back to that if I wanted to. 81 00:04:44,070 --> 00:04:51,140 There was always work there, so it wasn't a huge risk but it was a financial hit for sure. 82 00:04:51,140 --> 00:04:53,620 It was one of the best decisions I ever made. 83 00:04:53,620 --> 00:04:56,450 So the iPhone comes out and what's your first reaction? 84 00:04:57,970 --> 00:05:01,230 When they announced it, I was kind of like, "Yay, a phone." 85 00:05:01,230 --> 00:05:06,150 I'll be honest with you. I honestly didn't see the hype at first. 86 00:05:06,150 --> 00:05:09,500 And then when I actually held one I was like, "Oh, this is nice." 87 00:05:09,500 --> 00:05:12,340 I was very much a minimalist phone person before that. 88 00:05:12,340 --> 00:05:15,120 I wanted one that was solid because I traveled a lot 89 00:05:15,120 --> 00:05:16,940 and I tended to be rough on phones. 90 00:05:16,940 --> 00:05:19,790 So I wanted something that could sort of put up with abuse and make phone calls. 91 00:05:19,790 --> 00:05:22,230 That's all I really wanted. >>Oh, wow. 92 00:05:22,230 --> 00:05:24,400 So you didn't have one of the BlackBerrys or something. 93 00:05:24,400 --> 00:05:26,530 I had no interest in those. 94 00:05:26,530 --> 00:05:30,350 The iPhone was just a completely different beast, 95 00:05:30,350 --> 00:05:34,040 and once I held one and played with it, then yeah, I had to have one. 96 00:05:34,040 --> 00:05:38,090 So did you automatically start having all kinds of visions of different apps 97 00:05:38,090 --> 00:05:44,440 you can build for this thing, or was it not that big right away? 98 00:05:44,440 --> 00:05:54,770 Not right away because it took me about 4, 4½ months to get the book written. 99 00:05:54,770 --> 00:05:57,520 When I started writing it, everything was in Flux. 100 00:05:57,520 --> 00:05:59,670 The first version's Interface Builder wasn't there. 101 00:05:59,670 --> 00:06:02,240 And then Interface Builder was there but parts of it didn't work. 102 00:06:02,240 --> 00:06:05,320 Some parts worked and then in the next version Interface Builder would work 103 00:06:05,320 --> 00:06:07,490 but they would have changed stuff, so your old NIM files wouldn't. 104 00:06:07,490 --> 00:06:08,740 It was this constant-- 105 00:06:08,740 --> 00:06:12,690 A lot of the early chapters were completely rewritten several times. >>I can imagine. 106 00:06:12,690 --> 00:06:14,900 And so it was a very long process. 107 00:06:14,900 --> 00:06:19,300 I wasn't really thinking of apps larger than the scale needed to show concepts-- 108 00:06:19,300 --> 00:06:21,090 what I needed to teach somebody. 109 00:06:21,090 --> 00:06:26,590 It wasn't until I finished the book, sort of had it in the can, that I sort of moved on 110 00:06:26,590 --> 00:06:28,350 and started thinking about apps. 111 00:06:28,350 --> 00:06:33,690 But I needed money, so I didn't want to go into selling an app in the App Store 112 00:06:33,690 --> 00:06:35,010 at that point because I needed faster money. 113 00:06:35,010 --> 00:06:37,610 So I went into doing some contracting. >>Sure. 114 00:06:37,610 --> 00:06:39,860 Writing a book makes you the authority. 115 00:06:39,860 --> 00:06:42,140 I read your book. That's how I got started. 116 00:06:42,140 --> 00:06:44,040 This was actually before the book could be published 117 00:06:44,040 --> 00:06:46,400 because I don't know if you remember we had the NDA. >>Oh, right. 118 00:06:46,400 --> 00:06:49,470 So we actually sat on this manuscript for quite a while. 119 00:06:49,470 --> 00:06:53,370 It was basically finished in August-ish. 120 00:06:53,370 --> 00:06:56,550 I think we revised one of the later chapters maybe in September, 121 00:06:56,550 --> 00:07:00,320 but it was basically done and ready to go. 122 00:07:00,320 --> 00:07:03,090 At one point we were actually hearing from inside Apple 123 00:07:03,090 --> 00:07:05,990 that it probably was not going to drop at all; it was just going to be there forever. 124 00:07:05,990 --> 00:07:08,070 And then the next day it drops. 125 00:07:08,070 --> 00:07:09,740 And so all of a sudden it's back on. 126 00:07:09,740 --> 00:07:13,270 I had to go back to working during that time. 127 00:07:13,270 --> 00:07:16,850 I wasn't an authority at that point. 128 00:07:16,850 --> 00:07:19,430 But there were no authorities-- >>Exactly. 129 00:07:19,430 --> 00:07:22,380 It's so new that anybody could be the authority. >>Right. 130 00:07:22,380 --> 00:07:28,110 Although you had the advantage of having experience with Cocoa for all those years. 131 00:07:28,110 --> 00:07:31,150 Right, which was helpful because obviously there was a much higher demand. 132 00:07:31,150 --> 00:07:34,670 The old joke in the Cocoa community back in the early 2000s was, 133 00:07:34,670 --> 00:07:38,570 Do you know what the difference between a large pizza and a Cocoa developer is? 134 00:07:38,570 --> 00:07:43,050 A large pizza can still feed a family of 4. >>[laughs] >>That was the joke. 135 00:07:43,050 --> 00:07:45,970 There were jobs, but there weren't a lot and there wasn't a lot of demand. 136 00:07:45,970 --> 00:07:49,210 It was a very specialized skill. >>That's why you did it as a hobby. 137 00:07:49,210 --> 00:07:53,030 Yeah. And a lot of people did because it was hard to make that jump. 138 00:07:53,030 --> 00:07:57,350 So did you write apps for the Mac? >>Small ones. 139 00:07:57,350 --> 00:08:00,890 Some framework, some small utilities. 140 00:08:00,890 --> 00:08:05,540 Nothing ever got very high profile. 141 00:08:05,540 --> 00:08:08,210 How I met Dave was he was actually Googling around 142 00:08:08,210 --> 00:08:11,500 looking for someone to write a Cocoa article for MacTech 143 00:08:11,500 --> 00:08:16,260 and he found my page where I had all the source code that I gave out, 144 00:08:16,260 --> 00:08:19,080 and he sent me an email. 145 00:08:19,080 --> 00:08:20,560 It kind of went from there. 146 00:08:20,560 --> 00:08:23,800 But yeah, I really didn't have anything of large scale at that time 147 00:08:23,800 --> 00:08:28,040 because it was fun, so I didn't want the hassle at that time of selling, of marketing. 148 00:08:28,040 --> 00:08:31,020 I wrote it and once it was done, once I had learned what I wanted from it, 149 00:08:31,020 --> 00:08:34,940 I was done with it and I put it out on the Internet for other people. 150 00:08:34,940 --> 00:08:40,130 That's benefited a lot of iPhone developers, especially your blog. 151 00:08:40,130 --> 00:08:43,130 I know when I was starting out, your blog was almost like a Bible for me 152 00:08:43,130 --> 00:08:45,130 [Jeff LaMarche's Blog - iphonedevelopment.blogspot.com] 153 00:08:45,130 --> 00:08:47,360 because you have so much code there, you have so much knowledge 154 00:08:47,360 --> 00:08:50,890 that I really appreciate that. >>Thank you. That was funny. 155 00:08:50,890 --> 00:08:56,510 I actually grabbed that domain the same day they released the iPhone SDK. 156 00:08:56,510 --> 00:08:59,120 But then there really wasn't anything I could publish at first. 157 00:08:59,120 --> 00:09:00,860 So I had this domain. 158 00:09:00,860 --> 00:09:03,380 I think I did a hello post where I said, 159 00:09:03,380 --> 00:09:07,370 "Some day I'm going to be able to write about developing apps for the iPhone." 160 00:09:07,370 --> 00:09:12,400 A lot of the blog posts, especially the OpenGL ones, 161 00:09:12,400 --> 00:09:18,080 came out of--I spent 4½ months really heads down on the most basic stuff, 162 00:09:18,080 --> 00:09:21,370 and I really wanted to sort of get in and do some more stuff 163 00:09:21,370 --> 00:09:26,880 but not with this incredible obligation of doing a 600-page book. 164 00:09:26,880 --> 00:09:28,180 It's kind of an ordeal. 165 00:09:28,180 --> 00:09:29,430 You get to the end of it and you really don't even want to read 166 00:09:29,430 --> 00:09:31,790 what you've written anymore. 167 00:09:31,790 --> 00:09:35,660 So that was an outlet--that I could write and I could explore 168 00:09:35,660 --> 00:09:40,610 and I could learn things that I wanted to learn and have a reason to do it. 169 00:09:40,610 --> 00:09:43,450 Since you've written a book for beginners, 170 00:09:43,450 --> 00:09:48,430 for someone that's never programmed an iPhone app or never programmed at all, 171 00:09:48,430 --> 00:09:51,340 what is the stating point for that person? 172 00:09:51,340 --> 00:09:52,650 They have this idea. 173 00:09:52,650 --> 00:09:57,110 I'm sure a lot of people come up to you and say, "Hey Jeff, I have an idea for this app." 174 00:09:57,110 --> 00:09:59,990 And you're like, "No, no, no. Why don't you just build it yourself?" 175 00:09:59,990 --> 00:10:01,890 But where do they start? 176 00:10:01,890 --> 00:10:06,380 That's a tough question because I think a lot of people come into it 177 00:10:06,380 --> 00:10:10,180 especially back when we were seeing all those mainstream news stories 178 00:10:10,180 --> 00:10:13,840 on the App Store millionaires in the early days. 179 00:10:13,840 --> 00:10:16,800 A lot of people wanted to do it and really didn't fully understand 180 00:10:16,800 --> 00:10:19,190 how much was involved. 181 00:10:19,190 --> 00:10:21,990 Where do you start? I think it really depends on people. 182 00:10:21,990 --> 00:10:24,940 I've taught some workshops and I've written the books 183 00:10:24,940 --> 00:10:30,400 and I've had interactions with a fair number of people who have written to me, 184 00:10:30,400 --> 00:10:32,690 and one thing I've learned is that we're very different. 185 00:10:32,690 --> 00:10:34,560 Everybody learns differently. 186 00:10:34,560 --> 00:10:37,620 A lot of this stuff different people learn it in different ways better. 187 00:10:37,620 --> 00:10:40,550 When you're sitting in a workshop and actually working with people 188 00:10:40,550 --> 00:10:44,250 and seeing how you can just use words and this person gets it 189 00:10:44,250 --> 00:10:46,740 and this person over here, they really need you to sort of draw a picture 190 00:10:46,740 --> 00:10:49,480 or they need you to draw a parallel to something they're familiar with. 191 00:10:49,480 --> 00:10:53,450 So it's hard to say. I think that you have to start with really the desire. 192 00:10:53,450 --> 00:10:57,480 It's not the desire to make money because there's lots of ways of doing that. 193 00:10:57,480 --> 00:11:00,740 It's the desire to create, it's the desire to do something. 194 00:11:00,740 --> 00:11:03,000 It's not just, "I've got an idea," it's, "I really want to do this." 195 00:11:03,000 --> 00:11:05,580 "I want to create this thing." 196 00:11:05,580 --> 00:11:09,270 If you don't have that, you're going to get halfway through the book and be like, 197 00:11:09,270 --> 00:11:11,440 "I'm going to do something else." 198 00:11:11,440 --> 00:11:14,140 So I think you have to start with the desire basically. 199 00:11:14,140 --> 00:11:15,900 But where you go from there really depends. 200 00:11:15,900 --> 00:11:21,040 So desire to create an app or just desire to be an iPhone developer? 201 00:11:21,040 --> 00:11:24,610 I think a lot of times it actually is much more basic than that. 202 00:11:24,610 --> 00:11:27,130 It's a specific idea: "I want to create this." 203 00:11:27,130 --> 00:11:30,190 It's not that, "I want to be an app developer," it's "I've got this idea." 204 00:11:30,190 --> 00:11:33,820 "I want to see it come to life." 205 00:11:33,820 --> 00:11:35,350 I think there are people that are like, "I want to be a developer." 206 00:11:35,350 --> 00:11:39,400 It's a larger aspiration. But I think a lot of people it starts with, "I've got this idea." 207 00:11:39,400 --> 00:11:42,850 "I want it to become real. How do I get there?" 208 00:11:42,850 --> 00:11:48,720 Where you go, obviously now there's lots of books, 209 00:11:48,720 --> 00:11:52,130 there's video training, there's actual workshops 210 00:11:52,130 --> 00:11:54,030 where you can go and be taught. 211 00:11:54,030 --> 00:11:59,390 So there's lots of paths. I don't know that there's 1 that's best or right for everybody. 212 00:11:59,390 --> 00:12:01,550 A lot of it depends on how you learn. 213 00:12:01,550 --> 00:12:06,490 I think going to an actual class for a lot of people is going to be a lot faster of a path 214 00:12:06,490 --> 00:12:08,890 because you make mistakes-- >>Because you're used to that. 215 00:12:08,890 --> 00:12:10,950 Yeah. You're there, you get to make mistakes, 216 00:12:10,950 --> 00:12:12,610 you've got someone who can help you when you make the mistakes. 217 00:12:12,610 --> 00:12:13,800 You're not just spinning your wheels. 218 00:12:13,800 --> 00:12:16,620 I can remember when I was first learning to code back in the '80s. 219 00:12:16,620 --> 00:12:20,040 We didn't really have Google. 220 00:12:20,040 --> 00:12:22,310 We didn't have the Web. >>Or YouTube. >>Or YouTube. 221 00:12:22,310 --> 00:12:24,470 We had Usenet. 222 00:12:24,470 --> 00:12:27,900 You could go out to the comp.sys.mac-- 223 00:12:27,900 --> 00:12:29,380 I don't even remember the news group anymore, 224 00:12:29,380 --> 00:12:31,100 but there was a place you could go. 225 00:12:31,100 --> 00:12:35,100 You'd ask your question and maybe a few hours 226 00:12:35,100 --> 00:12:37,420 or a few days later you'd get an answer. 227 00:12:37,420 --> 00:12:42,010 All the documentation were in these big, thick volumes that you had to buy. 228 00:12:42,010 --> 00:12:43,870 So it was kind of a different world. 229 00:12:43,870 --> 00:12:47,290 Something that's fairly simple and a more experienced developer could help you with 230 00:12:47,290 --> 00:12:49,120 might be something you'd spend a week on back then 231 00:12:49,120 --> 00:12:51,330 just because you didn't have access to people. 232 00:12:51,330 --> 00:12:53,800 To resources that you have today. 233 00:12:53,800 --> 00:12:56,050 I don't think there's ever been a better time for learning this stuff 234 00:12:56,050 --> 00:12:57,540 because there are so many resources. 235 00:12:57,540 --> 00:13:00,430 You're going to be able to find something that works for you if you really want to do it. 236 00:13:00,430 --> 00:13:04,380 So you said that you have to have a desire, 237 00:13:04,380 --> 00:13:08,260 and I truly believe that when you're starting out to learn any piece of technology 238 00:13:08,260 --> 00:13:10,770 or framework or SDK or anything like that, 239 00:13:10,770 --> 00:13:16,980 if you start out with an app--in my case the idea is an app, 240 00:13:16,980 --> 00:13:19,160 a mobile app or a web app or something like that-- 241 00:13:19,160 --> 00:13:23,390 and then you're trying to learn the different aspects that will get you there-- 242 00:13:23,390 --> 00:13:28,470 So you have the goal in mind and then you're trying to piece the puzzle, 243 00:13:28,470 --> 00:13:30,960 what will get you to that goal. 244 00:13:30,960 --> 00:13:37,100 Do you think that's a fair way of getting to that goal? >>Absolutely. 245 00:13:37,100 --> 00:13:41,660 There was no real opportunity--there was, I guess, some opportunity 246 00:13:41,660 --> 00:13:44,130 but there wasn't as much opportunity for the training. 247 00:13:44,130 --> 00:13:49,020 Aaron started the Big Nerd Ranch back in the late '90s or early 2000s, 248 00:13:49,020 --> 00:13:52,090 and that was really the only place you could go to learn Cocoa. 249 00:13:52,090 --> 00:13:55,080 It was probably out of reach for a lot of people because you had to travel there 250 00:13:55,080 --> 00:13:57,270 and stay there for a week. 251 00:13:57,270 --> 00:13:59,200 For most people it was. 252 00:13:59,200 --> 00:14:01,730 You were using a book, you were using API documentation. 253 00:14:01,730 --> 00:14:03,300 Now there's so much. 254 00:14:03,300 --> 00:14:06,100 But when it comes down to it, it is like a puzzle. 255 00:14:06,100 --> 00:14:09,300 You're going to learn this piece, and you can't really see what it's a picture of, 256 00:14:09,300 --> 00:14:12,220 and then you get this piece, and at some point your brain sort of clicks and goes, 257 00:14:12,220 --> 00:14:14,620 "Oh, I get it. I've got the big picture now." 258 00:14:14,620 --> 00:14:17,260 It's a slow process, unfortunately. 259 00:14:17,260 --> 00:14:19,340 Yeah, unfortunately, it's a very slow process 260 00:14:19,340 --> 00:14:21,690 because there are so many different concepts. 261 00:14:21,690 --> 00:14:30,660 Is it easier now or was it easier back then to pick up iOS? 262 00:14:30,660 --> 00:14:34,170 Of course with ARK they've taken that whole equation 263 00:14:34,170 --> 00:14:35,680 of memory management out of the way, 264 00:14:35,680 --> 00:14:39,170 so it's easier to be an iPhone developer, I feel, 265 00:14:39,170 --> 00:14:43,490 because the tools have evolved, there's Xcode that's evolved, 266 00:14:43,490 --> 00:14:45,740 Interface Builder evolved. 267 00:14:45,740 --> 00:14:48,540 The tools are evolving, so is the SDK. 268 00:14:48,540 --> 00:14:54,860 In my day [both laugh], we walked 10 miles through the snow barefoot. 269 00:14:54,860 --> 00:14:58,340 I think conceptually the manual memory management 270 00:14:58,340 --> 00:15:00,500 was really a hangup for a lot of people. 271 00:15:00,500 --> 00:15:02,210 It took me a long time to get it. 272 00:15:02,210 --> 00:15:05,730 It's funny. Once you get it,, you look back and you say, "Why was that hard?" 273 00:15:05,730 --> 00:15:07,560 It's basically 3 rules. 274 00:15:07,560 --> 00:15:10,830 I can list them out, it's simple, and yet you sit there-- 275 00:15:10,830 --> 00:15:13,480 I can remember sitting there and being like, "Maybe I'll throw another release here." 276 00:15:13,480 --> 00:15:16,370 "Maybe that will fix it." 277 00:15:16,370 --> 00:15:21,800 It's sort of an easy concept but it's not easy for your brain. 278 00:15:21,800 --> 00:15:27,300 It's simple but it's just not the way your brain works--most of us. 279 00:15:27,300 --> 00:15:30,480 It's not the way your brain works naturally. 280 00:15:30,480 --> 00:15:32,540 That was an obstacle for a lot of people. 281 00:15:32,540 --> 00:15:34,180 I don't think that they've necessarily made it easier. 282 00:15:34,180 --> 00:15:36,520 I think they've removed an obstacle. 283 00:15:36,520 --> 00:15:38,640 I don't think that it's necessarily fair to say they've gotten rid of it 284 00:15:38,640 --> 00:15:40,860 because I think you really do need to understand memory management 285 00:15:40,860 --> 00:15:44,420 to do it properly because with ARK you're going to hit edge cases. 286 00:15:44,420 --> 00:15:48,190 But you can get something running, you can get an app up and running 287 00:15:48,190 --> 00:15:50,260 without knowing the memory management. 288 00:15:50,260 --> 00:15:51,990 And so I think you've dropped an obstacle, 289 00:15:51,990 --> 00:15:55,090 you've dropped something that would catch some people early on 290 00:15:55,090 --> 00:15:58,440 and discourage them before they really got far enough along to really get excited. 291 00:15:58,440 --> 00:16:01,770 I think it's better in a lot of ways. 292 00:16:01,770 --> 00:16:06,500 I don't know that easier is the right word because there's just so many pieces 293 00:16:06,500 --> 00:16:08,860 of the puzzle. It's a big puzzle. 294 00:16:08,860 --> 00:16:12,320 They made 1 complex piece of that puzzle a little less complex, 295 00:16:12,320 --> 00:16:14,850 but it's still a big puzzle and there's lots of pieces you have to learn. 296 00:16:14,850 --> 00:16:19,500 I think it would be unfair to say it's easy or even necessarily easier, 297 00:16:19,500 --> 00:16:22,290 but they've removed an obstacle, and I think that's good. 298 00:16:22,290 --> 00:16:26,550 I think it encourages people to do it. 299 00:16:26,550 --> 00:16:31,240 I'm a big Apple way of doing things kind of guy, 300 00:16:31,240 --> 00:16:33,620 but one thing Microsoft really has always been good at 301 00:16:33,620 --> 00:16:36,710 is lowering the bar for developers, making it easier. 302 00:16:36,710 --> 00:16:39,750 I don't always agree with the way they did it, 303 00:16:39,750 --> 00:16:42,580 with some of the choices they made in the process, 304 00:16:42,580 --> 00:16:46,260 but that was always a focus for them is sort of lowering those barriers to entry 305 00:16:46,260 --> 00:16:47,730 for developers. 306 00:16:47,730 --> 00:16:51,030 I think that's something we almost had as a point of pride-- 307 00:16:51,030 --> 00:16:53,820 that there was this memory management and you had to get past it. 308 00:16:53,820 --> 00:16:57,240 You had to get past your hump before you were part of the group. 309 00:16:57,240 --> 00:16:58,880 It's your rite of passage. >>Yeah. 310 00:16:58,880 --> 00:17:01,020 I think that was sort of almost-- 311 00:17:01,020 --> 00:17:03,010 When you say it out like that, it sounds a little silly, 312 00:17:03,010 --> 00:17:05,970 but I think it almost was that kind of mentality for a while 313 00:17:05,970 --> 00:17:09,410 and I think pure survival just because we've had such an influx. 314 00:17:09,410 --> 00:17:12,599 We've had to start taking it more seriously and making it more approachable, 315 00:17:12,599 --> 00:17:15,589 and I think that's what Apple has been doing and I think it's good. 316 00:17:15,589 --> 00:17:19,460 But I don't think it's easy, and I think it's unfair to say it's all of a sudden, 317 00:17:19,460 --> 00:17:21,550 "Well, now you don't have memory management. It's easy." 318 00:17:21,550 --> 00:17:23,490 Well, no. It's easier. 319 00:17:23,490 --> 00:17:27,619 Yeah. >>Like you said, they've removed 1 obstacle. >>Yeah. 320 00:17:27,619 --> 00:17:30,190 You're freeing up capacity for more problems that you have to solve. >>Right. 321 00:17:30,190 --> 00:17:35,150 I think that's one of the things that a lot of us like about software programming 322 00:17:35,150 --> 00:17:38,020 and engineering in general is there's always more problems to solve. 323 00:17:38,020 --> 00:17:40,940 Somebody gets rid of that one, makes it easier. 324 00:17:40,940 --> 00:17:43,160 I don't have to write accessors and mutators now. Great. 325 00:17:43,160 --> 00:17:47,440 That frees me up to do something else, to solve more complex problems. 326 00:17:47,440 --> 00:17:50,720 It's why we continually get better and more complex software. It's great. 327 00:17:50,720 --> 00:17:53,380 I started learning iPhone development. 328 00:17:53,380 --> 00:17:55,740 So I'm on my way, I'm getting a little better. 329 00:17:55,740 --> 00:17:58,770 How can I become a better iPhone developer? 330 00:17:58,770 --> 00:18:06,300 I know the basics, I know the patterns, I understand my way around the tools. 331 00:18:06,300 --> 00:18:08,160 How do I get better? 332 00:18:08,160 --> 00:18:12,790 I think the simple and obvious answer is the more time you spend doing it, 333 00:18:12,790 --> 00:18:17,260 the more feedback you get, the more mistakes you make. 334 00:18:17,260 --> 00:18:20,410 Having the opportunity to work with other people is great. 335 00:18:20,410 --> 00:18:25,080 While I was learning to code it was pretty much me, 336 00:18:25,080 --> 00:18:29,760 and I would reach out to places when I needed help, but it was mostly me. 337 00:18:29,760 --> 00:18:32,590 And I think when you have people, 338 00:18:32,590 --> 00:18:35,070 especially if you can find yourself in a situation 339 00:18:35,070 --> 00:18:37,960 where you have more experienced people you can draw upon, 340 00:18:37,960 --> 00:18:41,930 you still have to solve the same problems, 341 00:18:41,930 --> 00:18:47,040 but they've seen those problems before and they can help you get to the solution faster. 342 00:18:47,040 --> 00:18:49,780 So I think working with-- >>Having a mentor? 343 00:18:49,780 --> 00:18:52,930 Having a mentor or just working with other experienced people, 344 00:18:52,930 --> 00:18:55,710 seeing how other people work, putting in a lot of time. 345 00:18:55,710 --> 00:19:00,000 I think a lot of it just boils down to-- >>Practice? 346 00:19:00,000 --> 00:19:02,890 Practice, but is your head in this? Is this really what you want to be doing? 347 00:19:02,890 --> 00:19:05,300 Do you want to be here? 348 00:19:05,300 --> 00:19:09,070 People think we're kind of crazy, but our hiring process is sort of weird. 349 00:19:09,070 --> 00:19:13,210 A lot of times we don't even look at the education section. 350 00:19:13,210 --> 00:19:14,840 So what do you look for? Right. 351 00:19:14,840 --> 00:19:19,450 You own a consulting firm, MartianCraft. >>Yes, co-own MartianCraft. 352 00:19:19,450 --> 00:19:23,400 A lot of it is we meet people, we kind of keep an eye on people 353 00:19:23,400 --> 00:19:26,230 that we think down the road might be good when we've got an opening. 354 00:19:26,230 --> 00:19:31,290 But a lot of it is we look for people who are part of the community, 355 00:19:31,290 --> 00:19:36,990 who come to conferences, who participate in the dev forums 356 00:19:36,990 --> 00:19:40,610 and mailing lists and they enjoy it. 357 00:19:40,610 --> 00:19:43,320 I think the answer we try to get to the bottom of, and it's not always easy, 358 00:19:43,320 --> 00:19:48,640 is if this person couldn't make their living doing it, would they still want to do it? 359 00:19:48,640 --> 00:19:51,310 That's an interesting question. >>Yeah. 360 00:19:51,310 --> 00:19:53,380 Or at least something similar. 361 00:19:53,380 --> 00:19:55,900 Is this really what they want to be doing, 362 00:19:55,900 --> 00:20:00,600 or is this they saw that it was profitable and they want to be part of that? 363 00:20:00,600 --> 00:20:04,940 I think the real things-- >>Of course they're doing it 364 00:20:04,940 --> 00:20:08,660 because they want to make a living off of it. >>Of course. 365 00:20:08,660 --> 00:20:12,130 But is that your primary motivation, because there's lots of ways of making a living. 366 00:20:12,130 --> 00:20:18,160 Have you soaked in all these stories of the overnight App Store millionaires' success 367 00:20:18,160 --> 00:20:20,230 and that's your real motivation, 368 00:20:20,230 --> 00:20:23,740 or are you enjoying the path, are you enjoying the ride? >>Right. 369 00:20:23,740 --> 00:20:28,020 So with enjoying the path you mean just enjoying developing? >>Yeah. 370 00:20:28,020 --> 00:20:31,460 Enjoying putting an idea out there and seeing it to fruition? 371 00:20:31,460 --> 00:20:35,220 The day to day. Do you enjoy the coding? Do you enjoy the problem solving? 372 00:20:35,220 --> 00:20:37,660 Do you enjoy the collaboration with designers? 373 00:20:37,660 --> 00:20:40,930 Do you enjoy the whole process, because basically when you think about it, 374 00:20:40,930 --> 00:20:44,710 there's nothing else, with the possible exception of sleep for some people, 375 00:20:44,710 --> 00:20:49,010 that you're going to spend more time doing than your job, your career. 376 00:20:49,010 --> 00:20:53,580 And if you're not happy--and I can tell you this from when I was doing all this traveling-- 377 00:20:53,580 --> 00:20:59,040 I liked the basic problems that I had to solve, but I hated everything else around it. 378 00:20:59,040 --> 00:21:00,940 I was miserable. 379 00:21:00,940 --> 00:21:04,190 You didn't like the traveling, the dealing with the clients and all of that. 380 00:21:04,190 --> 00:21:05,980 The traveling, I didn't like dealing with the bureaucracy, 381 00:21:05,980 --> 00:21:08,950 I didn't like all sorts of things about it, 382 00:21:08,950 --> 00:21:15,320 and I basically took more than a 50% cut in pay and was thrilled. 383 00:21:15,320 --> 00:21:18,780 I worked for free for 4 months, and I was happy about it. 384 00:21:18,780 --> 00:21:24,230 I think trying to get to it, trying to figure out do they really want to be there, 385 00:21:24,230 --> 00:21:30,380 do they enjoy solving these problems, and from there, a lot of these other things-- 386 00:21:30,380 --> 00:21:32,900 Did you go to Stanford? I don't care if you went to Stanford. 387 00:21:32,900 --> 00:21:34,670 I've met some awesome developers from Stanford, 388 00:21:34,670 --> 00:21:38,100 but I've met some awesome developers that never even finished college. 389 00:21:38,100 --> 00:21:41,450 There's a lot of different paths to it, 390 00:21:41,450 --> 00:21:45,850 and we don't get too hung up on what path they took to get where they are. 391 00:21:45,850 --> 00:21:49,110 So you did freelancing for some time too, right? >>Mm-hmm. 392 00:21:49,110 --> 00:21:52,890 What's your advice to some of the freelancers if they are going to become 393 00:21:52,890 --> 00:21:56,080 freelance iPhone developers? 394 00:21:56,080 --> 00:22:01,830 I think that's one of the biggest barriers for someone that's a developer-- 395 00:22:01,830 --> 00:22:05,640 to go out there and get more business because naturally, 396 00:22:05,640 --> 00:22:09,030 most developers are not marketing people. 397 00:22:09,030 --> 00:22:10,670 They can't go and sell themselves. 398 00:22:10,670 --> 00:22:14,050 They'd rather just sit in a corner and write code, which they're really great at, 399 00:22:14,050 --> 00:22:16,730 but they can't really go out there and win the business. 400 00:22:16,730 --> 00:22:19,010 Yeah. And this is not an easy question. 401 00:22:19,010 --> 00:22:21,710 I'd love to say that I had a great solution and that the reason-- 402 00:22:21,710 --> 00:22:23,170 I mean from your experience, I guess. 403 00:22:23,170 --> 00:22:25,000 The problem is my experience is a little unusual, 404 00:22:25,000 --> 00:22:27,080 and that is because the book was successful 405 00:22:27,080 --> 00:22:30,300 and because it was one of the first ones out, I had people coming to me. 406 00:22:30,300 --> 00:22:33,630 We decided to form the business because we had people coming to us 407 00:22:33,630 --> 00:22:36,270 and we were referring work to other people. 408 00:22:36,270 --> 00:22:38,060 And we were like, "Whoa, whoa. Why are we sending all this work away?" 409 00:22:38,060 --> 00:22:39,900 "This is kind of silly." 410 00:22:39,900 --> 00:22:45,210 We never really had the problem of finding work. 411 00:22:45,210 --> 00:22:48,050 If you go to our website, there's almost nothing there. 412 00:22:48,050 --> 00:22:53,210 We've never gotten around to doing it because we have to turn down work. 413 00:22:53,210 --> 00:22:56,160 Part of it is we don't want to grow too fast. 414 00:22:56,160 --> 00:22:58,100 We don't want to accept every job that comes down. 415 00:22:58,100 --> 00:23:00,130 We want to make sure that we're taking jobs that we find interesting 416 00:23:00,130 --> 00:23:04,670 and various things, but we've never really had this sort of traditional problem 417 00:23:04,670 --> 00:23:06,790 of how do you find the work? 418 00:23:06,790 --> 00:23:12,630 Before the book was published, honestly, the first contracting job I had 419 00:23:12,630 --> 00:23:16,650 after that actually was somebody I knew from back in the enterprise consulting days. 420 00:23:16,650 --> 00:23:19,530 He had moved over, he was working at Rosetta Stone software, 421 00:23:19,530 --> 00:23:24,730 they were sort of looking at the iPhone as possibly porting parts of their software, 422 00:23:24,730 --> 00:23:26,970 so they wanted someone to come in and advise them on that. 423 00:23:26,970 --> 00:23:29,450 So it was just a connection. It was somebody I know. 424 00:23:29,450 --> 00:23:33,070 Obviously going to things like this, the more you can meet people in the community, 425 00:23:33,070 --> 00:23:36,920 because finding the actual clients is hard; 426 00:23:36,920 --> 00:23:39,960 finding other people-- 427 00:23:39,960 --> 00:23:42,570 People come to names in the community, 428 00:23:42,570 --> 00:23:45,960 they come to well-known people in the community and they say, 429 00:23:45,960 --> 00:23:48,700 "Are you available? If not, do you know anybody who is?" 430 00:23:48,700 --> 00:23:51,640 And if those people know you and they know that you're available 431 00:23:51,640 --> 00:23:54,650 and they know that you're good, then they're going to possibly 432 00:23:54,650 --> 00:23:57,000 send some of that work to you. >>Okay. 433 00:23:57,000 --> 00:24:00,190 So basically going out there and meeting more people and networking. 434 00:24:00,190 --> 00:24:03,810 Yeah. It comes down to--and I hate to use this word having been a teenager 435 00:24:03,810 --> 00:24:07,260 in the '80s and all the movies like Wall Street and I hate it--networking. 436 00:24:07,260 --> 00:24:11,690 I don't think you should come to these events because you want to network, 437 00:24:11,690 --> 00:24:14,940 but the more people you know, the more you socialize, 438 00:24:14,940 --> 00:24:17,040 the more you get involved in the community, 439 00:24:17,040 --> 00:24:19,740 the more opportunities that are just going to show up at your doorstep. 440 00:24:19,740 --> 00:24:23,980 So if I want to build a consumer-driven iPhone app-- 441 00:24:23,980 --> 00:24:27,260 and now there are more than half a million of them out there-- 442 00:24:27,260 --> 00:24:29,910 how do you even stand out anymore? 443 00:24:29,910 --> 00:24:30,980 [laughs] 444 00:24:30,980 --> 00:24:34,230 We're actually on sort of the other side of that 445 00:24:34,230 --> 00:24:38,500 because actually we've got 2 software development projects in house. 446 00:24:38,500 --> 00:24:42,990 We've started a products division, but we're still several months out 447 00:24:42,990 --> 00:24:45,160 from having our first product in the store. 448 00:24:45,160 --> 00:24:49,330 [laughs] I guess a glib answer to that would be I'll let you know when we figure it out. 449 00:24:49,330 --> 00:24:51,330 [laughs] >>It's hard. 450 00:24:51,330 --> 00:24:55,210 I think you have to start out with it's got to fill a need 451 00:24:55,210 --> 00:24:59,420 or it's got to be fun or it's got to be something that people will want, 452 00:24:59,420 --> 00:25:03,180 it's got to be well written, it's got to be stable. 453 00:25:03,180 --> 00:25:05,190 There is a certain amount of luck to it. 454 00:25:05,190 --> 00:25:08,390 If you look at the apps that have been successful, 455 00:25:08,390 --> 00:25:14,270 why was Angry Birds this runaway success and all the other trajectory apps 456 00:25:14,270 --> 00:25:16,550 that all go back to these-- 457 00:25:16,550 --> 00:25:22,370 There was a cannon app back in Applesoft BASIC that was exactly the same thing. 458 00:25:22,370 --> 00:25:25,990 Oh, was it? >>Basically. It wasn't touch controlled but it was the same idea. 459 00:25:25,990 --> 00:25:30,110 You're calculating the trajectory, you figure out the angle and the velocity, 460 00:25:30,110 --> 00:25:32,070 and then did you hit the target? 461 00:25:32,070 --> 00:25:36,250 So it's not exactly a new idea. 462 00:25:36,250 --> 00:25:40,940 A new take on it and well implemented, but there are other well-implemented takes. 463 00:25:40,940 --> 00:25:46,260 There is an element of fortune to it, unfortunately. There is an element of luck. 464 00:25:46,260 --> 00:25:49,360 But there's also a lot of elements that are not luck that you can take into control. 465 00:25:49,360 --> 00:25:55,540 Some of it is, by and large, us engineers don't like to market. 466 00:25:55,540 --> 00:25:59,580 We don't like to advertise. We don't like to write press releases. 467 00:25:59,580 --> 00:26:02,500 So part of it is either learn to like those things and get good at them 468 00:26:02,500 --> 00:26:06,970 or find people who are, partner up with people who are. 469 00:26:06,970 --> 00:26:10,200 Some of it is persistence. 470 00:26:10,200 --> 00:26:12,160 When you look at some of the real runaway successes, 471 00:26:12,160 --> 00:26:17,030 there's sort of an old saying that overnight success takes a long time. 472 00:26:17,030 --> 00:26:20,870 I think Angry Birds was Rovio's 18th game or something. 473 00:26:20,870 --> 00:26:23,260 Yeah. It took them 6 years to turn out a hit. >>Yeah. 474 00:26:23,260 --> 00:26:28,080 Temple Run was Imangi's 5th, 6th, 7th game. >>Okay. 475 00:26:28,080 --> 00:26:34,040 The stories where somebody's first game hits like that are very rare. 476 00:26:34,040 --> 00:26:35,510 People keep trying. 477 00:26:35,510 --> 00:26:38,170 You learn, you get better, you get feedback from your users, 478 00:26:38,170 --> 00:26:43,390 and you keep trying until you hit on the formula. 479 00:26:43,390 --> 00:26:45,270 And it's a lot of work. 480 00:26:45,270 --> 00:26:50,870 So let's say as an indie iPhone developer I found the right designer to work with. 481 00:26:50,870 --> 00:26:55,620 What are some of the things that you would recommend as using some of the tools 482 00:26:55,620 --> 00:26:59,710 like Instruments and stuff like that to turn out a high quality app 483 00:26:59,710 --> 00:27:03,650 so that your app doesn't crash the first day in the App Store and stuff like that? 484 00:27:03,650 --> 00:27:06,040 The first thing is to use the tools that are available. 485 00:27:06,040 --> 00:27:14,150 There's sort of a lot of debate about Xcode for itself, 486 00:27:14,150 --> 00:27:17,180 but when you look at all of the tools, there's a lot of really great tools 487 00:27:17,180 --> 00:27:19,510 that Apple has churned out in the last 5 years 488 00:27:19,510 --> 00:27:21,860 that we didn't have back in the Mac days. 489 00:27:21,860 --> 00:27:28,010 Instruments is great, the GL debugger, the GL tools, 490 00:27:28,010 --> 00:27:30,280 the Static Analyzer. 491 00:27:30,280 --> 00:27:33,880 A couple rules that we have in house 492 00:27:33,880 --> 00:27:40,130 is we never check in code that doesn't compile clean and analyze clean. 493 00:27:40,130 --> 00:27:42,870 You can have sort of intermediate builds on your own machine 494 00:27:42,870 --> 00:27:51,000 that have warnings or whatever, but our rule is don't check it in if it doesn't compile clean. 495 00:27:51,000 --> 00:27:55,250 So by checking it in, you mean come into your repository. >>Right. 496 00:27:55,250 --> 00:27:58,380 A lot of times we've been really, really lucky. 497 00:27:58,380 --> 00:28:00,500 We have really, really good developers on staff. 498 00:28:00,500 --> 00:28:04,740 They're fast, they're competent, they just write great code, 499 00:28:04,740 --> 00:28:07,780 and sometimes I'm kind of feeling kind of stupid when I'm there. 500 00:28:07,780 --> 00:28:11,620 I'm like, "Yeah, I'll help you guys. Oh jeez, you've already done that. All right." 501 00:28:11,620 --> 00:28:14,300 "Yeah, that's good." 502 00:28:14,300 --> 00:28:19,910 The young guys kind of make you feel old and not quite as smart as you think you are. 503 00:28:19,910 --> 00:28:23,730 One thing that I always face as a developer 504 00:28:23,730 --> 00:28:29,360 is that you're in this problem and you're so minutely focused on this 1 area of code 505 00:28:29,360 --> 00:28:34,660 or something like that and you keep hammering away for hours at a time, 506 00:28:34,660 --> 00:28:38,740 and sometimes you just walk away from it and then come back to it. 507 00:28:38,740 --> 00:28:42,320 Yeah. Sometimes it's the best thing you can do. >>Right? 508 00:28:42,320 --> 00:28:45,100 And a lot of times I'm not smart enough to do it when I need to do it. 509 00:28:45,100 --> 00:28:49,440 [laughs] So you face that too. >>Oh yeah, all the time. 510 00:28:49,440 --> 00:28:52,880 Sometimes it's just human limitations are the best thing in the world 511 00:28:52,880 --> 00:28:54,960 because you're not smart enough to walk away 512 00:28:54,960 --> 00:28:56,940 and then you realize it's 3:00 and you're like, "I've got to go to bed." 513 00:28:56,940 --> 00:28:58,920 And then you get up the next morning and you're like, "Oh!" 514 00:28:58,920 --> 00:29:00,670 Right. "That was so obvious." 515 00:29:00,670 --> 00:29:03,720 Yeah. Oh yeah. Everybody hits that. 516 00:29:03,720 --> 00:29:05,750 It's one of the things. 517 00:29:05,750 --> 00:29:08,060 A lot of times when you first start working in a group environment 518 00:29:08,060 --> 00:29:11,100 people are kind of embarrassed to admit when one of those happens 519 00:29:11,100 --> 00:29:15,030 and you're like, "Oh no, we all do that." 520 00:29:15,030 --> 00:29:16,610 That's just part of it. 521 00:29:16,610 --> 00:29:21,810 When you think about the APIs now, when I started programming, 522 00:29:21,810 --> 00:29:28,520 the entire operating system was 16K or something. >>Oh wow. 523 00:29:28,520 --> 00:29:31,420 Everything would fit. 524 00:29:31,420 --> 00:29:36,290 You could memorize the entire instruction set if you were writing an assembly. 525 00:29:36,290 --> 00:29:38,450 It just was a very finite number of instructions. 526 00:29:38,450 --> 00:29:40,400 It was a different world than we live in now. 527 00:29:40,400 --> 00:29:46,720 I don't think it's possible for at least the vast majority of mortals to know all of it, 528 00:29:46,720 --> 00:29:48,300 just even on 1 platform. >>Oh yeah, absolutely. 529 00:29:48,300 --> 00:29:52,120 That's why I think our job really is to just keep learning, 530 00:29:52,120 --> 00:29:57,720 is to be willing and able to dive in and learn what you need to do 531 00:29:57,720 --> 00:30:00,820 if you haven't done it before. >>That's what keeps this interesting. >>Right. 532 00:30:00,820 --> 00:30:05,240 It's always challenging because with every new release comes out new features 533 00:30:05,240 --> 00:30:06,730 and new SDKs and-- 534 00:30:06,730 --> 00:30:09,770 And then there's old ones that you've just never had a need for before. >>Right. 535 00:30:09,770 --> 00:30:11,640 That happens. 536 00:30:11,640 --> 00:30:15,190 And then you will over time develop ones that you don't like. 537 00:30:15,190 --> 00:30:19,440 I refer pretty much anything that's audio-oriented or give it off to someone else 538 00:30:19,440 --> 00:30:22,910 because the Core Audio Libraries--I had a couple projects with them 539 00:30:22,910 --> 00:30:26,580 and just realized that we don't get along that well. [laughs] 540 00:30:26,580 --> 00:30:28,390 And you hit areas like that. 541 00:30:28,390 --> 00:30:31,720 I can do it if I have to, but if I have the option of letting someone else do it, 542 00:30:31,720 --> 00:30:34,240 I'm more than happy to let someone else do the Core Audio work. 543 00:30:34,240 --> 00:30:39,740 Any last tips and tricks that you would like to offer beginning iPhone developers? 544 00:30:39,740 --> 00:30:41,760 Tips or tricks. 545 00:30:41,760 --> 00:30:46,250 No. I think just keep it fun, especially when you're first starting. 546 00:30:46,250 --> 00:30:48,840 Don't bang your head against it. 547 00:30:48,840 --> 00:30:51,280 If you're getting frustrated, go do something else; come back to it later. 548 00:30:51,280 --> 00:30:57,800 There's a rate at which your brain can sort of accept these concepts. 549 00:30:57,800 --> 00:31:02,460 And you can force the stuff in faster, but it's not really going to make you get it faster. 550 00:31:02,460 --> 00:31:08,100 So keep it fun, don't beat yourself up, and just enjoy the ride and you'll get there. 551 00:31:08,100 --> 00:31:10,140 You'll get there--eventually. >>Yeah. 552 00:31:10,140 --> 00:31:14,140 And not as long as probably will think at times. >>Right. All right. 553 00:31:14,140 --> 00:31:17,250 It's been great, it's been enlightening, and thank you very much for doing this. 554 00:31:17,250 --> 00:31:19,340 Yeah. It's very nice talking with you. >>Same here. >>Thank you. 555 00:31:19,340 --> 00:31:25,510 [treehouse friends] [??]