Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
|''Type:''|file|
|''URL:''|file://C:\Documents and Settings\ks2715\Desktop\Rafiki Cai\blog tools\LIVE\rafikicai.html|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
The name Rafiki Cai is know around the world, and is associated with some of the most visionary and innovative thinking in 'organic technology'*. Organic technology is when resources such as programming, digital infrastructure and various wireless formats are aimed squarely at the service of life, the lifting of the Highest Good.
It is no surprise that Cai would be a mover and leader in this movement. He hails from four generations of ministers/orators. He spent six years in pulpit ministry, and ten years in social work, before coming a full-time technologist. The journey from pulpiteer to programmer make appear discordant to many. Explains the author "I simply purse the principle of my spiritual gospel, through the empowerment work of my digital gospel."
From Hollywood to Wall Street to Capitol Hill, celebrities, leaders and organizations have trusted Cai as their consultant. His list of clients, past and present, include the likes of California State University. Rev. Jesse Jackson, Tavis Smiley, and the Congressional Black Caucus Foundation. He has contributed to various media outlets in print and radio; including the National Newspaper Publishers wire, and Black Enterprise Magazine.
Born on the south side of Chicago, IL,and with firm family roots in Montclair, NJ.; his educational path has woven through some of the finest universities, including the University of Illinois and Rutgers University. He is the proud father of one daughter, herself a co-ed at St. Johns University - New York. Having lived and traveled the world, he now calls Las Vegas, NV home.
/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
*{{{((text to annotate(annotation goes here)}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)}}}
!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))
***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");
// %/
// show/hide display option (default is to SHOW breadcrumbs)
if (config.options.chkShowBreadcrumbs==undefined)
config.options.chkShowBreadcrumbs=true;
// REORDER breadcrumbs when visiting previously viewed tiddler (default is to TRIM breadcrumbs)
if (config.options.chkReorderBreadcrumbs==undefined)
config.options.chkReorderBreadcrumbs=false;
// create default breadcrumbs display as needed (default is to CREATE)
if (config.options.chkCreateDefaultBreadcrumbs==undefined)
config.options.chkCreateDefaultBreadcrumbs=true;
// show breadcrumbs for 'startup' tiddlers (default is FALSE = only show crumbs for tiddlers opened after startup)
if (config.options.chkShowStartupBreadcrumbs==undefined)
config.options.chkShowStartupBreadcrumbs=false;
config.macros.breadcrumbs = {
crumbs: [], // the list of current breadcrumbs
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
area.setAttribute("homeSep",params[0]?params[0]:this.homeSeparator); // custom home separator
area.setAttribute("crumbSep",params[1]?params[1]:this.crumbSeparator); // custom crumb separator
this.render(area);
},
add: function (title) { // ELS: changed from passing event, "e", to passing tiddler title
var thisCrumb = "[[" + title + "]]";
var ind = this.crumbs.indexOf(thisCrumb);
if(ind === -1)
this.crumbs.push(thisCrumb);
else if (config.options.chkReorderBreadcrumbs)
this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
else
this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
this.refresh();
return false;
},
getAreas: function() {
var crumbAreas=[];
// find all DIVs with classname=="breadCrumbs"
// Note: use try/catch to avoid "Bad NPObject as private data" fatal error caused when
// embedded QuickTime player element is accessed by hasClass() function.
var all=document.getElementsByTagName("*");
for (var i=0; i<all.length; i++)
try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
// find single DIV w/fixed ID (backward compatibility)
var byID=document.getElementById("breadCrumbs")
if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) { // no existing crumbs display areas... create one...
var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
defaultArea.style.display= "none";
var targetArea= document.getElementById("tiddlerDisplay");
targetArea.parentNode.insertBefore(defaultArea,targetArea);
crumbAreas.push(defaultArea);
}
return crumbAreas;
},
refresh: function() {
var crumbAreas=this.getAreas();
for (var i=0; i<crumbAreas.length; i++) {
crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
removeChildren(crumbAreas[i]);
this.render(crumbAreas[i]);
}
},
render: function(here) {
createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
for (c=0; c<this.crumbs.length; c++)
if (!store.tiddlerExists(this.crumbs[c].replace(/\[\[/,'').replace(/\]\]/,'')))
this.crumbs.splice(c,1); // remove non-existing tiddler from crumbs
var homeSep=here.getAttribute("homeSep"); if (!homeSep) homeSep=this.homeSeparator;
var crumbSep=here.getAttribute("crumbSep"); if (!crumbSep) crumbSep=this.crumbSeparator;
wikify(homeSep+this.crumbs.join(crumbSep),here);
},
home: function() {
story.closeAllTiddlers();
restart();
config.macros.breadcrumbs.crumbs = [];
var crumbAreas=config.macros.breadcrumbs.getAreas();
for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
return false;
}
};
if (config.macros.breadcrumbs.homeSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.homeSeparator=" | ";
if (config.macros.breadcrumbs.crumbSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.crumbSeparator=" > ";
config.commands.previousTiddler = {
text: 'back',
tooltip: 'view the previous tiddler',
hideReadOnly: false,
dateFormat: 'DDD, MMM DDth YYYY hh:0mm:0ss',
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2].replace(/\[\[/,'').replace(/\]\]/,'');
story.displayTiddler(here,crumb);
}
else
config.macros.breadcrumbs.home();
return false;
}
};
config.macros.previousTiddler= {
label: 'back',
prompt: 'view the previous tiddler',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var label=params.shift(); if (!label) label=this.label;
var prompt=params.shift(); if (!prompt) prompt=this.prompt;
createTiddlyButton(place,label,prompt,function() {
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2].replace(/\[\[/,'').replace(/\]\]/,'');
story.displayTiddler(place,crumb);
}
else
config.macros.breadcrumbs.home();
});
}
}
// hijack story.displayTiddler() so crumbs can be refreshed when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
// if not displaying tiddler during document startup, then add it to the breadcrumbs
// note: 'startingUp' flag is a global, set/reset by the core init() function
if (!startingUp || config.options.chkShowStartupBreadcrumbs) config.macros.breadcrumbs.add(title);
}
// hijack store.removeTiddler() so crumbs can be refreshed when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function(title)
{
this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
config.macros.breadcrumbs.refresh();
}
config.options.chkSinglePageMode=true;
/***
|Name|CoreTweaks|
|Source|http://www.TiddlyTools.com/#CoreTweaks|
|Version|n/a|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2.4|
|Type|plugin|
|Requires||
|Overrides|various|
|Description|a small collection of overrides to TW core functions|
This tiddler contains some quick tweaks and modifications to TW core functions to provide minor changes in standard features or behavior. It is hoped that some of these tweaks may be incorporated into later versions of the TW core, so that these adjustments will be available without needing these add-on definitions. ''Note: the changes contained in this tiddler are generally applicable for the current version of TiddlyWiki (<<version>>). Please view [[CoreTweaksArchive]] for tweaks and modifications that may be used with earlier versions of TiddlyWiki.''
To install //all// of these tweaks, import (or copy/paste) this tiddler into your document. To include only //some// of the tweaks, you can edit the imported tiddler to remove the tweaks that you don't want. Alternatively, you could copy/paste a few selected tweaks from this tiddler into a tiddler that you create in your own document. Be certain to tag that tiddler with<<tag systemConfig>> (i.e., a plugin tiddler) and then save-and-reload for the tweaks to take effect.
***/
// // {{groupbox small{
// // http://trac.tiddlywiki.org/report - TICKET NOT SUBMITTED YET
// //
// // This tweak hijacks the standard browser function, document.getElementById(), to work-around the case-INsensitivity error in Internet Explorer (all versions up to and including IE7) //''Note: This tweak is only applied when using IE, and only for lookups of rendered tiddler elements within the containing "tiddlerDisplay" element.''//
//{{{
if (config.browser.isIE) {
document.coreTweaks_coreGetElementById=document.getElementById;
document.getElementById=function(id) {
var e=document.coreTweaks_coreGetElementById(id);
if (!e || !e.parentNode || e.parentNode.id!="tiddlerDisplay") return e;
for (var i=0; i<e.parentNode.childNodes.length; i++)
if (id==e.parentNode.childNodes[i].id) return e.parentNode.childNodes[i];
return null;
};
}
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/42 - patch submitted for release in TW2.3.1
// //
// // This tweak adjusts the left position of a TW popup so that it won't overlap with the browser window's vertical scrollbar, when present.
//{{{
Popup.place = function(root,popup,offset)
{
if(!offset) var offset = {x:0, y:0};
var rootLeft = findPosX(root);
var rootTop = findPosY(root);
var rootHeight = root.offsetHeight;
var popupLeft = rootLeft + offset.x;
var popupTop = rootTop + rootHeight + offset.y;
var winWidth = findWindowWidth();
if(popup.offsetWidth > winWidth*0.75)
popup.style.width = winWidth*0.75 + "px";
var popupWidth = popup.offsetWidth;
// ELS: leave space for vertical scrollbar
var scrollWidth=winWidth-document.body.offsetWidth;
if(popupLeft+popupWidth > winWidth-scrollWidth-1)
popupLeft = winWidth-popupWidth-scrollWidth-1;
popup.style.left = popupLeft + "px";
popup.style.top = popupTop + "px";
popup.style.display = "block";
};
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/470 - OPEN
// //
// // This tweak lets you set an alternative initial focus field when editing a tiddler (default field is "text")
// // Enter initial focus field name: <<option txtEditorFocus>> (//usage:// {{{<<option txtEditorFocus>>}}})
//{{{
config.commands.editTiddler.coreTweaks_handler = config.commands.editTiddler.handler;
config.commands.editTiddler.handler = function(event,src,title)
{
if (config.options.txtEditorFocus==undefined) config.options.txtEditorFocus="text";
this.coreTweaks_handler.apply(this,arguments);
story.focusTiddler(title,config.options.txtEditorFocus);
return false;
};
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/444 - OPEN
// //
// // When invoking a macro, this tweak makes the current containing tiddler object and DOM rendering location available as a global variables (window.tiddler and window.place, respectively). These globals can then be used within "computed macro parameters" to retrieve tiddler-relative and/or DOM-relative values or perform tiddler-specific side-effect functionality.
//{{{
window.coreTweaks_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
var here=story.findContainingTiddler(place);
window.tiddler=here?store.getTiddler(here.getAttribute("tiddler")):null;
window.place=place;
window.coreTweaks_invokeMacro.apply(this,arguments);
}
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/401 - OPEN
// //
// // This tweak allows definition of an optional [[PageTitle]] tiddler that, when present, provides alternative text for display in the browser window's titlebar, instead of using the combined text content from [[SiteTitle]] and [[SiteSubtitle]] (which will still be displayed as usual in the TiddlyWiki document header area)
//{{{
window.coreTweaks_getPageTitle=window.getPageTitle;
window.getPageTitle=function() {
var txt=wikifyPlain("PageTitle"); if (txt.length) return txt;
return window.coreTweaks_getPageTitle.apply(this,arguments);
}
store.addNotification("PageTitle",refreshPageTitle); // so title stays in sync with tiddler changes
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/468 - patch submitted for release in TW2.3.1
// //
// // This tweak extends the core's {{{<<tag>>}}} macro to accept additional parameters for specifying alternative label and tooltip text for the tag popup "button" link (i.e., "`PrettyTags"). Based on a suggestion by ~PBee.
//{{{
// hijack tag handler()
config.macros.tag.CoreTweaks_handler=config.macros.tag.handler;
config.macros.tag.handler = function(place,macroName,params)
{
this.CoreTweaks_handler.apply(this,arguments);
var btn=place.lastChild;
if (params[1]) btn.innerHTML=params[1];
if (params[2]) btn.title=params[2];
}
//}}}
// // }}}
// // {{groupbox small{
// // http://trac.tiddlywiki.org/ticket/471 - OPEN
// //
// // This tweak HIJACKS the core's saveTiddler() function to automatically add a "creator" field to a tiddler when it is FIRST created. You can use {{{<<view creator>>}}} (or {{{<<view creator wikified>>}}} if you prefer) to show this value embedded directly within the tiddler content, or {{{<span macro="view creator"></span>}}} in the ViewTemplate and/or EditTemplate to display the creator value in each tiddler. Note: by default, this tweak only adds the "creator" field to newly created tiddlers. However, if you edit an existing tiddler that doesn't have a creator field defined, you can still force this tweak to add the missing "creator" field by enabling the following configuration checkbox:
// //
// // ''<<option chkForceCreatorField>> add missing "creator" fields when editing existing tiddlers''
// // //usage:// {{{<<option chkForceCreatorField>>}}}
//{{{
// hijack saveTiddler()
if (config.options.chkForceCreatorField==undefined) config.options.chkForceCreatorField=false;
TiddlyWiki.prototype.CoreTweaks_creatorSaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
var existing=store.tiddlerExists(title);
var tiddler=this.CoreTweaks_creatorSaveTiddler.apply(this,arguments);
if (!existing || (config.options.chkForceCreatorField && !store.getValue(title,"creator")))
store.setValue(title,"creator",config.options.txtUserName);
return tiddler; // ELS 12/21/07
}
//}}}
// // }}}
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/458 - patch submitted for release in TW2.3.1
This tweak assigns a "permalink"-like HREF to internal Tiddler links (which normally do not have any HREF defined). This permits the link's context menu (right-click) to include 'open link in another window/tab' command. Based on a request from Dustin Spicuzza.
***/
//{{{
window.coreTweaks_createTiddlyLink=window.createTiddlyLink;
window.createTiddlyLink=function(place,title,includeText,theClass,isStatic,linkedFromTiddler,noToggle)
{
// create the core button, then add the HREF (to internal links only)
var link=window.coreTweaks_createTiddlyLink.apply(this,arguments);
if (!isStatic) link.href=document.location.href.split("#")[0]+"#"+encodeURIComponent("[["+title+"]]");
return link;
}
//}}}
// // }}}
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/67 - OPEN
missing links list includes items contained within "quoted" text (i.e., content that will not render as wiki-syntax, and so CANNOT create any tiddler links, even if the quoted text matches valid link syntax)
FIX: remove content contained between certain delimiters before scanning tiddler source for possible links.
Delimiters include:
{{{
/%...%/
{{{...}}}
"""..."""
<nowiki>...</nowiki>
<html>...</html>
<script>...</script>
}}}
***/
//{{{
Tiddler.prototype.coreTweaks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
var savedtext=this.text;
// remove 'quoted' text before scanning tiddler source
this.text=this.text.replace(/\/%((?:.|\n)*?)%\//g,""); // /%...%/
this.text=this.text.replace(/\{{3}((?:.|\n)*?)\}{3}/g,""); // {{{...}}}
this.text=this.text.replace(/"{3}((?:.|\n)*?)"{3}/g,""); // """..."""
this.text=this.text.replace(/\<nowiki\>((?:.|\n)*?)\<\/nowiki\>/g,""); // <nowiki>...</nowiki>
this.text=this.text.replace(/\<html\>((?:.|\n)*?)\<\/html\>/g,""); // <html>...</html>
this.text=this.text.replace(/\<script((?:.|\n)*?)\<\/script\>/g,""); // <script>...</script>
this.coreTweaks_changed.apply(this,arguments);
// restore quoted text to tiddler source
this.text=savedtext;
};
//}}}
// // }}}
// // {{groupbox small{
// // This tweak adds URL paramifier handlers for "hide:elementID" and "show:elementID". This is useful for forcing the display state of specific TW page elements, without requiring StyleSheet changes. For example, if your customized StyleSheet hides the sidebar (useful for 'read only' published documents), you can force it to display when you need to edit the document by adding {{{#show:sidebar}}} to the document URL. Alternatively, you might want to supress non-tiddler content when printing by hiding the sidebars and header (e.g., {{{#hide:mainMenu hide:sidebar hide:header}}})
//{{{
if (config.paramifiers) { // check for backward-compatibility
config.paramifiers.hide = { onstart: function(id) { var e=document.getElementById(id); if (e) e.style.display="none"; } };
config.paramifiers.show = { onstart: function(id) { var e=document.getElementById(id); if (e) e.style.display="block"; } };
}
//}}}
// // }}}
// // {{groupbox small{
// // This HIJACK tweak pre-processes source content to convert "double-backslash-newline" into {{{<br>}}} before wikify(), so that literal newlines can be embedded in line-mode wiki syntax (e.g., tables, bullets, etc.). Based on a suggestion from Sitaram Chamarty.
//{{{
window.coreWikify = wikify;
window.wikify = function(source,output,highlightRegExp,tiddler)
{
if (source) arguments[0]=source.replace(/\\\\\n/mg,"<br>");
coreWikify.apply(this,arguments);
}
//}}}
// // }}}
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};
//--
//-- Crypto functions and associated conversion routines
//--
// Crypto "namespace"
function Crypto() {}
// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
var be = Array();
var len = Math.floor(str.length/4);
var i, j;
for(i=0, j=0; i<len; i++, j+=4) {
be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
}
while (j<str.length) {
be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
j++;
}
return be;
};
// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
var str = "";
for(var i=0;i<be.length*32;i+=8)
str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
return str;
};
// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
var hex = "0123456789ABCDEF";
var str = "";
for(var i=0;i<be.length*4;i++)
str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
return str;
};
// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
return Crypto.be32sToHex(Crypto.sha1Str(str));
};
// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};
// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
// Add 32-bit integers, wrapping at 32 bits
add32 = function(a,b)
{
var lsw = (a&0xFFFF)+(b&0xFFFF);
var msw = (a>>16)+(b>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Add five 32-bit integers, wrapping at 32 bits
add32x5 = function(a,b,c,d,e)
{
var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Bitwise rotate left a 32-bit integer by 1 bit
rol32 = function(n)
{
return (n>>>31)|(n<<1);
};
var len = blen*8;
// Append padding so length in bits is 448 mod 512
x[len>>5] |= 0x80 << (24-len%32);
// Append length
x[((len+64>>9)<<4)+15] = len;
var w = Array(80);
var k1 = 0x5A827999;
var k2 = 0x6ED9EBA1;
var k3 = 0x8F1BBCDC;
var k4 = 0xCA62C1D6;
var h0 = 0x67452301;
var h1 = 0xEFCDAB89;
var h2 = 0x98BADCFE;
var h3 = 0x10325476;
var h4 = 0xC3D2E1F0;
for(var i=0;i<x.length;i+=16) {
var j,t;
var a = h0;
var b = h1;
var c = h2;
var d = h3;
var e = h4;
for(j = 0;j<16;j++) {
w[j] = x[i+j];
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=16;j<20;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=20;j<40;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=40;j<60;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=60;j<80;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
h0 = add32(h0,a);
h1 = add32(h1,b);
h2 = add32(h2,c);
h3 = add32(h3,d);
h4 = add32(h4,e);
}
return Array(h0,h1,h2,h3,h4);
};
}
//}}}
|sortable|k
|''SUPER DELEGATES'' |''CLINTON'' |''OBAMA'' |''UNCOMMITTED''|h
|''All'' |''249'' |''211'' |''260'' |
|''Add Ons'' |0|1 |0 |
|''Congressional'' |1 |2 |1 |
|''DNC'' |144 |109 |147 |
|''Governors'' |9 |11 |10 |
|''Party Leaders''|10 |4 |5 |
|''Representatives'' |72 |69 |77 |
|''Senators'' |13 |15 |20 |
''As of Monday, March 17, 2008''
<br/>In the pages of this ''Delegate Watch'', we'll work to keep an eye on how the sentiment of //''super delegates''// tend to shift.<br/><br/>We will also be adding a complete //''super delegate wiki''//, where we'll have a page for each of the expected over 800 delegates. We'll institute a comment feature, so that you can help us maintain accurate public information on these important //mover shakers//.
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
config.options.txtUserName = "Digital Doctor"
[>img[farrakhan.jpg]]''Politics Is An Art Of Relationships'', and a science of denunciation. Its a matter not only of who you endorse, or take as ally. Its also the company you are not allowed to keep, or associate with. We are in the age of '//reject and denounce//'.
When Minister Louis Farrakhan, lead of the Nation of Islam, released a letter of support and endorsement for the Obama candidacy, many of us with cringed. We had been down this road before, during the Jesse Jackson presidential campaigns. Jackson was forcefully called upon to repudiate Farrakhan. Although he publicly distanced himself, his retort was "That is not necessary."
There are many threads woven into this particular issue. For sure a major one is Farrakhan's vehement pronouncements against Zionism, and what he deems as undue Jewish influence in American and world affairs. Many have taken his positions to be anti-Semitic, including Barack Obama.
''Relationship Analysis Runs Shallow'', for certainly a close examination of America's past and present friends show murderous dictators and butchers amongst them. Where, in such instances, is the super sensitivity to principle and value of life. Farrakhan's rhetoric surely can seen as inflammatory, and even in instances irresponsible. Yet it has never led to the loss of life, or the wholesale bombing of a people; as we see in Iraq and that is indirectly aimed at Iran.[[continue|Farrakhan Factor pg2]]
Should Barack Obama become president, I trust that Hillary Clinton and others will rush to urge him to denounce not only anti-Antisemitism but wholesale devaluation of life in general.
''Denouncement Is Not Resolution.'' It is not hallmark leadership, to simply demand that some one denounce an indirect or implied association. That hardly unearths the problem at hand. Can Clinton, Obama, Limbaugh and others with influential public microphones call for earnest dialogue. Can Jews and African Americans get in the same room? Can courses be jointly developed? Can hard issues be faced and thorny matters be sorted out?
Unfortunately, on matters of race this is not our nation's history. We too often opt for the cosmetic cover-up: the verbal salve. Speeches, periodic commissions, even a holiday can be forthcoming; but rarely a nitty-gritty engagement approaching South Africa's Truth and Reconciliation effort. Hurricane Katrina stands as evidence of this.
If we're to have a 'politics of change', or if we're to 'go a different way' , then let us begin now. Let's stop with the angles of alienation, and begin with more demanding efforts. Like any man, for example our current President, Farrakhan is with flaw and imperfection. However, within the Black community he is respected and even revered by many. To call for his public denouncement hardly shows understanding of, or appreciation for, the complexity of this reality. In fact, it smacks of a paternalism and arrogance at worst; and shallowness at the least.
[>img[obama_wright.jpg]]The Obama campaign is facing one of its first major explosions, resulting from the classically combustible mixture of religion, patriotism and politics. Major media outlets (i.e., ABC, Fox, CNN) are highlighting incendiary statements, made from the pulpit, by Rev. Jeremiah Wright. The scrutiny, in turn, is raising questions around the true beliefs and sentiments of Barack and Michelle Obama.
God and America. Race and Justice. Interests and Politics. For centuries, the greatest souls, minds and voices have confronted these theme. Truth and Tubman. Emerson and Thoreau. Douglass and Garnett. Stowe and Stone. Dubois and Thurman. King and West.
Obama is indirectly facing a dilemma familiar to Dr. King, and one that many would say quickened his demise; that is the danger of criticizing America, and particularly her exploits abroad. Our nation seems to be blindly bent on the singing of //God Bless America//, with no concern or acknowledgment of our transgressions and outright evils. [[continue|God & Patriotism pg2]]
Was the earlier phases of this presidential race a honeymoon? Are W.E.B. Dubois' words yet prophetic? Is the issue of even the 21st century still the 'color line'; and with it the issues of supremacy, past injustice not fully righted and current injustice fully alive but disguised?
The father of Black Theology, Rev. Dr. James Cone, a towering voice in a time that seems eons ago, spoke recently: "“If you’re black, it’s hard to say what you truly think and not upset white people,” Do Cones' words sum up the inescapable conundrum? Are the black and white experience and perspective irreconcilable? Or has the nation developed a maturity, and courage, to confront hard issues of race? Or were previous primaries a fanciful illusion? Were the statements of Rev. Wright appropriate and instructive?
!''"Afflict the Comfortable. Comfort The Afflicted."'' ''"Pray For, Do Not Damn The Comfortable."'' (Two Different Reads of Scripture)
An Anderson Cooper segment on the Wright-gate issue, perhaps offers at least reflection on some of these questions. Present on the panel was a representative from the Family Research Council (FRC), who represented the conservative view within the group. He described Rev Wright's pronouncements as 'unscriptural', and felt that the Christian way was to pray for America and not call damnation on it.
Interviewed by CNN's Roland Martin for the segment, was the new pastor of Trinity United Church of Christ, where Barack and Michelle Obama have worshiped for some twenty years, Rev. Otis Moss III. Rev. Moss' perspective was that the Christian is called to 'afflict the comfortable, and comfort the afflicted'; and that to do so is not necessarily unpatriotic. He pointed out that Rev. Wright had served in the U.S. military as a Marine, and that he actually had been a nurse to the late President Lyndon B. Johnson. This take was quite a contrast to the FRC panelist. [[continue|God & Patriotism pg3]]
''United Church of Christ Torn Like The Nation''
At first it was hard to tell whether the Wright-gate incident was pure media hoopla and political machinations, or whether Americans really cared about the sound bites being endlessly put before them. A trip to the United Church of Christ (of which Trinity is the largest congregation) gave interesting insight on that matter.
There was clear and unequivocal praise offered, from UCC national leadership, for Wright and the Trinity congregation. Yet, on the websites comment board, not all parishioners (or site visitors) were offering verbal roses. Some of the remarks were stunning, and were shocking in terms of the sharply contrasting viewpoints.
''So Where Does Hope Go From Here?''
Pundits say that the Obama campaign is wounded from this fallout, and that indeed the nomination bid could even be derailed. The question is being asked: will this hurt the Obama campaign in Pennsylvania? The coming weeks will hold the answers. Whatever they turn out to be, will hinge around the actions of the machinations of politics, and the actions of ordinary people. The outcome will be telling, concern where our nation really finds itself on the question of race.
<html>
<div class="portal">
<div align="center"><strong><span
class="h1">"Hope is that thing inside <br />
us that insists despite<br />
all evidence to the contrary
<br />
that something better <br />
<l>awaits us; if we have<i/><br />
the courage to reach for it, <br />
and to work for it, <br />
and to fight for it." </span><br />
<br />
<span class="style2">Senator Barack Obama<br/> (Iowa Caucus
Night) </span></strong></div>
</div>
</html>
''Why Is A Technologist Writing About The Stimulus Package?''
That may be the very first question to mind, after having read the 'About The Author' blurb. In short, the answer is 'because its where the money is'. At least $168 billion, that will be placed directly into the hands of everyday people; within a few months.
For me the quest in life is always this: how to help everyday people change or better their lives, and in doing so convince them that they can help change or better the world. My motivation is not some sense of 'self-sacrifice', or vow of service through poverty. Quite to the contrary. One can do good and meaningful work, and be justly compensated for creating and delivering such value.
I am convinced, that amongst knowledge, resources and relationships are some seeds of wealth that can help some rebate recipients . I want to share those seeds, and ideas for growing them. Thus I am writing this booklet.
''Everything We Need We Already Have''
A valued colleague of mine is Secretary of Health and Human Services, for a mid western state. She is a fiery and devoted public servant; and in great part because of the wisdom of her mother. An example of such are the words: //everything we need we already have//. Dr. Adams shared that jewel with me several years ago. It stuck and has been a beacon light for me every since.
In full context, $168 billion is 1/100th of a percent of the $13 U.S. trillion economy. It is only 1/3 of what the 'war on terror' has already cost in finances alone. In the grand scheme of things it is not a game breaking amount. However, in that sum are some seeds; that can address some needs. In doing so, they are 'seeds of change'. That is why I am writing this booklet.
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/
//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};
config.formatters.push(
{
name: "legacyStrikeByChar",
match: "==",
termRegExp: /(==)/mg,
element: "strike",
handler: config.formatterHelpers.createElementAndWikify
});
} //# end of "install only once"
//}}}
//{{{
Story.prototype.tiddlerHistory= [9];
Story.prototype.maxTiddlers = 1;
Story.prototype.closedHistory=[9];
Story.prototype.closedHistoryMax = 10;
Array.prototype.moveToEnd = function(item)
{
this.remove(item);
this.push(item);
}
Story.prototype.old_history_displayTiddler = Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
this.tiddlerHistory.moveToEnd(title);
this.closedHistory.remove(title);
var closeCount = this.tiddlerHistory.length - this.maxTiddlers;
if (closeCount > 0)
{
var count = this.tiddlerHistory.splice (0,closeCount);
for (var i=0; i<count.length;i++)
{
story.closeTiddler(count[i],false);
}
}
story.old_history_displayTiddler(null,title,template,animate,slowly);
}
Story.prototype.old_history_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,slowly)
{
this.tiddlerHistory.remove(title);
this.closedHistory.remove(title);
this.closedHistory.unshift(title);
story.old_history_closeTiddler.apply(this,arguments);
}
Story.prototype.displayTiddlers = function(srcElement,titles,template,animate,slowly)
{
for(var t = titles.length-1;t>=0;t--)
{
this.tiddlerHistory.moveToEnd(titles[t]);
this.closedHistory.remove(titles[t]);
this.old_history_displayTiddler(srcElement,titles[t],template,animate,slowly);
}
}
config.commands.history={
text: "history",
tooltip: "re-open a closed tiddler"};
config.commands.history.handler = function(event,src,title)
{
var popup = Popup.create(src);
if(popup)
{
if (!story.closedHistory.length)
createTiddlyText(popup,"No history");
else
{
var c = Math.min(story.closedHistory.length,story.closedHistoryMax);
for (i=0; i<c;i++ )
{
createTiddlyLink(createTiddlyElement(popup,"li"),story.closedHistory[i],true);
}
}
}
Popup.show(popup,false);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
//}}}
<<tabs txtMainTab
"1" "Vol 1" 'Menu 1'
"2" "Vol 2" 'Menu 2'
"3" "Vol 3" 'Menu 3'
"4" "Vol 4" 'Menu 4: Prerequisites'>>
<<search>>
<<toolbar permalink>>
<<newJournal>>
<<breadcrumbs "<br>" "<br>">>
''Volume One''
[[Hope Is]]
[[More Than A Man|More Than A Man: Its A Storm]]
[[Farrakhan Factor]]
[[Obama = Reconcile?]]
[[Super Delegates]]
[[Obama's Mama]]
[[God & Patriotism]]
[[The Republicrat Effect]]
[[Youth Vote Triples]]
[[Delegate Watch]]
{{whiteOnBlue{[[The Race Speech]]}}}
''Volume Two''
[[Minnesota Minute]]
[[Palin Problem]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[]]
[[l]]
''Obama and [[McCain]] In Dead Heat In Minnesota''
A Star Tribune Minnesota poll shows Obama and [[McCain]], in a dead heat at 45% each. That wouldn't necessarily be rattling news, in a race that nationally has been tight all along. What has Obama supporters reaching for their rosary beads, candles, or other talismans, is that just four months ago Obama enjoyed a thirteen point lead in Minnesota. (A similar 18 point lead in New York- in June, has dwindled to 5 points;
Of course, the knee jerk inference to make is the 'Palin Effect' is the reason. However, this recent poll showed the PE being about a wash. 30% of respondents said that Palin influenced their Republican support, while 26% said her presence in the race fueled their Democratic support.
[[McCain]] has grown his support among "whites, young voters and all levels of household income and education"; and most decidedly amongst white men. Hmmm
''Is The Bradley Effect Kicking In Earlier and More Boldly''
Veteran political observers have seen 'disappearing lead' trends before, when a Black candidate is a part of the equation; and there is no scandal or other catastrophe involved. They saw it when legendary Tom Bradley ran for governor of California; and to a lesser extent when L. Douglas Wilder squeaked out a half-percentage point victory, though polls had shown him with a 9 point lead going into election day.
Explanation? Expected voters, when polled, mask their true intent; in order not to appear racially biased. Thus, when they are in the polling booth they act contrary to what they may have told pollsters.
''Palin Speeds Up, Emboldens The Bradley Effect''
The daring and in your face nature of Palin's personality, and even her nomination itself, may surely be affording some voters the confidence to emerge from the shadows. No need to cloak in the privacy of the voting booth, with the Palin Parasol affording plenty of shade and comfort right out in the open.
[>img[obama1.jpg]]''It Takes More Than A Man''
I received a correspondence, from the Obama campaign; and in it was reference to the making of a 1,000,000 calls before the important March 4th primary. At the core of this effort was a well organized Online Phonebank, which informed and coordinated the effort of hundreds of volunteers. I used this an an example, to illustrate to a close colleague; that this //Storm of Hope//, which is moving and growing, consists of far more than just a man.
''Conditions, Convergence and Clouds''
Meteorologists will tell you that storms develop when a system of low pressure has a system of high pressure form around it. The concurrence of these two forces can manifest strong winds, thunder, lightning and down pour of one form or another. Politically speaking there have been low pressures in Washington, for some eight years; and now high pressures (some would say high hopes) are forming around those low ones.
In the skies of eleven electorates, strong winds blew and it rained votes; washing away some political walls and barriers. Moving on toward late summer, it would be wise to watch the weather reports; especially in the greater Denver area. Do not be surprised if you hear of not only thunder and lightning at times, but the persistent falling of hail as well.
Over the last couple of days, major mainstream outlets (Bloomberg and WSJ) have run interesting articles on Obama, and his presidential bid. I was sent the WSJ article, under an e-mail heading: ''Can Obama Be Trusted To Be Caretaker of America's White Supremacy Tradition?'' (NOTE: That was not the title of the WSJ article, which was titled //Obama and The Minister//.)
The email heading a serious mouth full, but does race a raw question. It is sheer fact, while unsettling to many, that America's dominant position in the world is not had by grace and goodness alone. Hegemony, exploitation, war, racism, irrationality and unbridled greed are some of the horses that pull this national chariot we all hitch a ride in.
Obama's pastor, Rev. Jeremiah Wright, of Trinity United Church of Christ, stands in a certain prophetic tradition; that of speaking boldly about such matters. Its a long and ancient calling, which has fallen far out of vogue of late. Prophetic voices generally do not win popularity contests. To the contrary. They're generally silenced. Permanently. King. Ghandi (Mahatma and Indira). Sadat.Lindh.
Should Obama become president, yes he does inherit a ball of wax: past, present and future. The interests of multi-nationals, a military industrial complex, oil barons, the demands of ever increasing quarterly profits; and much of it hinging on maintaining disparities of some sort. Gender. Race. Labor. Geography. What can one man possibly do about all of this? [[continue|Obama = Reconcile? pg2]]
The best that a President Obama can do, is pick battles; decide where progress can be made; and be true to his campaign message of hope and reform. Much more is up to us, and others around the world. We're pinning our hopes and visions on the shoulders of Barack Obama; but our work only begins with getting him elected. He then becomes a figure head, a symbol. We must infuse real force behind him; much the way that Lech Walesa experienced in Poland, the Dali Lama experiences amongst Tibetans (and the world), and the way Oprah experiences amongst her Angels (and the world).
Movements are of the people, not the leader placed in front of them. Real movement, it must be underscored, begins in the mirror: the individual and collective one. That email heading could've easily read: how will America confront its legacy of supremacy, under an Obama presidency? America is you and I. Are we ready to really question, and explore, our position of privilege, dominance and greed in the world? Yes, our collective greed for the world's resources. Our gluttony, much of which is driven by vanity.
How many of us are willing to even touch the Israel question, as opposed to hiding behind scant information and understanding of the complex matter. How many are courageous enough to question the notion of a 'chosen people', with a divine right of return to a particular land? Reconciliation is a process nestled amongst the needles of such hard questions, and others. Obama can only help rally us forward in the direction to go. We must take the journey.
[>img[obama_N_mama1.jpg]]A mother's influence is an indisputable force. To know the story of Barack Obama's mother, Dr. Stanley Ann Dunham Soetoro, is to be reminded of this.. (Yes, she actually carried her own father's name; who had sorely wanted a boy child). Friends through out all the phases of her life (she died of ovarian cancer at age 53- in 1995), attest to her being a spirit beyond boundaries.
A white woman from Kansas, she twice married men from foreign lands: first Barack's father (himself named Barack Obama) and her second husband, Lolo Soetoro, for whom she bore a girl- Maya. She met, and married, both in Hawaii; but ended up in Indonesia; when Lolo Soetoro was summoned home. Both marriages were brief, but her love for Indonesia enduring.
It was in Java, and Jakarta, and such places, that she lived out her passionate commitment to service. She was a pioneer in helping to establish the world's foremost micro-finance program; which develops credit and savings amongst the poor. Her doctoral dissertation, reportedly over 1,000 pages, was titled //Peasant blacksmithing in Indonesia: Surviving and Thriving Against All Odds//. Not a topic you chose, if your sites are on being a Wall Street banker type.
''Reflections In Obama''
Friends see Stanley Ann clearly in her son. Even strangers, once familiar with her story, don't have to strain to see her spirit living on. How many Harvard graduates end up on the south side of Chicago organizing the poor? Even the academic rigor and discipline that got Barack to Cambridge [[continue|Obama's Mama pg2]]
This document you're reading is what I'm titling 'an offline blog'.
It is a self-contained notebook, a rich archive of data, which is housed in
a ''single file''. Calendars, To Do Lists, Running Conversations and
much more can be housed in this SINGLE FILE creation. Rich
formatting (i.e., color, bold, underlined) is easily possible within it.
What if facilitates is the sharing of information, in a way that does NOT
require a person to be online; to read it, or to respond.
Your communication can be organized into themes, sections, pages,
etc. Its easy to navigate via standard hyper-link, and has its own
search capability. Content can be written, but hid from the naked and
unknowing eye; or it can even be passworded. Cool, huh?
For our purposes, what I'd like for you to know is that each of the
pages you visit in this 'offline blog' are editable. All you have to do is
@@double-click in the middle of the text area@@, and wah lah Sesame
will open; giving you access to the data riches. If it makes you more
confident, you can say "Open Sesame, as you double click." LOL
Once you've opened the vault. Please type your comments, or additions,
below the existing copy. Then to [[Save...|Offline Blogging 2]]
To SAVE (this is IMPORTANT), you have two options. I've left the Backstage
open for you; hoping that it doesn't confuse the heck out of you. You can
simply click SAVE (upper left) when you're done; and your work will be saved.
Option Two is that you can simply hit "Control + Enter".
-----------
If you want to branch out and do your OWN thing, by starting your own pages,
here's the deal:
1) Click on 'new journal' (in the left menu).
2) That will automatically open up a new page for you, to fire away on.
3) Type in your Title (either before or after the date, or erase the date altogether).
4) Type in your content in the text area and ''SAVE''. Boom. You're 99% done.)
If you do add content to this Offline Blog, please do @@''SAVE''@@ it; and then email
me back the updated file. It will all be in what? The ''SINGLE FILE''. I will be
delighted to read your responses and sharings, as blogged in the ''SINGLE FILE''.
May your offline blogging thoroughly enrich your planning and work; and may you be lifted to prosperity and your Highest Good.
In Service of THE ONENESS,
Rafiki "The Digital Doctor" Cai
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMID]]'<img src="http://obama.digitaldr.org/brigade_banner.jpg"
style="display:block;position:absolute;top:0;right:325;width:
609px;height:125px;overflow:hidden;" />>
<div class='headerShadow' >
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu'>
<div refresh='content' tiddler='MainMenu'></div>
</div>
<div id='sidebar'>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div>
<div id="displayArea" ...></div>
<div id="myFooter"><center><img src="knol_anon.jpg" style="width:445px;height:65px"></center></div>
</div>
</div>
<!--}}}-->
developing...coming soon.
Feel free to click on Tab 1, to read a host of previous Obama Note entries.
''Obama Notes Editorial Team''
Type the text for 'YourName'
{{{
config.options.txtUserName = "RafikiCai";
}}}
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined) config.options.chkSinglePagePermalink=true;
if (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined) config.options.chkBottomOfPageMode=false;
if (config.optionsDesc) {
config.optionsDesc.chkSinglePageMode="Display one tiddler at a time";
config.optionsDesc.chkSinglePagePermalink="Automatically permalink current tiddler";
config.optionsDesc.chkTopOfPageMode="Always open tiddlers at the top of the page";
config.optionsDesc.chkBottomOfPageMode="Always open tiddlers at the bottom of the page";
} else {
config.shadowTiddlers.AdvancedOptions += "\
\n<<option chkSinglePageMode>> Display one tiddler at a time \
\n<<option chkSinglePagePermalink>> Automatically permalink current tiddler \
\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page \
\n<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page";
}
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash)
return;
var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));
tiddlerName=tiddlerName.replace(/\[\[/,"").replace(/\]\]/,""); // strip any [[ ]] bracketing
if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined) Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
if (config.options.chkSinglePageMode)
story.closeAllTiddlers();
else if (config.options.chkTopOfPageMode)
arguments[0]=null;
else if (config.options.chkBottomOfPageMode)
arguments[0]="bottom";
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(convertUnicodeToUTF8(String.encodeTiddlyLink(title)));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=document.getElementById(story.idPrefix+title);
if (tiddlerElem) {
var yPos=ensureVisible(tiddlerElem); // scroll to top of tiddler
if (config.options.chkSinglePageMode||config.options.chkTopOfPageMode)
yPos=0; // scroll to top of page instead of top of tiddler
if (config.options.chkAnimate) // defer scroll until 200ms after animation completes
setTimeout("window.scrollTo(0,"+yPos+")",config.animDuration+200);
else
window.scrollTo(0,yPos); // scroll immediately
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined) Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)
{
// suspend single-page mode (and/or top/bottom display options) when showing multiple tiddlers
var saveSPM=config.options.chkSinglePageMode; config.options.chkSinglePageMode=false;
var saveTPM=config.options.chkTopOfPageMode; config.options.chkTopOfPageMode=false;
var saveBPM=config.options.chkBottomOfPageMode; config.options.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
config.options.chkBottomOfPageMode=saveBPM;
config.options.chkTopOfPageMode=saveTPM;
config.options.chkSinglePageMode=saveSPM;
}
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};
//--
//-- Sparklines
//--
config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
var data = [];
var min = 0;
var max = 0;
var v;
for(var t=0; t<params.length; t++) {
v = parseInt(params[t]);
if(v < min)
min = v;
if(v > max)
max = v;
data.push(v);
}
if(data.length < 1)
return;
var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
box.title = data.join(",");
var w = box.offsetWidth;
var h = box.offsetHeight;
box.style.paddingRight = (data.length * 2 - w) + "px";
box.style.position = "relative";
for(var d=0; d<data.length; d++) {
var tick = document.createElement("img");
tick.border = 0;
tick.className = "sparktick";
tick.style.position = "absolute";
tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
tick.style.left = d*2 + "px";
tick.style.width = "2px";
v = Math.floor(((data[d] - min)/(max-min)) * h);
tick.style.top = (h-v) + "px";
tick.style.height = v + "px";
box.appendChild(tick);
}
};
}
//}}}
div.tiddler div.toolbar { display: none;}
#displayArea { width:456px; }
}
.header {background: url(http://www.crossingentertainment.org/crossing.jpg) no-repeat left #A43D25; padding: 20px 27em 0px 60px; height: 30px; font-family: Trebuchet MS, Verdana, Arial, Helvetica, sans-serif; }
.headerForeground {display: none; padding: 0em;}
.headerShadow {color: #fff; vert-align: middle; padding: 6em 2em 1em 1em; left: -1px; top: -1px; }
.headerShadow a {color: #fff;}
.header a {color: #fff;}
.header a:hover {background: #55a;}
.siteTitle {font-size: 1.8em;}
.siteSubtitle { padding: 2em; font-size: 1.2em;}
#displayArea {
margin-right: 0;
}
.tiddler .tagged {
display: none;
}
.viewer tr.oddRow { background: #D9D9FA; }
#mainMenu {
width: 11.0em;
}
.whiteOnBlue a { color:#FFFFFF; background-color:#0C61B7; }
.floatleft{float:left;padding:5px}
.floatright{float:right;padding:5px}
.floatcenter{float:center;}
.portal {
background-color: #eee;
font-color: #0C61B7;
width: 436px; /* corresponds to width of 7 panels */
overflow: hidden; /* contain floats */
padding: 10px 20px 10px 20px; /* compensate for panels' negative margins */
font-size: 200%;line-height: 120%;color: #0C61B7;
}
.portal a {
display: block;
float: left;
width: 108px;
height: 44px;
margin: 0 -1px -1px 0; /* merge double borders */
border: 1px solid [[ColorPalette::PrimaryDark]];
text-align: center;
line-height: 44px; /* center vertically; corresponds to element's height */
font-family: "Arial Black", Arial, sans-serif;
background-color: [[ColorPalette::TertiaryPale]];
}
.inactive { color: #3371a3; }
.searchBar {float:left; font-size:0.9em;}
.searchBar .button {display:block; border:none; color:#ccc;}
.searchBar .button:hover{border:none; color:#eee;}
.searchBar input{
border: 1px inset #1d65bc; background:#dbdee3;
}
.searchBar input:focus {
border: 1px inset #3371a3; background:#fff;
}
<html><a href="javascript:;" onclick="story.closeAllTiddlers();restart();">home</a></html>
Democracies can be complicated. The bigger the nation, the more there is at state; and thus the more 'power to power' combat that can take place in the deeper dimension and shadows of a republic. The 2008 presidential election is illustrating that clearly, and nowhere more so than with the matter of //super delegates//.
No doubt, before now this special caste walked around almost cloaked. Wielding significant influence but beyond the awareness of most. Now, because of a tight Democratic nomination bid, the floodlights are turned on full blast; and all the world is watching.
''History''
First devised in 1982, and implemented in 1984, in accordance with Democratic Party Rule 9.A, these delegates are technically defined as "unpledged party leader and elected official delegates (PLEO). Rule 9.B also allows for state party selected unpledged delegates. Under the original plan, PLEOs or super-delegates were to comprise 30% of the conventions seated delegates; but at present account for 20%.
''Demographic''
Over half of the Democratic super-delegates are reported to be white males, though this group only accounts for 28% of the Democratic primary electorate.
[[continue|Super Delegates pg2]]
''Controversy''
Super delegates (SDs), though only numbering less than 800, are vested with weighted votes; that could number the over 3000 plus pledged delegates. (Pledged delegates are sent to the Convention, to represent the will of the primary and caucus electorate.) In effect, SD wield the power to select a nominee despite what pledged delegates vote; and thus in opposition to what the body politic at large has expressed. This is disturbing to many.
Controversial, and former congresswoman, Geraldine Ferraro sees no problem with the arrangement. She publicly stresses that the concept of SDs were created expressly to keep the Democratic Party unified; by giving elected officials a secured vested interest in the party. One that they wouldn't 'walk away from" (alluding to the 1980 Convention, where infighting and chaos was rampant). Ponts Ferraro @@//"But the superdelegates were created to lead, not to follow. They were, and are, expected to determine what is best for our party and best for the country."//@@
This immediately raises the question about the ability of 'the people', to participate in and direct what is 'best for the country'. Umm, the taxpayers. You know the workers who are paying the salary of each and every elected official. Umm, the core element of a true democracy.
[[continued|Super Delegates pg3]]
Let it be pointed out, that it was some of these same 'leaders' (who know best) that have created 'the best of a mess' in Florida and Michigan. In open deviance of existing party rules (a sort of walking away, if you will), these 'leaders' moved their primaries up; and now have caused great consternation about their delegates not being seated. Thank you very much, Ms. Ferraro.
''All Is Not Lost Or Elitist''
For the sake of commonsense, some politicians still pay attention to what their constituents feel and do. Consequently, many SDs are making effort to be in line with the primary or caucus results in their locale or district. This has been evidenced, at least in one instance, with Rep. John Lewis; who switched from Clinto to Obama after his constituency voted overwhelmingly for the latter.
Although it has been noted, that some SDs might feel vindicated in differing with their local voters, if a candidate they prefer commands the popular vote of the entire state.
!''Current SD Count Facts'' ''Clinton: 262 Obama: 216''
At present, Hillary Clinton does hold the lead in SDs, though Barack Obama is evidencing momentum in cutting into that lead. Since the Iowa primary (Super Tuesday), Obama has picked up ''53'' SDs to Clinton's ''12''. Even since the last '2nd Super Tuesday', which Clinton bested, Obama has secured ''9'' SDs and Clinton ''1''. ''WHO exactly'' are these super-delegates (SDs)?
config.options.txtMyTabset="2";
|sortable|k
|''SUPER DELEGATES'' |''CLINTON'' |''OBAMA'' |''UNCOMMITTED''|h
|''All'' |''249'' |''211'' |''260'' |
|''Add Ons'' |0|1 |0 |
|''Congressional'' |1 |2 |1 |
|''DNC'' |144 |109 |147 |
|''Governors'' |9 |11 |10 |
|''Party Leaders''|10 |4 |5 |
|''Representatives'' |72 |69 |77 |
|''Senators'' |13 |15 |20 |
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}
!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |
***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
darrow: "\u2193",
uarrow: "\u2191",
getText : function (o) {
var p = o.cells[SORT_INDEX];
return p.innerText || p.textContent || '';
},
sortTable : function (o,rev) {
SORT_INDEX = o.getAttribute("index");
var c = config.tableSorting;
var T = findRelated(o.parentNode,"TABLE");
if(T.tBodies[0].rows.length<=1)
return;
var itm = "";
var i = 0;
while (itm == "" && i < T.tBodies[0].rows.length) {
itm = c.getText(T.tBodies[0].rows[i]).trim();
i++;
}
if (itm == "")
return;
var r = [];
var S = o.getElementsByTagName("span")[0];
c.fn = c.sortAlpha;
if(!isNaN(Date.parse(itm)))
c.fn = c.sortDate;
else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/))
c.fn = c.sortNumber;
else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/))
c.fn = c.sortFile;
for(i=0; i<T.tBodies[0].rows.length; i++) {
r[i]=T.tBodies[0].rows[i];
}
r.sort(c.reSort);
if(S.firstChild.nodeValue==c.darrow || rev) {
r.reverse();
S.firstChild.nodeValue=c.uarrow;
}
else
S.firstChild.nodeValue=c.darrow;
var thead = T.getElementsByTagName('thead')[0];
var headers = thead.rows[thead.rows.length-1].cells;
for(var k=0; k<headers.length; k++) {
if(!hasClass(headers[k],"nosort"))
addClass(headers[k].getElementsByTagName("span")[0],"hidden");
}
removeClass(S,"hidden");
for(i=0; i<r.length; i++) {
T.tBodies[0].appendChild(r[i]);
c.stripe(r[i],i);
for(var j=0; j<r[i].cells.length;j++){
removeClass(r[i].cells[j],"sortedCol");
}
addClass(r[i].cells[SORT_INDEX],"sortedCol");
}
},
stripe : function (e,i){
var cl = ["oddRow","evenRow"];
i&1? cl.reverse() : cl;
removeClass(e,cl[1]);
addClass(e,cl[0]);
},
sortNumber : function(v) {
var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
return isNaN(x)? 0: x;
},
sortDate : function(v) {
return Date.parse(this.getText(v));
},
sortAlpha : function(v) {
return this.getText(v).toLowerCase();
},
sortFile : function(v) {
var j, q = config.messages.sizeTemplates, s = this.getText(v);
for (var i=0; i<q.length; i++) {
if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
return q[i].unit * s.substr(0,j);
}
return parseFloat(s);
},
reSort : function(a,b){
var c = config.tableSorting;
var aa = c.fn(a);
var bb = c.fn(b);
return ((aa==bb)? 0 : ((aa<bb)? -1:1));
}
};
Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
var elem = this.tSort_refreshTiddler.apply(this,arguments);
if(elem){
var tables = elem.getElementsByTagName("TABLE");
var c = config.tableSorting;
for(var i=0; i<tables.length; i++){
if(hasClass(tables[i],"sortable")){
var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
for (var j=0; j<headers.length; j++){
var h = headers[j];
if (hasClass(h,"nosort"))
continue;
h.setAttribute("index",j);
h.onclick = function(){c.sortTable(this); return false;};
h.ondblclick = stopEvent;
if(h.getElementsByTagName("span").length == 0)
createTiddlyElement(h,"span",null,"hidden",c.uarrow);
if(!x && hasClass(h,"autosort")) {
x = j;
rev = hasClass(h,"reverse");
}
}
if(x)
c.sortTable(headers[x],rev);
}
}
}
return elem;
};
setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
"table.sortable thead {cursor:pointer;}\n"+
"table.sortable .nosort {cursor:default;}\n"+
"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");
function stopEvent(e){
var ev = e? e : window.event;
ev.cancelBubble = true;
if (ev.stopPropagation) ev.stopPropagation();
return false;
}
config.macros.nosort={
handler : function(place){
addClass(place,"nosort");
}
};
config.macros.autosort={
handler : function(place,m,p,w,pS){
addClass(place,"autosort"+" "+pS);
}
};
//!END-PLUGIN-CODE
// %/
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
The core function, "story.chooseTemplateForTiddler(title,template)" is essentially a "pass-thru" that returns the same template it was given, and is provided by the core so that plugins can customize the template selection logic to select alternative templates, based on whatever programmatic criteria is appropriate. This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Usage
<<<
Each alternative template is associated with a specific tiddler tag value by using that tag value as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]].
For example, any tiddlers that are tagged with ''<<tag media>>'' will look for alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]]. Additionally, in order to find templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin will also attempt to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
If no matching alternative template can be found by using //any// of the tiddler's tags (either "as-is" or capitalized), the tiddler defaults to using the appropriate standard [[ViewTemplate]] or [[EditTemplate]] definition.
''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate"). Then, simply create a tiddler and tag it with your chosen keyword... that's it! As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates. If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Revisions
<<<
2007.06.23 [1.1.0] re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.taggedTemplate= {major: 1, minor: 1, revision: 0, date: new Date(2007,6,18)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get default template from core
var template=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
// if the tiddler to be rendered doesn't exist yet, just return core result
var tiddler=store.getTiddler(title); if (!tiddler) return template;
// look for template whose prefix matches a tag on this tiddler
for (t=0; t<tiddler.tags.length; t++) {
var tag=tiddler.tags[t];
if (store.tiddlerExists(tag+template)) { template=tag+template; break; }
// try capitalized tag (to match WikiWord template titles)
var cap=tag.substr(0,1).toUpperCase()+tag.substr(1);
if (store.tiddlerExists(cap+template)) { template=cap+template; break; }
}
return template;
}
//}}}
Juan Williams. ''Enough''. New York: Crown Publishers, 2006
-----------------------------------------------------------------------------------------
Chapter 1 | Chapter 4 | Chapter 5 | Chapter 7
Walter Moseley, editor. ''Black Genius:'' African American Solutions to African American Problems. New York: W.W. Norton & Company, 1999.
-------------------------------------------------------------------------------------------
pps. 125-144 | pps. 173-192 | pps. 193-214 |
William C. Rhoden. ''Forty Million Dollar Slaves:'' The Rise, Fall and Redemption of the Black Athlete. New York: Crown Publishers, 2006
----------------------------------------------------------------------------------------------------
Chapter 1 | Chapter 5 | Chapter 6 | Chapter 7 | Chapter 11
''In A Speech Punctuated'' over a dozen times, with applause from those gathered to hear, Barack Obama faced the thorny issue of race head on and dead on. For thirty seven minutes, he spoke frankly, from the heart and from experience about sensitivities and particulars; of one of the major ailments of the American soul. The video is a must watch for every single American, whether they agree with his perspective or not.
When has America, in recent times, had a prime time, 'all eyes on me', address on race relations. The March On Washington in 1968 maybe? Some might offer the [[Million Man March of 1995]], but in my opinion that would not qualify. The MOW was about a more insular matter; that of Black men chart a path of self-improvement and redemption. Barack's speech was not just about black people. It was about the state of race in America.
His comments offered context, analysis and insightful suggestions to black, brown and white alike. He took time to patiently paint for the country, a historical sketch of the Black Church and the dynamic that unfolds there. One of the many applauses came when he invoked the familiar refrain "The most segregated hour is still on Sunday." Many media outlets are focusing on his refusal to denounce Rev. Jeremiah Wright, but he offered full explanation for that as well. "I can no more denounce him, than I can denounce the Black Community. [[continue|The Race Speech pg2]]
I could offer you the statements that drew each of the applause, but some things deserve more than Cliff Notes. I will, however, share with you the jewel that brought the first burst of clapping, fifteen minutes into the speech. It was a quote from William Faulkner:
!The Past Is Not Dead. In Fact, Its Not Even Past.
<br/>A MSNBC informal poll, taken after the speech, shows that by a 3:1 margin, over one hundred and fifty-six thousand respondents answered yes to the following questions: a) Do you think Sen. Barack Obama successfully tackled the issue of race in his speech? and b) Do you think the country is ready for a black president?<br/><br/>''Such A Response Must Be Encouraging'' to the Obama Camp. Even though additional hills and hurdles undoubtedly lie ahead, they can feel uplift by an apparent sentiment; that say 'job well done' and 'passing grade'. Voters registering that mark of approval, will have the opportunity to express it; when the state of Pennsylvania conducts it primary election on April 22.
''How Motivated Are Every Day People'' when it comes to politics? We hear all the time, about low voter turn out; not only in primary races, but general elections as well. It paints a picture, that average people are really motivated when it comes to election matters. Well think again.
Exit poll data, which tracks amongst other things, Republican voting in Democratic primaries, show an interesting Republic strategy playing out; and that is on the shoulders, or should we way voting hands of ordinary people. The Boston Globe points out how Republican Crown Prince Russ Limbaugh, and to to a less degree radio host Laura Ingraham, have rallied the Republican rank and file. Their call to arms has been to cast a vote for Hillary Clinton, in the Democratic primaries.
Why pray tell? Hillary is 'magnet maxima' for conservative ire. Her presence as the Democratic nominee, will be manna from heaven for Republican organizers. It will help them to effectively rally their base. At the same time, many conservatives hold great concern about an Obama and McCain match up. So why not cross two bridges with one walk? Help Hillary get the nomination.
Has This Ploy Been Successful? In certain instances, it absolutely may have. Take for example the recent Texas primary. Hillary won that contest [[continue|The Republicrat Effect pg2]]
by some 109,000 votes. However. Guess what number of Republicans voted for her? 119,000. To be fair, interviews reflect a variety of motivations amongst 'Republicrat' primary voters. "To keep Hillary in the nomination race, so that the divisiveness amongst Democrats can grow deeper." "To keep the Democratic race going longer, so that Obama can be vetted; and shown to be the shallow candidate he is."
Republicans. An interesting breed indeed. A twice Dubaya elector and now a Hillary supporter. I can't resist: "Politics make strange bedfellows."
I hate to say it, but this is the first scenario where the presence of super delegates have made logical sense to me. Should those 'elders and activists of the party' (as Hillary has called them) see the undue influence of these kinds of maneuvers, on the nomination process, for them to take action to nullify such impact would seem the right thing to do.
''How Many Pledged Delegates Does Hillary Owe The Republicrats?'' One must wonder, beyond Texas, how far the arm of The Right reaches into Democratic primaries.. 500,000 votes? 1,000,000 votes? Even more? How many delegates does that add up to, that should be in the Obama column?
Let's apply this principle to God. We often make endless claims about God: "God said..." "God wants..." "God expects..." We invest vast amounts of time and energy, in representing, pleasing and serving God. Most of this activity is done, all of our lives, from a narrowly changing notion of God. In fact, as children many of us are emphatically taught the folly of 'thinking' about God. It is stressed, that some thing are unknowable, beyond the realm of man's mere mortal mind.
While this is true, there still remains this question: what are the limits of this God given mind, in contemplating The ALL and ALL? How might we ever know them, if we sit only in the comfortable corner of our faith and fears? Can such complacency restrict and constrain our ability to relate to God?
What is our God grows beyond what we've been taught, or have come to believe? Will then God's heart also grow with that process? Or might truthfully put: will our ability to fathom God's heart increase? Is it worth the thought and effort?
Even as you read these very words, what's shooting through your head? What are the emotions you feel, this very moment? Stop and take note, literally. (There is a space provided on each page, just for that very purpose. Double click on the blue area, to unfold an area to write. When you're done, simply click on the Save button.)
This is a test, to see if Notes are 'hard saved' or not.
I had been holding off on showing this to you and John, because I didn't want to appear as some sort of 'show-off'; or as I was trying to pull you both into every little tech resource or gadget that I know of. LOL
But with the Vegas.Com call, I realized that now might be a good time to introduce this tool. In short, this is our own micro-version of Wikipedia. Its a wiki, in which we can archive our notes, contacts, milestones AND even link to and from them all- in wiki style.
''I think as I write, and I write as I think.'' Therefore, using something like this Tiddly Wiki (its actual name) helps my creativity to flow. At that same time, stuff gets journaled; so that its accessible for future review.
-----
OK, but how do YOU jump in and get involved? It's as simple as ''double clicking''. That's right. Right now, if you @@''JUST DOUBLE CLICK HERE''@@, you should have an //Open Sesame// experience. That's to say, the tiddler (as a single page is called) should open right up; and make the actual page available for you to write on. Or to just simply leave a note, ''double click the Notes area''.
For now, that's all you got to do is //''Double Click and Write''//. One last thing: ''SAVING'' content. Its a two step process: ''1)'' Press Control and Enter, to close the page; and see what you've written (as the reader will see it) ''2)'' In the upper right hand corner, click Backstage. A menu will open that includes a ''Save'' command. Click on SAVE, to manually and fully save the content.
Open, Write, Close and Save. Once you're comfortable with the format, you'll be doing that (and a lot of other stuff in seconds). [[A Bit More Detail|What Is This? continued]]
/***
|''Name:''|TiddlerNotesPlugin|
|''Description:''|Add notes to tiddlers without modifying the original content|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TiddlerNotesPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.1|
|''Date:''|26/10/07|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Concept:
*The TiddlerNotesPlugin allows you to add notes to tiddlers, without needing to edit the original tiddler. This means that your original content will remain unaltered, and if you update it in the future, you won’t lose your notes. Notes are stored in separate tiddlers, but can be viewed and edited from within the original tiddler.
*For a tiddler titled "~MySlide", the notes are by default saved in a tiddler titled "~MySlide-Notes" and is given a tag of "Notes". The suffix and tags of the notes tiddlers are customizable. You can have one or multiple notes per tiddlers. So it is possible to have for example, teacher's notes and student's notes in the same file.
*Notes can be configured to start off blank, or pre-filled with the contents of the original tiddler.
!!Usage:
*{{{<<notes>>}}} is the simplest usage form.
* additional optional parameters include:
**{{{heading:}}} the heading to use for the notes box
**{{{tag:}}} the tag to be given to the notes tiddler
**{{{suffix:}}} the suffix to be used when naming the notes tiddler
* a full macro call could look like: {{{<<notes heading:"My Notes" tag:"NoteTiddlers" suffix:"Comments">>}}}
* To avoid adding {{{<<notes>>}}} to each tiddler you want notes for, you could add the macro call to the ViewTemplate
** below the line {{{<div class='viewer' macro='view text wikified'></div>}}} add the following line: <br> {{{<div class='viewer' macro='notes'></div>}}}
** Used in combination with the ~HideWhenPlugin or ~PublisherPlugin, you could have notes be shown only for tiddlers with specific tags. The ~PublisherPlugin would allow you for instance to only have the ~TeachersNotes visible to the teacher, and the ~StudentsNotes for the same tiddler visible to the Student.
!!Configuration
*<<option chkPrefillNotes>> Enable to pre-fill notes with the original tiddler's contents
!!Demo:
* [[MySlide]]
***/
// /%
//!BEGIN-PLUGIN-CODE
if (!config.options.chkPrefillNotes)
config.options.chkPrefillNotes = false;
function createTiddlyElement(theParent,theElement,theID,theClass,theText,attribs)
{
var e = document.createElement(theElement);
if(theClass != null)
e.className = theClass;
if(theID != null)
e.setAttribute("id",theID);
if(theText != null)
e.appendChild(document.createTextNode(theText));
if(attribs){
for(var n in attribs){
e.setAttribute(n,attribs[n]);
}
}
if(theParent != null)
theParent.appendChild(e);
return e;
}
function createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey,attribs)
{
var theButton = document.createElement("a");
if(theAction) {
theButton.onclick = theAction;
theButton.setAttribute("href","javascript:;");
}
if(theTooltip)
theButton.setAttribute("title",theTooltip);
if(theText)
theButton.appendChild(document.createTextNode(theText));
if(theClass)
theButton.className = theClass;
else
theButton.className = "button";
if(theId)
theButton.id = theId;
if(attribs){
for(var n in attribs){
e.setAttribute(n,attribs[n]);
}
}
if(theParent)
theParent.appendChild(theButton);
if(theAccessKey)
theButton.setAttribute("accessKey",theAccessKey);
return theButton;
}
config.macros.notes={
cancelWarning: "Are you sure you want to abandon changes to your notes for '%0'?",
editLabel: "edit notes",
editTitle: "double click to edit",
saveLabel: "save notes",
saveTitle: "double click to save",
cancelLabel: "cancel",
heading: "Notes",
suffix: "Notes",
tag: "Notes",
saveNotes: function(ev){
e = ev? ev : window.event;
var theTarget = resolveTarget(e);
if (theTarget.nodeName.toLowerCase() == "textarea")
return false;
var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
story.setDirty(title,false);
var box = document.getElementById("notesContainer"+title);
var textarea = document.getElementById("notesTextArea"+title);
if(textarea.getAttribute("oldText")!=textarea.value && !hasClass(theTarget,"cancelNotesButton")){
var suffix = box.getAttribute("suffix");
var t = store.getTiddler(title+"-"+suffix);
store.saveTiddler(title+"-"+suffix,title+"-"+suffix,textarea.value,config.options.txtUserName,new Date(),t?t.tags:box.getAttribute("tag"),t?t.fields:{});
}
story.refreshTiddler(title,1,true);
autoSaveChanges(true);
return false;
},
editNotes: function(box,tiddler){
removeChildren(box);
story.setDirty(tiddler,true);
box.title = this.saveTitle;
box.ondblclick = this.saveNotes;
createTiddlyButton(box,this.cancelLabel,this.cancelLabel,this.saveNotes,"cancelNotesButton");
createTiddlyButton(box,this.saveLabel,this.saveLabel,this.saveNotes,"saveNotesButton");
wikify("!!"+box.getAttribute("heading")+"\n",box);
addClass(box,"editor");
var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix");
var wrapper2 = createTiddlyElement(wrapper1,"div");
var e = createTiddlyElement(wrapper2,"textarea","notesTextArea"+tiddler);
var v = store.getValue(tiddler+"-"+box.getAttribute("suffix"),"text");
if(!v)
v = config.options.chkPrefillNotes? store.getValue(tiddler,"text"):'';
e.value = v;
e.setAttribute("oldText",v);
var rows = 10;
var lines = v.match(/\n/mg);
var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);
if(lines != null && lines.length > rows)
rows = lines.length + 5;
rows = Math.min(rows,maxLines);
e.setAttribute("rows",rows);
box.appendChild(wrapper1);
},
editNotesButtonOnclick: function(e){
var title = story.findContainingTiddler(this).getAttribute("tiddler");
var box = document.getElementById("notesContainer"+title);
config.macros.notes.editNotes(box,title);
return false;
},
ondblclick : function(ev){
e = ev? ev : window.event;
var theTarget = resolveTarget(e);
var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
var box = document.getElementById("notesContainer"+title);
config.macros.notes.editNotes(box,title);
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return false;
},
handler : function(place,macroName,params,wikifier,paramString,tiddler){
params = paramString.parseParams("anon",null,true,false,false);
var heading = getParam(params,"heading",this.heading);
va