/* (C) Copyright 2000-2006, Creativyst, Inc.
 *          ALL RIGHTS RESERVED
*/

function HPopNF(name, msg)
{
    newwin = window.open('','FootNote',
                          'top=150,left=150,width=500,height=400');
    if(!newwin.opener) newwin.opener = self;

    with(newwin.document) {
        open();
        write('<html>\n\n');
        write('<title>Help: ' + name + '</title>\n');
        write('<link rel="StyleSheet" href="/Res/CSS/Base.css"\n');
        write('  type="text/css" media="screen" >\n');

        write('<body class="BasicPage"><div class="FNBody"><form name=form>\n'
            + msg
            + '<br>');
        write('<p><center><input type="button" '
          + 'value="Click to close when finished" onClick="window.close();">'
        );
        write('</center></form></div></body></html>\n');

    }
    newwin.focus();
    newwin.document.close();
}


function FN01()
{
    var msg = '';

msg = 'Note 1<p>\n';
msg += ' <strong>Real-time</strong> - For the purposes of this ';
msg += 'discussion the difference between real-time and <em>not</em> ';
msg += 'real-time are almost exactly analogous to the difference ';
msg += 'between instant messaging and forum messaging.  ';
msg += 'Instant messaging or verbal discussion <em>are</em> real-time, ';
msg += 'requiring participants to occupy the same point in time '; 
msg += 'in order to exchange information.  On the other hand forum ';
msg += 'messaging or written plans are <em>outside</em> of real time, ';
msg += 'freeing all participants to read and comment on the ';
msg += 'information at whatever time is most convenient for them. '; 

    HPopNF('Note #1', msg);
}
function FN02()
{
    var msg = '';

msg = 'Note 2<p>\n';
msg += ' <strong>Stack interactions with recursion</strong> -  ';
msg += 'On some projects I\'ve done, the same people who pepper '; 
msg += 'the code with pointer bombs were also likely to make ';
msg += 'mistakes with recursion that blow up the stack.  These ';
msg += 'have much the same effect on code stability as pointer ';
msg += 'mistakes in that the code will seem to run just fine for ';
msg += 'a couple of hours or even a couple of days before ';
msg += 'crashing (usually just long enough to do a demo for the ';
msg += 'executives).  But the odds will &quot;usually&quot; catch ';
msg += 'up and it will crash. <p> Unlike pointer bombs, these are ';
msg += 'difficult to find with a simple code review and don\'t ';
msg += 'lend themselves to using the debugger or other ';
msg += 'automation.  They usually involve un-rewound recursion ';
msg += 'that is spread over three or more functions (often dipping ';
msg += 'down into system calls).  A weak ';
msg += 'indicator that this might be happening is if you see ';
msg += 'large stack size settings as part of the make.  That is often ';
msg += 'called for, but it could also be an indicator that people ';
msg += 'are tweaking around the edges in order to get the project ';
msg += 'through meeting demonstrations without crashing.';

    HPopNF('Note #2', msg);
}
function FN03()
{
    var msg = '';

msg = 'Note 3<p>\n'
msg += ' <strong>Specific mechanisms</strong> -  If you\'re ';
msg += ' going to formally allow programmers to limit access, ';
msg += ' giving them time for which they have nearly complete ';
msg += ' control over interruptions, then it might also be wise to ';
msg += ' specifically set aside some times when they <em>can</em> ';
msg += ' be interrupted.  Doing this will coordinate those times, ';
msg += ' mainly so that interruptible time occurs at the same time ';
msg += ' for everyone.  Formally planning common, synchronized ';
msg += ' times when all are free to interrupt others may also help ';
msg += ' protect and strengthen their ability to limit ';
msg += ' interruptions during Do-Not-Disturb time.';

    HPopNF('Note #3', msg);
}


