There Isn't An App For That... So I'll Make One
Thursday, March 23, 2017
Tuesday, March 21, 2017
Not even sure you can call this an interview...
Ok so here's what went down:
Around the second week, I emailed 3 different iOS App Development teachers. The only one who responded (so far) is Chris Ching, who runs 'Code With Chris', an online service that offers lots of tutorial videos for learning XCode, where you pay upwards of $100 to have access to all of his resources.
When he emailed me back, he said specifically that he didn't want to do a video interview because he didn't want to give away any account names or emails (I emailed him through a link on his website that didn't actually show his email and he responded with an email that apparently I could not reply to), so he told me that I could send another message with the questions that I wanted to ask, and he'd be happy to answer them for me.
So I came up with a few questions that I wanted to ask:
1. After learning the basics of XCode and Swift, what are the next things that I should learn to be able to make a good app?
2. What is the best way to learn each individual new development skill?
3. What challenges did you have when you were learning to develop apps, and how did you get past them?
He responded about 3 days later, and I couldn't have loved his response any more...
His email back to me was hilarious. It kind of answered my questions, but it seemed like he was really just trying to sell me his service. Also, at points he just totally switch topics without any transitioning, so I got a little suspicious. I went back on his website to contact him again, clicked on the courses page (because I forgot that the contact button was just on the bottom of every page), and saw the best thing I've seen on this whole entire month-long journey. The descriptions of his services were exactly the same as the answers to my questions! I literally laughed out loud at how much he just didn't care at all.
Nevertheless, here's what he sent me: (I sorted it into the different responses (if you can call them responses) to each of my questions)
1.
The entire course is split into 5 modules and you’ll be building a different app in each one:
MODULE 1: ORIENTATION
Get familiar with the tools and build your first Hello World app
In Module 1, you’ll get your introduction to app building on the iOS platform and also get your feet wet by completing your first simple iPhone app! You’ll get a tour of the development environment and learn about the components that make up an app.
MODULE 2: WAR CARD GAME
Build a War card game app!
In Module 2, you’ll build a War card game where you’ll learn about Xcode, the view, adding buttons and images to the view, hooking up the user interface to handle interaction, the basics of object oriented programming and some basic Swift code.
MODULE 3: CARD MATCH APP
Build a card matching game!
In Module 3, you’ll build a Card Match application where you’ll reinforce the knowledge gained from Module 1 as well as learn new concepts such as doing more complicated layouts, using scrollable views, adding animations, adding sounds and using timers. You’ll also learn how to pop up message boxes to alert the user, add an app icon, add a launch screen and more Swift coding concepts so that you can express more complicated logic.
MODULE 4: QUIZ APP
Build a quiz app!
In Module 4, you’ll build a Quiz app that gets the questions from reading a data file on the device. Then we’re going to take it a step further and make the app read the data file across the internet by placing the data file on our own server. In the process of building the quiz app, you’ll learn how to support landscape orientation in addition to portrait, you’ll do more animations, you’ll be presenting modal views to the user, using scrollable views, creating custom views and saving scores and other data to the device.
MODULE 5: NEWSREADER RSS APP
Build an RSS news reader app!
In Module 5, you’ll build an RSS app where you’ll learn how to create an app with multiple screens and how to navigate between them. You’ll be working with feed parsing classes to download and parse an RSS feed across the internet. Then you’ll display those stories in the feed to the user in a scrollable list. You’ll also learn how to use web views to present the web content from within the app.
(this is the list of things that you do in his beginner course...)
2.
THE LEARNING FRAMEWORK IS BASED ON 3 PILLARS
1. PROJECT BASED LEARNING
From my own experience and failures, I’ve discovered that the fastest and best way to learn is by doing. Nothing can replace the learning that takes place in your mind when you hit a road block and overcome it.
That’s why I’ve designed my courses to teach via working on actual app projects. I won’t drill theory and concepts into you non-stop. Instead, you’ll be building apps with me in an “over-the-shoulder” style and I’ll point things out to you as you need it along the way.
You’ll be building your iOS programming skills by constructing 4 different apps in increasing difficulty. Each of the apps will introduce new skills and concepts and build upon the previous concepts that were taught.
This is a fun, goal oriented and practical way to learn new concepts and to reinforce material learned in previous lessons.
By the end, you’ll have built 4 fully functional apps on your own!
2. KNOWLEDGE REINFORCEMENT AND INCENTIVES
I know people can get really excited and blaze through each lesson. That’s why under each lesson, I’ve designed a series of questions that checks if you’ve gotten the key concepts of the lesson. Then at the end of each module, there’s an “exam” containing every single quiz question from the lessons in that module.
These quizzes and exams are optional but it’s in your best interest to take them. Furthermore, you’ll get some cool badges to show off if you score 100% on the exams.
3. TEACHER SUPPORT
I mentioned that the best way to learn is by doing and overcoming obstacles. Well, I’m here to help you every part of the way.
I answer all student questions myself. No assistants or customer support agents here. If you have a question, just join in on the discussion below each lesson and you’ll get a personal response from me in a timely manner.
I’ll help you get “unstuck” so that you can spend your time making progress instead of pulling your hair out!
(and this is straight out of the overall description of all his classes from the website...)
3.
I’ve worked with over 3000 students and I noticed a pattern
Over the last 3 years, I’ve worked with over 3000 students through my courses to learn iOS development and I’ve noticed a pattern.
Those who succeed go on to publish app after app
However, those that give up all fail because of the same reason
I call this phenomemom “The Hump”
Let me explain,
This is the spot where students realize that things are more difficult or requires more effort than they thought.
It’s that point when they feel their first frustrating road block and they don’t know how to proceed.
It’s that point where they feel helpless and lost.
It’s that point when they feel like maybe coding just isn’t the thing for them.
Everyone who has successfully built an app has gone through that point
If you stop here, you’re really doing yourself a disservice because just a tiny bit more effort and you’ll push past it. When you make it past “The Hump”, something magical happens and I’ve seen it time and time again in students.
Something just clicks. Suddenly instead of feelings of frustration, it’s feelings of confidence and rising up to face the challenge. You’ve suddenly gained the confidence that you can solve anything in your way. The feeling that things aren’t hopeless and that you ARE made for this.
Suddenly you can only see the unexplored open field ahead of you. There’s so much to learn!
And you feel like you can learn it all!
(if you haven't noticed the pattern, this is from the website too...)
Around the second week, I emailed 3 different iOS App Development teachers. The only one who responded (so far) is Chris Ching, who runs 'Code With Chris', an online service that offers lots of tutorial videos for learning XCode, where you pay upwards of $100 to have access to all of his resources.
When he emailed me back, he said specifically that he didn't want to do a video interview because he didn't want to give away any account names or emails (I emailed him through a link on his website that didn't actually show his email and he responded with an email that apparently I could not reply to), so he told me that I could send another message with the questions that I wanted to ask, and he'd be happy to answer them for me.
So I came up with a few questions that I wanted to ask:
1. After learning the basics of XCode and Swift, what are the next things that I should learn to be able to make a good app?
2. What is the best way to learn each individual new development skill?
3. What challenges did you have when you were learning to develop apps, and how did you get past them?
He responded about 3 days later, and I couldn't have loved his response any more...
His email back to me was hilarious. It kind of answered my questions, but it seemed like he was really just trying to sell me his service. Also, at points he just totally switch topics without any transitioning, so I got a little suspicious. I went back on his website to contact him again, clicked on the courses page (because I forgot that the contact button was just on the bottom of every page), and saw the best thing I've seen on this whole entire month-long journey. The descriptions of his services were exactly the same as the answers to my questions! I literally laughed out loud at how much he just didn't care at all.
Nevertheless, here's what he sent me: (I sorted it into the different responses (if you can call them responses) to each of my questions)
1.
The entire course is split into 5 modules and you’ll be building a different app in each one:
MODULE 1: ORIENTATION
Get familiar with the tools and build your first Hello World app
In Module 1, you’ll get your introduction to app building on the iOS platform and also get your feet wet by completing your first simple iPhone app! You’ll get a tour of the development environment and learn about the components that make up an app.
MODULE 2: WAR CARD GAME
Build a War card game app!
In Module 2, you’ll build a War card game where you’ll learn about Xcode, the view, adding buttons and images to the view, hooking up the user interface to handle interaction, the basics of object oriented programming and some basic Swift code.
MODULE 3: CARD MATCH APP
Build a card matching game!
In Module 3, you’ll build a Card Match application where you’ll reinforce the knowledge gained from Module 1 as well as learn new concepts such as doing more complicated layouts, using scrollable views, adding animations, adding sounds and using timers. You’ll also learn how to pop up message boxes to alert the user, add an app icon, add a launch screen and more Swift coding concepts so that you can express more complicated logic.
MODULE 4: QUIZ APP
Build a quiz app!
In Module 4, you’ll build a Quiz app that gets the questions from reading a data file on the device. Then we’re going to take it a step further and make the app read the data file across the internet by placing the data file on our own server. In the process of building the quiz app, you’ll learn how to support landscape orientation in addition to portrait, you’ll do more animations, you’ll be presenting modal views to the user, using scrollable views, creating custom views and saving scores and other data to the device.
MODULE 5: NEWSREADER RSS APP
Build an RSS news reader app!
In Module 5, you’ll build an RSS app where you’ll learn how to create an app with multiple screens and how to navigate between them. You’ll be working with feed parsing classes to download and parse an RSS feed across the internet. Then you’ll display those stories in the feed to the user in a scrollable list. You’ll also learn how to use web views to present the web content from within the app.
(this is the list of things that you do in his beginner course...)
2.
THE LEARNING FRAMEWORK IS BASED ON 3 PILLARS
1. PROJECT BASED LEARNING
From my own experience and failures, I’ve discovered that the fastest and best way to learn is by doing. Nothing can replace the learning that takes place in your mind when you hit a road block and overcome it.
That’s why I’ve designed my courses to teach via working on actual app projects. I won’t drill theory and concepts into you non-stop. Instead, you’ll be building apps with me in an “over-the-shoulder” style and I’ll point things out to you as you need it along the way.
You’ll be building your iOS programming skills by constructing 4 different apps in increasing difficulty. Each of the apps will introduce new skills and concepts and build upon the previous concepts that were taught.
This is a fun, goal oriented and practical way to learn new concepts and to reinforce material learned in previous lessons.
By the end, you’ll have built 4 fully functional apps on your own!
2. KNOWLEDGE REINFORCEMENT AND INCENTIVES
I know people can get really excited and blaze through each lesson. That’s why under each lesson, I’ve designed a series of questions that checks if you’ve gotten the key concepts of the lesson. Then at the end of each module, there’s an “exam” containing every single quiz question from the lessons in that module.
These quizzes and exams are optional but it’s in your best interest to take them. Furthermore, you’ll get some cool badges to show off if you score 100% on the exams.
3. TEACHER SUPPORT
I mentioned that the best way to learn is by doing and overcoming obstacles. Well, I’m here to help you every part of the way.
I answer all student questions myself. No assistants or customer support agents here. If you have a question, just join in on the discussion below each lesson and you’ll get a personal response from me in a timely manner.
I’ll help you get “unstuck” so that you can spend your time making progress instead of pulling your hair out!
(and this is straight out of the overall description of all his classes from the website...)
3.
I’ve worked with over 3000 students and I noticed a pattern
Over the last 3 years, I’ve worked with over 3000 students through my courses to learn iOS development and I’ve noticed a pattern.
Those who succeed go on to publish app after app
However, those that give up all fail because of the same reason
I call this phenomemom “The Hump”
Let me explain,
This is the spot where students realize that things are more difficult or requires more effort than they thought.
It’s that point when they feel their first frustrating road block and they don’t know how to proceed.
It’s that point where they feel helpless and lost.
It’s that point when they feel like maybe coding just isn’t the thing for them.
Everyone who has successfully built an app has gone through that point
If you stop here, you’re really doing yourself a disservice because just a tiny bit more effort and you’ll push past it. When you make it past “The Hump”, something magical happens and I’ve seen it time and time again in students.
Something just clicks. Suddenly instead of feelings of frustration, it’s feelings of confidence and rising up to face the challenge. You’ve suddenly gained the confidence that you can solve anything in your way. The feeling that things aren’t hopeless and that you ARE made for this.
Suddenly you can only see the unexplored open field ahead of you. There’s so much to learn!
And you feel like you can learn it all!
(if you haven't noticed the pattern, this is from the website too...)
Wednesday, March 15, 2017
This is Really Getting Cool Now (4)
First of all, I'll go ahead and say it again: I didn't get done nearly as much as I wanted to.
This weekend I had big plans to get lots of stuff done and learn how to do many things, but I decided to get sick and slowly die instead... So I didn't get much done.
However, after I started to feel better (Tuesday) it was a snow day, so there was time to really start looking into Swift! The more I looked into it, the more interesting it became. Swift really provides the extent of the cool abilities to iOS apps, because it is real code behind every element on the screen.
But it's confusing...
Let me explain my process of learning: First I simply made a normal app like I've done to just make apps with XCode without messing with the code in the background, but it turns out you need to turn on two specific settings before even creating the project. So, after using all of the correct settings, I made a simple app and added a label, text box, and a button to the screen. My idea was to learn how to transfer data between these three different elements.

The next thing I was able to do was access the background code in the .swift file, and insert the different elements of the app (label, text box, button) into the actual code. I simply declared the label and text box as their own entities, but I made the button an 'action pusher' so it can have it's own code inside of it, meaning that pressing the button can set off code to do an action within the app, in this case making the label read out whatever the user typed into the text box.
I also learned how to make the app execute code when it loads or switches between pages, so I could update different pages pretty much whenever I want to. Not sure what I'll do with this ability, but I'm sure there are some pretty cool functions that could be put there that could really make an app amazing.
I know all of this doesn't seem very interesting, but the implication behind it are really cool to me. It shows me that I finally have the ability to actually do something useful in an app, and that pretty much validates my whole reason for wanting to learn to make iOS apps in the first place.
PS:
Next weekend is another robotics competition, so I almost guarantee that I'll get nothing done in regards to the project. Hopefully I'll be able to learn even more functions in Swift before/after that, but there isn't much time to learn new functions before I start making my final app for the project.
I'm also still taking recommendations for app ideas if anyone has one :)
This weekend I had big plans to get lots of stuff done and learn how to do many things, but I decided to get sick and slowly die instead... So I didn't get much done.
However, after I started to feel better (Tuesday) it was a snow day, so there was time to really start looking into Swift! The more I looked into it, the more interesting it became. Swift really provides the extent of the cool abilities to iOS apps, because it is real code behind every element on the screen.
But it's confusing...
The next thing I was able to do was access the background code in the .swift file, and insert the different elements of the app (label, text box, button) into the actual code. I simply declared the label and text box as their own entities, but I made the button an 'action pusher' so it can have it's own code inside of it, meaning that pressing the button can set off code to do an action within the app, in this case making the label read out whatever the user typed into the text box.
I also learned how to make the app execute code when it loads or switches between pages, so I could update different pages pretty much whenever I want to. Not sure what I'll do with this ability, but I'm sure there are some pretty cool functions that could be put there that could really make an app amazing.
I know all of this doesn't seem very interesting, but the implication behind it are really cool to me. It shows me that I finally have the ability to actually do something useful in an app, and that pretty much validates my whole reason for wanting to learn to make iOS apps in the first place.
PS:
Next weekend is another robotics competition, so I almost guarantee that I'll get nothing done in regards to the project. Hopefully I'll be able to learn even more functions in Swift before/after that, but there isn't much time to learn new functions before I start making my final app for the project.
I'm also still taking recommendations for app ideas if anyone has one :)
Sunday, March 5, 2017
Not proud of me... (but also super proud) (3)
SOOOOOOOOOooooooooooooooo
This week was... interesting. Definitely not the norm for me. I'm not really proud to say it, but I may have put off my genius project *insert sad face here* and instead gone to robotics and sat in a cafeteria alone entering in stacks of sheets of data into a computer while watching the competition that was going on about 50 feet away from me *what face goes here?* BUT WE DID GREAT AND GOT RANKED SECOND AND GOT TO THE SEMI-FINALS *it was a happy face guys*!!!!!!!!!!!!!! (and the data entering wasn't really that bad - I had many visitors)
But the project...
I didn't really go that far this week. Because I spent too much time at robotics and studying up on rules and researching teams *did I spend too much time on that?* I didn't get to actually create any new fancy apps with background code *therefore yes. I did spend too much time on that*. However, I watched a few tutorials on how to use Swift in XCode in general, and it seems fairly simple to execute. All you need to do (for the simple stuff) is go into the story board and drag an XCode object into the frame and select it. When selected, there is a little icon in the upper right of the screen of a decapitated legless man in a tuxedo *insert well dressed dead man here* who, when clicked, brings up a window with the background code that runs the page. (yea that's not my picture, just a display of the tiny murdered tuxedo man and background code)
As for an update on my project in general, before this week I was doing great and learned more than I thought I was going to be able to for just using XCode and no Swift. But now I'm behind, so I'm making some revisions on my schedule. Since in week one and two I'd learned so much with just XCode, I made some apps (3 different ones) that were used to prove to myself that I can actually make something work. So, instead of spending week three building a new app with all the knowledge I have so far, I'm going to go deeper into Swift, because that's where I'm going to learn how to do things that are actually cool.
One realization from the (too small) time that I spent researching Swift is: IT IS HARD
There are so many different files that you have to edit and different functions that you have to make and reference in order to do anything. It is really different than any language that I've ever programmed with before. I'm used to languages where you can just type cout << "Bla Bla Bla"; and it'll just display "Bla Bla Bla". But with Swift (from what I've seen so far (I may find an easier way to make everything work as I look deeper into it)) it is much more complicated. You have to insert a label and button into the storyboard and define each of them in the background code and then program the button to trigger the label to change and display something.
Yea that confuses me too...
Not sure how it'll work out, but I'll do my best :)
This week was... interesting. Definitely not the norm for me. I'm not really proud to say it, but I may have put off my genius project *insert sad face here* and instead gone to robotics and sat in a cafeteria alone entering in stacks of sheets of data into a computer while watching the competition that was going on about 50 feet away from me *what face goes here?* BUT WE DID GREAT AND GOT RANKED SECOND AND GOT TO THE SEMI-FINALS *it was a happy face guys*!!!!!!!!!!!!!! (and the data entering wasn't really that bad - I had many visitors)
But the project...
I didn't really go that far this week. Because I spent too much time at robotics and studying up on rules and researching teams *did I spend too much time on that?* I didn't get to actually create any new fancy apps with background code *therefore yes. I did spend too much time on that*. However, I watched a few tutorials on how to use Swift in XCode in general, and it seems fairly simple to execute. All you need to do (for the simple stuff) is go into the story board and drag an XCode object into the frame and select it. When selected, there is a little icon in the upper right of the screen of a decapitated legless man in a tuxedo *insert well dressed dead man here* who, when clicked, brings up a window with the background code that runs the page. (yea that's not my picture, just a display of the tiny murdered tuxedo man and background code)As for an update on my project in general, before this week I was doing great and learned more than I thought I was going to be able to for just using XCode and no Swift. But now I'm behind, so I'm making some revisions on my schedule. Since in week one and two I'd learned so much with just XCode, I made some apps (3 different ones) that were used to prove to myself that I can actually make something work. So, instead of spending week three building a new app with all the knowledge I have so far, I'm going to go deeper into Swift, because that's where I'm going to learn how to do things that are actually cool.
One realization from the (too small) time that I spent researching Swift is: IT IS HARD
There are so many different files that you have to edit and different functions that you have to make and reference in order to do anything. It is really different than any language that I've ever programmed with before. I'm used to languages where you can just type cout << "Bla Bla Bla"; and it'll just display "Bla Bla Bla". But with Swift (from what I've seen so far (I may find an easier way to make everything work as I look deeper into it)) it is much more complicated. You have to insert a label and button into the storyboard and define each of them in the background code and then program the button to trigger the label to change and display something.
Yea that confuses me too...
Not sure how it'll work out, but I'll do my best :)
Sunday, February 26, 2017
XCode Understanding Update: (2)
Over the past week or so, I've been focused on learning different parts of XCode without diving into programming at all. I learned how to set up different types of projects, use different types of navigation in those different projects, add picture and buttons, change various settings on all of everything, and more.
The first thing I learned how to do was make an extremely simple app that was simply one page with some text. As it was my first project, I had to call it 'Hello World' because that is really just something that all programmers do with their first project in a new language. So, I made a new project, and inserted what is called a View Controller. They are essentially what you see when you open the app. On the View Controller I added a Label that said "Hello World" and constrained the label to the center of the screen.
After that, I wanted to learn to make something more complex, so I looked into making buttons to go between different pages. I learned to make buttons and how to point them to different pages, but found it to be extremely inefficient and not look very nice at all. The solution came in a tutorial about Navigation Controllers. They allow you to have a bar at the top of the screen that keeps track of the different pages you've been to, and let you go back to previous pages. With Navigation controllers, all I had to do to link two pages was add one button that led from the home page to the sub-page. With this concept, I created an app that has a picture of an eagle as the home page, and has invisible buttons on the eagle's head, wings, talons, and tail that all link to different pages that have more information about those specific parts of the bird. It looked clean, worked well, and created a nice web of pages that all stemmed from a home page.
However, I had a problem with how all of the pages had to be accessed from the home page. With that specific application it made sense, but I thought to most other applications and websites, and most of them have a clear navigation bar at the top that allows you to pick the different pages you want, and still be able to see the other page options no matter what page you're on. After some self-exploration within XCode, I discovered Tab Bar Controllers. These are the controllers (As explained here) that add the bar to the bottom of the screen with a list of each different section within an app. I learned how to use Tab Bar Controllers by myself without any tutorials (I was able to because they are fairly similar to Navigation Controllers), and now have a great understanding of them. However, I don't think I'll do this type of self-exploration in the future because it really frustrated me when I couldn't figure something out, and tutorials really help because they give clear instructions on how everything must work.
With the knowledge of both of these new controllers, I attempted to mesh them together. Through about an hour or so of meddling, I was able to make it work by starting with a basic app that used the tab bar navigation to switch between the pages, then embedded the Tab Bar Controller in to a Navigation Controller and put everything into a big web of navigation. It worked to an extent, but there are still some bugs to work out.
During the next week, I will attempt to learn various aspects of Swift (the programming language used in iOS), and how to implement the code into apps. However, I think this may take more than the allotted time, because, from what I've seen so far, it is very complicated and uses little of the programming skills that I've used in the past. Everything has to be connected to a part of the View Controller somehow, and the code is written very differently from the languages that I know. Nevertheless, I'll do my best to understand the basics.
PS: I'm open to app ideas if anyone has one that I'd be able to accomplish :)
PS: I'm open to app ideas if anyone has one that I'd be able to accomplish :)
Saturday, February 25, 2017
Tabbed Navigation
After a LOT of trial and error, I finally learned my first skill on my own without any tutorials or anything! After learning how to use navigation controllers, I saw a clear path to using a different type of navigation: Tab Bar Controllers.
Tab Bar Controllers are what you use to make this type of bar at the bottom of your screen so you can switch between multiple different screens and always have access to every other one.
After figuring out enough about these Tab Bar Controllers, I wondered how I could mesh them with the Navigation Controllers that I previously learned about. I tried many different methods, but kept getting various different errors. However, I eventually figured out the trick to it - I took the web of pages all embedded into the Tab Bar Controller, embedded the actual Tab Bar Controller into a Navigation Controller. This put all of the pages under the Tab Bar Controller under the control of the Navigation Controller, and therefore both controllers work at the same time.
While working without any instruction was interesting and probably added to my understanding of the controllers, it was much slower and more agonizing at times that I would like. In the future I will probably stick to following some tutorials, so I can keep my peace of mind and know in advance that I will be learning something worthwhile.
Thursday, February 16, 2017
Basic Navigation/Buttons
UPDATE:
I definitely think this knowledge will be useful in the future because the navigation is standard for most apps, and buttons are used for nearly everything.