001 iPhreaks Show – Getting Started with iOS Development

Download MP3

The panelists talk about getting started with iOS development.


PETE: Hey, what's the volume length for this microphone? Because it sounded really quiet when I tried it early on...Do I sound quiet? CHUCK: No, you sound fine. BEN: Nice and great. PETE: Good! BEN: It's giving you some sort of British accent, though... [Pete laughs] BEN: Almost... [music] CHUCK: Hey everybody and welcome to Episode 1 of the iPhreaks Show. This week on our panel we have, Rod Schmidt. ROD: Hello from Salt Lake City! CHUCK: Alright! We have Pete Hodgson. PETE: Hello from Butte Lake. CHUCK: And we also have Ben...should I try? [Pete laughs] BEN: Yeah, try it! CHUCK: Sheerman? BEN: Just, Sherman [inaudible] CHUCK: Sherman? BEN: Yup! CHUCK: Alright. ROD: Like the tank? BEN: Yup! Like the tank, just with a couple of extra letters in there. CHUCK: Nice. BEN: Hello from Houston! CHUCK: And I'm Charles Max Wood from devchat.tv. I thought we could start off the show, since this is our first show, by doing a little bit of an introduction. So, what I'm thinking we'll do is we'll talk briefly about our experience with iOS and iOS programming; where you came from and how you got into it, and also the types of applications you written - if you written games, or if you written geo-location maps, or whatever. I don't even know what all the categories are. So let's go ahead and start with Ben. Ben, do you want to give us your brief or not so brief introduction as it may be? BEN: Sure! I was a .NET Developer in a previous life and (I) spend many years doing that; I was writing a book on MVC, and so I wanted to sort of be aware what else was out there. So I started into Rails and around the same time also, I have this cool iPhone I would write an app for it to maintain my Guitar Tablature. So I just kind of went heads first into Rails and iOS. And about a quarter away through that project, I was like, "Man, I really want to do this fulltime". So the opportunity presented itself in 2010 (I guess it was) after I shift that up to do it fulltime, both Rails and iOS. So I've been doing that fulltime now for 3 years; and if transition (is) completely away from .NET, it wasn't even on purpose, it was just there's so much iOS work out there and I just fell into it. So I really love it. I've shipped a couple of apps. The first one, Guitar Tablature tends to be the sort of legal landline area where it was going to be too expensive to both pay the lawyers and pay the digital rights that were required to keep that thing online, so I had to pull that one, unfortunately. But I do have one app in the store right now, one personal app. It's called "Giggle Touch", it's for little toddlers. You can tap on the screen and shapes appear and giggle sounds, that sort of things. And I've been working for a company called "ChaiOne" here in Houston; we have a team of good iOS, Android, and Rails developers. On the side, I do "NSScreencasts" so I produce screencast once a week on just learning iOS development. So, that's my backstory. CHUCK: So I want to make you hurt some people's feelings, do you like iOS development more? Or Rails more? BEN: They complement each other nicely, I think. The languages were heavily influenced by Smalltalk, so patterns you see in one sort of emerge in the other...I don't know, when I get tired of one, there's always the other one who are waiting there, and I'm always sort of bounce in back and forth between the two in my day job. So, I don't know; I don't think I could pick one and say "I'm doing this forever", and not doing the other. CHUCK: Nice. PETE: That was a very diplomatic answer. CHUCK: That was what I was thinking. [laughter] BEN: I'd just like balancing on the fence there. PETE: Right. CHUCK: Sweet. Alright, are you going to (what is it?) LoneStar Ruby Conference? BEN: I just submitted a talk, hopefully that'll get accepted; I spoke at the last two. I don't know what it is about Ruby Conferences, but I get really nervous submitting talks to Ruby Conferences. I think maybe it's because I'm a better Objective-C developer than I am a Rubyist, but we'll see how it goes. CHUCK: Yeah. I have to ask because I like meeting the guys that are on my show, so I'm going to be there. BEN: Yeah, but we met at DevTeach in Vancouver. CHUCK: Oh! That's right. Alright well, good deal! Pete, do you want to introduce yourself? PETE: Sure! My name is Pete Hodgson. I work for a consulting company called "ThoughtWorks" -- CHUCK: Never heard of it... PETE: Yeah. Let's say at GM, I'd be interested at how many iOS developers half because it comes I guess with mobile name for enterprise-y, the existence can we offer for [inaudible]. I've been there for like 3 years now and I guess my background is kind of will led you to place I started of. My first professional job is doing C++ and I did some C#, TinyBuild PHP, and then I fell into Ruby. I was doing Rails development for a while and then when I was working at ThoughtWorks, I did a few Rails projects. And then we got this mobile project, it's iOS project for a bank, and we were looking for folks who were available who had iPhone experience and I said, "Oh, you know I spent a week playing around with X code and trying to figure out..." and that counted me as an expert, so I joined in their project. CHUCK: [laughs] I see... PETE: Yeah. I spent like a year helping this big bank build a retail banking up. And that was not to be just iOS, that was Android, iPhone and iPad, and then we also did a bunch of like JavaScripts, pure JavaScripts like single page mobile app, which is kind of a weird one. And I guess that a bit of a theme to me is that I'm not explicitly an iOS developer. I kind of who bounced around a bunch since then as well; I've done iOS stuff and also still do a lot of Ruby on Rails stuff. (I'm) actually doing Scala at the moment as well, which is interesting [laughs]. Yeah, that's it. And I guess the other thing that came out originally with that big banking project was this testing tool called "Frank", which is I guess like Selenium for iOS developers basically. So I'm kind of that grew out that project and I continue to be the maintainer of that thing. And actually, suprisingly enough, I made -- it sounds like me and Ben made the same app -- I made an HTML version of Giggle Touch called...I'll send you guys a link; that cracked me out when you just said that because it's like I basically made the exact same thing for my toddler, except I chose HTML rather than iOS so maybe I'll get [inaudible]. [laughter] CHUCK: Oh yeah, that's horrible. Pete actually was recommended for the show by Martin Fowler. BEN: Who's that guy? CHUCK: He came highly recommended. Alright. And Rod, you want to give us your backstory? ROD: Sure! My name is Rod Schimdt, and I work for myself at a company called "infiniteNIL" software. And let's see...I came from, way back in C, C++, and then moved to Java, and got sick of that. And I've always been an Apple fan so when Steve Jobs split off from NeXT, I was interested in that stuff. And when I first saw Interface Builder, I was blown away and wanted to do Cocoa from them, but I couldn't because I didn't have an X-Machine (they were like $10,000 back then) so I just read the book. When Apple bought NeXT or NeXTSpot Apple everyone look at it, I knew that was my chance. So I bought a Mac again which I recently gone to a PC for my work and then I got it back, a parabook and started getting into it again. And then in 2003, when my Java contract ended, I just went and do the (got a) Mac contract gig fulltime. So since 2003, I did Mac programming, and then of course when the iOS has to kick them out, I was right on that, too. BEN: That's an interesting side note. I came directly to this via iOS so at the time I came around, learning this (it was like late 2008, early 2009), there were no iOS books around so I had to start to learn the Mac way and sort of translate it to iOS. ROD: Right. BEN: I'd be interested to hear your thoughts on how you were able to make the switch from that to iOS. ROD: Sure! PETE: Yeah, we'll talk about that later. ROD: So yeah, when iOS came back and out, I've been doing that eversince. I also have both my feet in the Mac world and the Rails world or the Ruby world. I've done presentations on RubyCocoa, like I did a presentation at the first Mac OS X O'Reilly Conference, that didn't last long though. I did RubyCocoa and I've done a number of presentations at the yearly local Ruby eRUG here on RubyMotion and RubyCocoa, And I'm actually currently writing a Rails app for my own stuff. So, I have an infinity for the Ruby world as well. And let's see...some of my apps are, my big winner is a -- well, I have some Mac apps, I don't know if you want to talk about them or not -- one is "Packrat", which is a 37signals' Backpack client. And there's one called "Everport", which lets you move your Backpack information to Evernote. And then on the iOS, my big seller is an app called "Numerology". It does numerology which is like astrology except that it uses numbers and names derived or numbers derived from your name and birthday to analyze you. CHUCK: [laughs] Nice. Awesome. Rod is a local developer. He lives here in Utah not too far from me, and he's one of the people that I wind up talking to when I'm talking about iOS. I was really happy to get him on the show. I'm going to give you guys a little bit of my background. Now, as far as iOS development goes, I have been talking about learning iOS development for a couple of years. I have impracticed then learning iOS development off and on for that time, but it's usually a day here and a day there. But since I -- I think I mentioned this before -- my contract ended on Friday. After MountainWest Ruby Conferences, we can probably going to have a little time to dig in and I'm really excited to figure out some of the stuff. That being said, I don't feel bad about pulling a show like this together because we have awesome experts like you guys, and then I can ask all the new questions. So I'm excited. My programming background, basically I started programming when I was like 13 on my TI calculator. And then in college, I had to pick some up because I was an electrical engineering major and then a computer engineering major, and I thought that programming was for chumps because all we ever did was built toy apps. Then I went and work for a company over here in Utah County; it was a startup so -- what wind up happening in startups is you wind up building the tools that you need because they won't buy them, and I was running a tech support so I wind up building a tech support portal with another guy who is also helping me run the tech support thing -- I figured out pretty quick that programming was actually cool and that I don't really want to be on the management track anymore, so I made the transition. I've worked for a few companies around here and I've been freelance Ruby on Rails developer for the last 2 1/2 years. But, the iPhone stuff has always fascinated me and I'm just super excited to really get into it. So that's where I'm at. And that's where I get to ask all the needle questions because today's topic, we're going to be talking about how to get started. First off, I'm just going to briefly mention some of the things that I've done. As Ben mentioned, I went to DevTeach last year and spoke on Ruby, but I attended one of the workshops there on iPhone development, and I've also picked up "The Big Nerd Ranch Guide" to programming the iPhone. I'm not sure what you guys' opinion would be of those kinds of things, so I'll let you chime in and talk about it for a minute. BEN: When I was looking at Getting Started on Amazon and the local bookstore looking for books, the one that I found the most highly recommended was Aaron Hillegass' book The Big Nerd Ranch Guide to Mac OS X Programming, I forgot the title. It's green and it has like vest ball on it, "Cocoa Programming for Mac OS X", that one. I really liked that style. He was kind of this sure puff for iOS like, "Okay, we're going to go on this journey together and don't worry it'll be hard at first". I really appreciated this kind of super beginner nature, that his writing sounds really really approachable. So I learnt how to do sort of Objective-C Memory Management from someone of other world's expert toward these on the topic. I really thought that that book was awesome; I haven't read the iOS version, but I assume it's of similar quality. ROD: Yeah, I read both of them - the MacBook and iOS book (or) other ones, I tell everyone, I recommend to them. And Aaron was actually a trainer at NeXT and he trained Apple people to write Cocoa and he runs the Big Nerd Ranch so he knows what he's talking about. CHUCK: I think Big Nerd Ranch got bought out by...who are they bought out? ROD: That's kind of a merger... BEN: They merged with a Highgroove Studios... CHUCK: Yeah. ROD: Yeah. BEN: I got a couple of friends that work there. Other books that I think are good, I really really liked the Apress book "Beginning iPhone 3 Development" by Dave Mark and Jeff LaMarche. And then we recently bought a couple of office copies of the -- I guess we have one for version 5, one for version 6 -- but it's just like a kind of buy example; chapter by chapter you can just say, "Okay, I want to do Table B" and just stem straight to that chapter and just kind of self-contained. (It's) really easy to use as a reference. PETE: Did you guys learn -- I guess it depends on might have you learned Objective-C at the same time as you are learning iOS -- but are you aware of any good books that are just about Objective-C itself? Or, I guess most of them be learned in the context of doing iOS development. CHUCK: That looks like Big Nerd Ranch has an Objective-C book, because it's just on Objective-C. PETE: Yeah. ROD: Right. CHUCK: And then, I've also got an Objective-C Phrasebook, that's just kind of a quick reference. I don't know, I haven't really gotten into the Objective-C books themselves, and that's mainly because I'm more interested in doing something with it like I don't want to just dink around with the language; I want to actually figure some of the stuff out. PETE: I guess it depends on your kind of learning style. For me, when I'm starting a new thing, I like to get like the language book and then go on to myself on that and read it, [inaudible] all the way through and then look at the libraries and the frameworks on top. But, I think maybe iOS development is kind of unique because it's the language and -- like Apple and Objective-C is so tightly connected that it's like one iOS development is Objective-C, and Objective-C is either iOS or Mac development -- the libraries and the language kind of melt together a little bit because they were all maintained by the same company. CHUCK: Yeah. The other thing that I would point out is that, the primary languages that I've worked in are JavaScript and Ruby, and then I played with Smalltalk, and after were the Oddities, that most people run into and struggle with in Objective-C were things that I just looked at, "Oh, it works like this", this other thing that I'm familiar with. So, I'd never too struggled with the language itself. BEN: That may be a good thing to touch on real quick because a lot of people that I talked to, especially my old .NET friends, they've looked at Objective-C and they're like, "Oh, my eyes! I can't stand it!" And I kind of have the same initial disgust reaction to the language, but for me, it's a means to an end. I really liked the iPhone and I was like, "Well, people are building awesome apps on this platform, let me just see how they live life, how they experience things". And after I learned the Objective-C way, it grew on me; it wasn't as ugly as I initially thought. There are some rough edges here and there, but I came to like the language. CHUCK: The other thing with the language is that it's continually evolving so they have made some changes that make it easier for people to come in. For example, the square bracket notation for making a method call was kind of weird to me, but now you can use dot notation and it works the same way. Things like that. BEN: Yeah, that's kind of a hot topic though, right? PETE: Yeah. CHUCK: Oh, absolutely! BEN: You have 2 ways of accessing a property. I think you can call a method in the same way that you call a property using dot notation if the method is [inaudible], right? But there's like the strong sense in the community that you should use bracket notation where you're calling a method and only use dot notation for properties so that you can keep that distinction. PETE: But then as we all say, I think actually just on Ruby Rogues where they took that out recently, the Uniform Access Principle is idea that accessing a property versus calling a method; if you keep that the same, you get some nice benefits because you can mess around with stuff. But, I know this is a very controversial topic. CHUCK: Yeah. And the thing that I really wanted to point out was that it's sort of beginner-friendly because most of the languages you're dealing will use dot notation so you can use dot notation and get away with it until you figure out what the idioms are that the community is excited about. PETE: Yeah. One thing that kind of caught me, when you're just saying Chuck about as a Ruby and JavaScript developer, it kind of looks familiar. I wonder if we want to talk about Memory Management, because that's one thing - it's different from Ruby or JavaScript (I don't know if that matters). It's the whole Reference Counting and Memory Management, or ARC. Do we want to talk about that here or do we want to...I mean that's all my [inaudible]. CHUCK: I think we probably will cover that next week because it's such an important aspect of programming for the iPhone or iPad, but it is a 'gotcha' that beginners are going to run into. I was hoping that this episode would be more of just "here are some resources to get you going". I've heard a lot of good things about NSScreencast -- ROD: And Unplugged... CHUCK: If Ben just wants to talk about the aim of what he's trying to do there real quick, that would be cool. BEN: Yeah! So when I was getting into Rails -- a lot of my friends were using Ruby and stuff -- I knew it was something I wanted to get into. And "RailsCast" was just as in valuable resource to me; it was topic-focused, it was really easy to just watch a 10 or 15-minute video and do something real with it. I built my first app basically by stitching together tutorials that Ryan Bates had done, and about this time, I was like "You know it'd be really cool if somebody had done this for iOS". My friends heard me complain about this, maybe 5 or 6 times, before they said "Hey, you know you could just do that". So that was my goal; it's just kind of be like the RailsCast for iOS, and I've been doing this for a while now. Mine started as a subscription-based service from the start. So it's $9 a month, and I have a few handful free episodes available on the side if you go to nsscreencast.com. My goal is to keep them between 10 and 20 minutes, sometimes it go over; building iPhone app is hard to do in 20 minutes. Anyway, my latest ones were on 'Windows Azure Mobile Services', which is like a backend for your apps. There's two of those and those are both free. And yeah, if you've take a look, then let me know what you think. My goal is certainly to help people who maybe are familiar with development, but new to Objective-C get started and sort of browse around topic-based and be able to get going quickly. CHUCK: Yeah, I like having videos that I can go and watch; it's just really helpful. BEN: Speaking of videos, the 'Stanford Lectures' on iTunes U, that's probably the most valuable thing I found when I was learning. I had some time away from a Mac for a while when I was trying to work on my app, so I was like "Oh, I have some time (but) I can't actually program the Objective-C, so let me just sit there and watch these videos". I went through like a whole semester for the content in a few days. PETE: Another good resource for videos overseas, the 'WWDC' content, that covered all of those; and the ecology of those presentations is amazing. I always wonder how much time they spend preparing all those talks. I think if you're -- is it that if you've got an Apple developer account, then you can access all of those free [inaudible], right? BEN: Yeah. CHUCK: Yeah. BEN: Those were not free when I first started, so I had to pay I forget whether it was $200 for them, but again, totally worth it. I really don't want my videos to compete with those because they're so good, but they're just really long, right? PETE: Yeah. BEN: And they're also only covering stuff that Apple wants you to look up; they're never going to cover the French topics like CocoaPods, or Frank, or whatever. PETE: I think that's a really big thing for me as one of the things that I found quite enjoying coming in to the Apple community versus of a developer communities is the Apple-centricness. I think, things like a NSScreencast and also like NSHipster, which is this website that Matt Thompson does are really good because they're not coming out of Apple and they're providing a more esoteric look of stuff that's both like official Apple-sponsored technology, but also the unofficial stuff, which is sometimes is better than the official stuff. CHUCK: That's one thing that I found really interesting about this community and other communities like the Microsoft community to C# stuff, where it is really driven by just one company and they're only really programming for products made by one company. And there is sort of this walled guard in effect in certain instances that people talk about especially with Apple and iOS that some people love and some people hate. PETE: It really reminds me of the Microsoft community in like the mid-90's. BEN: [laughs] I was just about to say that. PETE: Yeah. I definitely get that when I go to -- definitely if you go to WWDC, if you didn't go to kind of their Terms of Conferences and you've asked people "Are you using AppCode rather than Xcode?" it's like almost everyone is using the official Apple blast technology, and they kind of make jokes about stuff that's not Apple. I think, it's pros and cons, right? It's great because everyone is focusing that energy and talking about the same things so everyone's going in the same direction versus like the Ruby community where there's like 55 different testing frameworks and 462 different API and frameworks, but it's also a little bit of a bubble sometimes. ROD: There are some French groups that do development on Linux and like there's the Cocotron project in open; they're just trying to duplicate the Apple environment on those platforms. CHUCK: Oh, that's interesting. PETE: Hey, what's the Linux one? Is it the new one that's -- ROD: There's the GNUstep project, there's also Cocotron which lets you write for the Windows platform using an Objective-C and Apple-like frameworks. PETE: Cool! CHUCK: That's interesting. I'm also curious, I know that you've done some RubyMotion, Rod, does it seem like there's a home or other communities surrounding that? Or, are they part of the Apple community? ROD: It's almost like a whole new separate community because most the Ruby guys are really taking to RubyMotion while the Objective-C guys look at it skeptically, and I'm kind of in the middle. They are growing up their own ecosystem, their writing wrappers for all the Cocoa APIs that they can more Ruby-like, they don't use Xcode, and things like, so it's almost like a whole another community. BEN: One thing to note when you're looking at frameworks like this, including like MonoTouch, which is a C# for iOS, both of these frameworks are, in my opinion, much more preferable than the like one common language -- [crosstalk] BEN: Yeah, exactly, like Titanium or whatever, or PhoneGap; I'm not a huge fan of those type. But there's this other ones which are just use your language and build on top of something that looks just like Cocoa or Cocoa Touch. And that's what RubyMotion and MonoTouch would be in that category compiles down to real native app, but you write it in your language of choice. However, it doesn't obviate the need to be able to look up the real docs, be able to read and understand Objective-C code, and understand fully UIKit and how Cocoa Touch works. That's the approach I took; I need to know how people do this before dismissing it and replacing it with my own alternative, which is how I ended up in this boat of kind of liking Objective-C. There's lots of resources out there for Objective-C; all the docs are readily available, that sort of thing. CHUCK: Yeah. I just want to jump in and clarify for some of the folks out there that aren't familiar with this part of the ecosystem. So like Ben said, MonoTouch and RubyMotion statically compile to native code that runs on your iPhone. And then a lot of these other ones like PhoneGap and Titanium, what they do is they load up a webview so you don't get all of the native goodies that you get out of just running native compiled code. PETE: So the really good analogy there, I think, is this uncanny valley thing. Do you guys remember Final Fantasy the movie where they all look like they were zombies? CHUCK: Uh-hmm. [Ben laughs] PETE: There's Final Fantasy and then there's Toy Story, right? Toy Story had amazing [crosstalk] and look super fun. Yeah, and then there was like creepy Christmas movie with Tom Hanks -- ROD: Polar Express or something like that. PETE: Yup! CHUCK: [laughs] My wife loves that movie. [laughter] PETE: Well, they looked really creepy because they're trying too hard to be real or they'd like to be future-realistic. So, you get this uncanny valley effect where you know what they're trying to do so it looked really bad. And if you ever looked at CenterStage application, they're trying so hard to be native iOS that it doesn't work; you fix it on all of the way so it's not quite native iOS, right? BEN: Yeah. PETE: You're like "All the gradient software here". And then if you look at it on an Android phone, it just looks ridiculous because it's an iPhone app inside of your Android. That's definitely I could talk for like 4 episodes about those; I'm really into like all across platform stuff so I could take us off from this Android for a while here [laughs]. BEN: A lot of these tools, I'm specifically talking about something like Titanium, they're advocating -- well, you already know JavaScript so you can use JavaScript into play everywhere. And while that's true, this is not your browser's JavaScript, this is their own STK and that that's not UIKit. So, reading Apple stacks doesn't do you whole lot of good of how to build a Titanium app so you're kind of stuck on that - at the whim of their STK, their documentation, etcetera. And granted there's some native bridges here and there so that you can write your own stuff natively, but then you're kind of like needing to be an expert in both sides of the fence. If you want to choose that platform as your platform, then you need to buy and whole hog and really dive in and be the expert on that platform. But that doesn't necessarily make you more effective. I think you're just trading one set of problems for another. CHUCK: Alright. I think we've kind of talked our way around why these frameworks are good idea or not, and what some of the tradeoffs are as far as how easy they are to learn, and what the tradeoffs are as far as the performance on the machine. I want to come back to some of these other resources. We've talked about some of the video resources for learning iOS programming; we've talked about a bunch of books. I have 2 other areas that I want to go into and the first one is, for those of you who don't know, I love podcasts. [laughter] CHUCK: So I'm wondering if there are any good audio resources whether it be something that I can just purchase and listen to, or if there are podcasts that you guys recommend for learning Objective-C and iOS programming. ROD: There's lots of podcasts, (but) none of them really focused on teaching you Objective-C. They discuss the Apple development world. BEN: I think that's good just to sort of familiarize yourself in the community just so you know who to talk to and what the things that the community is getting around. I don't know, do you just want to list off the podcasts that we listen to? CHUCK: Yeah! If there are any that you listen to because I think it's just as important to know what's going on in the community as it is to pick up the beginner's skills. BEN: I was a big fan of 'Build and Analyze' before it closed up. That was more about cars and coffee rather than code, but it's still pretty good and it covered a lot of the new release stuff and what to watch out for. [crosstalk] CHUCK: That was a 5by5 Dan Benjamin and...what's his name? BEN: Marco Arment. CHUCK: Yeah. PETE: And the John Siracusa was awesome, too. BEN: Yeah. Both of those are just kind of like dancing around in this community, like John Siracusa is much more about the Apple ecosystem and hardware and that sort of thing, which is fascinating if you like to listen to that guy talk; I could listen to him talk for hours. But also, I like 'Core Intuition', which is a Daniel Jalkut's and Manton Reece's podcast. I actually sponsored that one for NSScreencast, which is pretty cool. I'm trying to think of others that I listen to. PETE:'Edge Cases'... BEN: That's run by Wolf Rentzsch, which is the coolest name, I think, ever. [Pete laughs] BEN: I forget the host's name... PETE: Andrew Pontious. BEN: Okay. Yeah, I think he used to work at Apple. Yeah, they cover some things pretty deep dives, that sort of thing. ROD: I also listen to, there's NSBrief with Saul Mora. He interviews people on Objective-C, Open Source projects, and stuff like that. There's 'Identical Cousins' with Brent and Michael Simmons; Michael Simmons did 'Fantastical' and Brent has done 'NetNewsWire'. There's 'iDeveloper Live' with Scotty. There's 'NSConference' over in Europe. There's 'Debug' with Guy English and Rene Ritchie. There's 'Developing Perspective' with David Smith, those are 15 minutes, those are pretty good; he's an iOS developer. Those are the ones that I listen to. BEN: And there's 'iPhreaks', I don't know if you guys have heard of that one [laughs]. CHUCK: Yeah, it's this new up and coming show. I hear that one of the hosts has like 4 other podcasts. Yeah, awesome! I'll have to check some of those out. The other thing that I wanted to get into was what websites do you guys use? I know that Apple has some docs, and I'm also interested in blogs. Do you want to talk about some of that? BEN: Yes. When I would look up stuff for a C# for Microsoft, and MSDN article was like the first hit, I was like "Oh, no!" [inaudible] good information here, and I'll go look at it and at the bottom there like "Was this website helpful?" and I would always click 'No' because the docs were pretty poor, and I never really got that much value at them. With that said, Apple's docs are way better, in my opinion. That's the first place I go when I'm looking at something. I'll check out the docs; I use a documentation viewer on my Mac called "Dash", which I think is $30; it's in the Mac App Store. PETE: There's a free version as well. BEN: Oh! Is that just in there? PETE: I think the free version has the Apple docs in it; I might be wrong, I'm not that -- BEN: Yeah, okay. So if you ever doing work on a plane, like I don't how I ever survives as a programmer without the internet, but if you're ever doing work on a plane and you need to look up something, having Dash on your Mac is really really helpful because you get whatever docs that you want. I have like jQuery and Postgres, and Ruby and Rails docs, as well as a bunch of other stuff in there. So they just have a whole host of docsets default. Having that at your fingertips and just being able to look something up really quickly, that's the first place I go before jumping to Stack Overflow, or whatever. PETE: I want to emphasize how good the Apple docs are. I have the same thing with the C# or Memories of the .NET community -- at least, if you have the PHP documentation, then it makes .NET look amazing [laughs][chuck laughs] PETE: It's just like PHP documentation; it has like YouTube-style comment thread underneath for each thing, which is just horrifying. [Chuck laughs] PETE: Anyway, the thing that I was really surprised coming from different branches with Apple is, I hate the quality of the documentation, but also it's not just like API documentation; they have like these really great long form articles on stuff like the patents that are common, like the view life cycle - all of these are kind of like long form content that's just really really well-written. I didn't actually read that many books when I was starting with iOS, but I did read a lot of those long form articles and I thought they were just really really valuable. And those are written by Apple, so they kind of know the internals well and they explain it really well, I think. ROD: There's also 'Matt Gemmell', he's a Cocoa developer that blogs, a good writer as well about various topics. There's 'Cocoa with Love', again, they have some really good articles on how to do certain things occasionally. BEN:'Cocoa is My Girlfriend'. ROD: Right, that's again a good one. There's Wil Shipley; he doesn't like to talk about techniques, but he's a character on his own write, 'Call Me Fishmeal'. [Chuck laughs] ROD: That's his blog. PETE: There's the Mike Ash's blog, that one's really good. [crosstalk] BEN: You got to really focus when you read those, you can't just sort of casually browse it. PETE: Yeah. Maybe not for beginners unless you want to see how much there is to learn [laughs]. How long the writing in front of you is. BEN: Yeah. CHUCK: Nice. I'm compiling this huge list, I'm going to lose like a week to you guys now. BEN: Ray Wenderlich is probably my favorite blog. ROD: Oh, that's a good one! BEN: raywenderlich.com PETE: Yeah, he has really good tutorials, man. BEN: A lot of them is around game development. Its topic focuses like "Here's how you do it, and that purchases, or whatever", and they're really long articles. He's got a lot of contributors doing it; they're really well-done. And I think he compiles those into a book and sells it. I'm not familiar with exactly how that works, but I would certainly recommend buying that if you need something sort of pre-packaged and ready to go. CHUCK: Awesome. So I think we've covered most of the stuff with websites. We're getting a little bit close to the time where I usually go to picks, but there's one other area I want to talk about before we move on, and that is User Groups. It's kind of interesting to me when I first got into user groups with iOS; it was the CocoaHeads group that Rod actually organized. It's kind of funny because I've never been in a programming community that had a centralized user group organization. ROD: Well it's really just kind of a name... CHUCK: Okay. ROD:...because I don't talk to the central group at all. Although, Mark Dalrymple came and talked to our group once and he kind of organized - he was the original founder. He just want a place for people to go where they learn about Cocoa. That's the extend of it; there really hasn't no like "national organization" or anything. CHUCK: Oh, okay. BEN: Yeah. Our local group is just an iPhone developers meetup, but again, I find that super valuable. I came there with my app idea and my wife's laptop, her MacBook at the time, asking all kinds of questions. They were so helpful. I kept saying, "You know I don't want to monopolize the meeting", and they're like "No, this is valuable. Throw your stuff up on the screen and we'll debug it". Stuff like that was just super super helpful for me. In particular, I was dealing with this bug that I had like a webview on the screen and I was tapping and it will start loading, and then I backed out of the screen before it's unloading, and then it caused my after crash. I spent hours looking at this, just sort of scratching my head thinking "Maybe I can't be an iOS developer". And one of the guys from the group, he was on Skype and I ping to him, he's like "Yeah, I'll take a look". Within 5 minutes, he's like "Yeah, you got to know how you'll delegate here and then you'll be good". Having that type of expert advice just sort of at your fingertips is super super valuable. PETE: Yeah. If you want to find a user group in your area, the national name, actually it's worldwide, it's called "CocoHeads" and you go to cocoaheads.org; there's a map of the world where you can find a group near you. In fact, the Utah one that I organized is meeting tonight, so if you're in Utah, come and stop by. BEN: They're probably here about this after it's over [laughs]. CHUCK: Yeah, that's right because this won't be released for probably a week. PETE: Oh, that's right! CHUCK: But there's also a group at BYU in Utah County, that's also local. I haven't been to that group, but they sound pretty excited and intense about this stuff. BEN: Also, 'NSCoder Night' is a night that's organized for people to get together just that's not an organized presentation format. I think there's a website for NSCoder Night so I'll send you the link Chuck. But basically, it's just a place, like in Houston, we meet at Te House of Tea, it's this really quiet place with like a hundred different teas and good food and free WiFi. So we just go there and work on whatever we're working on and just be social. Sometimes I just sit there and do my own stuff and people come up and ask me questions or sometimes I have a question and I'll just work with somebody on that. That's also a really great way to meet people that are also doing the same stuff you are. CHUCK: Yeah. I think the BYU CocoaHeads organizes something like that, too, and they meet at a cafe here. Ben: Yeah. And that one is like every Tuesday, except for the meetup night for us. CHUCK: And one of the things I want to say about users groups is that, if you don't have one in your area that's close to you, see if you can find some other iOS coders out there and see if they're willing to get together every so often. I think you'd be surprised how many people would be willing to come to something like that even if it's just "Hey, we're all going to meet at this place and just get food and chat". ROD: There's also 'UI Coder', which is also in Salt (Lake). That is a group in Salt Lake and I think it's in other places, too, that meets every Tuesday in Downtown. CHUCK: Cool! BEN: Yeah, and I just checked: there's 606 members on our iPhone meetup group, which is pretty huge. We usually get about 30-50 show up every meeting, but that's a lot of people. CHUCK: So that people on your mailing list? Or, your group? Is that what you're talking about? BEN: I was just [inaudible] on meetup.com, so it just tells me how many people who signed up. CHUCK: Oh, okay. Nice. Alright, well are there any other things that we haven't talked about that we should cover as far as learning iOS programming? PETE: Do you want to talk about conferences real quick? CHUCK: Oh, yeah! How can we forget conferences? PETE: They're like big meetups. CHUCK: Yup, they are! BEN: [laughs] Yeah. I would say go to CocoaConf, and there's probably one coming near you soon. CocoaConf is a really really good conference. In my mind, so far it's the best one aside from WWDC that I found. I'll be going up there on Wednesday to speak at the Dallas Event, and I think there's one in San Jose after that. PETE: Yeah, I'm speaking at the San Jose one. CHUCK: So are they just kind of local conferences? BEN: It's the organizers are travelling so they just kind of pack up in a bus and go to a new city. I think that they are sort of open to suggestion on where to go next; I've been trying to get them in Houston for a while, but Dallas is close enough for me so I'll be driving up there. But yeah, they had it in Portland, I think in October last year, I just spoke at the one in Chicago last month. So yeah, it's a good event to go to. ROD: Yeah, I remember I was filling out form to ask them to come to Salt Lake...we'll see. PETE: I went to the Portland one, I think it was good. BEN: I think you have to lobby, get people on Twitter until they also say "Yeah", plus you want them to come to your city. PETE: Alright. CHUCK: We could probably organize something like that. ROD: There's an NSConference, which is in Europe, I think in England somewhere, and also at Atlanta. And then there's a new one called 'NSNorth', which is in Canada, I believe, somewhere. BEN: And also Amsterdam for 'mdevcon'... ROD: Alright. BEN: Pete, you and I were both there. PETE: That's right. BEN: That was a good one. It was more cross-platform, but there's definitely a lot of iOS love there. PETE: Yeah. And there's '360iDev', I just heard about this one which is in Colorado. ROD: It reached you! Has anyone else been to that? BEN: No, a lot of my friends go to that one. And that ones, where you can meet all kinds of indie developers, it seems to be a good place to go. I just seem to fill up on conference time before that one comes around. ROD: Yeah, I went to that one a couple of years ago, and it's single-track; it's good. PETE: I kind of want to put in a proposal to that; it looks like someone. CHUCK: Yup. Yeah, I like the conferences in Colorado because they're reasonably close. Awesome! So, what is kind of the experience with these different conferences versus, like WWDC seems to be the big one? BEN: [laughs] I think that's kind of -- it's almost like a rite of passage, right? I mean you stressed out about getting a ticket, or you sign up for these notifiers so that you can [laughs] get notified when they come on sale, and hopefully I'll live in the West Coast, sorry Pete... [Pete laughs] BEN: Because otherwise, you have to wake up at like 5 am to get online and buy your ticket, and it's super expensive. But that said, you'll never meet that many like-minded developers; it's such a good networking experience AND you get first hands-on access to the new bits that come out for iOS 6 or iOS 7 or whatever the new thing is, and it's just a week to immerse yourself in learning. The videos are available for free, typically like a week or two after the conference, but I still think that having time to go there and meet people is worth it. In addition to that, they have the labs you can go to -- PETE: Yeah, the labs are awesome. BEN: The app I work on is called "DeliRadio", D-E-L-I Radio, it's a streaming radio app. So we have some pretty complicated AVFoundation code in our app, and AVFoundation is a really complicated beast in the way we are using it; I've had all kinds of questions. So I went down to the lab and I actually met the guy who invented, or at least, started the HTTP Live Streaming spec, and we chatted for like 45 minutes about how the design, various pieces of our app. That type of advice is really really worth to take it alone, in my opinion. But you have to get in line to get it. PETE: I just went to WWDC for the first time, I think, last year and the labs just blew me away like you're literally talking -- like you have a problem with thing X -- and you're talking to the guy that wrote that software. It's not just like a guy that's an expert, it's like "Oh, yeah, I remember we did that for some reason. Oh, yeah, it's actually..." and they're very honest about like "Oh, yeah, that's kind of like the legacy thing. We don't really want it to be there, but we can't get rid of it. Use this thing instead", they're very upfront and they're very straight forward. And it's quite non Apple-y because normally Apple is kind of like the reality distortion field, right? But when you actually talk to these individual engineers, they're kind of just regular developers... BEN: They're not going to go on record and tell you this thing is going away or you should move in this direction, but they'll tell you, put their hand on your shoulder and say "You should do Y", and then they'll give you a winky face. And then you'll realize, "That's something I really need to pay attention to because Apple is going to be doing that". PETE: Yeah. I had some really funny experiences at the labs, asking them questions I shouldn't. Because I maintain this unofficial testing tool, part of what it needs to do is get into the internals of how IRS works and do things that Apple don't really want you to do. So I was kind of just down there like asking many awkward annoying questions, and they were very very accommodating of me being just like this; kind of annoying guy like "How do I break your stuff?" [Ben laughs] PETE: It was really a good experience; that was my favorite part of the [inaudible]. And this [inaudible] were drinking as well. CHUCK: Nice. BEN: That's a must. CHUCK: Alright. Well, we're out of time so I'm going to go ahead and move over to the picks. Since this is our first show, I'm going to explain what the picks are, and then we will probably not do that again. So the picks are basically anything that we found that's useful, interesting, or fun. On other shows, we picked music, movies, development tools, just anything and everything. So there's no real rule to it, just share whatever you're excited about these days. It seems like some of you guys have listened to some of the other shows where we do it, do the picks. So, I'm just going to pick on you guys and have you share the picks. Ben, why don't you start this off? BEN: Alright. So, I guess my first pick would be "CocoaPods". It's definitely sort of this non-Apple way of doing things that is pretty awesome. If you're familiar to Ruby and the RubyGems community, then CocoaPods will make you feel right at home. It's an easy way to pull in at their party library and you get to enter a code without having to deal with things like Header Search Paths and Linker Flags, and all kinds of other stuff that make this stuff complicated. So definitely, check out CocoaPods; all my stuff uses CocoaPods these days. And, I'd also suggest/say follow "Matt Thompson". He's a M-A-T-T-T on Twitter, and he's always coming out with cool new stuff on GitHub. He's the author of that NSHipster blog so I guess Matt would be my next pick. CHUCK: Awesome! Pete, what are your picks? PETE: My first pick, which is kind of technical but not iOS related is, the "Raspberry Pi". This is like this little kind of tiny credit card sized computer that costs first $5, sounds unbelievable but it's true. I've been wanting to play one for ages and I finally found an excuse to get one last week because we were starting up a new project until we needed to build monitor. And all the continuous integration stuff was in the Cloud for this project, we didn't actually have a physical computer, so I went on Amazon and started at $75. Two days later, this tiny tiny package arrived. I thought it was just one piece, but it was actually everything including the case and the memory stick and the flash. It was actually super easy to get started. We've all been surprised; I thought I was going to be messing around with it for hours, but within about 30 minutes we had it plugged in to a monitor and build us screens. So, Raspberry Pi is awesome and it got like cool kind of hardware hacky things you can do with it because it has like those GPIO input/output pins so you can wire up to physical things or tape measurements of things, and all that kind of stuff. My other kind of iOS pick would be "Kiwi", which is like a unit testing tool; it's kind of like Aspect, if you're really personate, it's like Aspect for iOS. It's really good and if you're getting started and you're trying to figure out how to use unit testing, there's like the official Apple way, which isn't actually that great. So I'd recommend looking at the Kiwi from the git-go and try to do the official kind of Apple unit testing thing. BEN: I think that is a bit on the show topic, right? PETE: Definitely. CHUCK: Yeah, testing iOS. PETE: Yeah. CHUCK: Alright. Rod, what are your picks? ROD: Alright. I'm going to pick, go with the theme of the show, it's "The Stanford Videos". Even if someone who already knows iOS, I will watch them again and pick up new things, express on the new technologies that they'd cover. Because every year, they cover the latest version of iOS and even I will learn a few new techniques, so I enjoy those. And then the second pick, because I'm going to pick for fun, is this book I'm reading called "Kill Decision" by Daniel Suarez, which is about a tons drones and a mystery behind attacks that someone is using. I don't know if you've read Daniel Suarez, but he's also written Freedom and Daemon, and his books are really good. CHUCK: Sounds like fun! Alright well, I'm going to do some picks as well. My first pick is the "Big Nerd Ranch Guide" for the iOS programming. It's a good book; it walks you through stuff. I've also talked to few other people who are using some of the other frameworks like the MonoTouch and RubyMotion, and they've walked through that book, they just skip past the parts that aren't as applicable to the way that they are approaching the problems. But it still walks them through enough of the frameworks and libraries to where it helps them get where they need to go. The other pick I'm going to pick is, this is my all-time favorite TV show and I've been watching it again for the second time and that is, "Battlestar Galactica". It's the reboot version, not the 1978 version. ROD: It's the reboot version that's awesome. CHUCK: Yeah. It's incredible. And just as the third pick, because Pete's accent is so awesome, I also have to pick "Dr. Who". [Pete laughs] CHUCK: I watched the latest episode last night and I love it! BEN: You guys talk about Dr. Who so much on Ruby Rogues that I had to watch Episode 1. And my wife walked into the room halfway through the show, and she's like "What the heck are you watching?" [laughter] BEN: And she couldn't even take it for not even 5 minutes. So that one, I may have to watch on my own. [Pete laughs] CHUCK: It's on Netflix, of course, the current season isn't. But anyway -- PETE: Do we have the old ones on Netflix? Do they have like the old like 1990's or 1980's ones? CHUCK: So I have a friend that is like a Dr. Who expert, it's really really funny. But anyway, apparently they have some of the old episodes all the way back into the like the 60's. The rob is that BBC repurpose some of the tapes that had some of the original Dr. Who episodes on them -- ROD: Oh, yeah. I heard about that. CHUCK: And so they are lost. They have been able to recover some of them because people had them; they taped them off of TV or something, but they haven't been able to recover them all. So you can get some or most of them, but I don't think you can get them all. PETE: Some of them are on black and white because they lost the original colored versions, but when they broadcast them overseas, they were still in black and white and they have tapes of that. So some Dr. Who fans, I think, actually like figured out how to reamp the color to the black and white shows, which is just crazy. That's some serious fan right there. CHUCK: Yeah. BEN: They also had some dedication of nerds. CHUCK: Yup! PETE: Yeah. Right. [laughs] CHUCK: They do have several of the old versions on Netflix, I just haven't watched them all. So yeah, we'll wrap the show up. Thanks for listening! We'll be back next week, we'll be talking about Memory Management.

Sign up for the Newsletter

Join our newsletter and get updates in your inbox. We won’t spam you and we respect your privacy.