It has been a while my first iOS course for Pluralsight. Several things have changed with iOS development using Objective-C. Perhaps, the biggest change is the use of storyboards instead of manually transitioning between views in iOS.
So, I created this new course, Beginning iOS 7 Development, to provide a fresh tutorial on getting started with iOS 7 development using Objective-C.
So, check it out if you are interested in iOS 7 development.
And here is the official course description:
Starting to learn iOS application development can be intimidating if you don’t have much experience with a Mac and haven’t used Objective-C. But, it doesn’t have to be a painful experience.
In this course, I’ll show you the basics of creating an iOS application as we build a complete iOS application learning what we need to know about Objective-C along the way.
We’ll start out by learning a little bit about iOS in general and the iOS development environment.
Then, we’ll jump right in and create out first Hello World iOS application as we set up our development environment and learn the basics of the IDE we use for iOS development, Xcode.
After that, I’ll show you the core things you need to know to build any application, how to build a user interface and interact with it. We’ll learn how to use Xcode’s Interface Builder tool to create a very basic IU and interact with it.
Once we’ve got the basics covered, we’ll start building our first real application. We’ll learn a few new concepts as we build our application, like how to use the iOS storyboarding feature to creating a multi-screen application and how to setup navigation in our application.
Finally, we’ll finish up our iOS application by learning how to add user settings to the app and how to show the user a simple notification through the use of alerts.
So, if you are looking to get started with iOS development and are looking for an easy and gentle way to get introduced to the environment and tools while building a real application, this course is exactly what you need. You won’t be an expert at iOS development after taking this course, but this course will definitely give you a head start in learning the platform and show you the basics you need to know before taking a more advanced course.
Quick side note: if you are stopping here reading this post, you are probably the kind of developer that cares about your career. I’m putting together a complete package full of information on how to really boost you software development career and increase your earning potential. It is only available for preorder right now. I’m only going to be selling it at this heavily discounted price for a short time. I’ll also have some exclusive interview with famous software developers like Bob Martin, Jon Skeet, and Jeff Atwood sharing their secrets to their success.
This week I am doing something a bit different. I asked the winner of the XNA contest that I held to promote my Pluralsight course on game programming with XNA to write up a guest post about his experience making the game.
So congratulations again and thanks you Joshua.
Here is Joshua’s post:
After winning the XNA contest John asked me to write a guest post about my experiences with the course and developing the game. So here it goes.
My name is Joshua Burchat and I’m from Oakville Ontario. I work as a developer designing and supporting business applications to support reporting within warehouse operations. My language of choice is C# but I enjoy trying other languages and technologies.
What appears to be a daunting task
When I saw John’s post I was instantly excited about the course. The only experience I have making games was doing a small Cocoa2d chess game app. I had yet to do anything with animations and moving sprites. Writing code for a game seemed like a daunting task. I decided that I needed a new project to work on, and this would be a challenging and worthwhile task.
After starting the course, building a game seemed so much more simplistic from a coding perspective than I originally thought. John has a great layout to the course. Upon completion, you end up with a fully functioning basic space shooter game.
Doing something a little different
When doing any sort of tutorial I tend to want to write a different application than the example being presented. I do this to enjoy writing the application because it’s one of my choosing, and to run into different scenarios which need to be solved. I use a similar practice when learning a new language; except I usually pick a program I have already written and port it.
Wanting to do something different, I decided to go with a side scrolling platformer. The plan was to make it like Mario but with punches, a health bar and an energy bar. The course got me started with how to display graphics and create boundaries for game entities in a very simple and reusable way. The course also teaches you how to implement sounds and game states (pause, next level etc.). There were quite a few things that you need to tweak to make a more advanced game. However the structure you are given from the course is very extensible.
One of the things that I needed to add to the game that was not in the course is the concept of gravity. The player, as well as some of the enemies needed to be able to jump and fall. Entities needed to be able to transition to different animations as well as be prevented from doing certain actions while the animation has yet to finish. I ended up using a similar method that John used for the game states; I made sprite states. When a sprite had a specific state it would determine what the sprite is currently doing and what it could do next.
The current state would have an update method that the sprite would call from its update method in the game loop. The state was responsible for setting the animation for the sprite and whether or not the state should change. For example, when the up arrow was pressed the standing and walking action would lead to the jumping action for the player sprite. Enemy sprites had actions that they used to make them attack and move around.
Here is an example of the player sprites states:
Once implementing the ability for sprites to change state, I needed to make use of them. I had five types of sprites in the game:
Player: Controlled by user input. The player sprite has an energy level that is used to preform jumps and punches. The energy recharges over time. This sprite also has health, the player has to restart the level when the health hits zero or if it falls off a ledge.
Enemy: Controlled by its surrounding. If they hit the edge of a platform, turn around. If it hits the player, change the player state to ‘stunned’ and takes some of the players health away.
Terrain: Represents the bounds for that prevent the player and enemies to go past.
Background: Elements that do not have any effect on the other sprite types, and are simply for visual effects. Some background effects move, such as clouds or snow.
Item: Created from an enemy sprite when it is killed. Adjusts the players stats such as health or energy.
Here is a video of the game play:
After completing the course you will definitely be able to make a basic game and in time and with a good amount of effort you should be able to make an excellent game. There are a few things besides coding that go along with game design that I find to be the hardest aspect of the craft. These are things that I will need to improve in my game.
Physics/Feel: The way entities interact, timing, controls. The physics of the game help to allow the user to feel the game. If the characters move too slow or don’t jump in a logical way then the user feels it and the game becomes unappealing.
Story: Games should have a story, it can be simple or complicated but it needs to exist. While making this game I did not really start off with a story, I just wanted to learn the programming aspect. Now that I have learned enough to make a more robust game, the next one will definitely have a story.
Graphics: I have no skill at creating graphics myself; I needed a bit of help from my girlfriend to make some decent sprites. Graphics are hard; the game needs to have a good style that helps keep the user’s attention and make the experience more enjoyable. When I say good graphics I don’t necessarily mean high end rendered images, I simply mean they need to be appealing and click with your game. A good example of this is Minecraft, it looks silly but it is very fun to play and has a large following. It is also important to keep in mind what John states in the course, don’t worry about the graphics when learning to make a game. At the beginning of this game’s development I used boxes for sprites, it looked silly but it got me through the tunnel.
Since working on this project, I have recommended this course to a few of my fellow developers at work. Not because they enjoy video games but because I believe making a game helps strengthen your OO skills. I was surprised at how bad I was at doing something that consists purely of writing objects; it really put my skills to the test.
I ended up rewriting some the application a few times before I had my base designed in a manageable way. I am a strong believer in writing a program more than once, learning from the mistakes of the first pass through and coming out with something more refined. I would recommend this course; it is definitely worth your two hundred free minutes of PluralSight if you have not signed up yet.
Where to next
Now that I have made a platformer game I would like to try something different. I am going to try to make an adventure RPG, attempting a classic Zelda feel perhaps. Another thing I am going to attempt is to port the game over to ISO and Andriod either manually or using mono.
Making games is something that I could see taking whole bunch of effort and failures to get right. I want to try various types of games so that one day I can make one that I consider distributable to the public. I am not releasing this game on any application market, it is still a half cooked and there are quite a few improvements I would need to make.
I am glad that I had entered this contest, and I believe that it was a building block for a great hobby and maybe one day a career. Thanks John for this fun project, many a nights were spent with key clatters. I hope everyone else had a great time making their games as well.
Around the end of Sept when I released my XNA course with Pluralsight I announced a contest for a chance to win an iPad, Kindle Fire HD or a Nexus 7.
Thanks for everyone that entered the contest!
It was difficult to pick the winners, but without further ado, here they are!
Hermies Adventure by Joshua Burchat
I really liked the depth that was put into this game.
In my course, I had covered creating a shooter game, but Joshua went beyond that and figured out how to create a platform game.
The game features scrolling clouds in the background, falling snow and lots of different enemies that behave in different ways.
The game even included potions that randomly dropped when killing enemies.
Congratulations Joshua, great job on this game!
Genesis by Patrick Kalkman
This game was also very well done. It was a very tough choice between this one and Hermies Adventure.
Patrick did an excellent job of really creating a nice shooting game with smooth animations, power ups and even bosses.
He also included a level editor.
I really liked how Patrick created the enemy movements. It really felt like a classing arcade game.
Bee-pops by Ilias Shaikh
Another excellent game. I really liked how Ilias utilized realistic physics to make the balls bounce around the screen. The little transparency effects on the balls made a neat game experience as well.
It is a pretty simple concept, but it was done very well.
Thanks everyone who entered the contest
Was really great to see all the games that were created.
Sophia got her first introduction to the iPad at about 3 months old.
As soon as she could sit in a rocker chair my wife and I let her start playing on the iPad.
We started off with just one game, Interactive Alphabet by Piikea. It is basically a game that goes through the Alphabet and lets the baby interact with some of the pictures.
We added a few more ABC type of games as she got a bit older, but we mainly just let her play with that one game, because we figured it would be great to let her start seeing letters and learning the alphabet as early as possible.
Right from the get-go she would swat at the screen. She didn’t immediately understand the cause and effect, but she quickly grasped the idea that when she hit the screen, something would happen.
After a while she became pretty good at being able to do the simple things in the ABC game. She would still swat the screen, but purposefully swat certain areas in order to do something like build a sandcastle.
Around 12 months, we started adding a bunch more apps. We added some interactive books and a couple of simple games.
Sophia was learning how to do many more things in the apps. She could point with a couple of fingers and very purposefully touch certain areas of the screen.
She really didn’t have any concept of touching and dragging though, and would often run into problems of having one hand leaning on the iPad which was causing the other hand’s touches not to register.
She’s now 18 months and she is an iPad master.
Sophia can now:
- Turn on the iPad
- Unlock the iPad
- Pick which app she wants to play out of her folders
- Use the home button to exit an app
- Double press the home button to switch to a recent app
- Navigate through menus in apps and get back to the app
- Use the table of contents in books to pick the page she wants
She also asks for the iPad by name. She has about 40 apps on the iPad that she subsumed from my wife. It seems like she is learning something new every day now.
The world is changing
Our children, especially the youngest ones, are growing up in an entirely different world than has existed ever before.
I know this has been said many times before and it could be argued that my generation also grew up in an entirely different world than my parents, but I think the change we are seeing now is much more substantial.
I predict that this generation will be known as the tablet generation. With Windows 8 now released we are going to see a rapid decline of non-touch devices. In a few years all laptops will be touch screen retina displays.
There are some fundamental changes going on in how we interact with computers and even what defines a computer.
Yes, I know you’ve heard all this before, but why is this important?
It is important because the real shift I see is the shift between a primarily analog focused world view to a primarily digital focused world view.
For me the iPad or the computer is an attempt to replicate some process or experience in the real world. No matter how long I work with computers or use these devices, I cannot escape my world view. Analog always comes first.
For our children things are different.
I can’t say for sure that picking up a pencil and being able to write is a skill that will even be necessary.
It is very likely that this coming generation will view things through the digital lens first and the analog world will be secondary.
I don’t mean they’ll be jacked into computer all day and live in a virtual world, but I do think that while we try to relate software to tangible things the coming generation is likely to view software as the primary and tangible objects as secondary.
Think about music. Ever had an 8Track? How about a cassette tape? CD anyone?
How do we think of music today? One word comes to mind—MP3.
What started out as a physical record eventually lost its purpose and is now so heavily digital that we tend to think in terms of the digital and don’t even consider the tangible anymore.
The same thing is currently happening with books, movies and to some degree money.
Why we let Sophia be an iKid
With the changing world, computer literacy is more important than ever before.
Even in the world we live in now, it is just about impossible to get any kind of non-labor intensive job without being able to use a computer.
If computer literacy is arguably going to be the most important skill for anyone to have in the future, why not start as young as they start to show an interest?
I think it is a huge asset to develop in our children the ability to use a computer as easily and mindlessly as the ability to eat with a fork and a spoon.
I wish I had that ability. I could be so much more efficient if I would stop writing down lists on pieces of paper and instead pull up my iPad or other tablet to jot down ideas and completely replace paper in my life.
And sure I could learn to wean myself off of the analog world, but I want my daughter to be able to think first in the digital world. She’ll be way more efficient and see things from a better perspective than I ever will.
Aside from that, my wife and I find that the iPad is an excellent learning tool to help Sophia learn to learn.
There are so many things she is able to teach herself using that iPad.
- Has a vocabulary of over 100 words
- Can count to 4 in order and count actual objects
- Can say most of her ABCs
- Can recognize most letters
- Can name many animals and objects
Much of what she knows she learned at her own pace based on what she was interested in playing on the iPad.
For example, one week she’ll be playing many of the numbers apps. For a whole month she just wanted to do alphabets.
The iPad gives her the freedom to be able to choose what she wants to learn and to do it effortlessly. She is developing the skills to be able to self-educate. Sure, we still read books to her and try to teach her, but she seems to get a large amount of her knowledge from what she learns playing on the iPad. (At least the reinforcement of what she has learned.)
Overall I don’t think there is any reason to stop her from playing on the iPad. I know some people equate it to TV, but I think it is fundamentally different. The apps she plays on the iPad are interactive. You can’t mindlessly sit and watch the iPad. Instead, there is a constant feedback loop that is not present with TV.
Also we can carefully monitor the apps she uses. The TV is an open system that brings unknown content into your house, where the iPad can be used as more of a closed system.
To summarize, I think we are preparing her for the future and giving her a huge head start in life.
How to get started
So you may be wondering how to best go about getting your baby or toddler started with the iPad.
While I’m not a child development expert, I can give you some advice from what my wife and I have learned in this process.
You can of course get a newer iPad or even another tablet, or the iPad mini, but just be aware of two things.
- Babies don’t have very precise coordination with their hands so small screen are going to be hard for them to use.
- Babies tend to throw things, especially when they get frustrated.
The next thing you need is apps. My wife, Heather, wrote up this section for me. So, if you notice the grammar is perfect and is written with a much higher skill level than my usual writing, that is why.
(Please let me know if you have some other ones appropriate for the ages. I’d like to make a nice resource for other iKid believers.)
3 Months – 12 Months
- Interactive Alphabet by Piikea. This is by far the best app I’ve seen for the youngest of kids. It has a baby mode which prevents babies from exiting by accidentally batting a menu button and most of the items respond to simple taps or swipes.
- Juno’s Musical ABCs by Juno Baby. This app also goes through the alphabet but with a musical theme. The interactions aren’t as neat as the Piikea app and the button to return to the menu is prominent and easily pressed.
- Peekaboo Baby. This is my app. Warning, it is very simple. I was learning MonoTouch and wrote it in a day as an experiment.
12 Months to 18 Months
- Seuss ABC, Green Eggs These stories have autoplay, read to me, or self-reading features and will say the word of anything the child touches on the screen. There is actually an entire line of the Dr. Seuss books, but I prefer these two. The ABC app is great because each letter is said multiple times. The Green Eggs app is my daughter’s favorite, and I suspect this is because so many of the words in this story (eggs, boat, house, mouse, car, train, etc.) are ones most 18 month olds know. These books are a little long so if you’re more interested in the stories, go with the Bright and Early Board Books instead of these apps. The Mercer Mayer, Little Critter books are also available and tend to be shorter in length.
- I Hear Ewe This neat little app has three screens of picture tiles: two of animals, one of vehicles. When touched it says: "this is the sound a [insert animal or vehicle here] makes:" I like this because it doesn’t require page navigation. A child can sit and do this for a short period and when they get bored, you can switch the screen for them. Sophia plays this occasionally at 18 months but it doesn’t hold her interest as much, so I suggest trying it at a little younger age.
- Pat the Bunny by Random House. There is both a paint and interactive option with this app. The paint seems to always crash, most likely due to the mad tapping of a toddler, so I avoid it. The read option has a bunch of items on the screen that kids can interact with (turn off a light, put shave gel on daddy’s face, wave bye bye, play peek a boo, etc.) I’ve never seen the real book, but I wouldn’t be surprised if this app is better than the book. Changing screens is manual and may require adult help. There is an obnoxious Easter egg on every page that brings up the bunny.
- Princess Baby by Random House. I was actually disappointed there wasn’t more to this app, but Sophia has played it enough that it makes the list. It begins by having you “Choose your favorite princess.” Each princess has 3 toys that can be interacted with in a very limited way: wand, drum, ball, flower, blocks, cat. The princess can be put to bed, which Sophia likes doing over and over and over again.
18 Months +
- A Monster at the end of this book. Starring your lovable, furry pal Grover from Sesame Street, this app has a very cute storyline. In order to advance through the book certain tasks, such as touching knots to untie the page or knocking down bricks must be performed. This is another one where the app may be better than the book itself. One bonus: the pages are locked when Grover is talking, which keeps an eager toddler from advancing through too quickly. My daughter loved this book earlier on but I had to help her with some of the action pages and it was just recently that she started doing it all on her own.
- Another Monster at the end of this book. Starring Grover and Elmo, some of the tasks are a little trickier than the first book (matching colors, wiping away glue), but did I mention it has Elmo?
- Little Fox by GoodBeans. This is one of my favorite apps. It has 3 different songs to choose from and each has its own scene: London Bridge is Falling Down, Old MacDonald, and The Evening Song. Each scene is cleverly interactive and entertaining. Old Mac Donald has 4 seasons to select from and the interactions change based on the season. There is also a little "fox studio" with a ton of interactive objects used to make music.
- Nighty Night by GoodBeans. Adorable. The animals at the farm house need to go to sleep. This is done by clicking on the area each animal resides in and turning off the light. The animals respond to touch. Additional animals can be purchased (2 sets of 3 animals each).
- Itsy Bitsy Spider by Duck Duck Moose. Another fantastic app, this may be the one Sophia has clocked the most time with. In order to progress through this app, you must click on the spider. Each time the spider is touched one line of the song is sung and the spider moves. There is a lot to interact with at each spot and one the second time through the song there are decorated eggs the child can collect on the spider’s back. There is a cute little narrator fly that teaches the child about items the child clicks on (i.e clouds, the sun, rainbows).
- Ewe Can Count. This is a cute counting game where you count a random number of sheep, horses, apples, etc. There is a learning and a quiz mode.
- Logic Lite. This app is great because it teaches the complicated click and drag gesture. The full version has three additional tile sets: Numbers – match dots to the written number, Pictures – match a picture that contains a shape to the shape it contains, and Letters. The letters are great at 18 months, but the other two are too complex.
Your mileage may vary
Having your little one use an iPad might not work out as well as it has for us, so I think it is only fair to disclose some of the circumstances which govern our life that may help to make our experience successful.
- My wife is a stay at home mom. She used to be a techie, but left the digital world to raise our daughter. I only bring this up, because she interacts with Sophia all day. If we were putting Sophia in day care, I would be more hesitant to give her the iPad during our interactive time with her. (But I would probably try to get the day care to let her use it.)
- We have almost 0 TV in our house. I don’t watch any TV at all or movies. My wife very rarely watches TV and Sophia never does. I think this is important, because if she were watching TV, I would also be a bit more hesitant to let her play with the iPad as much.
- We do LOTS of other activities. Just about every day of the week she has either swimming, gym class, play date, or something else going on. My point here is that she gets plenty of outside time, social interaction and physical activity.
- Sophia took the to the iPad right away. We didn’t have to force it on her or even encourage her to use it. I don’t know if other kids are like this or not, although I suspect most would be.
So doing the same thing my wife and I are doing might not be the best for you family—you’ll have to decide for yourself—but as far as our daughter has been concerned the experience has been overall positive and beneficial.
I’m not exactly an Apple enthusiast.
I don’t own a Mac for the sole purpose of running Windows in a virtual machine so that I can actually do my work.
In fact, I bought a Droid.
But I bought an iPad on Saturday anyway! Why?
Well, like any good software developer, I don’t like duplication. I don’t like two devices of similar size taking up space and having to be charged.
Sometime last week, I realized that my Kindle DX and my netbook, could both be replaced by an iPad. (At least I realized my Kindle DX could be, and once I actually used the iPad, realized the netbook also can be.)
I bought the device expecting it to be basically a replacement for my Kindle DX with color. I thought that for almost the same price, I might as well get a device that is color, since I am really using the Kindle DX for mainly reading PDFs.
Even with just that functionality, it is a very good bargain. Both the iBooks application and Kindle’s own iPad application provide a better user experience than the Kindle or any other eReader that I know of. There is just something about being able to turn pages, and have color images in your books, that makes it feel so much more like a real book. You don’t really realize how much better the eReader experience can be until you try an iPad.
In addition, I have been pretty impressed with other aspects of the iPad that I had scoffed at before the release. Perhaps the most impressive thing about an iPad is the screen. It really does feel “magical.” It is hard to explain, but the viewing angle, combined with the crisp colors and very responsive refresh are like nothing I have ever seen before.
Browsing the web and typing are much easier than I would have expected. I can actually hold the iPad landscape and thumb type. (Which might not be possible for some.)
I spent a good amount of time this weekend staring at my netbook, trying to figure out why I would not put it on Ebay.
I didn’t come up with a good answer. There were some things that I might want to do on a laptop, that I couldn’t do on an iPad, but for pretty much everything I would want to do on a netbook, I could do it easier on an iPad.
One of the really important features of the iPad that makes it smack down netbooks is that it turns on instantly. Having to boot up the netbook is enough of a deterrent to make it sit over in the corner unused, unless it is worth waiting 20 seconds to boot. (Which most uses of it are not.) The iPad is also another device that you don’t really have to manage configuration on. If you are like me and have a home PC and a laptop, you probably aren’t thrilled with managing configuration on a netbook on top of all that. The iPad just works.
After seeing how good Plant’s vs. Zombies runs on the iPad, and how nice it looks, it may turn out to be a good gaming platform also. Time will tell.
All in all, I haven’t had the iPad for more than 2 days so far, but I am liking it. I intend to give a more in depth comparison between Android OS and iPhone OS, now that I have a device running each. I highly recommend at least going out and demo-ing one, because it is kind of difficult to understand why the device is so neat until you’ve actually played with it yourself.