Monday, January 25, 2010

Browser Focus Issue with Quizmaker

Ran into an issue with Quizmaker in which the Quiz essentially removes focus from the browser (in this case IE 7) and makes it so users need to click twice on any link to get it to work - once to set focus back to the web page, and once to select the link.

I must admit, I don't have a lot of experience with setting Browser focus, and the reasons behind it, but I know that having users trying to click the LMS next button and it not working is a major usability issue!

There is two solutions to this problem, the first one is just to re-write quiz.html and do a standard flash object/embed, replacing the Articulate published script. Now, I don't actually know what all that Articulate script is there to handle, so there is another way to handle this problem without removing all the script.

1. Open quiz_content/quiz.js

2. Search for "player.focus();"

3. Delete that line of code, or comment it out.

I have yet to test this on a Quiz that uses LMS tracking, so I have no idea if the focus is important to the communication, but certainly on a simple knowledge check removing this line will fix the usability bug.

Friday, January 22, 2010

Append Webex presentations (FLV)

Problem:

You have several different exported Webex presentations, and now you want to combine them all into one.

Solution:

A Webex export will give you 5 files for a presentation - index.html, presentation.swf, screen.flv, voip.flv and recording.xml.

The presentation.swf is actually just the 'controller', it's the two flv files that make up the actually video and audio content.

Lets say we want to combine 3 different exported presentations into one, here's how we do it:

1. Rename and Copy the flv files from the 2nd and 3rd presentations and put those files into the 1st presentations folder. You should have 6 flv files in there now.

2. Open the recording.xml file.

Look for this code


<video timestamp="1" name="screen.flv" width="1080" height="824" start="0" duration="7076" keyinterval="10"/>


Note: the timestamp and duration numbers are in seconds

All you need to do is cut and paste that line for each additional video you wish to append and edit the name, timestamp and duration fields. it would look something like this:


<video timestamp="1" name="screen1.flv" width="1080" height="824" start="0" duration="7076" keyinterval="10"/><video timestamp="7076" name="screen2.flv" width="1080" height="824" start="0" duration="5000" keyinterval="10"/><video timestamp="12076" name="screen3.flv" width="1080" height="824" start="0" duration="6000" keyinterval="10"/>


Notice how the timestamp value is the length of the previous videos?

Note: To know the duration of each flv you may want to open up the other presentations recording.xml files and make a note of that value.

So that handles the video, now we do the same for the audio! look for:

<video timestamp="1" name="voip.flv" duration="7076" />


Cut and paste that line just like before editing the name, timestamp, duration fields.

Ok almost done,

3. At the top of the xml file look for:

<recording topic="" number="" ... duration="7076">


You want to edit that duration so that it is the new total length of your demo.

Bingo Bango, an appended presentation without any video editing software necessary!

Wednesday, January 13, 2010

Improving the Quizmaker Matching Drag and Drop question type


Problem:

Articulate's Quizmaker only allows for Right to Left drag drop question types. Meaning the user must drag the rightmost items onto the leftmost. I personally have always felt that users are more comfortable and inclined to go the opposite direction.

Solution:

Unfortunetly there is no magic option in Articulate to solve this for us. So we write our own Actionscript to insert into the question in the form of a SWF file, this SWF file goes into the Quizmaker code and sets things straight.

Directions: (I am not hosting the swf file as of yet so you're gonna need to create it, hopefully I can get it online soon)

1. Create a new SWF 550 by 400 pixels and using Actionscript 2.0

2. The Code: Put this on frame one layer one


ddswitchObjects();

function ddfindObject()
{

var checkObj = this._parent._parent._parent;

for(i in checkObj)
{
trace(i);
if(checkObj[i]._x == 30)
return checkObj[i];
}
return null;
}

function ddswitchObjects()
{
var cur:MovieClip = ddfindObject();
cur.mcScrollContentMask._width = 1000;
cur = cur.mcScrollContent;

for(var i in cur)
{
trace(i + " " + cur[i]._x);
if(cur[i]._x == 16)
{
cur[i]._x = 212;
}
else if(cur[i]._x >= 200)
{
cur[i]._x = 16;
cur[i].startingY = cur[i]._y;
cur[i].onEnterFrame = function()
{
if(this._x == 212){
this._x = 16;
this._y = this.startingY;
}
}
}
}
}



3. Publish your swf!

4. Create a new quiz and a new matching question type.

5. In form view (NOT slide view) select Media -> Flash Movie -> and insert your published swf.

6. Publish Quiz

NOTES:

Obviously there is a flicker problem, meaning when the question loads, first the options are all in their original Quizmaker position before being switched around by our code, this is because of how the Quiz loads the question before the external swf we make, still thinking of a way to fix this...

There is also limitations on the size of the text you can enter for now. My testing and developing has all been done with small words, and the location of the drag items are hardcoded in my code which means to hack the Quizmaker I look specifically for items in certain positions, meaning if the items were longer or bigger than Quizmaker's defaults this code would fail (although I'm working on improving this as well)

That's all, hope someone else uses this, cause i'm putting into a course today!

Thursday, January 7, 2010

Understanding a learners motivation and percieved importance of the content in designing course navigation.

A major discussion at the e-learning guild linkedin group has been around hiding a 'next' button with the intention of making the user complete some activity before being allowed to move on. The idea here is that users will be forced into focusing on the material rather than skipping through.

Lots of ideas for this have been brought up such as multiple choice questions, true / false, a timer, drag drop, and so on. Obviously whatever learning exercise that fits the content best will work in getting the user to stop for a second and take in the content. Do we need to do this? My opinion is that this technique should be used when we perceive our target learners motivation for the content to be low.

What situations fit this scenario:
  • Internal Training for new company policies.
  • Courses with no certification, or penalty for incompletion BUT the user is being forced to take.
  • Online courses with multiple attempts at assessments where a user is more likely to attempt trial and error to get the completion. (I call this the 'Mastermind Learner')
  • Courses with dry content that fail to engage the user

What situations do not fit:

  • Courses that the user has willingly enrolled in
  • Courses with a high cost/penalty to the user
  • Courses that have been written and developed to engage the user through audio, video, animation, and well written content.

Not all courses have exciting topics, not all courses will have users that wanted to take them, and not all courses will be full of multimedia. It is the development teams responsibility understand a learner's motivation and more importantly their "Perceived Importance of the Content", and then implement a navigation strategy that fits the users willingness to absorb the material.

Wednesday, December 9, 2009

iPhone for education case study

Great Article discussing Abilene Christian University's implementation of the iPhone to enhance education.

In class the iPhone allows for anonymous student polling and quizzing. It also connects students with class notes or access to web resources so that students can look up anything they are not fulling understanding as they listen to the lecture.

Outside of class the iPhone has apps to "turn in homework, look up campus maps, watch lecture podcasts and check class schedules and grades".

It's ideas like this that really make me believe that the iPhone/iTouch is the next Personal Computer. What we have now is a smaller portable processor, with its own platform for application development, and constantly connected to the network. I would not be surprised that in five years, you'll walk into work or school, throw your iWhatever on your desk, turn on your wireless Monitors, start navigating using your wireless mouse and keyboard and when you're done pick up you iDevice and walk away.

Is your infrastructure planning for the future?

Tuesday, November 24, 2009

Games = Incentives for Learning

Was forwarded to eLearning Brothers this morning. A quick browse around, and one can see that these guys are on the right path.

Knowledge checks are an essential part of reviewing material, and putting a game 'shell' around simple question types will help keep the learner engaged. The elearning brothers have come up with some really creative game types.

I think the next step for the brothers, and they are probably already going this way, is to change their target end user from a flash developer to a SME or ID. Once they have their templates ironed out, they should spend time developing an authorware environment (or maybe partner with someone already in this field) so that knowledge of flash development is not always necessary.

Thursday, November 5, 2009

Adobe Presenter Embedded swf appears choppy or twitchy

Problem:

When embedding a swf animation into adobe presenter, the final movie apears twitchy or 'stuttering'. This occurs because the "Control using presentation playbar" option is selected, and Presenter is doing odd playback control on your swf.

Basically, to keep the slide time synched with your swf time, it is either jumping ahead or backwards to keep them together, not ideal at all!

Solution:

1. Rob Rodes: http://www.connectusers.com/forums/cucbb/viewtopic.php?id=2523

I did not find this solution to work for me, but it might for you, it's pretty low effort to try and if it works great!

2. My Solution:

First I cut all of my main timeline and chucked it into a movieclip which then got thrown on frame 1 layer 1 of the main stage (make sure the main timeline is the same length as the new movieclip timeline), we'll name the new movieclip "allAnimations".

Now, the playback bar for presenter won't have access to this movieclip, so the stuttering effect is gone, but what if the user is jumping back and forward, how do we sync this animation up with the main timeline?

Here's the magic (Actionscript 2.0):

allAnimations.onEnterFrame = function()
{
if(this._currentFrame - this._parent._currentframe > 150)
allAnimations.gotoAndPlay(this._parent._currentframe)
else if(this._parent._currentframe - this._currentFrame > 150)
allAnimations.gotoAndPlay(this._parent._currentframe)
}

Basically if the animation's timeline differs from the main timeline by more than 5 seconds then sync them up!

This is a hack, i'm positive there is an unfound better solution, but for now this may work for you, if so enjoy!