IPT 560 Progress

Here I will show my progress on my project for my programming class.

Final Project
Here is the code for the final version of my IPT 560 project: [CLICK TO DOWNLOAD] 

This final version contains the entire standard works and it functions according to my design stipulations from the beginning of the course. It was a fun project to do and I was grateful to learn this new technology.

Stage 10
Task for stage 10: Use feedback suggestions from previous assignment to make small changes to the app. Output: Report on progress on fixes

Based on my user testing. The two things I decided to change were the label for the slider and the verse number on the navigation bar. The splash screen is something that is discouraged by the Apple development documentation, so I created a label for the slider and figured out how to have the verse show up on the navigation bar above the scripture window but didn't implement the splash screen suggested by one of my testers.


Stage 9
Task for stage 9: Have five people test app and give feedback. Output: Report of feedback on app with suggestions for changes I can make.

I have not paid the $90 for the privilege of downloading my app onto my iPod, so the users had to test on the simulator, which doesn't feel quite the same. I watched the users as they tested the app and then answered questions as they needed it. Then I asked what they would improve on the app. Nobody seemed to think being able to choose how many words were removed was much of a big deal. Nobody really used it in the test unless I pointed it out.

Things I think I will try to change: Add labels for the slider and for showing what verse is displayed. Look into the feasibility (and Apple compliance) of a splash screen or opening screen for explanation.

I had five reviewers: Valorie, Gwen, Robert, Aros, Wendy

Valorie
She said it looks good. She would like to see the verse number on the verse page. She also felt that when a single-letter word was removed (i.e. a, I, O) its underscore seemed too close to neighboring words.

Gwen
She didn't notice the slider and so didn't realize she could choose how many words to remove at a time. A label for the slider might be useful. She also had trouble realizing how to get back from the scripture page to the menu. It might be worth putting a different label in the back button. She is not familiar with the iPhone interface or navigation schemes, so that might be a factor.

Robert
He said: "I wish I had this on my mission." He asked if it could open to an explanation screen.

Aros
He thought it was good and would be useful for religion classes and would be nice to have the proclamation as an option to memorize too.

Wendy
She suggested having the Articles of Faith. I think those will be included when I enter the PoGP data in the p-list. She had trouble with using the interface of the simulator as well. I think those problems would go away if used on an actual device, since it is the native iOS environment. She liked it and said she thought it might be useful in helping her kids memorize things.

Stage 8
Task for stage 8: Implement and troubleshoot algorithm for removing letters from scriptures. Output: Working scripture remover.

I guess I neglected to post anything here for stage 8. I got the algorithm to work yesterday after several hours of trouble shooting. I had the project saved as drilldown_testApp. With so much trouble going on, I decided to make a new project and rename it Scripturize and try to do a simplified version of the app. But after transferring all the code to the new program, it worked as soon as I launched it under the new name. I'm not sure why the program would do that. At any rate, it started working yesterday, so I put in all the Old Testament scriptures and Book of Mormon Scriptures. It works so far. I'm sure there are memory leaks, but I'll try to troubleshoot those later on. I'm just glad I have a working program. I'll be having family members test it today so that I can post stage 9 tonight.

Here is the Source code.

Instruction critique
Task: Critique of the instructional methods of the "instructor" that you choose to guide your learning during the semester (e.g., the course instructor, a book, a set of video tutorials, etc.).

I used the iOS-SDK tutorial videos on Lynda.com for my learning early in the semester. I viewed each of the tutorials in the set. Overall, the series of videos were a very helpful introduction to the iOS-SDK. The production was good quality and the lessons were easy to follow. They provided a good way to get my feet wet with this new development platform.

The video production quality was high for these tutorials. The audio and video were clear and easy to follow. The scripts were organized and succinct for each video. Other screen-capture tutorials I have used have contained extra, unnecessary footage caused by either lack of preparation by the tutor or by a lack of editing in post-production. This series did not contain any of that. Time-use was efficient and the material was adequately covered in a brief amount of time.

One additional benefit to the web-based training was that the tutorials provided a transcript. I was able to get through much of the introductory materials by reading the transcript rather than by watching the video. The transcript also had links to the video, including a time reference for each line of the transcript. When reading the transcript, if I wanted to see video to understand what the narrator was talking about, I could use a link to jump to the video and align myself at the right time code. That was a useful feature both for introductory material that did not use a lot of visuals and then also when I needed to go back to the videos for refreshers on some of the things I had seen but hadn't quite grasped the first time around.

The content of the course was good. It covered most of the essential parts of the SDK that would be useful for learning to program for the iPhone. As I got more into the programming, I realized how much good material I was introduced to through the videos. There were many concepts that were presented in the videos that I found useful at first viewing. Additionally, there were things presented in the videos that I was not able to understand fully the first time, but as I programmed later on, I realized I could go back to those videos to be refreshed on their content after I was better equipped to understand it.

The videos, as a whole, provide a good introduction to the SDK, but not really to Objective-C. Someone wanting to learn to program for the iPhone with no experience in coding Objective-C or at least a similar language would likely find it difficult to follow. It is very much designed for someone who has other experience with computer programming. On the other hand, it does a great job of getting to the essentials of the SDK for someone who is prepared with the foundational knowledge. Because I had some previous programming experience, I felt comfortable moving into coding, in spite of my relative inexperience with Objective-C and the SDK. The videos gave me that sense of comfort with the new environment. I have nothing about which I can complain.

Stage 7
Task for stage 7: Continue work on programming algorithm to remove portions of words from scripture. Output: Progress report on algorithm.

This week I figured out how to get the menu structure to correctly reach the desired scripture. I found a tutorial that showed how to create a drill-down menu structure using a property list. That approach would require the whole scriptures to be structured in a p-list, but for the program for this class, I probably won't get to that point. I'll have a few scriptures in there as a sort of proof of concept and then expand it later on.

I spent quite a bit of time trying to find corresponding methods that will match the PHP functions that I used to create the PHP version. I've found a lot of corresponding tools, but the str_replace function doesn't have a direct counterpart in Objective-C, at least not that I've been able to find yet. That may mean that I have to tweak the algorithm to meet Objective-C's constraints. I'll try to sort that out.

Stage 6
Task for stage 6: Continue algorithm programming for removing portions of words from scripture. Output: Progress report on algorithm.

I solved the trouble with my algorithm so it works well in the AJAX/PHP version now. I had one of my loops nested inside another and I had to swap them to fix the problem. I had to take out the section where I was trying to get rid of the common words last. I had made a separate array for that purpose. It made the algorithm more complex, so I eliminated it to try to simplify and find the problem. Once I isolated the problem, I was able to fix it. Then, seeing how the loops worked, I was able to add the common words array back into the mix and have it work.

It still had problems with eliminating the number 10 because the common words array was only nine words long and so was not stepping through that portion of the array correctly. I had to make some modifications to accommodate that problem, but in the end, I feel like the bugs are worked out. It functions as desired.

I started doing more reading and learning of Objective-C in the Apple documentation and the Beginning iPhone development book on Safari Tech Books this week to see if I could make progress on transferring the algorithm to Obj-C. So far, it's still a learning process.

Working algorithm test here

Link to zip archive of current iteration.


Stage 5

The task for stage 5: Design algorithm for removing portions of words from scripture. Output: Progress report on algorithm.

As mentioned previously, I started work on the algorithm for the iPhone application in PHP and AJAX to get my head around the structure while my brain is still cloudy with the Objective-C syntax. I spent many hours on it this week and have a functioning version of the algorithm here: http://christijandraper.com/algorithm.php (files located here: here).

But, at a certain point, the script reaches critical mass and an infinite loop or something that I haven't debugged yet. You can keep deleting words until there are fewer words than the number that are to be removed (or something close to that). Then the script stops working. I've got to sort that out.

History:
I started out by trying to do the randomization by randomly selecting a word to start with and then iterating through the scripture at set intervals as was suggested to me by someone. I found, however, that I wasn't sure how to deal with looping through the scripture and potentially running out of words to select based on an initial random selection near the end of the scripture. I tried to escape that problem by dividing the total number of words in the scripture by the number trying to be removed and then using that result as a starting point, but I soon came to a point where the script wouldn't select any words beyond a certain point in the sentence.

I decided to try a different approach and created three arrays based on the contents of the scripture. One was of punctuation, one was of those words that are among the most common (e.g. the, it, and, etc.), and the last was the remaining words in the verse. I then was able to loop through the array to randomly select words and remove them.


I'm not sure how well the code will translate over to Objective-C, but I'm guessing that it shouldn't be terribly hard. At least I'll have a starting point to work from -- as long as I can iron out the bug in the current algorithm.

Stage 4


The task for stage 4: Design on paper the planned interface for the scripture application. Implement the design in Interface Builder. Design must comply with Apple UI guidelines. Output: Screen shots of the design in IB


Below and left, you see the scripture design as well as the first and second images from the interface from the simulator. Because I am using a multiple-table view design, it has been problematic to try an set up a simple UI in IB for the final page. I don't yet understand the way the navigation is going to step through the process from one menu to the next. I have spent the last week trying to understand better how I will be able to make the menu hierarchy work. So, although this was meant to be a fairly straightforward step in my process, I hit a snag that got me hung up. Note also that there will be an additional interim page listing available scriptures to memorize that isn't captured here. 


I'll probably need to sit down with Dr. Rich and discuss this progress and how to adjust my plan. (Although, this is post hoc and thus not ideal.) 


But, on the bright side, I have actually been messing with the algorithm in PHP already as well, which I hope will help me transfer it more easily to Objective-C. The test page can be found here: http://christijandraper.com/files/algorithm.php

The files for the algorithm can be found here: https://sites.google.com/site/christijansite/files

More on that will come for Friday's assignment.





Stage 1 and Stage 2

Here are some screen shots from the Lynda tutorials I've done so far.












Popular posts from this blog

The funnel of the introduction

Winter’s gift to men