September 30, 2009

IE 7 ordered list numbering bug

The other day, I found an Internet Explorer ordered-list bug I hadn't seen before:

A numbered list of items which looks right in other browsers will be rendered with the number "1" in front of every item in IE7.

This happens when a width is added to the "LI" tags in an ordered list. Internet Explorer 7 will not increment the numbers.




Assuming you wish to keep the width specification, to fix this issue you must add display:list-item to the li tags.


Picture 16.jpg

Then IE will render the numbers correctly. (Except, of course for the decimal-leading-zero property which it still ignores.)

SnagIt1.jpg




Posted by ellen at 6:25 PM

September 26, 2009

Beginning Eclipse CVS - Branching Tutorial 5: Work in the branch

<= Back to previous section "Create a Branch"


    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.

  1. Paul is working in the branch p1test. Open f1.txt in the text editor (Double-click f1.txt or right click it and select Open in Text Editor).




  2. Continue reading below break...






  3. If line numbers are not showing in the text editor, turn them on by right-clicking in the middle of a text editor view. Select Preferences...




  4. Check "Click show line numbers."

      

  5. Change line 3 of f1.txt to read "This line changed by Paul in iter1. " and save the change.





  6. Note that the file now shows a ">" indicator in Project Explorer, showing that it is no longer the same as the version in the repository. Open f3trivial.txt in the text editor. Change line 3 to read "This line changed by Paul in iter1." and save the change.




  7. Open f4conflict.txt in the text editor. Change line 3 from "This line will be changed by both Paul and Wing" to "This line changed by Paul in iter1."and save the change.


  8. Click the Synchronize icon, or right-click the brtest project folder and select Team > Synchronize with Repository. The Synchronize perspective will open and replace the Project Explorer. Commit all the changes by right-clicking the folder and selecting Team>Commit.

  9. Type a comment like "First iteration changes made by Paul."

    The version number will be a four-digit number like 1.1.2.1: the 2 represents the branch number.





  10. The Synchronize perspective will now be empty, indicating that nothing remains out-of-synch. The repository's image of the branch is now identical to what is in your local workspace.




    Click the Resource tab to return to the Project Explorer.









  11. Since this is Paul's first round of changes in this branch he will tag this milestone as P1. Right click the project folder and select Team>Tag as Version.




  12. Type P1 and click OK.






  13. We are now at this point in the workflow diagram:

    03.jpg


    Continue to next section "Editing in the Trunk" =>






    Posted by ellen at 6:15 PM

Beginning Eclipse CVS - Branching Tutorial 4: Create a branch

<= Back to previous section "Share the Project"

    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.

    Now that you have created a project, the other people on your team should check it out from CVS. If they aren't sure how to check out a project from CVS, have them view this tutorial then return here.


    Scenario walkthrough

    We'll be following the workflow shown in the diagram below. This article will employ a scenario of two programmers, Paul and Wing, working on separate branches of the same project. 

    scenario1.jpg
    Continue reading below break...


    The main branch of development, or trunk, is labeled WD in the diagrams, because Wing will be developing in that branch. Paul first branches off main and modifies some files. His new branch is called p1test. He starts working in that branch.  

    01.jpg

    At the same time, Wing is developing in the main branch. When she reaches a milestone, she commits the changes and tags them as W1.

    04.jpg

    When Paul reaches a development milestone, he commits his code changes to CVS and tags them as P1. 

    03.jpg


    Then he switches to the main branch and merges the code from the p1test branch down into the main branch, fixing any conflicts that have arisen. 

    Note: Merges are performed INTO the branch you are currently working in, not FROM the branch you are working in.

    Paul's  tagged milestones give CVS a point of reference to determine what has changed since the milestone. Tags can also be used to denote stable versions or recovery points.

    Now development continues. Paul opens the p1test branch again and continues working. When he reaches another milestone, he commits his changed files and tags them as P2. 

    05.jpg

    At this point, Wing, working in the main branch, merges Paul's changes back down to the main branch, and resolves the conflicts. This scenario can be repeated as changes are made until work in the branch is completed and the final merge is done.

     06.jpg


    So let's get started with whoever is playing Paul:

    1. Right-click the brtest project folder and select Team > Branch.



    2. Call the new branch p1test. Make sure Start working in the branch is checked and click OK.

      Eclipse will fill in a starting tag (Version Name) based on the branch name you choose: Root_p1test


      We are now at this point in the workflow diagram. 

      01.jpg

      The starting tag Root_p1test is a point of reference that will be used by Eclipse during the merging process to determine what has changed since the last time the code branches were identical. 

      When the branch is first created, the branch and trunk are identical.   As work proceeds in both paths, differences arise between the two lines of code. At various points in development the branch and trunk are resynched together. Logical points for merges down to the main branch can be when new features in the branch reach a stable enough point for testing, or if the branch is still unstable, but a lot of work has occurred down in the trunk, the latest version of the trunk should be periodically merged up to the branch so that the branch does not fall too far out of synch with the main trunk.

      If you wait too long to merge while parallel development occurs, it is possible to have problems with enormous code conflicts which need to be resolved. Merging is more of an art than a science, and it can take a fair bit of thought and debugging to make things work right during a big merge. See Branching and Merging Anti-Patterns for information on "Big Bang Merges."



    3. If you forgot to click Start working in the branch, right-click the project folder again, and select Switch to another branch or version, then select the p1test branch and click Finish. You can tell what branch you are working in, if any, by looking at the name of the project folder. The branch name will be listed to the right of the project folder name.



    Continue to next section "Work in the Branch" =>






    Posted by ellen at 6:14 PM

    Beginning Eclipse CVS - Branching Tutorial 3: Share the Project

    <= Back to previous section "Create the Workspace and Project"

    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.

    Now that you've created a new project, check it into the CVS repository so your team can collaborate on it.

    Continue reading below break:

    1. Right-click the brtest project folder and select Team > Share Project.




    2. Enter the login information for your CVS repository and click OK.







    3. Leave it set to "Use project name as module name". Click Next.



      use project name as model name


    4. It will ask you to review and commit the new resources. Committing a resource stores it in the CVS repository where it is visible to the rest of the team. You can also commit resources from the Team > Commit menu (available when you right-click on an item) or in the Synchronize view.







    5. Add a comment to the comment area and click Finish.
      It will confirm that the resources are in sync. Click Finish again.







    6. The name of the repository will now appear after the project folder name.






    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.


    Continue to next section "Create a branch" =>




    Posted by ellen at 6:13 PM

    Beginning Eclipse CVS - Branching Tutorial 2: Create the Project

    <= Back to previous section "Branching Strategies"


    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.

    Continue reading below break...









    Download this zip archive: brtest.zip  

    The files contained in this archive refer to the two developers in this tutorial's "team," Paul and Wing. Decide who will be Paul and who will be Wing. If you are the only person who will be participating, you can play both. Additional people can be additional "Wings."

    Some definitions
    • The Workbench is the the complete set of windows and tools provided by Eclipse.
    • A Workspace is a folder containing your projects and resources. Each workspace can have settings associated with it which control the workbench layout and behavior. You can have multiple workspaces - for example if you want to synchronize multiple servers to CVS all from your desktop, you can synch them using a workspace located on each server.
    • A Project is a set of resources, folders and files. The Project Explorer view provides a tree-structure display of all the resources in the Workspace.

    In this tutorial, we'll create a new empty workspace, add a new project to it, and share the project to CVS so that others can collaborate on it.

    At this point the project will be tagged as a milestone and branched, so that two developers can work on different tasks. The discreet lines of code will then be merged together and any conflicts resolved. After tagging again, and further work, a second merge will be performed.




    Create a new workspace in a new, empty folder.



    1. Launch Eclipse. It asks you to select a workspace. Click Browse...

      Image



    2. Choose a location and create a new folder.

      Image




    3. Select the folder you created and click "Choose".

      Image


    4. The browse dialog closes. Click the OK button.

      Image


    5. You should see the Welcome screen. Click Open Workbench. This would be a good time to set up your perspectives. If you aren't sure how to do this, Click here, then return back to this tutorial when you are done. Then select the Resource Perspective.

      Image


    Create a project in the new workspace

    1. Create a new project by right-clicking inside the Project Explorer View (Left pane)

      Image


    2. Choose General > Project.


    3. Call it brtest and click Finish. A folder called brtest will appear in the Project Explorer view.


    4. Right-click on the new brtest folder, and select Import. Select General > Archive File. Click Next.


    5. Click Browse... then navigate to brtest.zip. The "Into folder" setting should already be set to your project folder. Click Finish.


    6. You will be returned to the main window. If you open the project folder, you should now see four text files there.


    Continue to next section "Share the Project" =>


    Posted by ellen at 6:13 PM

    Beginning Eclipse CVS - Branching Tutorial 1: Branching Strategies

    <= Back to previous section "Setting up the Eclipse Interface for CVS"
    NOTE: This section of the Eclipse CVS tutorial is based on Paul Glezen's article on the Eclipse website: Branching with Eclipse and CVS, and is used with his permission under the terms of the EPL license. The changes I am making to his version are mainly to expand it with more step by step images and explanations, and integrate it with my own beginner tutorials in an attempt to make it more accessible to beginners and designers. Experienced developers will probably prefer to work from Paul's version.
    When working together in a team, developers often need to isolate code lines from each other to prevent conflicts. Besides the possibility of simply stepping on each other's toes and overwriting new versions with older versions, different functions under development may conflict with each other while being tested.

    To prevent this, projects can be developed in concurrent paths, with one path being devoted to the main line of development and others set aside for testing new features or bugfixes. One line can be kept stable or close to stable, with others not yet even in testing. Several common configuration strategies are used for team collaboration on software development.


     
    Continue reading below break:







    The field of Software Configuration Management is the discipline of designing methods for effective development team collaboration and version tracking that promote productivity and reduce risk. Branching and merging strategies are software configuration management practices that allow pieces of code to be worked on in isolation from the rest, then later, merged back into the whole. The process of merging involves some extra work and added risk because it can introduce new bugs, but the added productivity of working in the branch often outweighs the extra costs.

    There are several commonly used branching strategies. The choice can be determined by the requirements of the project or the workflow preferences of the team. Branches can correspond to phases of development, specific tasks, or particular releases.

    Chris Birmele of Microsoft Australia recommends validating your chosen strategy by considering what would happen in a change scenario - would you have to completely restructure your branches to compensate? Try to predict the worst case and plan for it.

    A commonly used branching strategy is one that corresponds to the three phases of development activity: Development, Test and Production. For in-depth discussions of branching strategies, see Microsoft Team Foundation Server Branching Guidance: [LINK] or PDF ( license)


    Code Promotion branches: Branches associated with phases of development.

    BranchingChecklist.JPG.jpeg
    (from [LINK])


    Branching by Release: 

    Aa730834.branchmerge02(en-US,VS.80).gif
    (from [LINK])


     Branching by Task:

    Aa730834.branchmerge04(en-US,VS.80).gif
    (from [LINK])

    Whichever configuration you choose it's imperative that all team members are on board and fully understand the workflow and best practices associated with tagging, merging, etc.  Symptoms of problems with team member's comprehension of the strategy, or of having chosen the wrong structure include avoidance of merging, deferring merges until the very end of the project and general confusion about versions. A longer list of "symptoms" can be seen here [LINK]


    The branching structure used in the following tutorial is a task-based branch, where the branch is used for work on a specific tasks. These are short-term branches which are merged back into the main line of development - the Trunk - as soon as the task is completed.

    branching.jpg
    Continue to next section "Create the Workspace and Project" =>




    Posted by ellen at 6:11 PM

    September 19, 2009

    Corn mazes in Google Earth

    With Fall coming, it's time for Corn mazes. There are loads of them to find in Google Earth. Here are a few to get you started, including the Google Earth KML files. In England, they mostly do crop circles, and it'stoo late in the year, they're all harvested by now, but next year be sure to look for them.

    Crot's Corn Maze (near Temperance, Michigan)

    Crots corn maze
    Download KML file for Crot's Corn Maze


    Fun Acres Corn Maze (South Rockwood, Michigan)

    Picture 30.jpeg
    Fun Acres Corn Maze and Family Fun Farm.kml


    Helwig Farms (Monroe, Michigan)

    Picture 31.jpeg
    Helwig Farms.kml

    Portland Oregon
    Picture 3.jpeg
    Corn Maze in Portland OR.kml



    Maize Valley Winery Corn Maze in Hartville, OH
    Picture 3.jpeg
    Maize Valley Winery, Farmer's Market, and Corn Maze.kml

    Posted by ellen at 12:00 PM

    September 15, 2009

    Beginning Eclipse CVS - Basics 6: Setting up the Eclipse interface for working with CVS

    Eclipse can be used for many types of development tasks. As a result the interface is almost infinitely customizable. This can be confusing. When you first open it, you will probably see only functions related to Java development, as shown below:


    Continue reading below break...


    (click image to enlarge)
    Image

    If you are not developing Java applications, but want to use CVS primarily to manage a website or web application you may want to rearrange the interface to better suit your purposes. What follows is an example of setting Eclipse up to manage an ASP/HTML web application.




    1. Eclipse uses the word "Perspective" to describe a layout of panes in the Eclipse window that is geared to providing a specific type of functionality. There are perspectives for editing and debugging Java, for managing resources and assets of any type, for viewing the contents of a CVS repository and for synchronizing local resources with the CVS repository. We will be opening the CVS Repository, Team Synchronizing, and Resource perspectives.



    2. First we'll remove the Java button by right-clicking it and selecting Close.

      Image


    3. Click the Image icon, and select "Other" from the dropdown menu.

      Image


    4. Select Resource from the list and click OK.

      Image


    5. Repeat with Team Synchronizing and CVS Repository Exploring.


      Image

      Image


    6. The correct buttons will appear on the tab.

      Image


    7. To make more room for your links, click in a blank area on the tab (cursor will change to the one shown) and drag toward the left to enlarge it.

      Image

    You may of course create your own perspectives to better suit your needs:

    1. Open an existing perspective that is closest to what you will want, and modify it by adding, closing or moving the views (panes) around in that perspective's window. (Use Window>Show View to open additional views, click on the X in the view's tab to close it).
    2. Save the new layout by clicking Window > Save Perspective As...
    3. Type a new name for the new perspective and click OK. The new name will now show up in the Window > Open Perspective menu.





    Posted by ellen at 5:37 PM

    September 14, 2009

    Captivate scoring problem

    An instructional designer came to me with a Captivate issue the other day. She had converted a working version 3 Captivate file to version 4. The converted file no longer calculated scores properly. There was a walk-through tutorial showing how to use a new web application, then a short multiple-choice quiz with 5 questions. The setting "Show Progress" was turned on, so each question should show a label: "Question 1 of 5, Question 2 of 5, etc."

    In version 3, everything had worked fine. In version 4, things looked fine in Edit mode, but at runtime, the numbering was off. The first question was numbered "Question 2 of 7" and it would increment from there.



    I immediately assumed it was counting clickboxes from somewhere else in the file, but when I looked at the Advanced Interaction page, Add to Total was grayed out for all buttons and clickboxes, and Track Score was also not checked for any of them. So, I assumed it could not be the clickboxes. Thinking it might be some corruption in the question slides, I re-created all the quiz questions, and yet the problem remained. 

    interaction.jpg

    What I did not notice was that grayed out or not, the Add to Total was checked on all of them. And on the two clickboxes in the document, the Report Score box was checked. Those two clickboxes plus the 5 quiz question slides make 7 questions, in the mind of Captivate 4. 

    The grayed-out Add to Total and Report score checkboxes cannot be unchecked without first checking the corresponding Track score checkbox as shown here. 

    becomes active.jpg


    When Track score is checked, the Add to Total checkbox becomes active and can be unchecked. At this point that item ceases to be added to the total number of questions and points. 

    uncheckit.jpg
    Posted by ellen at 6:15 PM

    Captivate, right-click and accessibility

    One of my colleagues wrote that she had used the right-click feature in her latest Captivate project. When she previewed the file using Preview > Project, it worked fine. But when she attempted to publish she got the following message.

    rightclick.jpg



    "2 click boxes of this project have the 'Right-Click property on, these click boxes will work as 'Left-Click' when Enable Accessibility is set true. Do you want to continue?"

    Clicking "Yes" resulted in the right-click being transformed into a left-click!

    The solution is simply to turn OFF accessibilty in the project's Publish Settings. (In the Publish window, click Preferences. It's under Project in the Category tree structure in that pane.

    SnagIt1.jpg

    Thanks to RoboWizard for this tip.


    Update: Note that you cannot put TWO right-click objects on the same slide. As far as I can determine, this is an issue with flash or captivate, NOT with the javascript in the HTML wrapper. The right-clicks are trapped by the javascript, but flash does not respond correctly to any but the top-most right-click enabled click-box.


    Posted by ellen at 4:00 PM

    September 12, 2009

    Oil may be generated without biological processes

    If this is true, it could be revolutionary.

    Fossils From Animals And Plants Are Not Necessary For Crude Oil And Natural Gas, Swedish Researchers Find

    ScienceDaily (2009-09-12) -- Researchers in Sweden have managed to prove that fossils from animals and plants are not necessary for crude oil and natural gas to be generated. The findings are revolutionary since this means, on the one hand, that it will be much easier to find these sources of energy and, on the other hand, that they can be found all over the globe. [Link]

    Anton Kolesnikov, Vladimir G. Kutcherov, Alexander F. Goncharov. Methane-derived hydrocarbons produced under upper-mantle conditions. Nature Geoscience, 2009; 2 (8): 566 DOI: 10.1038/ngeo591
    Posted by ellen at 7:14 PM

    September 9, 2009

    Secure FTP on hostgator using Dreamweaver

    I don't know why it took me so long to figure this out! To use secure FTP (SFTP) with a hostgator account on a shared server, simply use port 2222.

    Here's an example of how to set up the remote tab in Dreamweaver:

    ftp.png

    Posted by ellen at 1:34 PM

    September 8, 2009

    Decision support tools, performance support systems and just-in-time learning

    Where is the best spot for an educational (or other) intervention?

    When there is a workforce performance or knowledge gap to fill, trainers understandably think first of using training to fill it. But is more training really always the best answer? Depending on the skills involved and the characteristics of the audience, process improvement, usability improvement, training or performance support may all be worth considering.



    Image


    Root cause analysis and ADDIE

    As instructional designers, when we are given a new project to do, we assume that training is the deliverable that we are supposed to create. Many of us are familiar with using the ADDIE proces to develop training: Analysis, Design, Development, Implementation and Evaluation. However the ADDIE model has an emphasis on training as its goal, and typically the analysis pretty much assumes this as a starting point.

    The system of root cause analysis is a process used to determine the underlying causes of a problem or performance gap, and what kind of intervention might be best to resolve it. Root Cause Analysis answers questions like "What's the problem? Why did it happen? and What can be done to prevent it?" It may become apparent that the best solution is something other than training, such as process improvement or redesign, or perhaps the tools used in the process made more usable.

    There are often several possible points of intervention to improve outcomes. One point which is increasingly the focus of attention is the actual point of performance of a task. This is the point where Performance Support comes in.

    Performance gaps and nature of intervention

    -- From The Use of Manual Job Aids by Health Care Providers: What Do We Know? a white paper by Elisa Knebel of The Quality Assurance Project.


     

    What is Performance Support?

    Performance Support is anything that helps you get the job done, right at the point of action. Job aids, reference cards, checklists, documentation, help systems, GPS systems, and even post-it note instructions are all examples of perfomance support. Performance support tools differ somewhat from a wiki or knowledgebase in that they are narrowly focused on the task at hand. Precisely the information that is necessary to be successful at a particular task should be within easy reach with little searching. In the right situation, performance support systems or tools can work as well or better than traditional training.
    • Planners are in our lives just before or after the challenge.
    • Sidekicks are at our side during the task.

    --[LINK]


    The role of Performance Support

    David Metalf of Tyco uses a blended Learning and Performance Support model to combine the strengths of both, as modeled in the diagram below. [LINK]

    Image

    Benefits of Performance Support

    1. Makes work simpler Performance support can take the complexity out of work processes and tools. Mobile devices that can receive up-to-date support or step-by-step procedures enables already trained workers to perform faster and more effectively.
    2. Provides High Scalability As digital data, performance support can be deployed to a few people or to thousands of learners. Using the wireless Web as well as 3G technologies updates in both content and features can be distributed quickly and securely. For example, an organization can pilot a mobile application to a small group of workers for UAT, and roll it out across the business (once it has proven itself) with relatively little additional effort.
    3. Provides a known baseline of competencies Performance support can reduce variability in the way workers perform tasks, which improves activity performance by underpinning an individual's judgment and decision-making abilities.
    4. Allows non-experts to perform closer to the level of experts Performance support can enable individuals to perform with a similar pace and limited error rates as if they were more proficient than they actually are. Performance support can enhance the competence of an employee beyond the level of their training.

    5. - from Gloria Gery: At the Moment of Need: Directly Supporting Doing, Learning, Referencing and Collaborating and Building a Performance Support Architecture. Moving Beyond Pilots [--view PPT]

    Performance support tools

    Performance support tools allow people to perform as experts without being experts. They typically give people exactly what they need when they need it, with nothing extra. They are more focused to give support for a specific task (without searching around) than a knowledgebase or wiki.

    Electronic Performance Support Systems (EPSS)

    Electronic Performance Support systems are usually online or desktop applications that are "structured to provide immediate, individualized on-line access to the full range of information, software, guidance, advice and assistance, data, images, tools, and assessment and monitoring systems to permit job performance with minimal support and intervention by others."

    --from Electronic Performance Support Systems by Gloria Gery
    Website: introduction to EPSS concepts

    Posted by ellen at 6:48 PM

    September 7, 2009

    Advanced interfaces, "Smart Ecosystems" and performance support systems in the workplace

    "A civilization without instrumentalities? Incredible." --Forbidden Planet

    Although it often seems that computers and communication devices have been growing smaller and smaller with no end in sight, for some purposes, they are still far too intrusive and unintuitive. There are many workplace scenarios where data and communication services would be very beneficial as performance support systems, but the constraints and awkwardness of existing computer interfaces would interfere with the task at hand.


    Fortunately, researchers have been working steadily for decades to make computers and communication devices nearly vanish by embedding them into our surroundings and networking them so they can sense the environment and interact with us in a manner that would integrate better with our living and working situations. 

    Early research groups developed scenarios to demonstrate the utility of these systems, which included independence support for the elderly, meeting facilitation, augmented driving and enhanced social interaction.

    History: The promise of Smart Ecosystems and Ambient Intelligence

    In 2008, the working group on Ambient Computing from the European technology consortium InterLink published a paper summarizing the state of the art in Ambient Computing, focusing on the social awareness of systems and privacy concerns.  Included in this paper are a history of projects and use-case scenarios and a description of the original vision of ubiquitous, pervasive networks based on many "invisible" small computing devices embedded into the environment. These "smart ecosystems" of devices were to provide an intuitive user experience, enabling new types of interaction, communication and collaboration:

    "...the degree of diffusion of smart devices...will result in smart ecosystems that might parallel other ecosystems in the not too far future. 
    ... a major challenge will be to orchestrate the large number of individual elements and their relationships, connect and combine them via different types of communication networks to higher level, aggregated entities and investigate their emerging behaviour."

    Similarly, an MIT project called Oxygen, working around 2000-2003, focused on Intelligent Spaces, which would sense the presence of people, their tasks, and even their attention and react appropriately, and Mobile Devices, which presaged today's smart phones to create connections to the physical world through a cluster of technologies, like cameras, sensors, networking, accelerometer, microphone, speaker, phone, GPS, etc.



    Ambient Computing Scenarios

    • Ambient Agoras (from the Disappearing Computer Initiative)
      "Ambient Agoras" was a project which aimed to provide situated services and turn everyday places into social marketplaces ('agoras') of ideas and information by using innovative Information and communication technologies and devices embedded in the home and office environments. The services would be facilitated by smart artifacts that enable users to communicate for help, guidance and fun.

      Examples of smart artifacts include the HelloWall, a wall-size (but somewhat primitive) large ambient display that communicates with a sort of flexible dot-based code based on who is nearby, the ViewPort, a mobile handheld device which can communicate with other items in the room, including the HelloWall, and a variety of telepresence devices such as the MirrorSpace and VideoProbe.



      helloWall

    • Socially Aware projects such as PERSONA, and NETCARITY which seek to reduce loneliness and isolation among the elderly by including Ambient Assisted Living technologies to maintain contacts with family and friends, provide monitoring and user-friendly access to physical services such as personal care, shopping and housecleaning, provide virtual learning and exercise sessions, and allow community work from a remote location. 

      Picture 3.jpeg

    • InterLiving, a project funded by the Disappearing Computer Initiative which aims at developing technology in a social environment that contributes to bringing family members together using interactive and intergenerational interfaces.

    • RoomWare, a set of interactive furnishings for meeting rooms, including ConnecTables and DynaWalls which allow movement of content data from screen to screen and table to table. 

    Scenarios from the MIT Oxygen project included: a business conference involving people in different countries coordinating a meeting in London using different languages and automated scheduling and travel planning, as well as navigational and data assistance once they arrive, and a "guardian angel" which allows aging-in-place by providing memory and safety support to elderly people living independently.

    Over the last decade, many of these scenarios have been at least partially realized, often through the use of device configurations not precisely forseen by the early ambient computing thinkers, such as smart-phones, GPS's, RFID's, and blue-tooth, as the market determines the dominant technologies. These configurations emphasize embedded devices less at this point and portable devices more, but the end result is the same. 

    Smart-phones bristling with  data inputs from GPS, accelerometers, networking, video cameras, microphones, keyboards, and multi-touch have accelerated the evolution of pervasive computing by allowing mashups between all of these technologies, resulting in what could be called augmented intelligence for daily living.


    Tipping points to acceptance of pervasive Performance Support Systems

    Embedded technologies would be a natural fit as performance support systems, particularly where use of a keyboard or mouse is inconvenient or impossible. Science fiction has been portraying embedded performance support systems and ambient intelligence for years in movies and TV shows like 2001 and Star Trek. In these shows, sensors and voice output are combined with overwhelming artificial intelligence to create an intelligent environmental "presence" that monitors the situation and offers support and warnings as necessary.  Somehow they always seem to understand the questioner's intent perfectly (how many search engines can do that?) and gather their own data through sensors as well as direct input.  



    Hal.jpeg



    We are still far from that paradigm, but the closer we get, the more we can use electronic assistants to help us with tasks that currently don't seem like good candidates for performance support tools using existing systems. 


    How can we tell that a workplace situation is presently NOT a good candidate for performance support tools or job aids? Some criteria were offered by Rossett and Schafer in their book Job Aids and Performance Support:

    • When use of a job aid would damage credibility 
    • When speedy performance is a priority
    • When novel and unpredictable situations are involved
    • When smooth and fluid performance is a top priority
    • When the employee lacks sufficient reading, listening, or reference skills
    • When the employee is not motivated
    As time goes on we may find that workplace situations that currently fit these criteria will no longer do so as interfaces and system intelligence improve. One example of an improved interface that made performance support possible in a high-performance situation is GPS navigation system for cars. Without these devices, it was difficult and dangerous for drivers to check directions on a map while driving, but GPS's have made it relatively safe and very easy. Because the support system talks to the driver and re-calculates the route automatically if needed it is now possible to navigate unknown roads with a GPS, while driving, without taking your attention off the road.

    This is one case where the interface and intelligence of the supporting system now actually improves performance instead of interfering with it. Because a GPS does not interfere with the driving, the criteria of speedy, smooth, fluid performance and ability to cope with novel situations have been addressed. It could be said we've reached an acceptance tipping point where it is more convenient to use a performance support system than not. There is actually a model to describe when people are likely to accept a new technology, where perceived usefulness and perceived ease-of-use are factors which influence the likelihood that a person will use the new system. 

    In healthcare, it is often easier to speak or use gestures than to use your hands to look up information, partly because healthcare workers' hands are often busy with other things, and partly because of infection-control issues. Imagine if information displays could be projected wherever needed, with no-touch operation. Data is increasingly being handled in electronic form, but the usability of these systems often lags behind their data manipulation abilities, creating a temporary and possibly dangerous gap in human performance  as well as opening up the usual opportunities afforded by the use of digital information instead of paper. All sorts of solutions are being proposed to deal with this issue, from usability improvements to novel interfaces, such as natural language processing

    Similarly, an article in Health Informatics details the development of a a gesture-controlled medical image display system for use in operating rooms. Scan imagery is used for reference during neurosurgery by gloved surgeons who cannot touch anything but the sterile field and instruments with their hands. Currently nursing personnel are utilized for this task, holding bound volumes of images up for review by the surgeons during procedures and manually finding the correct image.  Gesture-controlled interfaces were made famous by the movie Minority Report, but they are very real, and can even be constructed using commonly available components and open-source code.

    The Minority Report gestural interface

    minority report

    Tom Cruise manipulates an advanced visual display system in Minority Report.
    Image © 2002 DreamWorks LLC and Twentieth Century Fox.


    Video of the Minority Report interface in action


    The interfaces and "smart ecosystems" of tomorrow

    In a pervasive computing scenario, devices sense or communicate with people in order to provide contextually appropriate services. The interface is a key component in these scenarios since a primary goal is to make interaction with the devices as natural and intuitive as possible.  An astonishing amount of creativity and innovation is being directed at the problem of interface design and the results will be life and work-transforming.  

    Some of the more interesting modes of human-computer interaction that have been tried include directed attention, voice, gesture tracking, motion (body motion through space or motion of the device, like the Wiimote or the Siftables shown below), haptic feedback-enhanced touch, augmented reality and even brain-computer interfaces. Some of the most exciting and innovative interfaces are shown below. With devices like these, I think we'll be reaching more tipping points in the workplace very soon.

    Interactive Floor Projection Screens

    These systems project images on the floor, and use a camera to track body motion across the surface. You may be familiar with these displays from seeing them at malls and theaters, but they could be used to select files, control other devices, etc. 


    This video shows an interactive floor installation at a Japanese art gallery, showing its use as an interface for retrieving information about works of art. For more information about building this type of interface, see the Natural User Interface Group for setup instructions and code.

       


    Multitouch interfaces (like the one on the iPhone) are used in walls, tables, and smartPhones. Microsoft Surface, a multi-touch table that allows multi-user, fine-grained control of objects on screen, also interacts with real objects and other devices using cameras and wifi. This is a great example of "smart ecosystems" of intelligent devices which sense the status of the environment and lower barriers between people and their information. An example is shown transferring an image from a camera to the Surface table to a smartphone, simply by laying the camera and smartphone on the table.


    Touch Wall

    An intelligent whiteboard that uses cameras to track hand motion across a vertical display allowing zoomable, panning navigation through information in a non-linear format.


    In February, 2009, Pattie Maes of MIT demonstrated a project called "Sixth Sense" led by Pranav Mistry which uses an inexpensive wearable and projector to enable amazing interactions between the real world and the world of data. Using natural gestures to interact with any surface, users can manipulate data, view information about products, people and ideas in the world around them. Th revolutionary feature is its ability to act as a Sixth Sense for metadata of real objects, through barcode or facial or product recognition, combined with realtime feedback to the user through projection.


    Siftables are physical tiles which form a smart ecosystem for manipulating data, in which each tile can sense the nearby tiles and what is on them.  Tiles can be programmed to recognize proximity to specific types of tiles, so for instance "face" tiles can change their expressions as they move around the table, closer or farther to other faces. The possibiiities for this type of interaction with real world data represented by avatars that can react to specific attributes are endless.


    Interactive Window

    An example of intelligent devices controlling ambient lighting and mood.



    An installation in a Greek museum showing the use of novel interfaces in games.



    Sony's Revolution
    Smart tiles somewhat akin to David Merrill's concept. These tiles form a sort of object oriented grammar where one tile modifies the parameters of the subject of another tile.

    Some innovative interface ideas from TAT


    Posted by ellen at 9:51 AM