Ted Talk Evaluation

          Finally, after completing my Ted Talk in class, a huge burden was lifted off my back and now I can focus back on trying to get my app to work and release it into the app store and eventually get some profits (for which Mr. Perlman will get 10% of all profits on this app). Today, on my Ted Talk, I think it went quite well, though not exactly how I practiced it. Looking at the four grading criterions (visual component, content, organization, and delivery), I think that I was able to meet the expectations on most of the criterions. 

          For the visual component, I think I did quite well as the visual component was an aide rather than driving the presentation. Also, in the visual component, I used pictures to display ideas versus using lots of text to get the point across. Therefore in the visual component category, I think I should not lose any points.

          The second criteria of content is another area that I also think I performed very well on as I covered the four areas listed in the content area. For the "inspire through your passion section", I used my passion of technology to inspire the audience to share the excitement that I have when working with technology. In the "show your product" section, I displayed a picture of my app to show how my app looks and I also displayed a picture of the code to show the different functions that my app has. For the "explain your process" section, I explained the three stages of creating an app and talked about how I achieved each stage in order to create the app. Lastly, for the "what is your purpose and what the audience should take away" section, I conveyed the idea of how overcoming obstacles in order to learn is more important than the final product when performing different tasks.

         The third criteria of organization is where I think that I should lose a point because though I had a hook, transitions, logical order, and an effective conclusion, I could have had better transitions to advance to the next topic I talk about. I think that I had some pretty rough transitions and there were awkward transitions that could have hurt my talk.

          The fourth criteria of delivery is also another section where I think I should lose a point because of the overall quality of the talk. Though I was quite enthusiastic and poised, my talk could have been more refined because I stumbled a few times when I spoke and there was also some gaps where I lost my place and starting stuttering a little. 

        Overall, I think that because of the above comments, the grade I should receive on this talk is a 28/30. This is what I honestly thought what I did in order to receive this grade, though there will be a little bit of unintentional bias just because this is a self-reflection. I hope you enjoyed my talk!

Programming Failures

          Well, before continuing I would like to make one thing clear: my app is still not finished. It is not finished because I have not been trying or because I have been lazy. It isn't finished because Objective C is much harder than I thought. So, for this final post, I have decided to dedicate it to my failures in programming this app.

          Failure #1: Underestimating the language. Objective C is a language that bears very little resemblance to my prior programming experience. I have programmed in mostly C, C++, and Java though not being at the highest level in the languages. As it turns out, Objective C requires a very high level of C understanding. Though I lacked the high level of C understanding, it didn't stop me from still trying Objective C. I actually was able to kind of program and get some of the features working while others were still pretty hard to achieve. Nevertheless, I gave Objective C, my full effort and even though my app is still under development, it actually has some working functions.

                                        
                 The number of files I worked with in Objective C                         The number of files I work with normally with C++


          Failure #2: Allocating programming time. In my first post, I described designing the app to be the most difficult part of the app creation process and said that programming would be the easiest part. Boy was I wrong. The design of the app, though it was the more creative part, took significantly less time than the programming of the app. The design I created look really simple and polished, but programming it was a huge hassle. Starting with the homework aspect in my programming endeavor, I realized that even the simplest part of the programming was extremely difficult due to all the different parts and that it would take a while. Honestly speaking, I spent all the programming time that I had allocated (like the 4 weeks) trying to get the homework aspect to work, unfortunately, failing each time. If I had maybe given myself more time in programming, and less in design, could I have actually finished at least the homework element. 


        

        What my app was supposed to look like                                     What it currently looks like (still trying to get it to work)

          Failure #3: Idea complexity. When starting to think of an idea to make into reality for this project, I thought up a project that was extremely complex and that many programmers that actually do this for a living find mediocre. Knowing that this was my first app I would be making, I should not have thought of such a complex idea and I should have started easy and built up to having different features. I think I chose this mainly as a challenge, but I should have realized that it would be better to stay in my range. 


          Overall, even though I had a few failures, I am not going to say that I totally messed up. It is not that my app functions did not take place, but it was that I was not able to display my different functions to the user in the GUI. Many of the aspects that I had tried to display worked, but the only issue was making them sensitive to the users touch on the iPhone. Even though I am at a small setback, I will still continue to build this app successfully!


Programming is Progressing...

          From last week, my programming struggles have drastically decreased. Given that I am still struggling as this is still pretty hard, I have gotten to point where I can solve some of the problems that I am having with the code. More importantly, I was able to solve the error I was having last week, which actually took a ton of research, video tutorials, and long nights of staring at code. The worst part about all this, was that my error, in essence, took about ten minutes to fix. The error I was having was with the Storyboarding of my app (if you haven't read my post about Storyboarding, click here to see it). In my Storyboard, I needed to have a Navigation Controller, Master View Controller, and a Detail View Controller to achieve the purpose that I was trying to achieve. The Navigation View Controller was the initial controller of the app, the Master View Controller was the main screen on the app, and the Detail View Controller shows the details of each different element. Last week, when working with my app, I was only working with a View Controller and it couldn't output anything because it needed the other elements to perform its function, and this caused the build to fail each time.

          After solving that problem, I was able to continue building my app, and I actually got somewhere! Though it isn't nearly where I expected to be (I really need to work on my estimation skills), I still am at a point where I can finish this app in the next few weeks (even though the project is due like next week). Currently, I have the main page of the app finished. At this point, the user will be able to enter different assignments, finances, and schedules into the app, though I still need to work on making sure that these different aspects are saved into the database and do not get deleted when the app is closed.

                                                                                                
                                                  The picture of my working app. Yes, that does say "No issues"

          Above, you can see the app in its current stages. Though the design is slightly different from my original one in this post, I will apply the final design touches in the end because they are not contributing to the app functionality. 

          The next step that I am going for is implementing the core data aspect. This is mainly to make sure that everything the user selects is saved into the app for future use, as I mentioned in my post about storyboarding. The core data aspect is hard to implement because I'm not exactly sure where to implement it in the code, so my next goal will be to figure how to do this and create the database for saving this information. 

         From this point, it's almost smooth sailing. I really struggled in planning this project out, and really underestimated this language. But, at the current pace I'm going at, there is a realistic chance I may have a beta version of the app ready to present by next week! 

Different sources that helped me solve my issues:

http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-uitableview-tutorial.html

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/CustomizingMasterView/CustomizingMasterView.html

http://stackoverflow.com/questions/10270664/master-view-controller-detail-view-controller-communication

Why I Chose This Impossible Project (VIDEO BLOG)

Programming Is Harder Than I Thought....


         Well, as of my last post, I was pretty enthusiastic about getting starting with programming for iOS. As it turns out, it is not nearly as easy as I expected, even after watching tons of video tutorials from Team Treehouse and after reading hours of Apple Documentation. At this point, I can't even get the App to run after adding my design to Xcode. Usually, my error is either forgetting a semi colon or forgetting to add a variable, in which Ge is the primary source for detecting my errors. In this case, I have no clue with the error is an basically the screen below shows the root of my frustration:


                                                                                        Screenshot of my app trying to run and failing

          The build failed sign is taunting and the fact that I can't get rid of it is even more annoying. So, I decided to consult the experts of programming: the community at Stack Overflow. These people are programming gods and usually can solve most programming problems, so my next was contacting them to help me. I have posted my issue online, but unfortunately, I have yet to hear back. Since I had no response from the Stack Overflow community, I decided to consult the next programming expert, Google. I looked up my error and found a few links that would help. The first link I found was from a guy named Ray Wenderlich who is a iOS programmer and is really good with iOS storyboards (the place in my code I am having trouble with). After reading his link on iOS 5 story boards, I learned a few coding tips to implement in my code that should solve some of the problems that I have been having. Here is some of the code snippets that Mr. Wenderlich provides:

                                                                 
                                                              Code Snippet from Ray Wenderlich

          After looking at the code from Mr. Wenderlich, some of my many build errors went away, though I'm still left with a few to fix on my own. Hopefully I can get a handle on these issues and make sure that I can fix them and complete my app as soon as possible as the due date is quickly approaching. All I know for sure now is that I'm going to be having a busy spring break!


Sources:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

http://www.stackoverflow.com

TIME FOR SOME PROGRAMMING!!!!!!!


          Programming is the next, and most time consuming part of the app creation process. This is where my app comes to life and actually works. The programming aspect at this point is fairly mechanical, though difficult for a novice iPhone programmer (myself). So, up until now, all I have been doing is reading Apple's extensive documentation (believe me when I say extensive) to learn the language that iPhones use. This language is called Cocoa Touch and it has a Objective-C framework.  

          Cocoa Touch is an object oriented computer language that is more commonly used to program iPhone apps. It requires a background in C, and a fairly good understanding of computer programming. The IDE (software used for programming) that is required for programming iPhone apps is called Xcode and is provided by Apple, free of charge. Xcode provides a multitude of features including live compiling and app execution without the presence of an actual iPhone. Of course, there will be an iPhone needed to test the app after creation to make sure it is optimized for the user. 

          Before starting on my app, and after reading some Apple documentation, I realized that my app would be using a model-view-controller as its basic framework. The "model" contains the data behind a specific object that can be either created or modified. The "view" is the element that user sees and can interact with. The "view" is able to take in user commands, such as text when the user types or a button response when the user taps a button. The last part, the "controller" comprehends the data from the "view" and transfers it to the model. When the "model" gets the information and changes based on the information, this change is transferred to the "view" with the controller. Below, you can see the different relationships between the model-view-controller. Basically, the "model" gets updated when there is an user action by the controller. The model then notifies the "controller" of the update to the model, and the controller then updates the view based on the model. 



(picture from Apple Documentation
Image of Model-View-Controller to show all of the connections

          The second necessary feature that the Apple documentation revealed was "storyboarding". This feature allows the user to create a visual representation of the apps user interface, with each of the screens and transitions that are part of the app. After the visual representation is created, each element is programmed with its functionality, so that it can work. In the representation there are two main elements, scenes and segues. A scene, as shown in the image below, shows the app a given time. Imagine taking a screenshot of an app on its home screen. Everything in that screenshot would be in the scene portion of the app. In the storyboard, the user creates each scene that is part of the entire app. The second main element of the representation is the segues between the scenes. A segue is basically the transition between scenes that the user sees when clicking on an element. For example, if there is a button that opens up a popup window in the app, the segue would be the popup effect that the app user would see upon clicking the button. By combining the scenes and segues in the storyboard, it allows for the design aspect to be created visually, and then it can be programmed by targeting each of the different elements in the scenes and segues. 



(picture from Apple Documentation)
Shows the different scenes and segues that are used in app creation


          The last and arguably the most important feature that I came across in the Apple documentation was "core data", which is the database that apps use to save information in. In my app, it is important that the when the user enters in a homework assignment, or an after school meeting, the assignment or meeting entered doesn't disappear when the user exits the application. To address this issue, all of the information that an user enters must be stored in a database and the fetched whenever the user opens the app to check for the selected item. This is when core data comes in to play. Core data will save the user data in an XML file, and then the data will be fetched from the XML file to present it to the user. This becomes crucial when managing multiple assignments or after school meetings as it creates a storage hub for these different elements. 

          After learning the purpose and functionality of each feature, the next step I took was learning how these features work in Xcode. To do this I used the video tutorials from Team Treehouse to learn about each and everyone of these features. These tutorials were really helpful and taught me the coding basics behind storyboarding and core data. Check out some of their videos if you would like to see the above concepts in more detail with the programming aspect as well.

          As the learning behind the programming comes to a close, it is finally time to actually start programming the app. See you guys in my next entry!


SOURCES:

- Apple Documentation (the best source for learning about iOS programming and it's included with XCode)

- Team Treehouse (video tutorials for Xcode and iOS programming)

Check Out These Other Blogs


I'm sure that all of you reading my blog are throughly enjoying the content that I provide, but if you guys have time to spare, check these other amazing blogs that I follow and comment on!

Week 2:

1. http://quadroflcopter.blogspot.com (Andrew)

2. http://erbcinematography.blogspot.com (Ethan)

3. http://brycesong.blogspot.com (Bryce)

Week 3:

1. http://jspitt.blogspot.com (Jeremy)

2. http://aslin7weeks.blogspot.com (Alyssa)

3. http://designsbyjennyd.blogspot.com (Jenny)

Week 4:

1. http://brofesttrickshots.blogspot.com (Robbie)

2. http://sundrew.blogspot.com (Drew)

3. http://streetdancein7weeks.blogspot.com (Brianna)

Week 5:

1. http://heylookiwroteabook.blogspot.com (Ally)

2. http://wissahickoncompliments.blogspot.com (Chloe)

3. http://theartofwarsc2.blogspot.com (Sam K.)


Week 6:

1. http://samkesgeniusproject.blogspot.com (Sam Ke.)

2. http://learning-woodworking.blogspot.com (Cool Will Rocks)

3. http://bensepexperience.blogspot.com (Ben K.)

 
iOS Programming:
App Development
© 2012 | Designed by LogosDatabase.com, in collaboration with Credit Card Machines, Corporate Headquarters and Motivational Quotes