Coding 101 64 (Transcript)
Net casts you love from people you trust. This is Twit. Bandwidth for Coding 101 is provided by Cachefly.com
Father Robert Ballecer: This episode of Coding 101 is brought to you by Harry’s. For guys who want a great shaving experience for a fraction of what you’re paying now go to harrys.com. Get $5 off your 1st purchase by entering the code c101 when you check out. Today on Coding 101 it’s a wild card episode with Todd Perkins. Plus a super special guest announcement.
Hello and welcome to coding 101! It’s the Twit show where we let you into the wonderful world of the Code Warrior/Code Monkey. I’m Father Robert Ballecer and joining me today in studio is our very own Lou Maresca. Lou thank you very much for coming up.
Lou Maresca: Thanks for having me. I appreciate it.
Fr. Robert: Now we get to say something super special. We normally call you our super special guest co-host. We’ve been doing that for what, 2 months now?
Fr. Robert: But there have been a few movements here at Twit and we wanted to keep the magic going so we could make the announcement that Lou Maresca is becoming the official co-host of Coding 101. Congratulations.
Lou: Thank you. I’m super excited.
Fr. Robert: You do realize now that this means you have to do all the work?
Lou: I know.
Fr. Robert: Enjoy. We are incredibly happy to have Lou on board. It’s nice to have someone who’s actively engaged in programming to be part of the show. Lou has been with us since before episode 1. He was actually part of our beta episode. He was our first Code Warrior. You’ve come back…in fact you’ve probably been on at least 40% of the episodes of the show. You are no stranger to our audience.
Lou: Definitely not.
Fr. Robert: Well Lou let’s go ahead and jump right in as we normally do with a little bit of news. Now this first one I think you are uniquely suited to help us figure out what’s going on. In the new version of C Sharp – that’s C Sharp 6.0 they’ve added a new no propagation operator which is just a question mark. Tell me, why did they do that, what does it do and is it something you’re going to use?
Lou: So they actually have multiple names for it. 1 is called a no conditional operator, they have many different names. Basically if you’ve ever written a piece of software, especially around objects or classes you have to do a lot of no checking. 1 thing is if you don’t actually create an instance of an object and then you try to use some of the properties in that object it will fail and say no and you’ll get a no reference exception. So this little tiny question mark has the ability to do that automatically. So what it’ll do is it’ll do a no check and then it will actually turn no rather than exception if it’s actually no. So like for instance if I don’t create an instance of a person object and try to access their age or height it will fail and say no reference but what this little operator will do is it will say instead of throwing an exception it will return a no. This way I can do a no check and say ok it returned a no, I should probably create an instance of it before I access it.
Fr. Robert: Ok now Lou it sounds interesting and it’s a good idea. It’s definitely something that people are going to be doing all the time so that’s good but I will also hear people saying that this is just sprinkling sugar. This is one of those things that yes it comes in handy but if you get too used to having it in a particular language then you kind of forget how things actually work when you program in a different language. What’s your take, is this just sugar or is this something that will stay for the long haul?
Lou: It’s a nice thing to have because it doesn’t blow your code. So what you’ll notice is as you’re coding with big, big, pieces of software you do tons of no checks all over the place and some people forget to do it and then you have big problems. You’ll see a lot of if statements, if “if” is no then do this, if not no then do that. So this operator will reduce the code size, the code blow. But another thing is there are some problems with it too, you could forget that you are doing it which means that…also if you’re using it against value types; like for instance integers or doubles or any of these value types, if you use it it’s what they call boxing it into an object which creates more and more memory blow in your application in order to return what they call a knowable type. So this way you can return an int knowable version of that type. So the key to that is it’s bloating your software, it’s blowing the memory for your software. That also increases the lifetime of the object and there’s lots of other problems. Another thing is you can also have multiple inline properties, for instance let’s say I had a property called extremities on a person object and also 1 of the properties on an extremity is the legs or the arms and I wanted to access those so it’s an inline sub-property. Those sub-properties… you might have a bunch of question marks in line all the way down and then you don’t really know which ones of those are actually no so you’ll just return no and you’ll say ok which one was no? I don’t know so you get confused. There’s a lot of bad things that can happen but as long as you’re paying attention to what you’re doing you should be ok. Really the main thing is just to reduce the code size.
Fr. Robert: Before the question mark, before they actually gave us a dedicated operator for this how would you check for that statement?
Lou: You would just do an “if” statement and then you would do the object and then the dot and the property. So let’s say person, object, dot, height and then you say equal, equal, no? That’s the way you check to see if it’s no. If it is then you do something, let’s say you create an instance of it, new height object or if it’s not equal to no then I can go and access the height and do something with that height information. So that’s usually the main pattern to check to see if it isn’t no and then go and get the value from it.
Fr. Robert: It’s a little bit sugary but at the same time you should be doing this every single time you should be checking to see if a value is no before you work on it. So good, bad, what’s your take?
Lou: I think it’ll be a good pattern to follow if as I said you don’t over use it. Any time you over use something it gets confusing for the person actually reading the code. And somebody who’s debugging into the code that’s another thing. If you see multiple in lines of these question marks you don’t really understand which ones are returning no. So sometimes it gets confusing but if you have 1 level deep of an object and its properties then I’d say it’s ok to use it and go ahead and do it.
Fr. Robert: Or as Bleep-Blurp in the chat room says; what are your intentions with my variable Sir?
Lou: That’s right, that’s basically what we’re talking about.
Fr. Robert: Alright let’s go ahead and move on to something else. This came out of last week’s episode. We talked a little bit about Docker, specifically that Microsoft was taking a new approach to Docker. They’re wrapping it into their virtualization solution. So you can go between Hyper and Docker without really thinking about it. But we had a bunch of people write in, probably 2 dozen people either in email or in Twitter or in the G Plus group who actually wanted to know a little bit more about Docker. They hadn’t heard about Docker, they hadn’t used Docker and sometimes I forget that not everyone is keeping up on the latest and the greatest from the Data Center. So I thought maybe we could just have a little chit-chat about what Docker is and what it’s not because 1 of the things that people were propagating on the group was “oh it’s just virtualization. It’s just VM, we’ve done VMs. We both know it’s not. Docker is very much not a VM. They kind of function the same way in that you can package something but the difference between a Docker - a container, and a VM is that a VM contains a full operating system. You spin it up, it is a virtual machine. It’s just as if you had bare metal you were running an operating system on and then you run services on top of that. Whereas a container is super lightweight. It strips away all that OS stuff, all that abstraction. You can’t run it on bare metal, basically anything that’s running Linux should with the right hooks be able to support a container. So they do the same thing kind of but definitely not the same. Right, that’s my take.
Lou: Yes. What people forget is that Docker is more of a tool kit, it’s a way for you to create a distribution engine for your VM. For instance if you create an instance of Linux and you want to have other people contribute to that, Docker is the way to do that. It lets you kind of add to the operating system, add an application and then commit that change to Docker and then people who spin up the VM later will actually see the change, whatever you may have added or some other application that you wanted on there. That’s kind of the key, it’s a distribution engine more.
Fr. Robert: Esol in the chat room brings up a very good point and this is kernel talk but VM essentially what you’re doing is you’re splitting the hardware. You’re going down to the bare metal whereas with Docker you’re actually splitting the kernel. But it splits the kernel in a way that you can have completely self-sufficient, self-contained independent containers. They don’t have to have anything to do with each other unless you actually want them to, unless you want the services to communicate with one another. Some of the things that I’ve learned about Docker because it is fantastically efficient and it is fantastically effective and mobile; I can take a Docker container that I’ve written and run it on my Sinology Nas and I can also run it… We’ve got a list of some of the different services that it’ll work on. It will work on Amazon Web Services, it will work on Microsoft Azure, it will work on Google Cloud Platform, Open Stack Nova, and Open SVC – Salt Vagrant Chef and about a dozen others. So that ability to sort of write it once and basically push it private, public, Cloud, premise or whatever it’s going to be it’s a powerful very attractive way. But it’s also light weight. It’s very light weight, very portable and very highly distributable.
Lou: It’s funny because even the syntax around it, committing things to it is very similar if you’ve ever used Git before for your code repository where you’re committing and pulling things down and pushing things up, the Docker engine and its tool kit is very similar to that so you can push changes to a VM through Docker using that push and pull and pull the changes down and push the changes up. So it is kind of neat and that’s really where the power of Docker comes in as well.
Fr. Robert: The reason we bring this up is we will be doing a few projects and a few modules in the very near future where you can write your apps as a container which actually really eases how you deploy them. In fact we’re going to be bringing…I can’t talk about that. I just realized that. We may be bringing in a sponsor that specializes in you taking services and spinning them up.
Lou: I think that sounds good to me.
Fr. Robert: That’s all I can say.
Lou: I’ll go with that.
Fr. Robert: Now when we come back we’re going to speak with Todd Perkins. He’s a self-taught programmer. A master of iOS. We want to bring him back, we want to bring him in to the Coding 101 family because we know we’ve been a little remiss in iOS. We’re 60 plus episodes and we haven’t done anything for iOS.
Lou: Yes I love iOS, I want to get into it deep.
Fr. Robert: We’re going to go there for you but before we go there I thought it might be a good time to talk about the sponsor for this episode of Coding 101 and it’s Harry’s. Now Lou let me ask you; how do you shave? Do you have an electric razor, do you like the steel?
Lou: I’ve tried all types. My hair grows so fast that I’ve tried the electric, I’ve tried everything.
Fr. Robert: This is like 3 weeks of growth for me. Not so fast for me but fast for you.
Lou: Yes very.
Fr. Robert: But it’s funny because the very 1st shaver I ever got was electric and I thought it was great. But then when I started shaving, actually shaving I kind of liked that feel. It’s not just something you do. It’s kind of something you experience.
Fr. Robert: The problem is I’ve at least found is that the experience gets marred by what I have to do to shave. My love, my personal favorite is going to a super market and seeing all the blades locked away behind some gate because they’re made out of gold. Some kind of uranium or something. You get treated like a criminal. Well folks you don’t have to do that if you’ve got Harry’s. Now Zack is going to show you what a Harry’s kit looks like. It is a premium piece of kit. It allows you to have a smooth shaving experience again and again and again. Now let’s admit it, shaving can’t be fun unless of course you make it fun, unless of course you make it part of the experience and that’s what Harry’s is all about. They give you the tools, the lotions, the cream to make it not just something you do for personal hygiene but something that you do for personal health. I don’t want to spend hundreds on razors and bother going to the store so I use Harry’s to get all of my supplies delivered to my door. They give us high quality razors at about half the prize of those big brand blades. Now they make all their own razors in their own factory in Germany. They engineer them for sharpness and high performance. Harry’s ships them for free to your front door and because they make and ship their own blades Harry’s is a more efficient company which translates into factory direct pricing. Harry’s guarantees your satisfaction. In each kit you get a razor with a handle that looks and feels great, 3 razor blades and foaming shave gel. The starter kit, the Truman is an amazing deal and you get all of it for just $15. I’ve been using Harry’s for a while now. It gives me a clean, close and comfortable shave and I love the look and the feel of the set. I’ve got to tell you I also love the price. Harry’s costs half as much as the razors at the store like Gillette or Fusion and they also have a new after shave moisturizer that protects and hydrates my skin. Here’s what we want you to do. We want you to turn shaving into an experience. Go to Harrys.com and get $5 off your purchase with the code c101. That’s Harrys.com and enter the code c101 at checkout. That’s right, Harry’s for a close shave and we thank Harry’s for their support of Coding 101.
We now welcome to the show a man I’ve been wanting to talk to for a while. Mr Todd Perkins. Todd thank you very much for being on Coding 101.
Todd Perkins: Hello.
Fr. Robert: Todd, it’s interesting because if someone were to look at the work, the corpus of your work online they… I think they would notice 2 things. First is that you are very heavily invested into iOS. That’s your ballywood, that’s your expertise. The second is you are a self-proclaimed, self-taught programmer.
Fr. Robert: Tell me a little bit about that. Tell me why did you get into computers and computer science?
Todd: Well if you want the long story… I guess it’s not that long. When I was a kid in elementary school my dad was a programmer and he used to give me logic puzzle books and he taught me an appreciation for math. Fast forward to about 10 years I was in a punk rock band and I was into cartoons and I got a hold of Flash and my brother who was also in the band asked me to do our website with Flash and so I learned really basic kind of build in Flash programming with Flash 5 and then from there I got a job doing graphic design, mostly Photo Shop work. Then I got asked to teach Flash and in teaching Flash they asked me to teach Action Script and so I had to learn Action Script. Then I got a job with Lynda.com and that’s pretty much the whole story.
Fr. Robert: Now Todd I have to say this is definitely the first origin story for programming that we’ve ever heard that involved the words punk rock. That seems a little different. That’s definitely in your favor. That’s a unique set of qualities there. Let me ask you. You seem to be speaking from a different generation of programmers because you started with something that’s very visual. Flash is very UI oriented, you designed a UI, you make it beautiful where as my old programmers, old fart programmers typically started with you do functionality first and then the UI is something you staple on at the end. Tell me a little bit about that, tell me about growing up with Flash.
Todd: Well I was just always into cartoons and everything. I didn’t think of myself as a mathematical guy. I thought of myself as a creative guy. I always wanted to make cartoons and be like a comic artist and stuff so I got really into just creating stupid animations with Flash. I was also into video games and so it felt like Flash was just a natural progression from going to cartoony stuff and to making it interactive and everything. So that’s kind of what propelled me into programming; a desire to convert my animations into simple games and stuff.
Lou: So Todd since you’ve kind of learned yourself and you’re kind of self-taught how did you learn your craft? What language did you start with and over the years how did you learn different languages and so on.
Todd: I started with Action Script which is the language that’s used in Flash and this was maybe 15 years ago or so and from there I got a job teaching Flash and then the same people wanted me to teach Dream Weaver. It was kind of an Adobe product type of thing. So I would teach Dream Weaver and I had to be an expert in HTML and CSS and Java Script etc. That’s how I got into those web languages. When I started working for Lynda.com they had me do a lot of Flash stuff and kind of like I do iOS now I did Flash back then. This was about 6 years ago. I would do all Flash stuff and then they had me start breaking out into Java and then really into iOS mostly.
Fr. Robert: You’ve really made your living in the web languages. That’s your bread and butter, that’s where you were formed and that’s where your skill set really lies.
Todd: Yes that’s where my background really is. I spent the last 3-4 years mostly doing iOS but until then it was mostly web languages, pretty much all web languages.
Fr. Robert: I do have to ask because with such a background in Flash and Action Script iOS doesn’t seem so natural of a transition especially with what happened between iOS and Flash. What pushed you in that direction? Web languages could pretty much go anywhere but you have really – at least now, you’ve settled into the iOS groove. Why from Flash to iOS?
Todd: I think what you said what happened with Flash and iOS that’s kind of what pushed me into iOS. Since then Flash has kind of become less popular and so there’s been less of a demand for it and again I’ve always been interested in making games and in 2008 with the introduction of the App Store and everybody’s making games and talking about how easy it is to get into that in iOS I really wanted to learn how to do that. So a desire to make games combined with a need for my work in teaching iOS pushed me in that direction. So it seems weird but it was actually kind of natural and there was a time there where Adobe had just introduced creating iOS games using Flash and so that was kind of the gateway into making full-fledged iOS Apps.
Fr. Robert: Ok so we’ve got 2 people here who were actually programmers during the whole Flash… I’m not going to call it debacle but… where you had, it was a very strange time. This was not that long ago that browsers all supposed Flash, all the Multi Media stuff was out in Flash. People thought that’s what you need if you want rich content but you had a cadre of elite programmers, especially people who were doing iOS who were saying Flash is a hog. Flash is horrible, Flash will kill your grandmother. Todd let me start with you. Where were you? Here you are, you grew up with Flash and now you’re hearing if you want to continue in iOS you’ve got to stick this dagger into the heart of Flash.
Todd: It was weird. I actually was making a living off of Flash at the time pretty much exclusively so I would teach Flash in my video trainings, I’ve written a few books in Flash. I had just published a Flash Bible and then as Flash is kind of dying out I guess we could say we come up with this revelation where people are just realizing that Flash is a hog like you said. Since then it has kind of been dying out and so yes it was a weird transition but I think as a programmer you have to adapt or you don’t survive and I chose to adapt.
Fr. Robert: Lou let me ask you that. We now know that Flash was a hog and yes at the time, at the moment it happened I was like oh stupid Apple, come on, everything is Flash. Why wouldn’t I want Flash, give me at least the option to have Flash and then eventually even Android went in the same direction. Why did we put up with it so long or was it just there was no other option?
Lou: I think it was just the age of virtual machines. The Silverlight came out, Java had its virtual machine so a lot of Java programming would be before Flash. I think that was kind of the age they thought oh well if we can build a whole bunch of add-ons to the browser where the browsers fall short that’s kind of the key. So I think that was where that was at the time. Apple was kind of brave because Flash was so big they said you know what, we want raw native power and we’re not going to add onto the browser. We want raw native power. We want people to be able to build native apps for our platform so that’s what they did.
Fr. Robert: Both of you, you remember this. We’re going to go off the rails for just a second. We’re getting the geek nostalgia. When all of this was happening what I found fascinating was all these old wounds got opened up because people started talking about yes that’s right, that’s what you get Adobe for not doing such and such for the Mac way back when. It was hilarious because the drama was playing out as if this is Apple being malicious to someone that they felt wronged them decades ago; where the programmers I know were saying no, we got to do this. There’s not as much power on my mobile device as my lap top, I can’t afford to have 100% usage to play an add. Did you experience that Todd? When did you make the transition and say ok I’m going to ditch Flash because I do want to do iOS.
Todd: It was really after kind of around the time that Adobe started releasing the error stuff and they started to get into desktop publishing and making iOS stuff. It really just felt like – I just got the vibe that Flash was dying out and I would see it used less and less on the web and iOS was growing in popularity or at the time it was growing a lot. It was right around that time and it just seemed like Flash was just trying to do too much and it didn’t really have an identity.
Fr. Robert: You bet on the right horse. That feels good right?
Todd: Yes it does.
Fr. Robert: Because I know some people who stayed with Flash to the bitter end and even now they’re only starting to give up which is sad. Let me ask you about this. This is the discussion that we’ve had on this show every once in a while where we talk about programmer versus coders and it’s a very specific question that exists basically only in Coding 101. We’ve heard from a couple of people that anyone who will put in the work can become a coder. You can figure out syntax and you can figure out what goes where and you can copy examples and you know how to solve certain problems because you’ve seen them before and you know what kind of logic tree you need in order to solve the problem. But then there’s another type of person and that’s the programmer. The programmer actually comes up with innovative thought, can do things that the coder can’t do and has abilities that you can’t teach, they just kind of happen. They’ve got that passion for problem solving. Where would you stand on that?
Todd: On the existence of the idea or what kind of programmer am I?
Fr. Robert: No, this is the first day. We’re not going to go there but what I mean is do you think there is that separation? Do you see it? Because you’ve taught a lot. Do you see people who just, they pick it up and then they exceed you, they go past what you taught them and some people who can only do what they’ve been taught.
Todd: Yes, definitely. I think there is like you were saying the coder – kind of the robotic or mathematical kind of brain kind of thinking, just doing the work and the programmer requires a more creative brain. I think that can be taught I think if somebody wants to become that kind of developer then it’s definitely possible but I think it does require the passion and it requires caring about building something cool.
Fr. Robert: Describe something that you built that you thought was cool and tell me about the process that went into it. So like from the time that you came up with the idea to figuring out what actually needs to go into it, the resources that you have to gather and then final execution. What does it look like when you’re developing?
Todd: Well the 1st thing that came to mind when you were saying that is just a game that I built and 1 of the more recent ones I built. It’s called 8 bit baseball and I had a team and we decided to go with a pixel art style, kind of a retro feel and there is something exciting about writing code when you’re working on a team and you’re all building something together. With the games that we make I kind of get to be the leader of the team – the Leonardo of the Ninja Turtles if you will. Planning out how all the game play elements are going to work and writing the code and kind of guiding our artists along the way and everything. It’s awesome. It’s a really cool experience and it feels more like creating art than it does robotically creating a machine or something like that.
Lou: Todd when you teach what do you look for in your students? What impresses you, what’s something that could really change your mind about a student when they start working?
Todd: I like people who just come in with a desire to learn new stuff and who don’t have the chip on their shoulder of feeling like they already know everything and can’t learn anything new. I’ve ran into people all across the spectrum in teaching at different places and different people and everything and those people that are just humble enough to accept that they don’t know everything, those people are awesome to teach.
Fr. Robert: You must run into it because this is your industry. You must run into the old grizzled battle scarred command line programmers who did something way back when and now they’re trying to learn something that’s a bit more visual, a bit more oriented. What’s the most difficult thing, and this is an expansion on Lou’s question. What’s the most difficult thing to get them to understand?
Todd: I think it’s difficult to get people to understand that they just don’t know everything. I’ve had kind of arguments when I’ve been teaching which is super awkward because I’m teaching a public class and one of the students kind of wants to pick a verbal fight with me and disagree on something and say well that’s not how we do it in this language.
Fr. Robert: Ok I’m going to go off the rails here. Pick your favorite fight. I so want to hear this because I’ve had this happen to me before. What’s a fight that someone just dug their heels in on saying no you’re wrong, that’s not how you do it, this is the way you do it.
Todd: Really the guy wasn’t wrong, it was just he wouldn’t accept that I was doing it in an appropriate way I guess you could say. But this is the one that sticks out. I was showing how to add interactivity for a button in Flash and Action Script and I was saying this is the code that you write, you set the on release property to a function and he was like why don’t you just overwrite it in the sub class? I was like that’s pretty much what we’re doing right here. With Action Script in Flash you’re not always looking at the super class and he was really adamant that we needed to overwrite it in the sub class and just wouldn’t accept that that’s what I was doing. I just politely said ok we’re good, we’re going to move on but he seemed pretty bothered like I didn’t know what I was talking about.
Fr. Robert: You run into that, that’s a problem. I can imagine that happening around the table every day.
Lou: Sometimes it’s a religious thing though and people just do different things in different ways. Like for me I like to put in line comments versus comments above the line and people kind of blow up about that and say oh you’re adding more code to the line. There’s lots of little tiny things as small as that and even as big as like you’re saying – over riding functionality. You’re going to have those wars all the time, especially with the people who know what they’re doing.
Fr. Robert: By the way Todd I’d just like you to know that in the chat room you’ve sparked the mindless code monkey fight… so congratulation.
Fr. Robert: Well done Sir, well done.
Lou: Todd I actually noticed that you’ve… I did a little bit of recognizance on your background, your history and I notice you kind of gravitated more towards game development. Why do you think you’ve done that?
Todd: I’ve always liked games since the 80’s. You know the Mega Man 2’s and etcetera. I still play games today and am super passionate about gaming and I just want to be able to make, eventually something really cool that has an impact on a huge amount of people.
Lou: Do you think you grab more people when you build games of all ages or just a certain age set?
Todd: I think the best thing to do is just build something that you love and that you’d want to play. For me sometimes I want to play the really mature games and sometimes I want to play the Fart App games… you know the really immature goofy stuff. I think both can be very rewarding as long as you approach the right audience and don’t try to mix things that shouldn’t be mixed.
Fr. Robert: Todd I want to get your thoughts on this. I was at a developers conference probably about 4 months ago and I was listening to this female programmer speak and she was saying especially in the visual age where everything GUI first – everything has become a game. If you’re doing an app right, if you’re doing any program right there has to be game elements, in other words there has to be rewards for certain actions. They have to be able to notice that something good has happened. This was her long winded way to say that everyone needs at least a little bit of game development in them. You have to understand how to get people to continue to participate with the process that you set down before them. The example she gave was perfect. It was an Indy game – Super Meat Boy.
Lou: I love that game.
Fr. Robert: I love that game, it’s so much fun but she explained how there are no instructions what so ever. There’s no tutorial, there’s no manual that comes with the game. It’s just that in the first 5 minutes of picking up this game because you will naturally try to do certain things you will learn all the controls very quickly. She said that’s how I try to design my apps even when they’re not games. Is that something that you’re starting to see in people who are making apps?
Todd: Yes definitely. I think it’s a legitimate approach. I personally need that if I’m going to use an exercise app – some kind of mental reward, a mental cookie if you will for running or eating right or something like that. I love that idea and I think it’s… Maybe it’s not necessary but if you want your app to be successful and you want people to get addicted to it then you want to have those addictive qualities that games can have.
Fr. Robert: Right. Todd let me ask you this. We do want to invite you back to be a code warrior. We haven’t done anything for iOS. Of course we’re going to want you to come in actually show our audience how to start developing for iOS but before we get to that because that’ll take a while; what are some of the nuggets of knowledge that you can offer because obviously you’ve been in this game for a long time and you’ve made that transition into iOS, you’ve consciously decided that you want to develop for that platform. What are some of the things that you think people can avoid, like first mistakes that they can avoid and then some things that they should do as they prepare themselves to actually program for iOS. In other words what kind of knowledge can you give to our audience?
Todd: As far as mistakes that you can avoid, that’s a hard one. Coming into iOS for me I tried to think of it kind of like Java or Action Script and it’s really not like that. What I would do honestly right now is – you’ve heard Apple talk about Swift if you watched WWDC last year. I would hold off on Swift. If you’re going to get into iOS I would start with objective C and the reason for that is not majorly but Apple changes Swift every couple of months and it’s to the point where when I record a course I have to go back and change almost the entire thing because of code that Apple has added. 1 of those things is kind of like the question marks that you guys were talking about earlier with checking for no and everything. They had that in Swift but they change it every couple of months how they’re going to implement it. So I would say Swift feels like a beta language right now. So if you’re going to learn iOS start with objective C definitely. Maybe Swift will be in a few months after the next WWDC, maybe it’ll be ready for prime time. For right now I’d stick with objective C. That’s the first thing. That’s really mostly what I have for specific iOS but if you want general programming tips I can give those as well. So if you’d like to hear those.
Fr. Robert: Yes please.
Todd: I think of a story, there was a guy that emailed me a year ago and I don’t get these all the time. I get these like once every 5 years or something but this guy wrote me an email and he told me that I changed his life. He was like your tutorials have been so awesome and helped me out and he ended up not knowing programming at all and he went to getting a job as a programmer and becoming a senior developer just over the course of a year or 2. So I think if you’re new getting into programming understand that it’s not too late for a career change because this guy did it and for me personally I went from knowing no programming what so ever to writing a book on programming in just a couple of years. So I give that advice, definitely learn how to use Google. If you have a problem somebody else has had that problem before so look it up. I imagine you guys have probably talked about this a lot in this pod cast but that’s a big one for me is using Google and just don’t stop learning because you never know when your language can become irrelevant and if I wouldn’t have continued to pursue other languages then I would be out with the dinosaurs with Flash.
Lou: Super good advice. So we talked a little bit about iOS and how you said Swift is kind of a beta language. Do you find that even switching between the different versions can sometimes require you to transition? Does your knowledge transition or do you have to learn a lot of new things even when developing for iOS?
Todd: In the versions of iOS it stays pretty much the same. Obviously there’s going to be new APIs and that kind of stuff but usually the bread and butter is not much different. Occasionally a method call will have a new name or it’ll create an object in a slightly different way but usually that’s insignificant and pretty easily handled.
Fr. Robert: Todd I do want to take a little time to talk about Lynda because Lynda is where you now live, that’s where your work goes, that’s where your lessons can be found and “full disclaimer”, hopefully everyone who watches this show knows Lynda is sometimes an advertiser on Coding 101. They are not this episode. We just wanted Todd on and he happens to work for Lynda. Could you tell us a little bit about the philosophy that goes into taking your lessons and turning them into something online? Because I’ve taught in person and it can be daunting to try to turn that into an online lesson where you think everyone is going to be able to follow along with what you’re saying without actual interactivity.
Todd: Yes, I think it’s a little bit – might be like for you like doing a podcast, you just imagine that there’s people there listening to you when they aren’t. That’s what I do too. So yes it’s definitely different. If I’m teaching a class I can make jokes, I can use my body language and pretend to be a robot or something like that which I know sounds ridiculous right now but in context it totally works and it’s a useful teaching tool. You don’t get that same feedback and in a class when somebody has a question you can pivot and focus on that. Maybe you’ve missed needs for the whole class and you forgot to and you can adjust when somebody asks a question in class. Whereas when I’m talking to my computer all alone I have to anticipate what questions people might have and answer them without them ever being asked. It’s definitely more difficult but it’s also fun too. It’s a challenge.
Fr. Robert: Absolutely. Todd Perkins, he is a self-taught programmer, a guru of iOS. We do want to thank you for being on this episode of Coding 101. We are going to have you back. If you agree we definitely want to have you back to be the code warrior in an actual programming module on the show. Would you be interested in an invite.
Todd: Definitely yes.
Fr. Robert: I think our audience has been clamoring for a while. Now the funny part is, the message that we’ve been getting is that they want us to teach Swift and Lou and yourself have both told me not yet. So this is good.
Todd: You can learn Swift but just know that it is going to change.
Lou: It is a great language too. It’s actually really well…
Todd: Yes I love it, I love Swift. It’s just not going to be the same in a few months from now.
Fr. Robert: Let the other guy program in Swift and you come in in a year when everything is settled and fully baked and you’ll be much happier. But we’ll bring you in for Objective C because our folks do want to start programming for iOS. Even if you’re not an iOS user it’s a good skill to have and let’s be honest it’s where the money is. Ok I’m being perfectly honest right now right?
Fr. Robert: I mean Lou should I be programming for Windows?
Lou: No. There’s a lot of things free on Windows though.
Fr. Robert: That’s true. I’m sorry Todd, could you please tell us where people can find you. Of course they’re going to find out on Lynda. So I could give my standard pitch, they’ll find your courses step by step, they’ll be able to find transcripts, they’ll find your videos. If they’re interested they should at least go check them out but where else can they find Todd Perkins?
Todd: You can find me AskTodd on Twitter.
Fr. Robert: There we go. Todd Perkins, he will be our future code warrior. For now he is our code guru and Sir, we salute you. Folks we know that this was a lot. This was a wild card episode. Remember we’re sort of cleansing the pot. We did a little bit of programming and then we bring in people that we’re interested in. We’re going to try and do this often. We want to show you people who actually have experience in the field that you’re trying to get into. That’s pretty much what Coding 101 is all about. But we do have a super special module coming up for you. We will be talking about Ruby and Ruby on Rails so if you do want to start getting into web programming, visual side of programming as Todd started off with you’re going to want to stick around. Now again in case you weren’t here for the start of the show we did have that super special guest co-host announcement that Lou will no longer be the super special guest co-host. He is the official co-host of Coding 101 and seriously Lou it’s about freaking time. You’ve been on this show so often.
Lou: I don’t want to get rid of my title though. I really like that super special guest co-host…
Fr. Robert: It won’t fit in your lower 3rd; actually that’s the real reason why we asked Lou to come on because we can’t put it…it’s expensive to have all that spaced used up in the tri-caster. But where can people find you?
Lou: You can always find me on Twitter. LouMM as well as all my daily work at Microsoft www.crm.dynamics.com
Fr. Robert: Don’t forget that you can find all of our back episodes on our show page. Just go to twit.tv/coding101 or /code, it all goes to the same place. You’ll find previous episodes, previous modules if you want to catch up on C or C sharp or PHP or maybe you want to look at the episodes that we did for Python. You can find it all there, just download it. We make it easy for you to get; along with links for code. Now we’ve been having a lot of issues the last couple of weeks. I’m not sure why the code is not going up. It’s probably because I programed that part of the site and I think I broke it. I’m going to fix it. While Lou’s here I’m going to fix it so you can make sure that you can get all the code so you can follow along with the assets. Also don’t forget that you can follow me on Twitter. Go to twitter.com/padresj. That’s @padresj. If you go there you’ll find out what we’re going to be doing before each episode of Coding 101 as well as being able to suggest guests and topics for future episodes of Coding 101. Don’t forget that we do the show live every Monday at 2:30 PM Pacific time. You can go to live.twit.tv and find out what we do pre-show, post-show, what happens during the show, what gets cut out of the final version and as long as you’re watching live please jump into the Twit TV chatroom at irc.twit.tv. We like to read your comments, we like to hear your questions, we like to relay them across to our guests and we can’t do that unless you join us. Until the next time I’m Father Robert Ballecer.
Lou: I’m Lou Maresca.
Fr. Robert: And our TD is Zach – Eskimo Zach and this has been Coding 101. End of line!