<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<importTiddlers>>
The ubiquity of tiny particles of minerals -mineral nanoparticles- in oceans and rivers, atmosphere and soils, and in living cells are providing scientists with new ways of understanding Earth's workings. ''Our planet's physical, chemical, and biological processes are influenced or driven by the properties of these minerals''.

So states a team of researchers from seven universities in a paper published in the journal Science: [["Nanominerals, Mineral Nanoparticles, and Earth Systems."|http://www.sciencemag.org/cgi/content/abstract/319/5870/1631]] "This is an excellent summary of the relevance of natural nanoparticles in the Earth system," said Enriqueta Barrera, program director in NSF's Division of Earth Sciences. "It shows that there is much to be learned about the role of nanominerals, and points to the need for future research."

Minerals have an enormous range of physical and chemical properties due to a wide range of composition and structure, including particle size. Each mineral has a set of specific physical and chemical properties. ''Nanominerals'', however, ''have one critical difference: a range of physical and chemical properties, depending on their size and shape''.

"This difference changes our view of the diversity and complexity of minerals, and how they influence Earth systems," said [[Michael Hochella|http://www.vt.edu/spotlight/achievement/2008-03-03_hochella/2008-03-03_hochella.html]] of the Virginia Polytechnic Institute and State University in Blacksburg, Va.

''The role of nanominerals is far-reaching'', said Hochella. ''Nanominerals are widely distributed throughout the atmosphere, oceans, surface and underground waters, and soils, and in most living organisms, even within proteins''.

Nanoparticles play an important role in the lives of ocean-dwelling phytoplankton, for example, which remove carbon dioxide from the atmosphere. Phytoplankton growth is limited by iron availability. Iron in the ocean is composed of nanocolloids, nanominerals, and mineral nanoparticles, supplied by rivers, glaciers and deposition from the atmosphere. Nanoscale reactions resulting in the formation of phytoplankton biominerals, such as calcium carbonate, are important influences on oceanic and global carbon cycling.

On land, nanometer-scale hematite catalyzes the oxidation of manganese, resulting in the rapid formation of minerals that absorb heavy metals in water and soils. The rate of oxidation is increased when nanoparticles are present.

Conversely, harmful heavy metals may disperse widely, courtesy of nanominerals. In research at the Clark Fork River Superfund Complex in Montana, Hochella discovered a nanomineral involved in the movement of lead, arsenic, copper, and zinc through hundred of miles of Clark River drainage basin.

Nanominerals can also move radioactive substances. Research at one of the most contaminated nuclear sites in the world, a nuclear waste reprocessing plant in Mayak, Russian, has shown that plutonium travels in local groundwater, carried by mineral nanoparticles.

In the atmosphere, mineral nanoparticles impact heating and cooling. Such particles act as water droplet growth centers, which lead to cloud formation. The size and density of droplets influences solar radiation and cloud longevity, which in turn influence average global temperatures.

''"The biogeochemical and ecological impact of natural and synthetic nanomaterials is one of the fastest growing areas of research, with not only vital scientific, but also large environmental, economic, and political consequences,"'' the authors conclude.

In addition to Hochella, authors of the paper are Steven Lower of Ohio State University, and Patricia Maurice of the University of Notre Dame; along with R. Lee Penn of the University of Minnesota; Nita Sahai of the University of ~Wisconsin-Madison; Donald Sparks of the University of Delaware; and Benjamin Twining of the University of South Carolina.

Source: [["Nanominerals" Influence Earth Systems from Ocean to Atmosphere to Biosphere|http://www.nsf.gov/news/news_summ.jsp?cntn_id=111279&org=NSF&from=news]]. See also [[Nanoscience will change the way we think about the world|http://www.vtnews.vt.edu/story.php?relyear=2008&itemno=177&head=Nanoscience%20will%20change%20the%20way%20we%20think%20about%20the%20world]]
Using lasers, Korean researchers have crafted a microscopic version of Rodin's famed sculpture "The Thinker" just about twice the size of a red blood cell at 20 millionths of a meter high. For more than a decade, researchers worldwide have experimented with lasers to fabricate elaborate 3-D creations.

[img[the thinker|http://www.livescience.com/images/070108_sculpt_C_02.jpg]] 
<html><a href="http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=APPLAB000090000007079903000001&idtype=cvips&gifs=yes">Ultraprecise microreproduction of a three-dimensional artistic sculpture by multipath scanning method in two-photon photopolymerization</a> [Appl. Phys. Lett 90, 013113 (2007)] by Dong-Yol Yang, Sang Hu Park, Tae Woo Lim, Hong-Jin Kong, Shin Wook Yi, Hyun Kwan Yang and Kwang-Sup Lee</html>
[<img[DNA cassette | http://www.nyu.edu/public.affairs/images/photos/uploads/Seeman-Proofs-12.jpg]]  New York University chemistry professor Nadrian C. Seeman and his graduate student Baoquan Ding have developed a DNA cassette through which a nanomechanical device can be inserted and function within a DNA array, allowing for the motion of a nanorobotic arm. The results, reported in the latest issue of the journal Science, mark the first time scientists have been able to employ a functional nanotechnology device within a DNA array.

"It is crucial for nanorobotics to be able to insert controllable devices into a particular site within an array, thereby leading to a diversity of structural states," explained Seeman. "Here we have demonstrated that a single device has been inserted and converted at a specific site." He added that the results pave the way for creating nanoscale "assembly lines" in which more complex maneuvers could be executed... http://www.nyu.edu/public.affairs/releases/detail/1355
Scientists at Rice University and Baylor College of Medicine have discovered a new way to use Rice's famed buckyball nanoparticles as passkeys that allows drugs to enter cancer cells.

The passkeys that Barron and colleagues developed contain a molecule called Bucky amino acid that was created in Barron's lab. Bucky amino acid, or Baa, is based on pheylalanine, one of the 20 essential amino acids that are strung together like beads on a necklace to build all proteins.

Barron's graduate student, Jianzhong Yang, developed several different Baa-containing peptides, or slivers of protein containing about a dozen or so amino acids. In their natural form, with pheylalanine as a link in their chain, these peptides did not pass through the cell walls.

Barron's group collaborated with Yang's brother, Baylor College of Medicine assistant professor Jianhua Yang at Texas Children’s Cancer Center, and found the Baa-containing peptides could mimick viral proteins and pass through the walls of cancer cells. The peptides were found effective at penetrating the defenses of both liver cancer cells and neuroblastoma cells.

http://media.rice.edu/media/NewsBot.asp?MODE=VIEW&ID=9213&SnID=1476741455

<<tag nanomedicine>><<tag [[drug delivery]]>>
<html>
<div class="vevent" id="hcalendar-EuroScience-Open-Forum-ESOF-2008"> <a class="url" href="http://www.euroscience.org/ESOF/esof2008.htm"> <abbr class="dtstart" title="20080718">July 18th</abbr> &mdash; <abbr class="dtend" title="20080723">22th, 2008</abbr> <span class="summary">EuroScience Open Forum ESOF 2008</span>&mdash; at <span class="location">Barcelona</span> </a> <div class="description">Euroscience Open Forum is a biennial event which seeks to showcase European achievements right across the scientific spectrum and serves as an open forum for debates on science-related issues and also as a showcase for European and International research. Through ESOF, researchers and scientists, as well as the general public, are provided with an adequate platform for exchanging views and discussing the challenges and consequences of scientific developments around the world. Barcelona has been selected to host ESOF in 2008 and, thus, deserves the tribute as Europe’s “City of Science” for that year. </div>
</html>
Nanotechnology in Cosmetics!

These days we are debating if nanoparticles in sunblock and toothpaste are safe. The ancient Greeks and Romans didn't know about such things - but they already used nanotechnology in their cosmetics. An ancient dyeing process for blacking hair is a remarkable illustration of synthetic nanoscale biomineralization.... http://www.newswiretoday.com/news/8233/

<<tag concerns>>
A new X-ray microscope can look at nanomaterials in three dimensions.
<html><a href="http://en.wikibooks.org/wiki/Nanotechnology/Electron_microscopy#Transmission_electron_microscopy_.28TEM.29">
Transmission electron microscopy (TEM)</a></html> has traditionally been used to study nanomaterials, but because electrons do not penetrate far into materials, the sample preparation procedure is usually complicated and destructive. Furthermore, TEM only gives two-dimensional images.

The new method shines a powerful X-ray source onto a nanoparticle and collects the X-rays scattered from the sample. Then computers construct a three-dimensional image from that data. The microscope can resolve details down to 17 nanometers, or a few atoms across.

<<tag microscope>><<tag images>>
Access on the web at no charge in 2007

The inaugural issue of ACS Nano was released online August 14, 2007. During 2007, the journal is available on the web at no charge. Go to the web site now: http://www.acsnano.org

The first issue of ACS Nano features articles presenting the latest findings from the research groups of Drs. David Allara, Hongjie Dai, and Prashant Kamat, along with a conversation with Nobel Laureate Heinrich Rohrer and a special editorial by ~Editor-in-Chief Paul S.
Weiss.

ACS Nano is a new international forum for the communication of comprehensive articles on nanoscience and nanotechnology research at the interfaces of chemistry, biology, materials science, physics, and engineering. Moreover, the journal helps facilitate communication among scientists from all these research communities in developing new research opportunities, advancing the field through new discoveries, and reaching out to scientists at all levels.

In addition to comprehensive, original research articles, ACS Nano offers reviews, perspectives on cutting-edge research, conversations with nanoscience and nanotechnology thought leaders, and discussions of topics that are important for the entire community.

ACS Nano complements Nano Letters, the leading forum for rapid communication of nanoscale research, ranked #1 in nanoscience & nanotechnology with a 9.960 impact factor.
Addictlab and IMEC are launching a new call for ideas and visions on future applications of emerging technologies in the field of art, design, architecture, fashion, communication, environments, health and well-being. After a first successful collaboration researching visual, conceptual and more practical ways of communicating about nanotechnology, a new call will take it one step further into the world of emerging technologies and their applications, with a focus on the emerging invisible (a-material) production, where benefits are perceptions centred. ''The Addict & IMEC partnership is also aimed at creating a brand new international platform for creative views on nanotechnology applications and ideas''. An international jury will select a winner for each application domain and announce it during a public event in 2009.

It all started a year ago. IMEC, Europe's leading independent nanoelectronics and nanotechnology research centre is driven by a dream: opening up the horizon of emerging technologies research, not only by widening the fields of scientific studies, but involving and informing as many people as possible. Science is for all, not only an educational topic, but also as a mean of increasing creativity and creating a true dialogue on science, technology, possible applications and implications. ''By crossing the borders between science and technology and art and design industry, research institutes, academia and policy leaders can enter into a dialogue with the broad public''.

In this aim, IMEC came to Ad!dict Creative Lab for a first project that resulted in a publication: [[#27 Nanotechnology|http://www.addictlab.com/labfiles/?page=project&project=52]]. This Inspiration Book generated workshops and exhibitions during 2007, and it’s still adopted at IMEC as a communication tool to explain that science and creativity have no limits. The present project needs to be considered as a step further: ''emerging technologies are becoming privileged media in art and design''. Even if still delimited to a niche category (e.g. bio-art, interactive- or experience design, etc.) we all know that in an optic of sustainable development, this might be the future.

The Addict Inspiration Book [[#29 “in.tangible.scape.s”|http://www.modobruxellae.be/Doc/annonces/080212_addictlab.pdf]] will go through that entire invisible domain that is ''moving the creativity world from the object predominance to the experiencing sphere of perceptions and the benefits of a more and more invisible (a-material) production''. This call reaches out to designers, artists, students, architects, engineers, researchers and dreamers worldwide. This second step will lead Addict with its labmembers and IMEC to the promotion of a new global approach of science and high-tech applied to arts and design in the wider sense.

Source: [[A joint initiative to bring science and technology to life through art and design|http://www.imec.be/wwwinter/mediacenter/en/Addict_2008.shtml]]
The physico-chemical properties and consequent behaviour of a tiny cage of 60 carbon atoms or a compact gold aggregation of a few thousand atoms are far more different that the differences between the necessary Escherichia Coli in the guts or the dangerous Streptococcus Pneumoniae Bacterias. However, both, the carbon and the gold structure, are called nanoparticles. As a 200 nm polymeric sphere loaded with drugs or the 10 nm titanium dioxide embedded in the sunscreens creams. All of them are very different and called the same: nanoparticles. Mainly in mass media, in the headlines, many different materials are called the same, not helping to understand. Thus confusing news simultaneously appear claiming that nanoparticles will cause and will heal cancer. And all that does not help to inform the public and us (as society) to reach appropriate consensus for the efficient and safe development of new technologies . We, all concerned people, should immediately engage in an honest effort to label, describe and characterize the different players (materials, properties, phenomena) of the nanoworld in order to create an adequate ontology to accurately describe the complexity happening at the nanoscale. The physical and chemical properties change when the mater is reduced to the nanometric scale, and therefore its kinetics and thermodynamics. But all those changes happen in a particular way towards a particular direction in any piece of different material. Different by composition, size, shape, number and surface state. One should not think that materials become similar when they reach the nanometric scale. Far from that. The differences between the carbon and the metal increases when they become nanometric. The diversity of properties and behaviour expands at the nanoscale, what is fascinating and, again, remain us the celebrated sentence [[There is Plenty of Room at the Botom|http://www.its.caltech.edu/~feynman/plenty.html]].
[[Dr. Robert Langer|http://web.mit.edu/langerlab/langer.html]] is institute professor, chemical and biomedical engineering, Massachusetts Institute of Technology. "//Robert Langer is the foremost pioneer and innovator in modern drug delivery//," says John Sterling, ~Editor-in-Chief of Genetic Engineering and Biotechnology News. "[[Dr. Langer|http://nanowiki.info/index.html#%5B%5BGroundbreakers%20in%20the%20field%20of%20Nanotechnology%20worldwide%5D%5D]] and his team continue to advance research and development on novel biomaterials and tissue- engineered products. They are constantly pushing the technology envelope for new ways to deliver biodrugs and pharmaceuticals."

[[Interview with Robert Langer|http://www.genengnews.com/genCasts.aspx?id=198]]. This podcast ''on New Polymeric Drug Delivery Systems'' is imperative for researchers and biotechnology, pharmaceutical and medical device executives whose companies are engaged in drug discovery and development, as well as market makers, analysts, and investors who must be knowledgeable about the challenges and directions in therapeutic delivery.

Source: [[Advances in drug delivery and tissue engineering|http://www.genengnews.com/genCasts.aspx?id=198]]
^^Via [[Joan Esteve|http://www.ub.edu/gcfes/index_es.htm]], [[Victor Puntes|Victor Puntes]]^^
Stained glass windows that are painted with gold purify the air when they are lit up by sunlight, a team of Queensland University of Technology experts have discovered. Associate Professor [[Zhu Huai Yong|http://www.sci.qut.edu.au/about/staff/physchem/chem/zhuh.jsp]] said that //glaziers in medieval forges were the first nanotechnologists who produced colours with gold nanoparticles of different sizes//. Professor Zhu said numerous church windows across Europe were decorated with glass coloured in gold nanoparticles. "For centuries people appreciated only the beautiful works of art, and long life of the colours, but little did they realise that these works of art are also, in modern language, ''photocatalytic air purifier with nanostructured gold catalyst''," Professor Zhu said.

He said tiny particles of gold, energised by the sun, were able to destroy air-borne pollutants like volatile organic chemical (~VOCs), which may often come from new furniture, carpets and paint in good condition. "These ~VOCs create that 'new' smell as they are slowly released from walls and furniture, but they, along with methanol and carbon monoxide, are not good for your health, even in small amounts," he said.

"Gold, when in very small particles, becomes very active under sunlight. The electromagnetic field of the sunlight can couple with the oscillations of the electrons in the gold particles and creates a resonance [[[surface plasmon resonance|http://en.wikibooks.org/wiki/Nanotechnology/Nanometals]]]. The magnetic field on the surface of the gold nanoparticles can be enhanced by up to hundred times, which breaks apart the pollutant molecules in the air." Professor Zhu said the by-product was carbon dioxide, which was comparatively safe, particularly in the small amounts that would be created through this process.

He said ''the use of gold [[nanoparticles]] to drive chemical reactions'' opened up exciting possibilities for scientific research. //"This technology is solar-powered, and is very energy efficient, because only the particles of gold heat up," he said. "In conventional chemical reactions, you heat up everything, which is a waste of energy. Once this technology can be applied to produce specialty chemicals at ambient temperature, it heralds significant changes in the economy and environmental impact of the chemical production."//

Source: [[Air-purifying church windows early nanotechnology|http://www.news.qut.edu.au/cgi-bin/WebObjects/News.woa/wa/goNewsPage?newsEventID=19841]]. Findings have been published in a recent edition of Angewandte Chemie International: [[Visible-Light-Driven Oxidation of Organic Contaminants in Air with Gold Nanoparticle Catalysts on Oxide Supports|http://dx.doi.org/doi:10.1002/anie.200800602]]. 
/***
Macro: allTagsExcept
Author: Clint Checketts
Version: 1.0 Sept 8, 2005

usage: {{{<< allTagsExcept systemConfig systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers

<<allTagsExcept systemConfig systemTiddler author >>
***/
//{{{
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};

config.macros.allTagsExcept.handler = function(place,macroName,params)
{
	var tags = store.getTags();
	var theTagList = createTiddlyElement(place,"ul",null,null,null);
	if(tags.length == 0)
		createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
	for (var t=0; t<tags.length; t++) {
            var includeTag = true;
            for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
            if (includeTag){
		var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
		var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
		theTag.setAttribute("tag",tags[t][0]);
           }
	}
}
//}}}
While pondering the challenges of distinguishing one nano-sized probe image from another in a mass of hundreds or thousands of nanoprobes, researchers made an interesting observation. ''The tiny, clustered dots of light looked a lot like a starry sky on a clear night''.

The biomedical researchers realized that astronomers had already made great strides in solving a problem very similar to their own — isolating and analyzing one dot (in this case a star) in a crowded field of light. They hypothesized that a computer system designed for stellar photometry, a branch of astronomy focused on measuring the brightness of stars, could hold the solution to their problem.

Now, Georgia Tech and Emory ''researchers have created a technology based on stellar photometry software that provides more precise images of single molecules tagged with NanoProbes, particles specially designed to bind with a certain type of cell or molecule and illuminate when the target is found''. The clearer images allow researchers to collect more detailed information about a single molecule, such as how the molecule is binding in a gene sequence, taking scientists a few steps closer to truly personalized and predictive medicine as well as more complex biomolecular structural mapping.

In addition to biomedical applications, the system could be used to clarify other types of nanoparticle probes, including tagged particles or molecules.

''“This work is pointing to a new era in light microscopy in which single molecule detection is achieved at nanometer resolution,”'' said Dr. Shuming Nie, a professor of biomedical engineering and chemistry and also the director of the Emory-Georgia Tech Cancer Nanotechnology Center.'' “This is also an example of interdisciplinary research in which advanced computing meets nanotechnology''. I envision major applications not only for single-molecule imaging, but also for ultrasensitive medical diagnostics.”

Source: [[Astronomy Technology Brings Nanoparticle Probes into Sharper Focus|http://www.gatech.edu/newsroom/release.html?id=1728]]
A chronicle of the first effort to move individual atoms. [[Positioning single atoms with a scanning tunnelling microscope|http://www.nature.com/nature/journal/v344/n6266/abs/344524a0.html]] by D. M. Eigler & E. K. Schweizer (Nature, April 5, 1990)

"In 1989, three years after joining IBM’s Almaden Research Center, [[Don Eigler|http://en.wikipedia.org/wiki/Don_Eigler]] and colleague Erhard Schweitzer demonstrated the ability to position individual atoms with atomic precision using a low-temperature [[Scanning Tunneling Microscope|http://www.almaden.ibm.com/vis/stm/gallery.html]]".<html><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/57QQqbziiFs&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/57QQqbziiFs&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="620" height="500"></embed></object></html>
<<tag video>><<tag microscope>><<tag milestone>>
''for identify to server:''
username: <<option txtUploadUserName>>
password: <<option pasUploadPassword>>
''for signing your edits:''
author <<option txtUserName>>
----
<<newTiddler focus:tags tag:toRSS>>
<<newJournal "DD MMM YYYY" focus:tags tag:events tag:dissemination>>
<<upload>>
----
AdvancedOptions
----
<<slider chkSliderTimeline SideBarTabs 'tab >' 'show timeline'>>
Gold is for ever… is inert and not biodegradable, the most noble of the noble metals. That is why it is used in medicine (stents) or dental restoration. However, if you look very close, with your nanoglasses, ''gold'' dissolves in biological environments. This metabolization of inorganic “non-biodegradable” matter is slow and it has been usually neglected. However, nanoparticles are also small and the dissolution rates become significant when your entity has few thousand of atoms. Mainly if the immune system is involved. See [[Gold ions bio-released from metallic gold particles reduce inflammation and apoptosis and increase the regenerative responses in focal brain injury|http://www.springerlink.com/content/a127670376840111/]]. 

Metabolization of magnetite/maghemite ''iron oxide'' ~NPs has also been described recently. See [[Bioinorganic transformations of liver iron deposits observed by tissue magnetic characterisation in a rat model|http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TGG-4KB6YV2-6&_user=1517286&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000053449&_version=1&_urlVersion=0&_userid=1517286&md5=b224b4272d490a17a278f6c74483b03f]]

''~CdSe nanoparticles'' have also been reported to corrode and dissolve in biological environments in a matter of 24-48 hours. See [[Cytotoxicity of Colloidal CdSe and CdSe/ZnS Nanoparticles|http://www.nanion.de/pdf/NanoLetters_Cytotoxicity.pdf]]

Thus, if ~CdSe, iron oxide, Au dissolve in biological environments, one may expect that many other materials will do so (may be not carbon nanostructures, as carbon nanotubes or fullerenes, will be diamonds for ever even in the nanometer? Or very stable oxides as ~SiO2, will it dissolve?) ''and this will have an enormous impact on the risk evaluation of nanoparticles'' since it will determine their accumulation potential and therefore the doses, regulations, toxicities… 
Berkeley Lab scientists have developed a nano-sized synthetic polymer bundle that can fold in half and trap a zinc molecule between its jaws, ''a first-of-its-kind feat that mimics how proteins conduct life’s vital functions''.

//“Our goal is to take proteins’ catalysis and molecular-recognition capabilities, and add them to a material that is more rugged and less prone to degradation,”// said Ron Zuckermann, who is the Facility Director of the Biological Nanostructures Facility in Berkeley Lab’s Molecular Foundry.  “Proteins are precisely folded linear polymer chains of amino acids. So we thought, why not make a similar polymer chain by linking together non-natural amino acids?”

The scientists’ research is detailed in a study entitled [[“Biomimetic Nanostructures: Creating a High-Affinity Zinc-Binding Site in a Folded Nonbiological Polymer”|http://pubs.acs.org/cgi-bin/abstract.cgi/jacsat/2008/130/i27/abs/ja802125x.html]].

Source: [[Nanosized Jaws Perform Like Proteins|http://www.lbl.gov/publicinfo/newscenter/features/2008/MSD-nano-jaws.html]]
^^Via [[Joan Esteve|http://www.ub.edu/gcfes/index_es.htm]]^^
With the joint release of [[Principles for the Oversight of Nanotechnologies and Nanomaterials|http://www.icta.org/doc/Principles%20for%20the%20Oversight%20of%20Nanotechnologies%20and%20Nanomaterials_final.pdf]], a broad international coalition of consumer, public health, environmental, labor, and civil society organizations spanning six continents called for strong, comprehensive oversight of the new technology and its products.

Source: [[International Center for Technology Assessment (CTA): BROAD INTERNATIONAL COALITION ISSUES URGENT CALL FOR STRONG OVERSIGHT OF NANOTECHNOLOGY|http://www.icta.org/press/release.cfm?news_id=26]]
Buildings are majorly funcional, but in some special cases they become icons, as the olympic stadiums, airports, train stations, museums or bridges. 

Interestingly now, this concept has also arrived to the nanotechnology research buildings and beyond, underlaying the increasing public impact of this developing technology. Like the coming building of the new [[Iberian Nanotechnology Laboratory|http://www.pr-inside.com/m-w-zander-selected-to-design-iberian-r634975.htm]] in Braga (Portugal), where the format and the substance/content are related.

Related to that there is the by Herzog & de Meuron [[40 Bond Street|http://www.40bond.com/]] building in New York, where a nanostructured coating ([[Diamon-Fusion|http://www.diamonfusion.com/en/news/pr121906.html]]) keeps the glasses clean saving time and resources. Or [[Richard Meier|http://www.nytimes.com/2006/11/28/world/europe/28smog.html?n=Top/News/World/Countries%20and%20Territories/Italy]]'s Dives in [[Misericordia Church|http://www.richardmeier.com/Releases/Press_Jubilee_Text.htm]] in Rome (Italy) which has a ~TiO2 coating which in the presence of the UV light coming from the Sun, degrades combustion contaminants and maintain the walls clean and eats environmental smog too. This approach is also explored in a street in the town of Segrate, near Milan (Italy), using the same [[TX Active technology by Italcementi|http://www.italcementigroup.com/ENG/Research+and+Innovation/Innovative+Products/]]; the street with an average traffic of 1,000 cars per hour, has been repaved with the compound, and measures show a reduction in nitric oxides of around 60%
~CytImmune, a clinical stage nanomedicine company focused on the development and commercialization of multifunctional, tumor-targeted therapies presented at the 43rd American Society of Clinical Oncology (ASCO) Annual meeting. The poster, entitled “Preliminary Results of a Phase 1 Clinical Trial of ~CYT-6091: A ~PEGylated colloidal gold-TNF nanomedicine,” announced the preliminary data of a National Cancer Institute conducted and ~CytImmune Sciences sponsored Phase 1 trial of ~CYT-6091 (Aurimune), ~CytImmune’s lead drug compound. The Phase 1 clinical trial was designed to investigate whether: (1) Aurimune will perform identically in humans as it did in preclinical studies and companion animals and (2) the fever side effect observed in preclinical studies can be easily managed and separated from hypotension – the dose limiting side effect of the active pharmaceutical ingredient.

“Presenting preliminary Phase 1 trial results to the leading body of international oncology experts helps pave the way for nanomedicines as the next generation of targeted cancer therapies and their use in improving the biodelivery of potent, but highly toxic therapeutics. We believe ~CYT-6091 has the potential to become a new, versatile therapeutic which may be used to treat a broad spectrum of solid tumors.” said Dr. Lawrence Tamarkin, CEO of ~CytImmune Sciences.

Source: [[CytImmune Presents Positive CYT-6091 Data|http://www.cytimmune.com/download/releases/CytImmune_ASCO_Release_Final6_3_061.pdf]]

This scientist use the fact that blood vessels surrounding the tumors are leaky due to their fast growth providing thus a way to passively target the tumor efficiently avoiding (or decreasing) deleterious secondary effects of antineoplastic drugs.
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|0.0.0|
|Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|monthly and yearly calendars|

// // updated by Jeremy Sheeley to add cacheing for reminders
// // see http://www.geocities.com/allredfaq/reminderMacros.html
// // ''Changes by ELS 2006.08.23:''
// // added handling for weeknumbers (code supplied by Martin Budden.  see "wn**" comment marks)
// // ''Changes by ELS 2005.10.30:''
// // config.macros.calendar.handler()
// // ^^use "tbody" element for IE compatibility^^
// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^
// // createCalendarDays()
// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^
// // calendar stylesheet definition
// // ^^use .calendar class-specific selectors, add text centering and margin settings^^


!!!!!Configuration:
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|

!!!!!Syntax:
|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|
|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|
|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|
|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|
|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|

***/
// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.

//{{{
config.macros.calendar = {};

config.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];

config.macros.calendar.weekendbg = "#c0c0c0";
config.macros.calendar.monthbg = "#e0e0e0";
config.macros.calendar.holidaybg = "#ffc0c0";

//}}}
// //''Code section:''
// (you should not need to alter anything below here)//
//{{{
if(config.options.txtCalFirstDay == undefined)
  config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
  config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)//wn**
  config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
  config.options.txtCalFirstDay = 0;

config.macros.calendar.tiddlerformat = "0DD/0MM/YYYY";  // This used to be changeable - for now, it isn't// <<smiley :-(>> 

version.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};
config.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

config.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead
//}}}

// //Is the given date a holiday?
//{{{
function calendarIsHoliday(date)
{
 var longHoliday = date.formatString("0DD/0MM/YYYY");
 var shortHoliday = date.formatString("0DD/0MM");

 for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
   if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {
     return true;
   }
 }
 return false;
}
//}}}

// //The main entry point - the macro handler.
// //Decide what sort of calendar we are creating (month or year, and which month or year)
// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.
// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//
// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//
// ELS 2006.05.29: add journalDateFmt handling//
//{{{
config.macros.calendar.handler = function(place,macroName,params)
{
   var calendar = createTiddlyElement(place, "table", null, "calendar", null);
   var tbody = createTiddlyElement(calendar, "tbody", null, null, null);
   var today = new Date();
   var year = today.getYear();
   if (year<1900) year+=1900;
 
   // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)
   var text = store.getTiddlerText("SideBarOptions");
   this.journalDateFmt = "DD MMM YYYY";
   var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);
   if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }

   if (params[0] == "thismonth")
  {
      cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, today.getMonth());
  } 
  else if (params[0] == "lastmonth") {
      var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
      cacheReminders(new Date(year, month, 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, month);
   }
   else if (params[0] == "nextmonth") {
      var month = today.getMonth()+1; if (month>11) { month=0; year++; }
      cacheReminders(new Date(year, month, 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, month);
   }
   else {
      if (params[0]) year = params[0];
      if(params[1])
      {
         cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);
         createCalendarOneMonth(tbody, year, params[1]-1);
      }
      else
      {
         cacheReminders(new Date(year, 0, 1, 0, 0), 366);
         createCalendarYear(tbody, year);
      }
   }
  window.reminderCacheForCalendar = null;
}
//}}}
//{{{
//This global variable is used to store reminders that have been cached
//while the calendar is being rendered.  It will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
  if (window.findTiddlersWithReminders == null)
    return;
  window.reminderCacheForCalendar = {};
  var leadtimeHash = [];
  leadtimeHash [0] = 0;
  leadtimeHash [1] = leadtime;
  var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
  for(var i = 0; i < t.length; i++) {
    //just tag it in the cache, so that when we're drawing days, we can bold this one.
     window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; 
  }
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
  var row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);
  row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarDayHeader(row, 1);
  createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarMonth(calendar, year, mon)
{
  var row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);
  row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarDayHeader(row, 1);
  createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarYear(calendar, year)
{
  var row;
  row = createTiddlyElement(calendar, "tr", null, null, null);
  var back = createTiddlyElement(row, "td", null, null, null);
  var backHandler = function() {
      removeChildren(calendar);
      createCalendarYear(calendar, year-1);
    };
  createTiddlyButton(back, "<", "Previous year", backHandler);
  back.align = "center";

  var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);
  yearHeader.align = "center";
  //yearHeader.setAttribute("colSpan", 19);
  yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**

  var fwd = createTiddlyElement(row, "td", null, null, null);
  var fwdHandler = function() {
    removeChildren(calendar);
    createCalendarYear(calendar, year+1);
  };
  createTiddlyButton(fwd, ">", "Next year", fwdHandler);
  fwd.align = "center";

  createCalendarMonthRow(calendar, year, 0);
  createCalendarMonthRow(calendar, year, 3);
  createCalendarMonthRow(calendar, year, 6);
  createCalendarMonthRow(calendar, year, 9);
}
//}}}

//{{{
function createCalendarMonthRow(cal, year, mon)
{
  var row = createTiddlyElement(cal, "tr", null, null, null);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
  row = createTiddlyElement(cal, "tr", null, null, null);
  createCalendarDayHeader(row, 3);
  createCalendarDayRows(cal, year, mon);
}
//}}}

//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
  var month;
  if(nav) {
    var back = createTiddlyElement(row, "td", null, null, null);
    back.align = "center";
    back.style.background = config.macros.calendar.monthbg;

/*
    back.setAttribute("colSpan", 2);

    var backYearHandler = function() {
      var newyear = year-1;
      removeChildren(cal);
      cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, mon);
    };
    createTiddlyButton(back, "<<", "Previous year", backYearHandler);
*/
    var backMonHandler = function() {
      var newyear = year;
      var newmon = mon-1;
      if(newmon == -1) { newmon = 11; newyear = newyear-1;}
      removeChildren(cal);
      cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, newmon);
    };
    createTiddlyButton(back, "<", "Previous month", backMonHandler);


    month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
//    month.setAttribute("colSpan", 3);
//    month.setAttribute("colSpan", 5);
    month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**

    var fwd = createTiddlyElement(row, "td", null, null, null);
    fwd.align = "center";
    fwd.style.background = config.macros.calendar.monthbg; 

//    fwd.setAttribute("colSpan", 2);
    var fwdMonHandler = function() {
      var newyear = year;
      var newmon = mon+1;
      if(newmon == 12) { newmon = 0; newyear = newyear+1;}
      removeChildren(cal);
      cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, newmon);
    };
    createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);
/*
    var fwdYear = createTiddlyElement(row, "td", null, null, null);
    var fwdYearHandler = function() {
      var newyear = year+1;
      removeChildren(cal);
      cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, mon);
    };
    createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);
*/
  } else {
    month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
    //month.setAttribute("colSpan", 7);
    month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**
  }
  month.align = "center";
  month.style.background = config.macros.calendar.monthbg;
}
//}}}

//{{{
function createCalendarDayHeader(row, num)
{
  var cell;
  for(var i = 0; i < num; i++) {
    if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**
    for(var j = 0; j < 7; j++) {
      var d = j + (config.options.txtCalFirstDay - 0);
      if(d > 6) d = d - 7;
      cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);
      if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
        cell.style.background = config.macros.calendar.weekendbg;
    }
  }
}
//}}}

//{{{
function createCalendarDays(row, col, first, max, year, mon)
{
  var i;
  if (config.options.chkDisplayWeekNumbers){
    if (first<=max) {
      var ww = new Date(year,mon,first);
      createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**
    }
    else createTiddlyElement(row, "td", null, null, null);//wn**
  }
  for(i = 0; i < col; i++) {
    createTiddlyElement(row, "td", null, null, null);
  }
  var day = first;
  for(i = col; i < 7; i++) {
    var d = i + (config.options.txtCalFirstDay - 0);
    if(d > 6) d = d - 7;
    var daycell = createTiddlyElement(row, "td", null, null, null);
    var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);

    if(day > 0 && day <= max) {
      var celldate = new Date(year, mon, day);
      // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup
      if (window.showDate) {
        showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt 
      } else {
        if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
        var title = celldate.formatString(config.macros.calendar.tiddlerformat);
        if(calendarIsHoliday(celldate)) {
          daycell.style.background = config.macros.calendar.holidaybg;
        }
        if(window.findTiddlersWithReminders == null) {
          var link = createTiddlyLink(daycell, title, false);
          link.appendChild(document.createTextNode(day));
        } else {
          var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
        }
      }
    }
    day++;
  }
}
//}}}

// //We've clicked on a day in a calendar - create a suitable pop-up of options.
// //The pop-up should contain:
// // * a link to create a new entry for that date
// // * a link to create a new reminder for that date
// // * an <hr>
// // * the list of reminders for that date
//{{{
function onClickCalendarDate(e)
{
  var button = this;
  var date = button.getAttribute("title");
  var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));

  date = dat.formatString(config.macros.calendar.tiddlerformat);
  var popup = createTiddlerPopup(this);
  popup.appendChild(document.createTextNode(date));
  var newReminder = function() {
    var t = store.getTiddlers(date);
    displayTiddler(null, date, 2, null, null, false, false);
    if(t) {
      document.getElementById("editorBody" + date).value += "\n<<reminder day:" + dat.getDate() +
                                                                                         " month:" + (dat.getMonth()+1) +
                                                                                         " year:" + (dat.getYear()+1900) + " title: >>";
    } else {
      document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +
                                                                                       " month:" + (dat.getMonth()+1) +
                                                                                       " year:" + (dat.getYear()+1900) + " title: >>";
    }
  };
  var link = createTiddlyButton(popup, "New reminder", null, newReminder); 
  popup.appendChild(document.createElement("hr"));

  var t = findTiddlersWithReminders(dat, [0,14], null, 1);
  for(var i = 0; i < t.length; i++) {
    link = createTiddlyLink(popup, t[i].tiddler, false);
    link.appendChild(document.createTextNode(t[i].tiddler));
  }
}
//}}}

//{{{
function calendarMaxDays(year, mon)
{
 var max = config.macros.calendar.monthdays[mon];
 if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {
 max++;
 }
 return max;
}
//}}}

//{{{
function createCalendarDayRows(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1 + 7;
 var day1 = -first1 + 1;
 var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first2 < 0) first2 = first2 + 7;
 var day2 = -first2 + 1;
 var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first3 < 0) first3 = first3 + 7;
 var day3 = -first3 + 1;

 var max1 = calendarMaxDays(year, mon);
 var max2 = calendarMaxDays(year, mon+1);
 var max3 = calendarMaxDays(year, mon+2);

 while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
 createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
 }
}
//}}}

//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1+ 7;
 var day1 = -first1 + 1;
 var max1 = calendarMaxDays(year, mon);

 while(day1 <= max1) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 }
}
//}}}

// //ELS 2005.10.30: added styles
//{{{
setStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");
//}}}
"With carbon, we know how to make things very small," said Ohldag. "On the other hand we know a lot about how to process and store information using magnetism. This opens up the door for future studies that will lead to improved magnetism in carbon that could one day we will be able to combine the ‘magnetic' and the ‘carbon' world."

Harnessing the magnetic properties of carbon could one day revolutionize a range of fields from nanotechnology to electronics. Carbon nanodevices could be built one atom at a time, leading to miniaturized machines and lightweight electronics. Magnetism, which forms the basis of information storage and processing in computer hard drives, could be employed in novel ways in tomorrow's electronic devices. 

Source: [[Carbon Joins the Magnetic Club|http://www.physorg.com/news98111007.html]]

<<tag nanomaterial>>
Antineoplastic effects of <html><a href="http://en.wikipedia.org/wiki/Cisplatin" rel="tag">Cisplatin</a></html>, a paradigm of serendipity, were discovered when applying electric fields to C.Elegans. In that case, the Pt(II) cations released from the electrodes interferred with cellular duplication and the C.Elegans growed to gigantic sizes. First was thought that the applied electrical induced organism growth however later on was found that <html><a href="http://www.nlm.nih.gov/cgi/mesh/2006/MB_cgi?mode=&term=Cisplatin" rel="tag">Cisplatin</a></html> irreversibly attaches to the N residues of the DNA impeding cell reproduction. Since then it has been one of the most used antitumoral drugs and still today is widely used in the treatment of the most prevalent tumours. In addition, <html><a href="http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=84691" rel="tag">Cisplatin</a></html> derivates as carboplatin or oxiplatin has show also benefitial therapeutic effects, indicating that modifications of cisplatin may be of medical interest. Therefore many compunts based on Pt(II) has been produced showing biological activity, however, few of them have shown medical relevance. The loose of activity in the body can be associated with deactivation of the Pt(II) cation by sulfure containing molecules (cisteines) or by a unproper biodistribution of the drug, and others. In a recent paper, Lippard and co-workers have try to overcome this complications by conjugating platine(IV) compounds to carbon nanotubes. The carbon nanotubes should act as Longboat Delivery Systems for Platium (IV). Such nanocomposites are internalized by endocitosis into a endosome where its low pH reduces Platium (IV) to Platinum (II) delivering a large amount of cisplatin(II) to the cell increasing efficiently its killer effects. In addition, circulating Platinum (IV) compounds are non toxic (it is the valence II compound the toxic one). Now it has to be observed the compund biodistribution and side effects since generally platinum chemotherapies are interrupted due to size effects of nefro toxicity or renal toxicity.

Feazell et al. Journal of the American Chemical Society 2007, 129,8438-8439

/***
|Name|DatePlugin|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Version|2.3.1|
|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||
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|

There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW.  While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier.  This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.

This plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30).  Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed).  This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.
!!!!!Usage
<<<
When installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}.  All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.

However, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:
* [mode] is either ''display'', ''link'' or ''popup''.  If omitted, it defaults to ''display''.  This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.
* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively.  You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters.  Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler.  You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.  
* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax.  The default is "YYYY.0MM.0DD"
>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^
>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^
>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^
>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^
* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format

In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:

''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' 

Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:
* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status:  'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.
* [weekend] - true indicates a weekend, false indicates a weekday.  When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.
<<<
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''DatePlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.06.20 [2.3.1]'' in onClickDatePopup(), use Popup.show() instead of deprecated ScrollToTiddlerPopup().  Fixes fatal error that prevents popups from being properly displayed
''2007.05.31 [2.3.0]'' list "created" tiddlers in date popup.  Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.
''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date.  Also, honor excludeLists tag when getting lists of tiddlers.  Based on suggestions by Mark Hulme.
''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists.  Based on a suggestion by Mark Hulme.
''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler.  Thanks to Jeremy Sheeley for these additional tweaks.
''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present.  If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders.  Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").
''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global.  Avoids FireFox 1.5.0.1 crash bug when referencing global variables
''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content.  With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned.  To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()
''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
''2005.12.27 [2.0.0]'' Update for TW2.0
Added parameter handling for 'linkformat'
''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005).  When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number.  But IE's date.getYear() already returns 2005.  As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005).  Adding +1900 is now conditional so the values will be correct on both browsers.
''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter
''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter
''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu.  Based on a suggestion from BenjaminKudria.
''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache.  While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed.  This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended.  This should hopefully speed up calendar generators and other plugins that render multiple dates...
''2005.10.31 [1.0.1]'' documentation and code cleanup
''2005.10.31 [1.0.0]'' initial public release
''2005.10.30 [0.9.0]'' pre-release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.date = {major: 2, minor: 3, revision: 1, date: new Date(2007,6,20)};
//}}}

//{{{
config.macros.date = {
	format: "YYYY.0MM.0DD", // default date display format
	linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format
	linkedbg: "#babb1e", // "babble"
	todaybg: "#ffab1e", // "fable"
	weekendbg: "#c0c0c0", // "cocoa"
	holidaybg: "#ffaace", // "face"
	createdbg: "#bbeeff", // "beef"
	modifiedsbg: "#bbeeff", // "beef"
	remindersbg: "#c0ffee", // "coffee"
	holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
	weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]
};
//}}}

//{{{
config.macros.date.handler = function(place,macroName,params)
{
	// do we want to see a link, a popup, or just a formatted date?
	var mode="display";
	if (params[0]=="display") { mode=params[0]; params.shift(); }
	if (params[0]=="popup") { mode=params[0]; params.shift(); }
	if (params[0]=="link") { mode=params[0]; params.shift(); }
	// get the date
	var now = new Date();
	var date = now;
	if (!params[0] || params[0]=="today")
		{ params.shift(); }
	else if (params[0]=="filedate")
		{ date=new Date(document.lastModified); params.shift(); }
	else if (params[0]=="tiddler")
		{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
	else if (params[0].substr(0,8)=="tiddler:")
		{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
	else {
		var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
		var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
		var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
		date = new Date(y,m-1,d);
	}
	// date format with optional custom override
	var format=this.format; if (params[0]) format=params.shift();
	var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
	showDate(place,date,mode,format,linkformat);
}
//}}}

//{{{
window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
	if (!mode) mode="display";
	if (!format) format=config.macros.date.format;
	if (!linkformat) linkformat=config.macros.date.linkformat;
	if (!autostyle) autostyle=false;

	// format the date output
	var title = date.formatString(format);
	var linkto = date.formatString(linkformat);

	// just show the formatted output
	if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }

	// link to a 'dated tiddler'
	var link = createTiddlyLink(place, linkto, false);
	link.appendChild(document.createTextNode(title));
	link.title = linkto;
	link.date = date;
	link.format = format;
	link.linkformat = linkformat;

	// if using a popup menu, replace click handler for dated tiddler link
	// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
	if (mode=="popup") {
		link.onclick = onClickDatePopup;
		link.style.fontStyle="normal";
	}

	// format the popup link to show what kind of info it contains (for use with calendar generators)
	if (!autostyle) return;
	if (hasModifieds(date)||hasCreateds(date))
		{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
	if (hasReminders(date))
		{ link.style.textDecoration="underline"; }
	if(isToday(date))
		{ link.style.border="1px solid black"; }

	if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )
		{ place.style.background = config.macros.date.weekendbg; }
	if(isHoliday(date)&&(config.macros.date.holidaybg!=""))
		{ place.style.background = config.macros.date.holidaybg; }
	if (hasCreateds(date)&&(config.macros.date.createdbg!=""))
		{ place.style.background = config.macros.date.createdbg; }
	if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))
		{ place.style.background = config.macros.date.modifiedsbg; }
	if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))
		{ place.style.background = config.macros.date.linkedbg; }
	if (hasReminders(date)&&(config.macros.date.remindersbg!=""))
		{ place.style.background = config.macros.date.remindersbg; }
	if(isToday(date)&&(config.macros.date.todaybg!=""))
		{ place.style.background = config.macros.date.todaybg; }
}
//}}}

//{{{
function isToday(date) // returns true if date is today
	{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }

function isWeekend(date) // returns true if date is a weekend
	{ return (config.macros.date.weekend[date.getDay()]); }

function isHoliday(date) // returns true if date is a holiday
{
	var longHoliday = date.formatString("0MM/0DD/YYYY");
	var shortHoliday = date.formatString("0MM/0DD");
	for(var i = 0; i < config.macros.date.holidays.length; i++) {
		var holiday=config.macros.date.holidays[i];
		if (holiday==longHoliday||holiday==shortHoliday) return true;
	}
	return false;
}
//}}}

//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var popup = Popup.create(this);
	if(popup) {
		// always show dated tiddler link (or just date, if readOnly) at the top...
		if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
			createTiddlyLink(popup,this.date.formatString(this.linkformat),true);
		else
			createTiddlyText(popup,this.date.formatString(this.linkformat));
		addCreatedsToPopup(popup,this.date,this.format);
		addModifiedsToPopup(popup,this.date,this.format);
		addRemindersToPopup(popup,this.date,this.linkformat);
	}
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
	var createds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].created.formatString("YYYY0MM0DD")
		if (!createds[date])
			createds[date]=new Array();
		createds[date].push(tiddlers[t].title);
	}
	return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
	if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
	return (config.macros.date.createds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addCreatedsToPopup(popup,when,format)
{
	var force=(store.isDirty() && when.formatString("YYYY0MM0DD")==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var createds = config.macros.date.createds[when.formatString("YYYY0MM0DD")];
	if (createds) {
		createds.sort();
		var e=createTiddlyElement(popup,"div",null,null,"created:");
		for(var t=0; t<createds.length; t++) {
			var link=createTiddlyLink(popup,createds[t],false);
			link.appendChild(document.createTextNode(indent+createds[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
	var modifieds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].modified.formatString("YYYY0MM0DD")
		if (!modifieds[date])
			modifieds[date]=new Array();
		modifieds[date].push(tiddlers[t].title);
	}
	return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
	if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
	return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addModifiedsToPopup(popup,when,format)
{
	var force=(store.isDirty() && when.formatString("YYYY0MM0DD")==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];
	if (mods) {
		mods.sort();
		var e=createTiddlyElement(popup,"div",null,null,"changed:");
		for(var t=0; t<mods.length; t++) {
			var link=createTiddlyLink(popup,mods[t],false);
			link.appendChild(document.createTextNode(indent+mods[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
	var reminders = { };
	if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
		// DEBUG var starttime=new Date();
		var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
		for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
		// DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\n";
		// DEBUG out+="startdate: "+date.toLocaleDateString()+"\n"+"leadtime: "+leadtime+" days\n\n";
		// DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\n"; }
		// DEBUG alert(out);
	}
	return reminders;
}

function hasReminders(date) // returns true if date has reminders
{
	if (window.reminderCacheForCalendar)
		return window.reminderCacheForCalendar[date]; // use calendar cache
	if (!config.macros.date.reminders)
		config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache
	return (config.macros.date.reminders[date]);
}

function addRemindersToPopup(popup,when,format)
{
	if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed

	var indent = String.fromCharCode(160)+String.fromCharCode(160);
	var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);
	var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));
	for(var t=0; t<reminders.length; t++) {
		link = createTiddlyLink(popup,reminders[t].tiddler,false);
		var diff=reminders[t].diff;
		diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");
		var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;
		link.appendChild(document.createTextNode(indent+diff+" - "+txt));
		createTiddlyElement(popup,"br",null,null,null);
	}
	if (readOnly) return;	// omit "new reminder..." link
	var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");
	var title = when.formatString(format);
	link.title="add a reminder to '"+title+"'";
	link.onclick = function() {
		// show tiddler editor
		story.displayTiddler(null, title, 2, null, null, false, false);
		// find body 'textarea'
		var c =document.getElementById("tiddler" + title).getElementsByTagName("*");
		for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;
		// append reminder macro to tiddler content
		if (i<c.length) {
			if (store.tiddlerExists(title)) c[i].value+="\n"; else c[i].value="";
			c[i].value += "<<reminder";
			c[i].value += " day:"+when.getDate();
			c[i].value += " month:"+(when.getMonth()+1);
			c[i].value += " year:"+when.getFullYear();
			c[i].value += ' title:"Enter a title" >>';
		}
	};
}
//}}}
[[WhatsNew]]
[[contents]]
In 2005, a group of pioneering projects, from various contexts  and with different motivations, set off on separate voyages into this new territory. Their mission: to explore how we might ensure that future developments in nanotechnology are governed in the interests of the many, not the few. In short, to bring democracy to these new, unchartered territories. Democratic Technologies? follows the journeys of these projects, and the scientists, citizens and civil servants who joined them.

This is the report of the [[Nanotechnologies Engagement Group (NEG)|http://www.involve.org.uk/neg]], a body convened by Involve with the support of the Office of Science and Innovation’s Sciencewise scheme, and the Universities of Cambridge and Sheffield. Our role has been to observe and support the pioneers of nanotechnology public engagement and log their experiences for the benefit of future journeys into the interface between democracy and technology. 

Source: [[Democratic Technologies?|http://83.223.102.125/involvenew/mt/archives/blog_37/Democratic%20Technologies.pdf]]
"Europe is in the vanguard of the emerging field of nanosciences and nanotechnologies (N&N), a developing field of science with the potential for major positive impact economically, socially and environmentally. Nevertheless, knowledge gaps remain about the impact of these technologies on human health and the environment, as well as issues relating to ethics and the respect of fundamental rights. This is why the Commission is recommending to the Member States to adopt a Code of Conduct to govern research in this field. Based around 7 general principles covering issues such as sustainability, precaution, inclusiveness and accountability, the Code of Conduct invites Member States to take concrete action, involving universities, research institutes and companies, for the safe development and use of nanotechnologies."

Source: [[European Commission adopts Code of Conduct for Responsible Nanosciences and Nanotechnologies Research|ftp://ftp.cordis.europa.eu/pub/nanotechnology/docs/ip-08-193_en1.doc]]

See also [[EU nanotechnology R&D in the field of health and environmental impact of nanoparticles|ftp://ftp.cordis.europa.eu/pub/nanotechnology/docs/final-version.pdf]] (pdf download, 400 KB), released on January 28, 2008
[img[Nanometer scale organisation of molecular components on a copper surface|http://www.mpg.de/bilderBerichteDokumente/multimedial/bilderWissenschaft/2007/10/Tait0701/Web_Pressebild.jpeg]]

Scientists publish images resolving molecules which have organized themselves into patterns according to size. The automatic molecular assembly and selection steps exhibited by the molecules, which start as random mixtures, demonstrates a fundamental step in the evolution of life. The organization is activated by instructions which are built-in to the molecules. During assembly, molecules exhibit active selection: those in incorrect positions move to make room for others which fit properly. The molecular-level observation of such self-selection gives, ''for the first time, direct insight into fundamental steps of the biological evolution from inanimate molecules to living entities''. The resulting nanostructures also hold great promise as an efficient avenue to new catalysts, nanotechnologies, and surface applications.

Source: [[Max Planck Society - Press Release|http://www.mpg.de/english/illustrationsDocumentation/documentation/pressReleases/2007/pressRelease200710292/index.html]]
[<img['Phoenix probe lands on Mars'|http://phoenix.lpl.arizona.edu/images/news/ne_198.jpg]]                                                                                         Nanosurf, the University of Neuchatel, and the University of Basel were part of a [[Swiss consortium|http://www-samlab.unine.ch/activities/famars.htm]] challenged to equip the [[Phoenix’ Mars Probe|http://phoenix.lpl.arizona.edu/]] with ''the first atomic force microscope in space''. This atomic force microscope was designed to be part of the [[Microscopy, Electrochemistry, and a Conductivity Analyzer (MECA)|http://instrumentsystems.jpl.nasa.gov/insitu/meca/index.cfm]] unit built by NASA’s Jet Propulsion Laboratory. It will be a key component of the Phoenix probe’s rich ensemble of on-board scientific instruments. 

[[Nanosurf’s atomic force microscope|http://www.nanosurf.com/content/event/download/100597_mars_scanner.jpg]] design was selected because of its outstanding lightweight of just 320 Gram (0.7 lb.), its low voltage requirements, and its varied robust features. The Mars-bound AFM is designed to achieve a resolution of 10 nanometers in an image range of 10 micrometers. For redundancy, it is equipped with 8 addressable sensors and cantilevers on a single chip. The AFM can be operated in static or dynamic mode, enabling it to image loose Martian soil particles without disturbing them. ''Phoenix will first locate water ice contained within Martian soil and send a sample to the AFM. The AFM will then image the sample and its micro computer system, backed-up by the Lander computer, will send results back to earth''. The special tasks addressed by the Swiss consortium were diverse: to secure the AFM against shock waves during rocket launch and touchdown on Mars (expected end of May 2008), the prevention of atmospheric electrical discharges through AFM’s limited voltage, cold resistance, and shielding against all kinds of radiation on the Martian surface.

Source: [[Nanosurf AFM on its way to Mars|http://www.nanosurf.com/module/search/search_index/index.cfm?action=dsp_content&content_action=act_sel_active&curr_navi=s_03&curr_content=s_03&curr_page=1&searchstring1=Phoenix&CFID=13217753&CFTOKEN=49886528]]
For the first time, scientists have directly imaged carbon nanotubes entering and migrating within human cells, determining as a result that whether the nanotubes cause cell death depends on the dose and exposure time.

Source: [[First Direct Images of Carbon Nanotubes Entering Cells|http://physorg.com/news114348754.html]]

[<img[Carbon nanotubes (dark areas) within a cell nucleus|http://www.physorg.com/newman/gfx/news/Figure_lmg_435.jpg]]

/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			li