Archive for the ‘eLearning articles’ Category

Dealing with IE6 – a Step by Step Guide

November 1, 2010

When developing html websites there will often come a time when you need to deal with IE6. More often than not you will find a website works perfectly well on most modern browsers; Firefox, Chrome, Opera, Safari etc. and even IE8, but will look completely different in IE6. This is a little step-by-step guide to; handling the inevitable loading in IE6, which common problems to look out for and how to fix them as neatly as possible.

Keeping it Neat

These steps may seem straight forward, but by following them, you will be able to better ensure your code is more organised, easier to debug and free from messy hacks and workarounds.

Step 1 – write all code for modern browsers – those that comply with CSS specification.

I think it best to initially ignore older versions of IE and simply write your html and CSS code to run in a ‘normal’, modern browser. Usually, if your website works fine in one of these, it will also be compatible with all others – maybe with a few minor tweaks. In doing this step first, you will ensure you have clean code that is written ‘how it should be’ – or as close to a ‘CSS standard’ as possible.

Step 2 – test on modern browsers.

Test the site on other modern browsers. You should not experience many major problems at this stage as most should render similarly. If anything, you may have to make a few minor adjustments, but there should not be any need to begin writing hacks and separate stylesheets.

Step 3 – launch the site in IE6.

After launching the site in IE6, note down all major bugs and CSS problems/differences.

Step 4 – create a new stylesheet exclusively for use with IE6.

One of the best ways to deal with the event of a user using IE6 is to include a separate stylesheet which will be applied in this event only. The way to do this is through use of conditional comments. Conditional Comments are standard HTML Comments with special mark-up added that is understood by Internet Explorer browsers. So if you want to load in a stylesheet only for IE6 you could add the following lines in the head section:

<!–[if IE 6]>
<link rel=”stylesheet” type=”text/CSS” href=”/assets/CSS/ie6.CSS” />
<!–[endif]–>
Or for IE7:
<!–[if IE 7]>
<link rel=”stylesheet” type=”text/CSS” href=”/assets/CSS/ie7.CSS” />
<!–[endif]–>

Or, perhaps your problems exist both in IE6 and 7 and you want to use the same stylesheet for both. In this case you can use a comment that targets IE versions less than 8.

<!–[if lt IE 8]>
<link rel=”stylesheet” type=”text/CSS” href=”/assets/CSS/ieold.CSS” />
<!–[endif]–>

Note: You must include the conditional statement after your existing stylesheet, therefore, if the problem browser is being used, the existing stylesheet will be overridden.

Click here for more information on conditional statements.

Step 5 – use this guide, blogs, forums and other materials to fix common bugs.

You can now make IE6 specific changes to this stylesheet without interfering with the existing, working version of your CSS. Read through the Common Bugs and CSS Issues section to see if you can identify some of the problems you have found. For those that you can find, try to apply the fixes provided.

Step 6 – use brute force to fix any remaining issues.

If you have any more issues that you could not find a solution for, resort to a brute force approach to fix the remaining problems.

Common bugs and CSS issues

Check DOCTYPE – Avoiding ‘Quirks’ Mode

In general if you notice strange things when launching in IE6 or loss of some functionality, it could be because ‘Quirks mode’ is activated. All browsers have a ‘Quirks mode’ and basically it is a technique used by some web browsers for the sake of maintaining backward compatibility with web pages designed for older browsers.

It is triggered by using no DOCTYPE, an old DOCTYPE (such as HTML3.2) or a broken DOCTYPE. In IE6 it is also triggered if you have anything else above the DOCTYPE. Before you do anything with IE6 make sure you have a full HTML or XHTML DOCTYPE, including the URL, and there is nothing above it in the source – such as comments.

For example:

<!–DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
xmlns=”http://www.w3.org/1999/xhtml&#8221; lang=”en-gb”>

Double Margin Bug

When using floated divs with margins, IE6 tends to double the margin size.

For example:

#divname{
float:right;
margin-right:20px;
}

[This would be rendered as ‘margin-right: 40px;’]

The standard fix for this problem is to add display: inline; to the div. However, this then means you cannot apply a static width to your object – which you may well need. It is generally best to try and side-step this issue by using padding. If you want to push this object away from its parent element – add padding to the parent element, as padding should not be affected by this bug.

No Transparent PNG Support

Up until IE7, there is no support for PNG files with transparent backgrounds. So, if images on your site are appearing with backgrounds surrounding them and you’re using IE6 or lower, this is probably the issue.

To fix, you need to save all your PNG files in the PNG-8 format. To do this you need to simply open the file in Photoshop, select FileàSave for Web & Devices. A popup window will appear. In the top, right-hand corner there will be a drop-down box from which you need to select PNG-8. Save the file and ensure it is updated in your site folders.

Click here for a solution if it is imperative to keep your PNGs as 24-bit.

Step-down

When floating objects, they generally sit nicely side by side until the width of the div they sit in has been reached; however, there is a recurrent problem in IE6 by where the browser automatically adds a line break after each floated block element. This is called Step-down.

To fix this you can either:

-include a parent element line-height and set it to 0, i.e. line-height: 0px;

-set the elements being floated to display: inline;

-use padding on the parent element to even out the difference.

The Peek-a-Boo Bug

Do parts of the content on your page randomly disappear on loading and then appear again when you scroll or refresh the page? If so, it’s more than likely you’ve got the peek-a-boo bug. This bug has been somewhat suppressed in IE7 but is still occasionally a problem and of course, is still ever-present in IE6.

The best-known tips to fix it are to add the following CSS lines to the affected elements:

position: relative; /* peekaboo bug fix for IE6 */
min-width: 0; /* peekaboo bug fix for IE7 */

However, this bug is a tricky one so this simple solution may not always do the trick.

Click here for more information and further fixes.

Links Move when Hovering Over

If your links or divs jump or move slightly when you hover over them, it may be a padding problem. Make sure you do not use percentages to define padding, i.e. padding-left: 20%;

Disappearing Div with position: absolute

If you find divs start disappearing, check what position you have given them. Basically, in IE, an absolute positioned element next to a floated one will disappear, so inserting a statically positioned box between them will cause the absolute element to be shown.

Click here for more information about this bug.

Agency in scenario driven eLearning

October 21, 2010

me 04 high res2 By Paco Garcia Jaen

First of all I will make this very clear; I am a game player -a big, big games fan. I have been playing videogames, board games and role playing games since I was a child and they have had a massive impact in developing my imagination, my visualisation skills, my social skills and even my empathy skills. This is important for me to make clear since the start of this article because I want everyone to know that I am biased. Yes, I believe in games as a medium to develop healthy personality traits and interaction skills.

Having said that, and before you dismiss me as yet another geek, I will also let you know that I am a psychotherapist specialised in relationships and run a gaming club where more than 100 people interact online and about 50% of those meet regularly around a table to play games and interact socially. If you disagree with my musings and my reasoning, please do tell. After all interactions like that help form relationships!

If you are a video-game hater… well… I’ll deal with you in another article! 🙂

Agency has been defined in video games as the feeling the player gets as a result of the consequences of the actions taken during gameplay. This is my own rephrasing of the definition, I am sure you can find something more accurate, but I’ll leave that up to you.

This is a very important concept to keep in mind because it implies that the player needs to be able to make decisions that will have an impact he or she will care about. Many recent videogames’ biggest strengths have relied on achieving a big sense of agency. Dragon Age: Origins, Bioshock 2, Mass Effect 2, Heavy Rain, Alan Wake, to name but a few, have been applauded for giving the player a credible sense that their decisions would have an impact in the development of the game.

Recent games have also been able to provide with environments that, either fantastic-looking in the extreme (Dragon Age: Origins, Mass Effect 2, Bioshock 2), or as realistic-looking as possible (Alan Wake, Heavy Rain), allow the player to suspend disbelief and accept the the environments presented as believable. The very same environments have also managed to emotionally connect with the player to the extent that a desire to preserve it and the virtual people who populate it becomes an integral part of the gaming experience.

The importance of the ability of the environment to help disbelief, and to provide with characters to connect with, are two of the elements that help to form an emotional connection and enhance agency. Of course the congruence of the choices will also impact on whether the player cares about the consequences or not. If one has to make a decision that will affect what cup of coffee has to be bought, that is likely to matter less than to make a decision where the fate of a kingdom is at stake.

For me, it is quite interesting to extrapolate those situations to board-games. I don’t mean Cluedo, or Monopoly (please don’t get me started on those!!!!). I refer to more modern and recent design board-games and role playing games, where players are presented with mechanics that allow for much more creative approaches to gaming and strategy. Ticket to Ride, Carcassonne, Settlers of Catan, Agricola, Battlestar Galactica… most of the modern games I am talking about have a very large scope for decision making. Despite the fact that some games are competitive and others are cooperative, they all have one thing in common: They provide a strong feeling or emotion as a result of the decision one takes throughout the game. Not just because our decisions (and a good share of luck!) will determine if we win the game or not, but because we can see the consequence of each decision, as well as the consequences of all the decisions we take.

That has left me feeling many times that scenario driven e-Learning attempts and mostly fails to create agency.

Most scenarios present a situation in which the learner’s input is simply to choose from a very limited number of reactions. There is no chance for the learner to improvise an alternative solution that the designer didn’t think about. Also there is little chance for the designer or the client to learn about those alternatives in order to implement them later on.

The consequences of the few options we’re given are of little or no importance to the user either. Let’s take a look at this storyboard example:

  • The first image shows how Roger, a customer service representative is on the phone to a client. The client is complaining because some paperwork has gone astray and now they have to pay a fine.
  • The second image shows Roger explaining that he needs to get some details from the customer in order to proceed further
  • The third image shows Roger looking at the phone perplexed because the client has insulted him and put the phone down.

The following screen is a quiz asking Roger what he should do next. The options are:

  • Log the call and jump onto helping the next customer
  • Report the client in the database so he’s flagged as problematic
  • Talk to the manager about the call

Although the learners will be familiar with the situation (let’s assume this course is delivered to a customer support team) and will have probably been there themselves, why should they care about Roger? What if they think of another solution? And if they’ve been in that situation before and resolved it in a different way?

Although the environment is perfectly credible and the situation is familiar, the agency in that scenario is very close to null. The learner will feel very little out of answering the questions.

Why?, because the learner didn’t have an input. They didn’t have a choice. The designer did, and then gave them the choices. For that matter, they were given very few choices that they might not agree with.

In videogames the impact and moral dilemma compensates for the limited number of choices. In board-games the number of choices is high enough, and are influenced by the other players, so there is an element of unpredictability to them, and thus to the outcome. Most important there is an element of the player’s personality. They can be more cautious or aggressive, cooperative or dictatorial, straight forward or devious, forward or lateral thinking…

In Elearning?… not so much!

Lastly in scenarios as currently presented in the vast majority of Elearning courses, there is very little (if any) of the learner’s imagination to be exercised. It is the designer’s imagination that gets exercised, based on that he or she thinks the learner needs or will understand, and unarguably, limits the scope of the learning experience. Then whatever the designer imagined as a good scenario is presented to the learner… thus the learner has no input. In this day and age where technology is more powerful, easier to reach, and where we understand how humans react to machines and machine scenarios better than ever before, there is little excuse for Elearning not to catch up with Agency and start giving the learner a more engaging and satisfying experience.

Unfortunately, the sort of Artificial Intelligence that drive video-games, and the very nature of human interaction that is so essential to board-games, are not something we’ll be able to recreate easily anytime soon. So what is the solution? How could eLearning actually learn from the videogames industry and the recent generation of board-games and improve the user experience?

Personally I think the learner should have a much greater and active role than just reading screen, watching videos or animations, listening to (often tedious!) narration or dialogue and clicking answers and provide inflexible and terribly predictable feedback. A more customisable application where the learner can input text that will receive coherent and congruous feedback rather than a set reply. The chance of participating as the character in the scenarios, rather than looking at the photo of someone they don’t care about. To witness the consequences or their mistakes rather than just being told their decision wasn’t the right one. Cooperative eLearning, where two different individuals can drive the same scenario independently and see how their reactions affect both the other person and the global outcome.

Easier said than done?… Maybe. But then, are you really going to tell me you’re not up to the challenge?