Kooz's IDLT (Instructional Design and Learning Technology) blog describes the journey of my thoughts as I get my MA in IDLT.

Thursday, October 07, 2010

When Design and the Back End Align

I had a big smile on my face when I realized that the search script is essentially the same as the manual script. The search string goes through each manual database and does a “Full Text” search (each word in a SQL query is indexed minus certain common words), and if there’s a match, then SQL returns the Category ID and ID in an ordered array (by descending relevancy). For each entry returned, it also sees if there’s any photos for that rule. It constructs the php file as such: for each entry, it concatenates (adds on to) two different variables. The first variable is a text string that will become the top level navigation for the search results which are the titles of the rules and a link to the rule. The second variable is the actual rule. After going through all the search entries, the php script essentially prints these two variables out (the top level navigation is an unordered list that has javascript/css applied to it). This was easier than I thought it would be.
The manual is created on the fly just like a search query. It creates one page, but via the iPhone, it looks like separate pages. However, there’s one more level of navigation that the search does not: for the search it goes rule title to rules (and possible pictures). In the manual, it goes chapter to rule title to rules (and possible pictures). The manual script loops through the manual chapters, then through individual rules, and sees if each rule has photos involved. To make three levels of navigation, I needed three variables and three loops to go through all of the entries. Since printing out the variables is essentially printing the html in three sections, the challenge was making sure the end tags were placed in the right spot so that I wouldn’t get formatting errors. The key was to count the number of entries in each chapter and assign that to a variable so that when it got to the last entry, it would add that end list tag. All you have to do is print out ("echo") the three variables, and you have your manual with a hierarchy of linked lists!

Sunday, October 03, 2010

Observations on Learning PHP and MySQL: Venting (but worth it)

I once spent two months troubleshooting one problem: it wasn’t an error that created an explicit error. When a user signs up for the site, the user enters a password then that password is encrypted (using MD5 encryption) and that 64 letter encrypted password is then saved to the data base. After writing the sign up script (based off of Larry Ullman’s script in the book I'm using "PHP6 and MySQL"), Larry’s text directed me to write a "change user information" script. Keep in mind, this is before they could log in. The change user information script required the user to type in a password which is encrypted then matched to the stored encrypted password so that any updates can go forward. Unfortunately, none of my fictional users were able to change their information because they were getting a “Username and Password Don’t Match” error. I combed through the code many times. I re-wrote the code that matched the entered and saved passwords both trying new ways to match the password and just re-writing the code. Fortunately, one day, I was looking over my database and noticed the encrypted values for the user passwords were the same. Every user had a different password which meant that every encrypted password *should* look different from each other. I looked at the user sign in script and found the cause. A rogue “.” was placed in the encryption function md5(.$variable) instead of $variable. The “.” concatenates what’s before the period to the variable. Apparently, that’s enough to make the function go “Ok, this password is X” regardless of what $variable is.

Designing a Database

Designing the databases is a challenge and an appropriate challenge for anyone designing learning because it forces the instructional designer to organize information so that it’s as granular as possible. There are several considerations: what is the information on hand, who will access the information, and how will the information evolve. By designing the database for the users, you need to figure out what information FIRST would find relevant but also it forces you to think about the users as active agents: if you were using this program, what information would you want access to and how would you want information entered treated?

Friday, October 01, 2010

Interface Design: Part 5


The quiz: Only logged in users will be able to take the quiz, and I'll need to design for this event. The quiz itself will need to be introduced, and questions will have two types of presentations: text and text with picture. I'm imagining this with a vertical orientation because it features multiple choice questions, and it affords reading the possible answers as they would they're arranged in a vertical list.




Interface Design: Part 4



The learning module. How do I deal limited real estate and do an effective presentation of the learning material? If I do a landscape mode, then it would afford pictures that have a normal height/width ratio. Plus, as I've used webpages in the past on an iPhone, it's easier to mix pictures with text. I'm up in the air about this. Orientation is an important consideration when designing for iPhones.