<!--{{{-->
<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 closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></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 +saveTiddler -cancelTiddler deleteTiddler'></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>>
<<options>>
{{{

Background: #111
Foreground: #888
PrimaryPale: #222
PrimaryLight: #18f
PrimaryMid: #333
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #999
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Darkest: #000
Brightest: #fff

Darker: #111
Dark: #333
TextOnDark: #ccc
DullTextOnDark: #888
BrightOnDark: #eee
DullOnDark: #666
SubtleOnDark: #444
Magenta:#D71F85


}}}
[[Welcome]]
<!--{{{-->
<div class='title' macro='view title'></div>
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></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>
<!--}}}-->
These interface options for customising TiddlyWiki are saved in your browser

<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

Also see AdvancedOptions
<!--{{{-->
<div id='controlBar'><div class='constrainer' tiddler='controlBar' refresh='content'></div></div>
<div class='header'>
	<div class='constrainer'>
		<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>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div class='constrainer'>
	<div id='displayArea'>
		<div id='messageArea'></div>
		<div id='tiddlerDisplay'></div>
	</div>
	<div id='sidebar' refresh='content' tiddler='SideBar'></div>
</div>
<!--}}}-->
open source applications from BT
osmosoft
http://www.osmosoft.com/
/*{{{*/

body { background-color:[[ColorPalette::Background]]; font: normal 13px/1.5em Arial, sans-serif; color:[[ColorPalette:TextOnDark]];}
div.constrainer { width:800px; margin:0 auto 0 auto; overflow:hidden; clear:both; }
input.txtOptionInput {border-style:none; margin:0; padding:4px; color:#444; background:#fff url(./images/bg_search.png) repeat-x top left;}

div.header {  background:[[ColorPalette::Darker]] url(images/lights.png) repeat-x center 70px; position:relative;}
div.header div.headerShadow { height:160px; top:0; left:0; }
div.header div.headerShadow span.siteTitle { position:absolute; top:40px; left:0; width:201px; height:43px; text-indent:-9999px; overflow:hidden; background:transparent url(images/logo.png) no-repeat top left;}
div.header div.headerShadow span.siteSubtitle { position:absolute; top:20px; right:0; width:196px; height:32px;text-indent:-9999px; overflow:hidden; background:transparent url(images/from_bt.png) no-repeat top left; }
div.header div.headerForeground { display:none; }

#controlBar { background-color:[[ColorPalette::Darkest]]; color:[[ColorPalette:TextOnDark]]; border-bottom:solid 1px [[ColorPalette::DullOnDark]]; }
#controlBar  a  { color:[[ColorPalette::DullOnDark]]; border-style:none; font-size:0.8em;}
#controlBar  a:hover { color:[[ColorPalette::TextOnDark]]; background-color:[[ColorPalette::Darkest]]; }

#controlBar div.constrainer a  { margin-right:2em; }
#controlBar div.sliderPanel { margin:2em 0;}
#controlBar div.sliderPanel a { margin-right:0;}

#messageArea {z-index:9999;}
#displayArea { margin:0; float:left; width:530px;}
#mainMenu {display:none;}

#sidebar {position: relative; margin:1em 0 4em 0; float:right; width:220px; text-align:right;}
#sidebar a {color:[[ColorPalette::Magenta]]; font-size:1.7em; font-weight:normal;line-height:1.4em;}
#sidebar a:hover {color:[[ColorPalette::Brightest]]; background-color:[[ColorPalette::Background]];}
#sidebar a.button {font-size:1.2em; color:#777; clear:right; border-style:none;}
#sidebar a.button:hover {color:#ccc; background-color:[[ColorPalette::Background]]; }
#sidebar input.txtOptionInput {width:170px; margin:4px 0 0 8px; }

div.tiddler {margin:0; padding:0 0 4em 0;}
div.tiddler a { color:#ddd;}
div.tiddler a:hover { color:[[ColorPalette::Magenta]]; background:[[ColorPalette::Background]];}

div.tiddler div.subtitle { display:none; }
div.tiddler div.toolbar { text-align:left; margin-left:0.5em; display:inline;}
div.tiddler div.toolbar > a.button { color:[[ColorPalette::SubtleOnDark]]; border-width:0;}
div.tiddler div.toolbar > a.button:hover { color:[[ColorPalette::BrightOnDark]]; background:[[ColorPalette::Darker]];}
div.tiddler div.title { font-size:2em; margin-left:0; color:[[ColorPalette::Brightest]]; display:inline; font-weight:normal;}

div.tiddler div.viewer { font-size:1.05em; margin:0 2em 0 0; padding-top:0.3em; width:430px; color:[[ColorPalette::Foreground]]; line-height:1.3em;}
div.tiddler div.viewer img { float:left; clear:left; margin:0 1em 1em 0; zoom:1;}
div.tiddler div.viewer h1, div.tiddler div.viewer h2, div.tiddler div.viewer h3, div.tiddler div.viewer h4 { border-bottom:solid 1px #333; padding:0.3em 0; margin:0.2em 0 0.2em 0; }
div.tiddler div.viewer h1 {color:#eee; font-size:1.4em; margin:1em 0 0.2em 0; }
div.tiddler div.viewer h2 {color:#eee; font-size:1.3em; margin:1em 0 0.2em 0;}
div.tiddler div.viewer h3 {color:#999; font-size:1.2em;}
div.tiddler div.viewer h4 {color:#999; font-size:1em;}

div.tiddler div.tagged { background-color:[[ColorPalette::Background]]; border-width:0; margin:0 0 2em 0;}
div.tiddler div.tagged ul li.listTitle { display:none; }
div.tiddler div.tagged ul li a { font-size:1em; display:block; border-style:none; margin-bottom:0; padding:0 0 0 16px; text-decoration:none; background:transparent url(images/tag.png) no-repeat 0 0.2em; color:#333; }
div.tiddler div.tagged ul li a:hover { color:#ccc; background:transparent url(images/tag.png) no-repeat 0 0.2em;}

div.tiddler div.tagging { float:none; border:solid 1px #222; padding:3px; background-color:#000; overflow:hidden; clear:both; zoom:1;}
div.tiddler div.tagging ul li { float:left; margin:0 1em 0 0; color:#666; }
div.tiddler div.tagging ul li a { color:[[ColorPalette::Magenta]]; }
div.tiddler div.tagging ul li a:hover { color:#fff; background-color:#000; }



div.tiddler table {margin:0; border-width:0px; }
div.tiddler table tr { border-width:0px; }
div.tiddler table tr td { border-width:0px; vertical-align:top; }
div.tiddler table tr td * { float:left; clear:left; }
div.tiddler div.viewer pre { font-size:0.9em; margin:0 0 1em 0; padding:1.2em; border:solid 1px #444; background-color:#222; color:#aaa; }

div.tiddler div.txtMainTab div.tabset {height:1.4em;}
div.tiddler div.txtMainTab div.tabset a.tab {border-style:none;  background-color:transparent; color:[[ColorPalette::Magenta]]; padding:0.15em 0.6em;}
div.tiddler div.txtMainTab div.tabset a.tabSelected {border:solid 1px #ccc; border-bottom:solid 3px [[ColorPalette::Background]]; background-color:[[ColorPalette::Background]]; color:#ccc;}
div.tiddler div.txtMainTab div.tabset a.tabUnselected:hover {color:#fff;}
div.tiddler div.txtMainTab div.tabContents {background-color:transparent; border-style:none; border-top:solid 1px #444;}
div.tiddler div.txtMainTab ul { list-style:none; margin:0; padding:0.5em 0; }
div.tiddler div.txtMainTab ul li { padding:0 20px;}
div.tiddler div.txtMainTab ul li a { font-weight:normal; line-height:1.3em; margin:0.2em 0; }
div.tiddler div.txtMainTab ul li.listTitle { border-top:solid 1px #222 ;margin:0; padding:0.5em 0 0.2em 20px; font-size:1.5em; color:#555; }
div.tiddler div.txtMainTab ul li.listLink { margin:0; padding:0 0 0 20px; }
div.tiddler div.txtMainTab ul:first-child li.listTitle { border-style:none;  }

#popup { border:solid 1px #000; padding:0;}
#popup.popup li a { background-color:#000; color:[[ColorPalette::Foreground]]; text-align:left; padding:0.1em 0.3em;}
#popup.popup li a:hover { background-color:[[ColorPalette::Magenta]]; color:#fff;}
#popup.popup li.listBreak div {border-bottom:solid 0px #111; border-top:solid 1px #333; margin:0;}

form.wizard {font-size:0.8em;}
form.wizard input.txtOptionInput {font-size:1em; }
/*}}}*/
<!--{{{-->
<div class='title' macro='view title'></div>
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler'></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>
<!--}}}-->
//{{{

config.macros.pipePlugin = {
	icon: new Image()
};

config.macros.pipePlugin.context = {};

config.macros.pipePlugin.init = function() {
	// preload loading icon
	this.icon.src = "images/ajax-loader.gif";
};

config.macros.pipePlugin.handler = function(place, name, params)
{
	this.context.place = place;
	this.context.name = name;
	this.context.params = params;

	this.icon.id = "ajax-loader";
	place.appendChild(this.icon);

	var newScript = document.createElement("script");
	newScript.id = 'temp_script';
	newScript.type = 'text/javascript';
	newScript.onload = config.macros.pipePlugin.removeScriptAndIcon;
	newScript.src = params[0];
	place.appendChild(newScript);
};

config.macros.pipePlugin.removeScriptAndIcon = function() {
	removeNode(document.getElementById("temp_script"));
	removeNode(document.getElementById("ajax-loader"));
};


config.macros.pipePlugin.JSONparse = function(response) {

    JSON = {};
    JSON.response = eval(response);
    
    JSON.blogtitle = JSON.response.value.title;
    JSON.blogitems = JSON.response.value.items;
    
    // Iterate through the blog items
	var limit = this.context.params[1];
	limit = ((limit && limit > JSON.blogitems.length) ? JSON.blogitems.length : limit);
    for (var i=0; i<limit; i++) {
    	var item = JSON.blogitems[i];
        var item_title = item.title;
		var item_link = item.link;
        // pick the right author node
        var item_author = (function() {
            return (item["dc:creator"] || (item.author && item.author.name));
        })();
        var heading = item_title;
		var headingelement = document.createElement("h3");
		var headingelement_link = document.createElement("a");
		headingelement_link.setAttribute("href",item_link);
		headingelement_link.setAttribute("target","_blank");
		headingelement.appendChild(headingelement_link).appendChild(document.createTextNode(heading));
		this.context.place.appendChild(headingelement);
		// var pubDate = new Date(item.pubDate);
		var date_regex = /(.)*?200(7|8|9)/mg;
		var pubDate = item.pubDate.match(date_regex)[0];
		var author_line = "posted by " + item_author + " on " + pubDate;
		createTiddlyElement(this.context.place,"h4",null,null,author_line);
        // pick the right content node
        var raw_content = "";
		raw_content = (function() {
            return (item["content:encoded"] || (item.content && item.content.content) || item["description"]);
        })();
        // handle <![CDATA[]]> blocks
        raw_content = raw_content.replace(/(<!\[CDATA\[)|(]]>)/ig,"");
        var content = raw_content.renderHtml();
        var para = document.createElement("p");
		var summary_limit = this.context.params[2];
		var pointer;
		var morelink = document.createElement("a");
		morelink.setAttribute("href",item_link);
		morelink.setAttribute("target","_blank");
		if (summary_limit) {
			pointer = writeCode(content,para,summary_limit,true);
			createTiddlyText(pointer,"...");
			createTiddlyText(pointer.appendChild(morelink)," read more");
		} else {
			pointer = writeCode(content,para);
			createTiddlyText(pointer," ...");
			createTiddlyText(pointer.appendChild(morelink)," read original post");
		}

        this.context.place.appendChild(para);
    }
};

// renderHtmlText puts a string through the browser render process and then extracts the text
// useful to turn HTML entities into literals such as &apos; to '
// this, annoyingly, doesn't cope with entities such as &#8217; - see renderHtmlEscapedEntities
// below for that
// NB: At some point, someone should create a utility function that just creates a text version
// of any HTML string, coping with any character encodings - as if it had been rendered in the
// browser and then copied out. This would combine renderHtmlText, renderHtmlEscapedEntities
// and writeCode or writeCodeSummary
String.prototype.renderHtmlText = function() {
	var e = createTiddlyElement(document.body,"div");
	e.innerHTML = this;
	var text = getPlainText(e);
	removeNode(e);
	return text;
};

// as above, but returns the full HTML string
String.prototype.renderHtml = function() {
	var e = createTiddlyElement(document.body,"div");
	e.innerHTML = this;
	var text = e.innerHTML;
	removeNode(e);
	return text;
};

// renderHtmlEscapedEntities takes a HTML string which has already been run through
// renderHtmlText to deal with converting entities such as &apos; to '
// It then converts remaining entities such as &#8217; to '
String.prototype.renderHtmlEscapedEntities = function() {
	var entity_match = /&#(.*?);/mg;
	entities = this.replace(entity_match,function(string_match,matches) {
		var word = string_match.substring(2,string_match.length-1);
		var new_word = String.fromCharCode(word);
		return new_word;
	});
	return entities;
};

// Creates a sub-tree under a given element
// based on writeCode() from O'Reilly Javascript Library
// deals with tags that should but don't self-close
// s - the source text
// pointer - the target DOM element to be written into
// 'limit' - optional; if an integer, limits the TEXT characters output
// 'textOnly' - optional; if true, only outputs text
// returns the original pointer
function writeCode(s,pointer,limit,textOnly) {
	var tag, j;
	limit = (limit && limit < s.length ? limit : s.length);
	var count = 0;
	for ( var i = 0; count < limit; i++) {
		var c = s.charAt(i);
		if (c == "<") {
			var j = s.indexOf(">", i + 1);
			if(!textOnly) {
				tag = s.substring(i, j + 1);
				if (tag.charAt(tag.length - 2) == "/"|| tag.substr(1,2) == "br" || tag.substr(1,3) == "img" || tag.substr(1,2) == "hr") {
					if (pointer != null && pointer.nodeType == 3) {
						pointer = pointer.parentNode;
					}
					pointer.appendChild(createElementFromString(tag));
				} else if (tag.charAt(1) != "/") {
					if (pointer != null && pointer.nodeType == 3) {
						pointer = pointer.parentNode;
					}
					pointer = pointer.appendChild(createElementFromString(tag));
				} else {
					if(pointer.parentNode != null) {
						pointer = pointer.parentNode;
					}
				}
			}
			i = j;
		} else {
			n = s.indexOf("<", i + 1);
			if (n == -1) {
				pointer.innerHTML += s.substr(i,limit-count);
				count = limit;
			} else {
				var extratext;
				if(n-i > limit-count) {
					extratext = s.substring(i,i+(limit-count));
				} else {
					extratext = s.substring(i,n);
				}
				pointer.innerHTML += extratext;
				count+=extratext.length;
				i = n - 1;
			}
		}
	}
	return pointer;
}

// parse a string and create an element from it
// based on O'Reilly Javascript Library code
function createElementFromString(str) {
	var node, a = str.match(/<(\w+)(\s+)?([^>]+)?>/);
	if (a != null) {
		node = document.createElement(a[1]);
		if (a[3] != null) {
			var attrs = a[3].split(" ");
			if (attrs.length > 0) {
				for ( var i = 0; i < attrs.length; i++) {
					var att = attrs[i].split("=");
					if (att[0].length > 0 && att[0] != "/" && att[1] && att[1].length != 2) {
						var a_n = document.createAttribute(att[0]);
						a_n.value = att[1].replace(/^['"](.+)['"]$/, "$1");
						node.setAttributeNode(a_n);
					}
				}
			}
		}
	}
	return node;
}

//}}}
As a teenager, while his friends played with games consoles, Andrew got his kicks from a salvaged [[PDP-11 minicomputer|http://en.wikipedia.org/wiki/Programmed_Data_Processor]]. He has an unhealthy obsession with devices, operating systems and computer networks, and was introduced to open source via Linux back in 1995.

At BT, Andrew has been responsible for setting up Design's Open Source Focus Group, and he is a strong advocate of open computing platforms.

If you're popping in to the office, Andrew will have a cup of tea with milk and sugar and a chocolate brownie.

[[carrierdetect.com|http://carrierdetect.com]]
[[flickr.com/photos/carrierdetect|http://flickr.com/photos/carrierdetect/]]
[[twitter.com/9600|http://twitter.com/9600/]]
31st October 2007

This one day session at BT Centre in London explored the risks and benefits of open source. 

[[Phil Whitehouse]] [[blogged about the event|http://philwhitehouse.blogspot.com/2007/11/open-source-in-bt.html]]. He also [[uploaded several photos to Flickr|http://www.flickr.com/photos/philliecasablanca/sets/72157603247958469/]].

We have two presentations of note; first [[Doc Searls|http://en.wikipedia.org/wiki/Doc_Searls]] (who co-wrote the [[Cluetrain Manifesto|http://www.cluetrain.com/]] and is currently the Senior Editor of [[Linux Journal|http://en.wikipedia.org/wiki/Linux_Journal]]) gave an excellent presentation on //Why All Business Will Be Based On Open Source//:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=858888&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=858888&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>

Secondly, [[Jeremy Ruston]] who heads the [[Osmosoft team|Welcome]], gave a talk on //How to Start an Open Source Project//:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=856110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=856110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>
~BarCamp London 4 will take place at the Capital Radio building on Charing Cross Road on 31 May and 1 June 2008. Find out more at the [[official website|http://barcampgcap.eventwax.com/barcamplondon4]].

Osmosoft will be sponsoring lunch on the Saturday! :-)
8th/9th September 2007

Barcamp is an [[unconference|http://en.wikipedia.org/wiki/Unconference]] intended to bring together technical professionals in Brighton and people in town for dConstruct to learn and co-work.

Osmosoft was delighted to be one of the sponsors of this event. More information available at the [[BarCampBrighton web site|http://barcamp.org/BarCampBrighton]]

More personal reflections on the event can be found on [[Phil Whitehouse's blog|http://philwhitehouse.blogspot.com/search/label/barcampbrighton07]], as well as [[on his Flickr profile|http://www.flickr.com/photos/philliecasablanca/sets/72157603211141013/]].
Osmosoft attended ~BlogTalk (official site [[here|http://2008.blogtalk.net/]]) in Cork on 3/4 March 2008. As well as running a stall, we also showcased an improved version of RippleRap. An archive of the ~RippleRap file containing all the notes taken at the conference can be found [[here|http://www.ripplerap.com/BlogTalk2008/blogtalk.html]].

The head of our team, [[Jeremy Ruston]], gave a presentation about the acquisition of Osmosoft by BT and TiddlyWiki's corresponding move into the Enterprise. 

[[Phil Whitehouse]] wrote a [[blog post|http://philwhitehouse.blogspot.com/2008/03/blogtalk-wash-up.html]] reflecting on the experience, and the team published [[several photos on Flickr|http://www.flickr.com/groups/osmosoft/pool/tags/blogtalk/]]. 
ccTiddly is a server-side adaptation of TiddlyWiki originally created by TiddlyWiki community member Matthew So.

Osmosoftonian [[Simon McManus]] has been collaborating with Matthew to develop a version of ccTiddly which is suitable for internal BT use. If you work for BT and would like a workspace set up for you, you can visit our [[ccTiddly homepage|http://wiki.osmosoft.com/alpha]] to set up an account, or contact Simon at [[simon@osmosoft.com|mailto:simon@osmosoft.com]]. 

If you're interested in installing ccTiddly on your own server, details are on the [[details are on the ccTiddly page at TiddlyWiki.org|http://tiddlywiki.org/wiki/CcTiddly]]. There is also a [[Google user group|http://groups.google.com/group/ccTiddly]] and updates are periodically mentioned on [[Simon's blog|http://wordpress.com/tag/cctiddly/]] and [[Matthew's blog|http://coolcold.wordpress.com/category/cctiddly/]].
We'd love to hear from you if you have any questions, comments or want to get involved with the work we are doing. Either email us at [[hello@osmosoft.com|mailto:hello@osmosoft.com]] or contact one of us directly through the links posted on our [[profiles|Welcome]]. Or come and visit us in our office!

Our address is:

Osmosoft
Room 5.02
MLS,
130 Shaftesbury Avenue,
London,
~W1D 5EU

Tel: 020 7031 1188

Directions by tube: 
Nearest station, Leicester Square. Once through the ticket barriers, turn right and leave through exit 2. At street level, turn left and walk 150 metres up Charing Cross Road. Turn left into Shaftesbury Avenue, we're on the left before the fire station.

<html>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=l&hl=en&geocode=&q=mls&near=w1&ie=UTF8&cid=51512714,-129516,1509808743731668262&om=1&s=AARTsJpcvM8uUanc6ZjKsLsp6p1yrUWKqQ&ll=51.519906,-0.125313&spn=0.018693,0.036478&z=14&iwloc=A&output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?f=l&hl=en&geocode=&q=mls&near=w1&ie=UTF8&cid=51512714,-129516,1509808743731668262&om=1&ll=51.519906,-0.125313&spn=0.018693,0.036478&z=14&iwloc=A&source=embed" >View Larger Map</a></small>
</html>
We frequently attend, sponsor or host public events. If you are interested in meeting us to talk about our open source projects, or have something you'd like to share with us, seeking us out at events is a good way to make contact.
!!Upcoming events 
Upcoming events where you can find an [[Osmosoftonian]]:

[[next08]] - Hamburg, 15 May 2008
[[BarCamp London 4]] - London, 31 May / 1 June 2008
[[Supernova 2008]] - San Francisco, 16-18 June 2008
[[TiddlyWest]] - San Francisco, 18 June 2008
[[OpenTech 2008]] - London, 5 July 2008
[[OSCon 2008]] - Portland, 21-25 July 2008
!!Previous events
You can find demos, videos and resources that have been presented at previous events here:

[[VRM 2008]] - Munich, 21/22 April 2008
[[Future of Web Design]] - London, 17 April 2008
[[UKUUG OpenMoko talk]] - London, 9 April 2008
[[BlogTalk]] - Cork, Ireland, 3/4 March 2008
[[Le Web 3]] - Paris, 10/11 December 2007
[[BT Open Source - Open for Business]] - London, 31 October 2007
[[Future of Web Apps]] - London, 3-5 October 2007
[[TiddlyWiki anniversary interview]] - London, 21 September 2007
[[BarCampBrighton 2007]] - Brighton, 8/9 September 2007
[[dConstruct 2007]] - Brighton, 7 September 2007
[[Wiki Wednesday]] - London, 4 July 2007
[[Supernova 2007]] - San Francisco, June 2007
As a long-time TiddlyWiki contributor, Frederik has been coerced into leaving the comfort of Germany to serve in [[Osmosoft Towers|Contact us]]. He is a self-described geek, open-source advocate, and can easily obsess about
tiny details.

Apart from pretending to be a coding monkey on occasion, Frederik has a keen interest in enhancing collaboration and capturing reference knowledge.

If you're popping in to the office, Frederik will have a cup of unsweetened black coffee and whatever food he might find agreeable in these strange lands.

[[fnd.lewcid.org/blog|http://fnd.lewcid.org/blog/]]
[[twitter.com/fnd|http://twitter.com/fnd/]]
3rd-5th Ocober 2007

Several [[Osmosoftonians|Osmosoftonian]] attended the Future of Web Apps (FOWA) event in London this October.  You can find information about the event at the [[FOWA website|http://www.futureofwebapps.com/]].

[[Phil Whitehouse]] [[wrote several blog entries during the event|http://philwhitehouse.blogspot.com/search/label/FOWA]], and uploaded [[a set of photos to flickr|http://www.flickr.com/photos/philliecasablanca/sets/72157603208138462/]].
The Future of Web Design conference took place in London on 17 April 2008. You can find out more on the [[official website|http://www.futureofwebdesign.com/]].

[[Paul Downey]], [[Phil Hawksworth]] and [[Phil Whitehouse]] attended this event. Paul created some terrific [[sketchnotes|http://www.flickr.com/photos/psd/2421674128/]] recording the event, and Phil Whitehouse published a [[blog post|http://philwhitehouse.blogspot.com/2008/04/future-of-web-design.html]] and a [[set of photos|http://www.flickr.com/photos/philliecasablanca/sets/72157604587677664/]]. 
iwantablog is a conceptual product being developed by [[Jon Lister]] and [[Nick Webb]] which uses TiddlyWiki to generate and manage other webpages using a new template-based saving mechanism. As the name suggests, the web pages being created for this proof of concept will be traditional blog pages (which can be easily indexed by search engines and read by screen readers, unlike TiddlyWiki itself) but, if successful, the same mechanism can be used to create any web page.

The proof of concept shows a straightforward html page being generated. The next step will be for the engine to generate not only the front end pages, but also a content management system for the blog. 

To find out more, you can visit the [[project site|http://iwab.tiddlyspot.com/]].

This project is at a very early stage, but a screencast of the demo can be seen here:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=844486&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=844486&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>

In addition, a demo followed by a Q&A session can be seen here:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=849159&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=849159&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>
James has been involved in a variety of web related roles for the past ten years, and shows his age and geekiness by always bringing up how he was paid to play one of the first MMORPG while in high school.

These days, James is involved in finding ways for people and organizations to use technology to collaborate.

If you're popping in to the office, James will have a cup of English Breakfast tea with milk, and some grapes.

[[curiousjames.wordpress.com|http://curiousjames.wordpress.com]]
[[flickr.com/photos/jamesshi/|http://www.flickr.com/photos/jamesshi/]]
[[twitter.com/dr1ft3r|http://twitter.com/dr1ft3r]]
Jeremy is the only real constant in Osmosoft, the company he set up in 2005, that BT acquired in May 2007. He is the original creator of TiddlyWiki, the open source product at the heart of Osmosoft.

After a career creating inspiring software, Jeremy is now BT's Head of Open Source Innovation. This roughly means that he is responsible for the development of BT's participation in the open source industry. He also looks pretty funky in aviators, and [[can fit inside a small cupboard|http://www.flickr.com/photos/philliecasablanca/1320086480/]]. 

If you're popping into the office, Jeremy will have a cappuccino and a pain au chocolat.

[[jermolene.wordpress.com|http://jermolene.wordpress.com]] 
[[flickr.com/photos/jermy|http://flickr.com/photos/jermy/]]
[[twitter.com/jermolene|http://twitter.com/jermolene/]]
Jon has been on the scene for just under two years but is making a name for himself as someone who really "gets" the web and how it affects our lives.

Jon is an able technologist and is particularly keen on showing how much "programming" you can do these days without being able to code.

If you're popping in to the office, Jon will have a cappuccino and a pain au chocolat.

[[jayfresh.wordpress.com|http://jayfresh.wordpress.com]]
[[flickr.com/photos/jayfresh/|http://www.flickr.com/photos/jayfresh/]]
[[twitter.com/jayfresh|http://twitter.com/jayfresh/]]
Paris, 10/11 December 2007

Le Web 3 is a conference which took place in Paris on 10/11 December 2007, where we shared a stall with BT and unveiled a event dossier tool called RippleRap.

JP Rangaswami, MD of BT Design, gave a presentation at Le Web 3, abley assisted by our very own [[Phil Hawksworth]], and demonstrating our ~RippleRap product. Here is the video:

<html>
<center><object width="320" height="240"><param name="movie" value="http://vpod.tv/leweb3/393628/flash/nVideoPlayer"></param><param name="allowfullscreen" value="true"></param><embed src="http://vpod.tv/leweb3/393628/flash/nVideoPlayer" type="application/x-shockwave-flash" width="320" height="240" allowfullscreen="true"></embed></object></center>
</html>

JP's presentation version of RippleRap can be seen [[here|jp/leweb.html#Terror]] (after clicking on this link, scroll down for the next button).

Here are the team's blog entries about the event, including our reflections on the introduction of ~RippleRap:
*[[Phil Whitehouse|http://philwhitehouse.blogspot.com/2007/12/le-web-morning-after.html]]  
*[[Paul Downey|http://blog.whatfettle.com/2008/01/04/on-twitter-constraints/]]
*[[Phil Hawksworth|http://www.hawksworx.com/journal/category/leweb3/]]
The team also [[uploaded several photos to Flickr|http://www.flickr.com/groups/osmosoft/pool/tags/leweb3/]]. 
Code released by Osmosoft to the open source community will be released under a [[BSD licence|http://en.wikipedia.org/wiki/BSD_license]].

We believe that the prime measure of health of an open source project is adoption, closely followed by external contributions. For Osmosoft, the benefits of wider adoption outweigh the benefits of forcing participants to return their amended code (or any associated proprietary code) to the community, which would be required under e.g. one of the [[GPL licences|http://en.wikipedia.org/wiki/GNU_General_Public_License]].

In any event, it is hoped that most people using the code will feel compelled to return their improvements to the community, as they stand to benefit from the same scrutiny and collaboration that made the initial code worth using in the first place.

Here is the licence template:

Copyright (c) <YEAR>, <OWNER>

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Martin is 50% an [[Osmosoftonian]], the other half being a ~UnaMesean (for more about ~UnaMesa, see the [[faqs|faq]]). But he can usually be found in our office, and is very much considered one of our own.

A long time senior member of the TiddlyWiki community, while not wiki-hacking he enjoys fell-walking and other outdoorsy shenanigans.

If you're offering, Martin would like coffee with skimmed milk, no sugar, and chocolate chip cookies.

[[martinswiki.com|http://martinswiki.com]]
From the [[official website|http://www.next-conference.com/next08/en/]], "next08 is the conference for the future and relevance of the web". It takes place on May 15, 2008 at the Prototyp museum in Hamburg.

[[Jeremy Ruston]] will be presenting his views on why Enterprise 2.0....isn't! His presentation can be seen [[here|http://www.osmosoft.com/next08/]] or you can download a local copy from [[here|http://www.osmosoft.com/next08/next08.zip]].
Since he was a scruffy teenager Nick has been running start-ups. His most recent was an organic breakfast business. No longer making breakfasts at 5am, Nick is now our specialist in Tiddlypreneurship. He will be demonstrating the benefits of Open Source to entrepreneurs and small businesses.

If you're popping in to the office, Nick will have a cappuccino and a [[financier|http://en.wikipedia.org/wiki/Financier_(pastry)]] from the local coffee shop.

[[erraticmusings.com|http://www.erraticmusings.com]]
[[flickr.com/photos/nickwebb/|http://www.flickr.com/photos/nickwebb/]]
[[twitter.com/nickwebb|http://twitter.com/nickwebb]]
The ~TiddlyWiki [[OpenTech|OpenTech 2008]] competition gives you the chance to win a [[BUG (plus four modules)|http://www.buglabs.net/products]]! The BUG base station and modules use open source software and snap together to create whatever device you want. There's also a great second prize of a [[GP2X Linux powered handheld games console|http://gp2x.co.uk/]]. A stack of O'Reilly books will be the third prize.

For your chance to win one of these great prizes, all you have to do is show us your ~TiddlyWiki skills. ~TiddlyWiki is written entirely in javascript, and has a great plugin architecture, so just like the BUG you can twist it to do whatever you want. It can pull in RSS feeds, and because it can be a local file (and you don't have to worry about same domain policies), it's great for mashups. There are already 400+ plugins you can use, but don't let that stop you from writing your own new ones!

Don't feel you have to build a full application to be considered; great ideas are welcome as well as working code. ~TiddlyWiki is great for cooking up prototypes.

Need some inspiration? Here are some sites listing things that people have built with ~TiddlyWiki:

[[Osmosoft's product list|http://osmosoft.com/#Products]]
[[TiddlyWiki adaptations listed on TiddlyWiki.com|http://tiddlywiki.com/#Examples]]

So, pull together your creation, put it online ([[TiddlySpot|http://tiddlyspot.com]] is a great place to host ~TiddlyWiki files - we can pull it onto our local hard drive from there if needed) and present it at the "Venue" room at lunchtime (1pm-2pm) on the day of the ~OpenTech event, where you can showcase your entry on the big screen (the computer will have a web connection and the browser will be Firefox). 

Once all the entrants have had their chance to show their stuff, the judges (including the [[original creator of TiddlyWiki|Jeremy Ruston]]) will decide which ones are the most imaginative, interesting, innovative and / or just plain weird, and the prizes will be awarded in the closing remarks at the end of the day.

Hope to see you there!

Small print: Here are the competition [[Terms and Conditions|OpenTech Terms and Conditions]].
Here are the competition Terms and Conditions:

#The competition is open to anyone attending ~OpenTech 2008, with the exception of employees of BT or Osmosoft. 
#The prizes are 1 first prize of a [[BUG, plus 4 modules|http://www.buglabs.net/products]], 1 second prize of a [[GP2X Linux powered handheld games console|http://gp2x.co.uk]] and 1 third prize of a selection of O'Reilly books.   
#No cash alternative is available for any prize.  The Promoter reserves the right to substitute a prize of equivalent or greater value if this is necessary for reasons beyond its control. 
#To enter, participants must present their submission at the "Venue" room at lunchtime (1pm-2pm) on the day of the ~OpenTech 2008 event.
#The winners will be chosen by an independent panel of judges. Winners will be announced at the end of the Event. 
#The Judges' decision is final and no correspondence will be entered into. Entries that do not comply in full with these rules may be disqualified.
#The Promoter is British Telecommunications plc, 81 Newgate Street London ~EC1A 7AJ. 
We're thrilled to announce that Osmosoft is sponsoring [[OpenTech|http://www.ukuug.org/events/opentech2008]] this year! As part of this sponsorship we're running a competition at the event.

~OpenTech 2008 is taking place in London on 5 July 2008, and is billed as "an informal, low cost one-day conference on technology, society and low-carbon living, featuring Open Source ways of working and technologies that anyone can have a go at".

The competition will see developers pitting their wits against each other in a TiddlyWiki stand-off. Prizes include a [[BUG (plus four modules)|http://www.buglabs.net/products]] and a [[GP2X Linux powered handheld games console|http://gp2x.co.uk/]]. 

You can find out more about the competition [[here|OpenTech Competition]]. 

We'll also be hosting an ~OpenTech edition of RippleRap.

Hope to see you there!
~OSCon 2008 is an O'Reilly conference taking place in Portland, Oregon, from 21-25 July 2008. It's billed as "the crossroads of all things open source, bringing together the best, brightest, and most interesting people to explore what's new, and to champion the cause of open principles and open source adoption across the computing industry".

A small delegation of [[Osmosoftonians|Osmosoftonian]] will be present for the sessions (23-25 July), but not the tutorials.

BT will be sponsoring this event. We'll also be hosting an ~OSCon edition of RippleRap.

You can find out more at the [[official site|http://en.oreilly.com/oscon2008/public/content/home]].
''Os·mo·soft·on·i·an'' [oz-m//uh//-sawft-''ohn''-ee-//uh//n]

''- //noun//''
1. a follower of Osmosoftonianism.

''- //adjective//''
2. of, pertaining to, or characteristic of Osmosoftonianism or Osmosoftonians.

[Origin: derived from [[Jeremy Ruston]]'s 1987 metaphor of ideas crossing from one brain to another through the membrane of the user interface]

[[Meet the Osmosoftonians|Welcome]]
Paul's middle name is Sumner, which is important as it distinguishes him from other Paul Downeys.

Paul is BT's Chief Web Services Architect and represents BT at various organisations including the ~W3C, OASIS and the ~WS-I. An inveterate hacker, he passionately believes in the commons, loves the Web and advocates open source given any opportunity. He gained fame in 2007 as the artist behind [[The Web is Agreement|http://www.flickr.com/photos/psd/1805709102/]].

If you're popping in to the office, Paul will have a cappuccino with no chocolate and a plain croissant.

[[blog.whatfettle.com|http://blog.whatfettle.com]]
[[flickr.com/photos/psd|http://flickr.com/photos/psd/]]
[[twitter.com/psd|http://twitter.com/psd/]]
Phil has been developing web applications since 1999 and has worked on projects for many financial institutions around the world.

Specialising in user interface design and development, Phil is an experienced AJAX developer who is also fluent in CSS and sees the colours of the world in Hex.

If you're popping in to the office, Phil will have a skinny latte and a pain au chocolat.

[[www.hawksworx.com|http://www.hawksworx.com]]
[[flickr.com/photos/philhawksworth|http://flickr.com/photos/philhawksworth/]]
[[twitter.com/philhawksworth|http://twitter.com/philhawksworth/]]
Phil is Osmosoft's Community Advocate, and is broadly responsible for managing Osmosoft's external commitments. 

He's one of the few non-developers on the team (he comes from a project management background), and he likes to bask in the reflected glory of programmers. He also has an unhealthy obsession with William Shatner.

If you're popping in to the office, Phil will have an americano with milk and sugar, and a chocolate chip muffin.

[[philwhitehouse.blogspot.com|http://philwhitehouse.blogspot.com]]
[[flickr.com/photos/philliecasablanca|http://flickr.com/photos/philliecasablanca/]] 
[[twitter.com/casablanca|http://twitter.com/casablanca/]]
This is the place to find things we've created. We've included projects which are work in progress to encourage collaboration with any interested parties.

!~RippleRap

~RippleRap is an event dossier based on TiddlyWiki, which was showcased at [[Le Web 3]] and [[BlogTalk]].
@@display:block;text-align:right;[[Find out more...|RippleRap]]@@
!~TeamTasks
~TeamTasks is a task management tool based on TiddlyWiki and developed by [[Phil Hawksworth]]. 
@@display:block;text-align:right;[[Find out more...|TeamTasks]]@@
!ccTiddly
ccTiddly is a server-side implementation of TiddlyWiki, originally created by ~TiddlyWiki community member Matthew So, and developed further in collaboration with Matthew by Osmosoftonian [[Simon McManus]].
@@display:block;text-align:right;[[Find out more...|ccTiddly]]@@
!~TiddlyWeb
~TiddlyWeb is a reference API for accessing TiddlyWiki content over the web. It is being developed by Chris Dent (formerly of Social Text) in collaboration with [[Jeremy Ruston]].
@@display:block;text-align:right;[[Find out more...|TiddlyWeb]]@@
!iwantablog
iwantablog is a conceptual product being developed by [[Jon Lister]] and [[Nick Webb]], where TiddlyWiki is used to generate and manage other webpages using a new template-based saving mechanism.@@display:block;text-align:right;[[Find out more...|iwantablog]]@@
!~SpeedGeeking
Speed Geeking is a mashup developed by [[Paul Downey]] to showcase how TiddlyWiki can be used as a platform for building custom applications using BT's [[Web 21C SDK|http://web21c.bt.com/]].
@@display:block;text-align:right;[[Find out more...|SpeedGeeking]]@@
[img[RippleRap logo|http://ripplerap.com/images/ripplerap_logo.png][http://www.ripplerap.com/]]




~RippleRap is a desktop event dossier which allows users to manage and discover information about a particular event (especially conferences). Osmosoft developed different versions for [[Le Web 3]] and [[BlogTalk]]. It can be configured to include the following features:
*Access the event agenda
*Manage session notes offline
*Share notes with other delegates
*Pull in and store RSS feeds. For BlogTalk, we configured ~RippleRap to consume the following RSS feeds:
**Twitter comments mentioning ~BlogTalk
**Blog posts mentioning ~BlogTalk
**Photos with event specific tags
The product page is at [[http://www.ripplerap.com|http://www.ripplerap.com]]. An archive of the ~RippleRap file containing all the content produced at ~BlogTalk can be found [[here|http://www.ripplerap.com/BlogTalk2008/blogtalk.html]].

The following video demo of RippleRap has been created by [[Phil Whitehouse]]:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=886093&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=886093&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>

RippleRap's development has contributed to a collection of TiddlyWiki plugins. Please find a product breakdown on the [[RippleRap page on TiddlyWiki.org|http://tiddlywiki.org/wiki/RippleRap]].

The RippleRap product manager is [[Phil Whitehouse]], although most of the [[Osmosoftonians|Welcome]] have played a part in its development. If you'd like to be kept informed of developments on RippleRap, we recommend you subscribe to [[Phil Whitehouse's blog|http://philwhitehouse.blogspot.com/search/label/RippleRap]].

Finally, JP Rangaswami (MD of BT Design) used RippleRap for his presentation at [[Le Web 3]] in December 2007. You can see this presentation below:

<html>
<center><object width="320" height="240"><param name="movie" value="http://vpod.tv/leweb3/393628/flash/nVideoPlayer"></param><param name="allowfullscreen" value="true"></param><embed src="http://vpod.tv/leweb3/393628/flash/nVideoPlayer" type="application/x-shockwave-flash" width="320" height="240" allowfullscreen="true"></embed></object></center>
</html>
<<search>>

[[about us|Welcome]]
[[products|Products]]
[[events|Events]]
[[faq]]
[[about this site|TiddlyWiki]]
[[contact us|Contact us]]
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
Within his first year working at BT Simon produced ~MyPages, a Facebook/~MySpace style collaborative and social networking site. ~MyPages generated so much traffic that the system had to be shut down.

When not on his boat Simon likes to hack things together and make them do things they were never designed for.

If you're popping in to the office, Simon will have a cup of tea with milk, sugar  and a chocolate muffin. Muffin on the side, please.

[[simonmcmanus.wordpress.com|http://simonmcmanus.wordpress.com]]
[[flickr.com/photos/simonmcmanus/|http://www.flickr.com/photos/simonmcmanus/]]
[[twitter.com/simonmcmanus|http://twitter.com/simonmcmanus/]]
This demo shows the use of TiddlyWiki as a platform for mashing up services of the BT [[Web 21C SDK|http://web21c.bt.com/]].

You can [[work the through the demo here|http://www.osmosoft.com/events/speedgeeking/]] or watch a screencast of the demo which also includes further explanation in the commentary:
*[[full size (.mov, 5min, 32MB)|http://www.osmosoft.com/screencasts/SpeedGeeking.mov]] 
*[[for Apple TV (.mp4, 5min, 20MB)|http://www.osmosoft.com/screencasts/SpeedGeeking_appleTV.mp4]]
*[[for iPod (.mp4, 5min, 11MB)|http://www.osmosoft.com/screencasts/SpeedGeeking_ipod.mp4]]

[[Phil Whitehouse]] wrote a blog post about the ~WikiWednesday event which can be read [[here|http://philwhitehouse.blogspot.com/2007/07/wikiwednesday_05.html]].
The Supernova conference, organized by Kevin Werbach and The Wharton School, is where technology and business influencers, leading investors, top innovators and thinkers come together to debate the future of the connected world.

We demonstrated a simple mashup of TiddlyWiki and the BT 21C SDK at the event. Gordon Cook produced a [[detailed report|http://www.cookreport.com/16.07.shtml]] following the session on TiddlyWiki and open source, given by [[Jeremy Ruston]] and JP Rangaswami.

You can find more information about Supernova at the [[Supernova website|http://www.supernova2007.com/]].
This year's [[Supernova conference|http://www.supernova2008.com/go/about]] is taking place in San Francisco from 16-18 June 2008. BT and Osmosoft are sponsoring the event, and a delegation of [[Osmosoftonians|Osmosoftonian]] will be present.

We'll also be hosting a Supernova edition of RippleRap.
~TeamTasks is a simple and fully configurable task management tool based on TiddlyWiki, and developed by [[Phil Hawksworth]]. It contains plugins designed to add task attributes to tiddlers, with additional functionality to sort and manage your tasks.

This is a screenshot of ~TeamTasks in action:

[img[http://tiddlywiki.org/upload/d/dd/TeamTasks.jpg]]
You can find out more at the [[TeamTasks home page|http://www.hawksworx.com/playground/TeamTasks/]], and at the [[TeamTasks roadmap page|http://www.hawksworx.com/playground/TeamTasks/roadmap.html]].

If you'd like to be kept informed of the latest developments, we recommend subscribing to [[Phil Hawksworth's blog|http://www.hawksworx.com/journal/category/teamtasks/]].
This is an amalgamation of Osmosoft-related blog entries from our personal blogs. If you'd like to stay informed, you can subscribe to an [[RSS feed|http://pipes.yahoo.com/pipes/pipe.run?_id=80fbfe0d5c55623e4e5a23e61cc29310&_render=rss]] of these blog entries.

<<pipePlugin http://pipes.yahoo.com/pipes/pipe.run?_id=80fbfe0d5c55623e4e5a23e61cc29310&_render=json&_callback=config.macros.pipePlugin.JSONparse 10 250>>
~TiddlyWeb is a reference API for accessing TiddlyWiki content over the web.

The official developers page for this project is on the [[TiddlyWiki.org website|http://www.tiddlywiki.org/wiki/TiddlyWeb]]. At the time of writing, the most recent demo was linked to from [[this post on the TiddlyWiki Google Groups|http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/f075630bd1e5564e]].
~TiddlyWest is a ~TiddlyWiki related event taking place at the [[Wharton West Campus|http://www.wharton.upenn.edu/campus/wharton_west/]] in San Francisco on 18 June 2008.

We're excited to be co-hosting this event with local TiddlyWiki legend, [[Eric Shulman|http://about.unamesa.org/Eric+Shulman]].

This will be an open event, and everyone is welcome to attend. Details can be found on the [[TiddlyWiki Discussion Group|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/081487e8c0a908a8]]. 
This site is a ~TiddlyWiki! 

~TiddlyWiki is a wiki packaged within a single html file, complete with all the content, the editing and saving functionality, search and tagging capabilities and much more. It can run locally from your hard drive (so it's great for taking notes or organising personal information) or on a server. This particular ~TiddlyWiki file has been turned into our website. It's very extensible; there are over 400 plugins developed by the ~TiddlyWiki community. 

Osmosoft's main focus of work is on ~TiddlyWiki. 

~TiddlyWiki is widely discussed in the ~TiddlyWiki IRC channel.  You can often find [[Osmosoftonians|Osmosoftonian]] hanging out there along with many experienced ~TiddlyWiki users and developers.

[[irc://irc.freenode.net/tiddlywiki|irc://irc.freenode.net/tiddlywiki]]

If you're interested to see how ~TiddlyWiki is being used by Osmosoft and BT, check out our [[product page|Products]]. We also created a brief video in November 2007 showing progress up to that point:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=859037&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=859037&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>

At the [[BT Open Source - Open for Business]] event in October 2007, [[Jeremy Ruston]] gave a presentation on //How to start an open source project// based on his experience of starting the ~TiddlyWiki project:

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=856110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=856110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>

You can find out more about ~TiddlyWiki at the [[official site|http://www.tiddlywiki.com]] and there are more useful links on the [[FAQ tiddler|faq]].
21st September 2007

As part of the celebrations of TiddlyWiki's 3rd Anniversary, we recorded this interview between [[Jeremy Ruston]], creator of TiddlyWiki, [[Saq Imtiaz|http://blog.lewcid.org/]], a prolific contributor to the TiddlyWiki community, and [[Phil Whitehouse]], an [[Osmosoftonian]]. 

<html>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=852169&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=852169&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br />
</html>
The UK Unix User Group organised a talk about the [[OpenMoko|http://www.openmoko.org/]] platform in London on 9 April 2008.

[[Andrew Back]] attended the event on behalf of Osmosoft, and wrote a [[blog post|http://carrierdetect.com/?p=105]] about the experience, as well as [[uploading a number of photos to Flickr|http://www.flickr.com/photos/carrierdetect/sets/72157604475750269/]].
VRM 2008 was the inaugural European VRM event, taking place immediately before the European Identity Conference in Munich.

[[Phil Whitehouse]] and [[Paul Downey]] presented their early thoughts to the great and the good of the VRM community, and these have been captured in a number of [[blog posts written by Phil|http://philwhitehouse.blogspot.com/search/label/VRM]].

Following the event, Phil created a video describing how TiddlyWiki could work in a VRM scenario, and making the case for brokers being involved:

<html>
<object type="application/x-shockwave-flash" width="400" height="251" data="http://www.vimeo.com/moogaloop.swf?clip_id=937110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=">	<param name="quality" value="best" />	<param name="allowfullscreen" value="true" />	<param name="scale" value="showAll" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=937110&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=" /></object><br /><a href="http://www.vimeo.com/937110?pg=embed&sec=937110">VRM TiddlyWiki</a> from <a href="http://www.vimeo.com/user423727?pg=embed&sec=937110">Phil Whitehouse</a> on <a href="http://vimeo.com?pg=embed&sec=937110">Vimeo</a>.
</html>

Several photos have also been uploaded to Flickr by [[Phil|http://www.flickr.com/photos/philliecasablanca/sets/72157604665511909/]] and by [[Paul (includes some great sketchnotes!)|http://www.flickr.com/photos/psd/tags/vrm]].
Osmosoft is the open source innovation arm of [[BT|http://www.bt.com/]]. We're a small team of techies that have a passion for open source software, with our main focus being on the TiddlyWiki product. 

We have an [[Osmosoft twitter feed|http://www.twitter.com/Osmosoft]] and a [[video channel on Vimeo|http://www.vimeo.com/osmosoft]].

!Latest news

Osmosoft is co-hosting TiddlyWest, a ~TiddlyWiki event in San Francisco, on 18 June 2008 - [[click here for details|TiddlyWest]].

We're also pleased to announce that we're sponsoring [[OpenTech 2008|http://www.ukuug.org/events/opentech2008]] on 5 July 2008, and are running a competition as part of the event. [[Find out more|OpenTech 2008]]!

!Meet the team

You can follow our work by subscribing to our individual blogs or, if you prefer, read just [[the Osmosoft-related blog entries|The Osmosoft chatter]]. 

|[img[Jeremy|images/photo_jeremy.jpg]]|''[[Jeremy Ruston]]'' [[jermolene.wordpress.com|http://jermolene.wordpress.com]] [[flickr.com/photos/jermy|http://flickr.com/photos/jermy/]][[twitter.com/jermolene|http://twitter.com/jermolene/]] |
|[img[Andrew|images/photo_andrew.jpg]]|''[[Andrew Back]]'' [[carrierdetect.com|http://carrierdetect.com]] [[flickr.com/photos/carrierdetect/|http://flickr.com/photos/carrierdetect/]][[twitter.com/9600|http://twitter.com/9600/]] |
|[img[Frederik|images/photo_fnd.jpg]]|''[[Frederik Dohr]]'' [[fnd.lewcid.org/blog|http://fnd.lewcid.org/blog/]][[twitter.com/fnd|http://twitter.com/fnd/]] |
|[img[James|images/photo_james.jpg]]|''[[James Shi]]''[[curiousjames.wordpress.com|http://curiousjames.wordpress.com]][[flickr.com/photos/jamesshi/|http://www.flickr.com/photos/jamesshi/]][[twitter.com/dr1ft3r|http://twitter.com/dr1ft3r]]|
|[img[Jon|images/photo_jon.jpg]]|''[[Jon Lister]]'' [[jayfresh.wordpress.com|http://jayfresh.wordpress.com]][[flickr.com/photos/jayfresh/|http://www.flickr.com/photos/jayfresh/]][[twitter.com/jayfresh|http://twitter.com/jayfresh/]] |
|[img[Martin|images/photo_martin.jpg]]|''[[Martin Budden]]'' [[martinswiki.com|http://martinswiki.com]] |
|[img[Nick|images/photo_nick.jpg]]|''[[Nick Webb]]'' [[erraticmusings.com|http://www.erraticmusings.com]][[flickr.com/photos/nickwebb/|http://www.flickr.com/photos/nickwebb/]][[twitter.com/nickwebb|http://twitter.com/nickwebb]] |
|[img[Paul|images/photo_paul.jpg]]|''[[Paul Downey]]'' [[blog.whatfettle.com|http://blog.whatfettle.com]] [[flickr.com/photos/psd|http://flickr.com/photos/psd/]][[twitter.com/psd|http://twitter.com/psd/]] |
|[img[Phil H|images/photo_philh.jpg]]|''[[Phil Hawksworth]]'' [[www.hawksworx.com|http://www.hawksworx.com]][[flickr.com/photos/philhawksworth|http://flickr.com/photos/philhawksworth/]][[twitter.com/philhawksworth|http://twitter.com/philhawksworth/]] |
|[img[Phil W|images/photo_philw.jpg]]|''[[Phil Whitehouse]]'' [[philwhitehouse.blogspot.com|http://philwhitehouse.blogspot.com]] [[flickr.com/photos/philliecasablanca|http://flickr.com/photos/philliecasablanca/]][[twitter.com/casablanca|http://twitter.com/casablanca/]] |
|[img[Simon|images/photo_simon.jpg]]|''[[Simon McManus]]'' [[simonmcmanus.com|http://simonmcmanus.com]] [[flickr.com/photos/simonmcmanus/|http://www.flickr.com/photos/simonmcmanus/]][[twitter.com/simonmcmanus|http://twitter.com/simonmcmanus/]] |
[[Wiki Wednesday|http://londonwikiwed.ning.com/]] is a frequent meetup in London where wiki enthusiasts can meet and talk about all things wiki. Several Osmosoft members attended a Wiki Wednesday in July 2007, where the SpeedGeeking demo was presented.
<<permaview>><<closeAll>>[[site map]]<<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
7th September 2007

dConstruct is a one-day conference aimed at those designing and building the latest generation of web-based applications.

More information is available at the [[dConstruct web site|http://2007.dconstruct.org/]]. The entire Osmosoft team attended this event.  

[[Phil Whitehouse]] has written [[blog posts|http://philwhitehouse.blogspot.com/search/label/dconstruct2007]] about the event, as well as publishing [[photo sets on flickr|http://www.flickr.com/photos/philliecasablanca/sets/72157603211141013/]].
!!What is Osmosoft?
Osmosoft was formed in 2005 and acquired by BT in 2007. Osmosoft is helping BT learn how to harness rich innovation within open source communities.

[[Jeremy Ruston]] announced the acquisition of Osmosoft on 29 May 2007 in [[this blog post|http://jermolene.wordpress.com/2007/05/29/i-for-one-welcome-my-new-bt-overlords]]. 

!!What are you working on?
Our main body of work is the continued development of the open source project TiddlyWiki and showcasing BT's [[Web21C SDK|http://web21c.bt.com]]. You can follow our work broken down by [[product|Products]] or [[event|Events]].

!!What is ~TiddlyWiki?
TiddlyWiki is a single web page which contains not just content, but also the functionality needed to edit and save that content. Being a single web page makes it very portable, as it can easily be emailed or handed to somebody on a USB stick. It can also be accessed via the web in a conventional sense - for example, this website is a TiddlyWiki. You can learn more about TiddlyWiki here:

Main ~TiddlyWiki site: http://www.tiddlywiki.com
Main ~TiddlyWiki developers site: http://www.tiddlywiki.org
~TiddlyWiki Google Group: http://groups.google.com/group/TiddlyWiki
~TiddlyWiki Developers Google Group: http://groups.google.com/group/TiddlyWikiDev

!!Does BT own ~TiddlyWiki?
No. Jeremy transferred the rights to [[UnaMesa|http://www.unamesa.org/about.html]], the non-profit organisation of which [[TiddlyWiki.org|http://www.tiddlywiki.org]] is a subsidiary. ~TiddlyWiki is still free (as in freedom AND beer!) and it's still open source and so shall it remain.

!!What is ~UnaMesa?
~UnaMesa is a not-for-profit foundation that owns the copyright to ~TiddlyWiki. ~UnaMesa supports the research and development of practical tools that help educators, healthcare providers, and communities improve services and reduce costs. You can find out more about its activities on the [[UnaMesa website|http://www.unamesa.org/about.html]].

!!What open source licence will you release code under?
This is covered in our [[licence tiddler|Licensing]].

!!Why is BT interested in open source?
Open source software development has a long history of encouraging innovation in communities outside big companies, so we want to inspire these communities to work with BT and help realise the potential of BT's [[£10bn investment|http://www.btplc.com/21cn/]] in its network.

!!How will BT make money from open source?
BT is not setting out to make money with open source software, but [[because of it|http://confusedofcalcutta.com/category/because-effect/]]. In the same way that you can take base materials of wood, metal and bricks and create a building, the power is not in what you did with those materials, but the civilizations that you can support because of what you did with those materials.

!!Who are the open source thought leaders in BT?
The best place to start would be JP Rangaswami's blog, [[Confused of Calcutta|http://www.confusedofcalcutta.com]]. JP is the Managing Director of BT Design and is Jeremy's boss.

!!Why did BT acquire Osmosoft?
BT wanted to understand what tools would be needed by the open source community to foster innovation at the edges of our network. Acquiring Osmosoft meant hiring Jeremy Ruston, who has a track record running a successful open source project supported by an active community of thousands of members.

!!When was Osmosoft founded?
Osmosoft was founded by Jeremy in 2005. It was more or less a one man concern until it was acquired by BT in 2007 (allowing Jeremy to [[pay his bills|http://jermolene.wordpress.com/2007/08/05/how-to-start-a-successful-open-source-project/]]).

!!How do we find you?
You can find a map and directions in the [[Contact us]] section.

!!How do we get you to work with us?
We can be bribed with coffee from Cafe Nero in Old Compton Street. Our coffee and pastry requirements can be found on our [[profile pages|Welcome]].

!!I have questions that haven't been answered. What should I do?
The best way to get our attention is to blog about us. Alternatively, if you want to contact us directly, you can send us an [[email|mailto:hello@osmosoft.com]], and we'll get back to you as soon as we can.
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "A - Z" "All tiddlers in alphabetical order" TabAll "Tags" "All tags" TabTags "Shadowed" "Shadowed tiddlers" TabMoreShadowed>>
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


}
//}}}
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto 'namespace'
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be=Array();
	var len=Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i]=((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str='';
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex='0123456789ABCDEF';
	var str='';
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	function add32(a,b)
	{
		var lsw=(a&0xFFFF)+(b&0xFFFF);
		var msw=(a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	}
	function AA(a,b,c,d,e)
	{
		b=(b>>>27)|(b<<5);
		var lsw=(a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw=(a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	}
	function RR(w,j)
	{
		var n=w[j-3]^w[j-8]^w[j-14]^w[j-16];
		return (n>>>31)|(n<<1);
	}
	
	var len=blen*8;
	x[len>>5] |= 0x80 << (24-len%32);
	x[((len+64>>9)<<4)+15]=len;
	var w=Array(80);

	var k1=0x5A827999;
	var k2=0x6ED9EBA1;
	var k3=0x8F1BBCDC;
	var k4=0xCA62C1D6;

	var h0=0x67452301;
	var h1=0xEFCDAB89;
	var h2=0x98BADCFE;
	var h3=0x10325476;
	var h4=0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j=0;
		var t;
		var a=h0;
		var b=h1;
		var c=h2;
		var d=h3;
		var e=h4;
		while(j<16) {
			w[j]=x[i+j];
			t=AA(e,a,d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
		}
		while(j<20) {
			w[j]=RR(w,j);
			t=AA(e,a,d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
		}
		while(j<40) {
			w[j]=RR(w,j);
			t=AA(e,a,b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
		}
		while(j<60) {
			w[j]=RR(w,j);
			t=AA(e,a,(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
		}
		while(j<80) {
			w[j]=RR(w,j);
			t=AA(e,a,b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
		}
		h0=add32(h0,a);
		h1=add32(h1,b);
		h2=add32(h2,c);
		h3=add32(h3,d);
		h4=add32(h4,e);
	}
	return [h0,h1,h2,h3,h4];
};


}
//}}}
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}