The ability to dynamically select follow-up questions based on the user's current responses and/or sensor states is a powerful feature in MyExperience. For example, with MyExperience you might ask, "On a scale of a 1-10, how exhausted are you feeling right now (1=Not Exhausted, 10=Very Exhausted)." You could then dynamically branch to a set of questions if the participant indicates that they are exhausted (e.g., a response greater than or equal to 7).
MyExperience offers many different ways of specifying question branches from within response options to short scripts. These different methods are covered here. A common question, however, is with regards to how MyExperience and CheckBoxList branching works. CheckBoxLists allow the participant to select more than one answer, each with their own specific branch in the survey.
The CheckBoxWorkOut example (available here, see Example 1) demonstrates the power of branching with CheckBoxLists and using parameterized question text. Observe how MyExperience's branching functionality loops over each of the response options in the CheckBoxList and then finally pursues the main trunk of the survey after all branches have been exhausted. This example also highlights the usage of the special options: "All of the above" and "None of the above." Note that you must have version 0.8.2 or later to run this example.
Tuesday, January 27, 2009
Friday, January 16, 2009
MyExperience Version 0.8.3 Released
You can download version 0.8.2 of MyExperience here, which includes a much requested feature to be able to change font sizes of response options. See screenshot below. For more on this, see http://myexperience.wikispaces.com/Questions. Also, special thanks to Jennifer Beaudin and the MIT House_N team for contributing so much to this release.
Other changes:
- Added Volume property to NotificationAction and PlayerAction. Gets or sets playback volume on the current wave device. 100 is full volume, 0 is silent. Set to -1 to use default volume.
- Renamed SetProperty, GetProperty and ContainsProperty to SetGlobalProperty, GetGlobalProperty, and ContainsGlobalProperty
- Added ability to specify properties for response options. See MyExperience_CustomizeQuestionLookAndFeel.xml in SampleXmlFiles
- Made a few changes to make text and countdown # more visible and readable in TimeOutForm, particularly on landscape screens, such as the HTC Dash. TimeOutUseLargeFont specified that larger text should be used to print the warning message on the TimeOut form. TitleBarText and ShowsCountInTitleBar allow customization of the text show in the title bar on survey panels.
- Added SuspendPreventer to address power management issue in PocketPC devices. Periodically uses P/Invokes methods to prevent PocketPC devices from going into suspend mode. Called from MainForm
- Add class to read values from device registry; used by KeyboardLockSensor
- Added new sensor to query the registry to monitor changes to keyboard lock status. On some devices, when a device is keyboard locked, only the device home screen is visible - even though the sound and vibration will play, MyExperience will not be in foreground and even if the user unlocks the keyboard during the notification, MyExperience will remain in the background. Uses the KeyboardLockSensor to detect a state change (user unlocks device), so that MyExperience can be put in the foreground and the notification can be restarted.
- In the NotificationForm, if Snooze is not enabled, simplify buttons to be "OK" and "Skip"; if neither Snooze or Dismiss are enabled, simplify buttons to be "OK" only (rather than disabling the Menu options)
- Added static method (Application_BringToForeground) to help force MyExperience to foreground (used in NotificationAction when keyboard unlocking event detected)
- Add property (LeftButtonText) to change text of left-button on NotificationForm (by default is "OK," but an example of a reasonable alternative might be be "Start")
- NotificationAction calls MyExperienceFramework Application_BringToFront method to ensure application comes to front in keyboard recently unlocked situations
- Added actions to hide and show the MyExperience Main form. Useful for: 1) hiding MyExperience after it is initialized on start-up (although we may want to look into hiding MyExperience completely on start-up at some point, so that even the initialization doesn't show up); 2) showing MyExperience just prior to a NotificationAction, so that the desktop is not visible between selecting OK and viewing the first survey panel. The 2nd purpose inspired the development of these Actions, as one user found the typical transition jarring.
- Added action (SelectNextQuestionAction) to determine next question to present (using Goto in the MyExperience protocol) based on a probability that any given question in a list of questions is presented. Replaces massive if-then statements from within MyExperience protocol script.
- Added method to Executable base: IsKeyboardLocked() checks the device registry to determine whether the keyboard is locked; returns true if locked, false if unlocked
- Added two properties that may be useful if using SetWallpaperAction to present images to the user that convey information, such as the status of MyExperience. Default values preserve original SetWallpaperAction procedures. UsesSimpleCopy uses File.Copy to copy the image to the wallpaper folder, bypassing resizing, transparency, and reformatting with JPEG compression. This is useful when an image includes text and can be tailored to the device screen dimensions ahead of time. ForcesRefresh is true by default. When set to false, skips step of switching to desktop and back to force the wallpaper to change. Useful if changing wallpaper when about to hide MyExperience (otherwise, jarring to switch back and forth, when going to the desktop anyway).
- Added MonitorKeyboardLock property to NotificationAction to allow protocol to specify whether to monitor the registry for change in locking status; by default, is false. I have some question about whether the registry checking may sometimes cause a phone to freeze. I haven't seen it in any of my devices, but I have received a few reports of MyExperience freezing on phones running this code. In case the registry is the cause, I have changed the feature to be optional (done only if the property is set to true in the protocol).
- Added new XML example (MyExperience_HaveUserSetRAndomStartEndTimes.XML) that demonstrates how to setup custom sensor settings based on user response
- Added properties to the MessageAction and the SurveyAction to allow a few customization options, particularly for running MyExperience with user-initiated surveys. Re-introduced AlwaysOnTop property for the SurveyAction, using the OnDeactivate method of the SurveyForm. If true (false by default), the SurveyForm will re-activate and stay on top, even if the user presses the home key or end-call key. Note that this setting may be problematic if widgets (such as the Camera/Video widget) need to be shown over the SurveyForm. Added a ShowTwoOptions property to the MessageAction to allow for left and right softkey options on that form. Also added an AlwaysOnTop property, which may be especially useful when the MessageAction is employed as an always-up form where the user can initiate survey entry. Both of these properties are false by default.
Other changes:- Added Volume property to NotificationAction and PlayerAction. Gets or sets playback volume on the current wave device. 100 is full volume, 0 is silent. Set to -1 to use default volume.
- Renamed SetProperty, GetProperty and ContainsProperty to SetGlobalProperty, GetGlobalProperty, and ContainsGlobalProperty
- Added ability to specify properties for response options. See MyExperience_CustomizeQuestionLookAndFeel.xml in SampleXmlFiles
- Made a few changes to make text and countdown # more visible and readable in TimeOutForm, particularly on landscape screens, such as the HTC Dash. TimeOutUseLargeFont specified that larger text should be used to print the warning message on the TimeOut form. TitleBarText and ShowsCountInTitleBar allow customization of the text show in the title bar on survey panels.
- Added SuspendPreventer to address power management issue in PocketPC devices. Periodically uses P/Invokes methods to prevent PocketPC devices from going into suspend mode. Called from MainForm
- Add class to read values from device registry; used by KeyboardLockSensor
- Added new sensor to query the registry to monitor changes to keyboard lock status. On some devices, when a device is keyboard locked, only the device home screen is visible - even though the sound and vibration will play, MyExperience will not be in foreground and even if the user unlocks the keyboard during the notification, MyExperience will remain in the background. Uses the KeyboardLockSensor to detect a state change (user unlocks device), so that MyExperience can be put in the foreground and the notification can be restarted.
- In the NotificationForm, if Snooze is not enabled, simplify buttons to be "OK" and "Skip"; if neither Snooze or Dismiss are enabled, simplify buttons to be "OK" only (rather than disabling the Menu options)
- Added static method (Application_BringToForeground) to help force MyExperience to foreground (used in NotificationAction when keyboard unlocking event detected)
- Add property (LeftButtonText) to change text of left-button on NotificationForm (by default is "OK," but an example of a reasonable alternative might be be "Start")
- NotificationAction calls MyExperienceFramework Application_BringToFront method to ensure application comes to front in keyboard recently unlocked situations
- Added actions to hide and show the MyExperience Main form. Useful for: 1) hiding MyExperience after it is initialized on start-up (although we may want to look into hiding MyExperience completely on start-up at some point, so that even the initialization doesn't show up); 2) showing MyExperience just prior to a NotificationAction, so that the desktop is not visible between selecting OK and viewing the first survey panel. The 2nd purpose inspired the development of these Actions, as one user found the typical transition jarring.
- Added action (SelectNextQuestionAction) to determine next question to present (using Goto in the MyExperience protocol) based on a probability that any given question in a list of questions is presented. Replaces massive if-then statements from within MyExperience protocol script.
- Added method to Executable base: IsKeyboardLocked() checks the device registry to determine whether the keyboard is locked; returns true if locked, false if unlocked
- Added two properties that may be useful if using SetWallpaperAction to present images to the user that convey information, such as the status of MyExperience. Default values preserve original SetWallpaperAction procedures. UsesSimpleCopy uses File.Copy to copy the image to the wallpaper folder, bypassing resizing, transparency, and reformatting with JPEG compression. This is useful when an image includes text and can be tailored to the device screen dimensions ahead of time. ForcesRefresh is true by default. When set to false, skips step of switching to desktop and back to force the wallpaper to change. Useful if changing wallpaper when about to hide MyExperience (otherwise, jarring to switch back and forth, when going to the desktop anyway).
- Added MonitorKeyboardLock property to NotificationAction to allow protocol to specify whether to monitor the registry for change in locking status; by default, is false. I have some question about whether the registry checking may sometimes cause a phone to freeze. I haven't seen it in any of my devices, but I have received a few reports of MyExperience freezing on phones running this code. In case the registry is the cause, I have changed the feature to be optional (done only if the property is set to true in the protocol).
- Added new XML example (MyExperience_HaveUserSetRAndomStartEndTimes.XML) that demonstrates how to setup custom sensor settings based on user response
- Added properties to the MessageAction and the SurveyAction to allow a few customization options, particularly for running MyExperience with user-initiated surveys. Re-introduced AlwaysOnTop property for the SurveyAction, using the OnDeactivate method of the SurveyForm. If true (false by default), the SurveyForm will re-activate and stay on top, even if the user presses the home key or end-call key. Note that this setting may be problematic if widgets (such as the Camera/Video widget) need to be shown over the SurveyForm. Added a ShowTwoOptions property to the MessageAction to allow for left and right softkey options on that form. Also added an AlwaysOnTop property, which may be especially useful when the MessageAction is employed as an always-up form where the user can initiate survey entry. Both of these properties are false by default.
Thursday, October 2, 2008
MyExperience Website Down
As a few users have noticed (thanks for the emails!), the MyExperience website is currently down. I am working with SourceForge to resolve this problem. It looks like it may have something to do with their recent data center migration on 09/30. In the meantime, you can still visit the MyExperience Wiki and download the MyExperience tool here.
Update 2008/10/03 10:30AM: You can follow the status of this issue through a support request on the SourceForge website here. So far, the support team has not been too helpful. Unfortunately, this is not the first time I have experienced problems with SourceForge with critical services that should be more reliable. I realize SourceForge is a free service and I do put that into perspective. However, I have contemplated switching over to other open source hosts like code.google.com but this would be time consuming and effortful so I would prefer otherwise.
Update 2008/10/03 01:17PM: Fixed! There was an issue with index.php taking priority over index.html on the webserver. This problem never cropped up in the past and was a result of the transition to the new data centers on SourceForge.
Update 2008/10/03 10:30AM: You can follow the status of this issue through a support request on the SourceForge website here. So far, the support team has not been too helpful. Unfortunately, this is not the first time I have experienced problems with SourceForge with critical services that should be more reliable. I realize SourceForge is a free service and I do put that into perspective. However, I have contemplated switching over to other open source hosts like code.google.com but this would be time consuming and effortful so I would prefer otherwise.
Update 2008/10/03 01:17PM: Fixed! There was an issue with index.php taking priority over index.html on the webserver. This problem never cropped up in the past and was a result of the transition to the new data centers on SourceForge.
Friday, August 15, 2008
MyExperience Script Playground
MyExperience uses a heavily modified version of the Simkin scripting language described on our Wiki here. I've uploaded a program for Windows, called ScriptWindow, to the Wiki. ScriptWindow allows you to play around with the scripting language a bit and get used to its syntactical structure. Note that this runs in Windows (e.g., XP or Vista) and not on the device. Thus, it's a nice little sandbox with which to experiment with loops and conditions among other operations.

You can download ScriptWindow here.

You can download ScriptWindow here.
Troubleshooting
When dealing with technology, inevitably not everything works the way we expect it or want it to. MyExperience offers a few ways of tracking down errors, which are described in the Troubleshooting section of the How do I? documentation on the Wiki.
If you are experiencing an issue with MyExperience, the easiest and fastest remedy may be to email the MyExperience Users mailing list (sign up here, view archives here) with a description and log file of your problem. The log file can be found on your device: \Storage Card\MyExperience\MyExperienceLog.txt.
If you are experiencing an issue with MyExperience, the easiest and fastest remedy may be to email the MyExperience Users mailing list (sign up here, view archives here) with a description and log file of your problem. The log file can be found on your device: \Storage Card\MyExperience\MyExperienceLog.txt.
Labels:
Documentation,
How Do I,
Troubleshooting,
Wiki
Wednesday, August 6, 2008
MyExperience Version 0.8.2 Released
You can download version 0.8.2 of MyExperience here, which includes over 58 changes from the last release (if you want the source as well, click here).
Some of the highlights that were fixed/added in this version.
Some of the highlights that were fixed/added in this version.
- Quicker transitions between survey panels and the desktop toolbar no longer pops up for a few milliseconds during the transition
- Added GetResponses() method to ExecutableBase that allows the survey designer to obtain all the responses for a given question. It returns an array of Response objects. Call Response.Value to get the raw value.
- Fixed the IsActionTypeExecuting method so that it appropriately returns false/true
- Fixed bug where after TimeOutForm is closed via tap/keypress, SurveyForm would not show up
- Fixed region specific bug.. Although this was originally marked as an issue with language, it is actually an issue with the regionality configuration of the device. I blogged about this issue here.
- Added GetTrigger() method to TriggerExecutable thereby allowing trigger scripts to get access to the trigger itself
- Added ability to automatically change the startup image. New startup images can be defined by placing a PNG called "Startup.png" in the application directory.
- Fixed the improper handling of negative number definitions in Simkin (e.g., i = -1 threw an exception because Simkin saw this as a subtraction sign rather than a negative sign)
- Added the ability to get access to actions via the GetExecutingActions() and GetExecutingActionsOfType() methods in ExecutableBase
Tuesday, August 5, 2008
How Do I?
Jennifer Beaudin has done a terrific job recently creating a very useful documentation section on the MyExperience Wiki called How Do I...? This is sort of like a hybrid FAQ/Getting Started guide that covers some of the most important points about MyExperience and will surely save you time if you give it a read. I strongly recommend taking a look here.
Note that the Wiki is constantly improving. As we find the time, we continue to add more helpful content and fill out incomplete sections.
Note that the Wiki is constantly improving. As we find the time, we continue to add more helpful content and fill out incomplete sections.
Subscribe to:
Posts (Atom)