<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]];}

	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 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 class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></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
I will be presenting at the 2010 [[International Conference on the Ultrasonic Measurement and Imaging of Tissue Elasticity | http://www.elasticityconference.org/ ]] on 'Reduction of Reverberation Artifacts in Carotid Strain Images Using Bayesian Regularization' and 'Subsample Displacement Interpolation Using Windowed-Sinc Reconstruction with Numerical Optimization'. 
Original, Samuel A. Ward 
Arrangement, Jaco Pastorius
Matt McCormick
Traditional with Pastorius pazza
|''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);
	return be;

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

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

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

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

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
		return (n>>>31)|(n<<1);

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

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

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

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	return Array(h0,h1,h2,h3,h4);

|''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)

// @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];
			text = text.replace(/\n/g,"\r");
		w.nextMatch = lookaheadRegExp.lastIndex;

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

// 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)

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

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

// @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");

[[contact information]]
[img[RSS Feed|feed-icon-14x14.png][http://mmmccormick.com/index.xml]]
Graduate student at University of ~Wisconsin-Madison, USA in Biomedical Engineering/Medical Physics working on medical diagnostic ultrasound. Originally from Caledonia, Minnesota, USA. 
Musica Elegante was an old-school latin big band that made elegant music a reality.  Cha chas, mambos, tangos, and beguine.  Tight, classy tunes with a distinctive flavor.  

Easily the most talented group I have ever played with-- Ken on the set, a couple of other great percussionists, Bill Berlyn, Jim Krofta (RIP) et. al. on trumpet, a good bone, and some hot saxes.  All lead by the great mind and ear of Dr. Nicholas Contorno.  Not only great players, but great people filled with the umami joy brought by music.  If you are in Milwaukee and have need for a jazz/latin/etc band, give Dr. C a call.  He will not disappoint.

These recordings were made in the Varsity Theater at Marquette University.


[[Mambo Inn Cha Cha|music/latin_band/musica_elegante/01-Mambo_Inn_Cha_Cha.mp3]]

[[Brazil Samba|music/latin_band/musica_elegante/02-Brazil_Samba.mp3]]

[[Speak Low Beguine|music/latin_band/musica_elegante/03-Speak_Low_Beguine.mp3]]

[[Carefree Slow Cha Cha|music/latin_band/musica_elegante/04-Carefree_Slow_Cha_Cha.mp3]]

[[Misirlu Latin Rock|music/latin_band/musica_elegante/05-Misirlu_Latin_Rock.mp3]]

[[Isle of Capri Cha Cha|music/latin_band/musica_elegante/06-Isle_of_Capri_Cha_Cha.mp3]]

[[Walter Winchell Tango|music/latin_band/musica_elegante/07-Walter_Winchell_Tango.mp3]]

[[La Cumparsita Tango|music/latin_band/musica_elegante/08-La_Cumparsita_Tango.mp3]]

[[I Love Lucy Mambo|music/latin_band/musica_elegante/09-I_Love_Lucy_Mambo.mp3]]
<div id='header' class='header' macro='gradient vert   #555555       #3b3b3b '>
        <div class='siteTitle' refresh='content' tiddler='SiteTitle'></div>
        <span id='topMenu' refresh='content' tiddler='MainMenu'></span>

<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
This is a screencast tutorial for running Adobe Authorware under Linux. This demonstration uses only graphical tools. Demonstrated on Ubuntu 8.04 Hardy Heron.  Find it [[here|http://www.archive.org/details/RunningAdobeAuthorwareUnderLinux]]
A screencast that explains the different ways for running Microsoft Windows programs under linux.  Find it [[here|http://www.archive.org/details/RunningMicrosoftWindowsApplicationsUnderLinux--Screencast]].
[[software]], [[papers]], [[music]], [[news]], and [[contact information]]
[[Matthew M. McCormick]] ([[thewtex]])
|''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;
	if(data.length < 1)
	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";

/*Monochrome Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/

body {background:#1B1B1B; color:#F4F4F4; font:12px Verdana, Helvetica, sans-serif;

#header {padding: 0em 0em 0em 0em; background:transparent;	font-family: arial,helvetica; font-size:12px;

.siteTitle {
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 32px;
color: #ccc; margin-right:2em;margin-left:0.5em;

#topMenu br {display:none;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {margin:0em; color:#eee; padding:15px 15px 10px 15px;padding-top:1.6em;border:none; border-right: 1px solid #eee;float:left;}
#topMenu {border-left: 1px solid #666;  float:left;margin:0;}
#topMenu a:hover {color:#ccc; background:#2b2b2b;}

#displayArea {margin-left:1.35em; margin-right:17.65em; margin-top:0.5em; padding-top:1em; padding-bottom:10px;}

.tiddler {background:#292929; margin-bottom:20px; padding:1em 2em 1em 2em;}

a, a:hover{
text-decoration: none; background:transparent;

.viewer a, .viewer a:hover{border-bottom:1px dotted #fff; font-weight:normal;}

.viewer .button, .editorFooter .button{
color: #fff;
border: 1px solid #fff;

.viewer .button:hover,
.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
color: #888;
background: #3B3B3B;
border-color: #3B3B3B;

.title {color:#ccc; font-family:'Lucida Grande', Verdana, Sans-Serif; font-size:1.5em;

.subtitle, .subtitle a { color: #777; font-size: 0.95em;margin:0.2em;}
.shadow .title{color:#777;}

.toolbar {font-size:90%;}
.selected .toolbar a {color:#666;border:0;}
.selected .toolbar a:hover {color:#999; background:transparent;border:0;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#666;border:0; background:transparent;border:0;}

.tagging, .tagged {
border: 1px solid #555;
background-color: 	#444;

.selected .tagging, .selected .tagged {
background-color: 	#2B2B2B;
border: 1px solid #666;

.tagging .listTitle, .tagged .listTitle {
color: #555;

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #aaa;

.tagging .button, .tagged .button {
color:		#a3a3a3;
.selected .tagging .button, .selected .tagged .button {

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;

#sidebarOptions {margin-top:1em;}
#sidebar {margin-right:1.35em;}

#sidebarTabs .tabContents {	
	font-family: arial,helvetica;}

#sidebarOptions a, #sidebarOptions a:hover{border:none;color:#666;}
#sidebarOptions a:hover, #sidebarOptions a:active {background:#454545; color:#ccc;}
#sidebarTabs .tabContents {background:#454545;border:0px solid #666; border-right:1px solid #454545;}
#sidebarOptions input {background:#ccc; border:1px solid #666;}

#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#bbb;font-weight:normal;}
#sidebarTabs .tabContents .tiddlyLink:hover, #sidebarTabs .tabContents .button:hover {color:#ccc; background:transparent;}
.listTitle {color:#777;}

#sidebarTabs .tabSelected,#sidebarTabs .tabSelected:hover{background:#454545;border:none;color:#ccc; border:1px solid #454545;}
#sidebarTabs .tabUnselected{background:#3B3B3B; border:1px solid #454545; color:#666;}

   #sidebarTabs .txtMoreTab .tabSelected,
   #sidebarTabs .txtMoreTab .tab:hover,
   #sidebarTabs .txtMoreTab .tabContents{
color: #ccc;
background: #3B3B3B; border:1px solid #3B3B3B;

   #sidebarTabs .txtMoreTab .tabUnselected {

color: #999; border:1px solid #3B3B3B;
background: #353535;

#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#ccc; background:transparent;}

   #sidebarOptions .sliderPanel {
background: #454545; font-size: .9em;

#sidebarOptions .sliderPanel input {border:1px solid #666; background:#ccc;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #666;width:9em;}

#sidebarOptions .sliderPanel a {font-weight:normal; color:#fff;background-color: #454545; border-bottom:1px dotted #333;}

#sidebarOptions .sliderPanel a:hover {
background-color: #454545;
border-bottom:1px dotted #111;

.popup {
background: #3B3B3B;
border: 1px solid #454545;

.popup li.disabled {
color: #000;

.popup li a, .popup li a:visited {
color: #777;
border: none;

.popup li a:hover {
background: #3b3b3b;
color: #c3c3c3;
border: none;
.popup hr {
	color: #777;
	background: #777;
	border-bottom: 1px;

.listBreak div{
	border-bottom: 1px solid #777;

#messageArea {
border: 4px dotted #ccc;
background: #454545;
color: #777;

#messageArea .button{

color: #3B3B3B;
border: 1px solid #ccc;

#messageArea .button:hover {

color: #ccc;
background: #3B3B3B;
border-color: #3B3B3B;

.viewer blockquote {
border-left: 5px solid 		#3B3B3B; background:#3B3B3B

.viewer table, .viewer td {
border: 1px solid 	#2E2E2E;

.viewer th, thead td {
background: #3B3B3B;
border: 1px solid #3B3B3B;
color: #ccc;
.viewer pre {
border: 1px solid #3b3b3b;
background: #5F5F5F;

.viewer code {
color: #c3c3c3; background:#5f5f5f;

.viewer hr {
border-top: dashed 1px #222; margin:0 1em;

.editor input {
border: 1px solid #ccc; margin-top:5px;

.editor textarea {
border: 1px solid #ccc;

h1,h2,h3,h4,h5 { color: 		#9c9c9c; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
This site contains some of my contributions to the interwebs.  

Navigate with the main menu on the top, the ''close'' and ''close others'' buttons above each entry, and search field and tags on the right.

This site is a [[TiddlyWiki | http://tiddlywiki.com ]] with a modified [[Monochrome| http://tiddlythemes.com]] theme.


[[Women's sunglasses | http://www.ctswholesalesunglasses.com/index.asp?PageAction=VIEWCATS&Category=86 ]] for wholesale prices.
''Email:'' matt _at_mmmccormick _dot_com
''Identi.ca:'' [[thewtex|http://identi.ca//thewtex]]
''Jabber:'' thewtex@jabber.org
Script to convert a movie file to individual frames in the movie
./convert_video_to_frames <movie file> [<output path>]
# convert_video_to_frames
# script to convert a movie file to individual PNG image frames in the movie
# requires ffmpeg http://ffmpeg.mplayerhq.hu/
# usage:
#  ./convert_video_to_frames <movie file> [<output path>]
# Matt McCormick 2 November 2007

OUT_PATH=`basename "$1" | sed 's/ //g'`
if [ $# -gt 1 ]; then
[ ! -d "$OUT_PATH" ] && mkdir "$OUT_PATH"

ffmpeg -i "$1" -f image2 "${OUT_PATH}/frame%7d.png"

download all files with specific extension(s) found in an html webpage

dlfiles [OPTIONS] <URL>

  -h | {{{--}}}help               this help message
  -g | {{{--}}}ogg                download OGG Vorbis
  -m | {{{--}}}mp3                download ~MP3s
  -p | {{{--}}}pdf                download ~PDFs
  -o | {{{--}}}output <directory> change the output directory
                            defaults to $PWD

//wget, egrep//

# dlfiles

function usage
  echo "download all files with specific extension(s) found in an html or xml file"
  echo 'usage: dlfiles [OPTIONS] <URL>'
  echo 'Options:'
  echo '  -h | --help		    this help message'
  echo '  -g | --ogg		    download OGG Vorbis'
  echo '  -m | --mp3		    download MP3s'
  echo '  -p | --pdf		    download PDFs'
  echo '  -o | --output <directory> change the output directory'
  echo '			    defaults to $PWD'
  echo 'Created by Matt McCormick (thewtex) <matt@mmmccormick.com>'
  echo 'on 2008 February 7'
  echo 'version 1.0'

while [ "$1" != "" ] ; do
  case "$1" in
    -h | --help )
      exit 0
    -g | --ogg )
    -m | --mp3 )
    -p | --pdf )
    -o | --output )
      if [ ! -w $OUTDIR ]; then
	echo "Error: $OUTDIR does not exist or is not writeable"
	exit 1
    * )
if [ $EXTENSIONS == '(' ] ; then
  echo "Error: you must specify one or more file extensions"
  exit 1


wget -q -O - "${URL}" | egrep -o "http[^[:space:]]+${EXTENSIONS}" | while read
  wget "$REPLY"

NUMFILES=`wget -q -O - "${URL}" | egrep -o "http[^[:space:]]+${EXTENSIONS}" | wc -l`
echo "$NUMFILES files were downloaded."
This is a white text on black background style color theme for [[latex beamer|http://latex-beamer.sourceforge.net/]].

An example of how it looks can be found [[here|software/eagle/ultrasound_matlab_exercise_presentation_part_1.pdf]].
[img[eagle example|software/eagle/example.png]]

Download [[beamercolorthemeeagle.sty|software/eagle/beamercolorthemeeagle.sty]] and put it in ~/texmf/tex/latex/beamer/themes/color/eagle/.  Then run

In your preamble, put the following
[[How to fix the Cowon iAudio U3|photos/u3_repair/index.html]]
[[The robomofo!|hardware/robomofo/robomofo.html]]
!Convert images to //Encapsulated Postscript, EPS//
Script to convert all the image files in a directory to EPS with the //~ImageMagik// ''convert'' program
./image2eps OPTION [<directory>]

-h | {{{--}}}help this help message
-d | {{{--}}}delete delete the original image files


function usage
  echo "script to convert all the image files in a directory to EPS with the ImageMagik 'convert' program"
  echo ""
  echo "usage: OPTION [<directory>]"
  echo "Options:"
  echo "  -h | --help	this help message"
  echo "  -d | --delete	delete the original image files"
  echo "Created by  Matt McCormick"
  echo "28 November 2007"

while [ "$1" != "" ] ; do
  case "$1" in 
    -h | --help ) 
    -d | --delete )
    * )

suffix=eps  # new filename suffix

if [ "$DIRECTORY" == "" ] || [ -n "$DIRECTORY" ]

ls -1 "$DIRECTORY" | egrep -i '\.jpg|\.jpeg|\.png|\.tif|\.tiff' | while read

  convert "$img" "$img_name.$suffix"
  echo "  converting $img to $img_name.$suffix"
  if [ $DELETE_ORIGS ] ; then
    rm -f $img

exit $?
!Create [[Matlab|http://www.mathworks.com/matlab]] mex files with [[CMake|http://www.cmake.org]]
Documentation on how to do this can be found [[here|http://www.cmake.org/Wiki/CMake:MatlabMex]]
The example code can be found [[here|http://github.com/thewtex/matlab-cmake-hello-world/tree/master]]
!Matlab ITK Importer
Read [[any image format supported|http://www.itk.org/Wiki/ITK_File_Formats]] by [[ITK|http://www.itk.org]] into [[Matlab|http://www.mathworks.com/matlab]]
see {{{help itkimport}}}
and {{{help slicecount}}}
at Matlab prompt after installed.


Source can be found [[here|http://github.com/thewtex/matlab-itk-import/tree/master]].
For build hints, see [[matlab-cmake]].

If you would like pre-compiled binaries, [[contact me|contact information]].  The cost is $45 per user.  

!Latin Big Band
*[[Musica Elegante]]
Please see the entries tagged 'journal'.
[[Viewable in browser|publications/mccormick_pubs.html]]
[[Raw bibtex|publications/mccormick_pubs.bib]]
!Bash scripts
*[[Convert images to Encapsulated Postscript, EPS|image2eps]] 
*[[Convert video to individual frame images|convert_video_to_frames]]
*[[Download all music (or other) files from a webpage|dlfiles]]
*[[GNU Screen CPU and Memory usage monitoring|http://github.com/thewtex/screen-cpu-mem]]
*[[Strip trailing whitespaces|strip_trailing_whitespaces]]
*[[Tethered Authenticate|tethered_authenticate]]

*[[Creating Matlab mex files with CMake|matlab-cmake]]
*[[GNU Screen CPU and Memory usage monitoring|http://github.com/thewtex/screen-cpu-mem]]
*[[Matlab ITK Importer|matlab-itk-import]]
*[[tmux CPU and Memory usage monitoring|http://github.com/thewtex/tmux-mem-cpu-load]]
*[[Ultrasound B-Mode image creator based on ITK|http://gitorious.org/ultrasound-b-mode]]
*[[Custom debugging pretty-printers for C++|http://gitorious.org/~thewtex/gdb-python/archer-thewtex-python]]
**[[General scientific computing|http://gitorious.org/gdb-pretty/gdb-pretty-science]]
**[[The InsightToolkit, ITK|http://gitorious.org/gdb-pretty/gdb-pretty-itk]]

gentoo/funtoo/paludis packages
*My [[funtoo|http://wiki.github.com/funtoo/portage]] [[fork|http://github.com/thewtex/portage/tree/master]] -- suggestions for running paludis with funtoo are on the wiki.

*[[Dark white-text-on-black-background beamer color theme|eagle_colortheme]]

*[[Creating Matlab mex files with CMake|matlab-cmake]]
*[[Matlab ITK Importer|matlab-itk-import]]

*[[DWL Multidop L2 transcranial doppler viewer.|tcd_analyze]]

# strip trailing whitespaces from filenames sent to stdin or as args
# Matt McCormick (thewtex) <matt@mmmccormick.com>
# created 2008 May 01


stripit() {
  echo "stripping $1"
  sed 's/[ \t]*$//' "$1" > $MYTEMP
  cp $MYTEMP "$1"

if [ $# -gt 0 ]; then
  while [ "$1" != "" ]; do
    stripit $1
  while read; do
    stripit $REPLY 


!DWL Multidop L2 transcranial doppler viewer.

[img[Middle cerebral artery blood flow.|software/tcd_analyze/tcd_curve.png]]

For processing the transcranial doppler data generated on a DWL Multidop  L2.

Documentation can be found [[here|software/tcd_analyze/readme.html]].
Doxygen code documentation can be found [[here|software/tcd_analyze/html]].

!!Installation, Usage
See readme.txt in the source or the [[html version|software/tcd_analyze/readme.html]].

[[Version 2.0.0|software/tcd_analyze/dwl_multidop_viewer_2.0.0.png]]

source: [[dwl_multidop-2.0.0.tar.bz2|software/tcd_analyze/dwl_multidop-2.0.0.tar.bz2]]

Old files:
source: [[tcd_analyze-0.5.0.tar.bz2|software/tcd_analyze/tcd_analyze-0.5.0.tar.bz2]]
source: [[tcd_analyze-0.5.0.zip|software/tcd_analyze/tcd_analyze-0.5.0.zip]]
binary: [[tcd_analyze-0.5.0.win32.exe|software/tcd_analyze/tcd_analyze-0.5.0.win32.exe]]

* Internally, an option has been added to use either the centisecond delay found in the files or the system clock time for plotting the hit and mark delays.  There is considerable discrepancy (up to 15 seconds at times) on the machine I work on.  I am not sure if it is due to clock drift or another problem.  Currently, it appears the centisecond delay is more accurate, but please let me know if you have information on this.
* As of this writing, the program depends on a subversion build of Veusz.


Move from Matplotlib gui backend to PyQt4/Veusz.  Basic functionality implemented.

* calculate, plot, and save to file the TAP, time-average peak velocity

* plot MARKS
* no decimation (level of detail) in the middle plot
Automatically login to the University of ~Wisconsin-Madison's College of Engineering Tethered Software
change the //USERNAME// and //PASSWORD// variables, put the script in your crontab and run every 12 hours
//curl, awk, egrep//
# tethered_authenticate
# automatically login to University of Wisconsin-Madison's College of Engineering Tethered Software
# usage: change the USERNAME and PASSWORD variables, put in your crontab 
#   and run every 12 hours
# requirements: curl,awk,egrep
# created by Matt McCormick, 23 November 2007


# browser identifier
IDENTIFIER="Opera/9.24 (X11; Linux i686; U; en)"

# get current state of this IP address
function get_state
  ACTION=`curl -s -A "$IDENTIFIER" "$TETHERED_URL" | grep 'name="action"' | awk 'BEGIN { FS="\""; ORS=" " } { print $4 }'`

# authenticate by 'add'ing this username,password, and ip address
function add 
  curl -s -A "$IDENTIFIER" -d "action=add&method=&user=${USERNAME}&passwd=${PASSWORD}" "$TETHERED_URL" > /dev/null

# update (renew) this ip address, but really doesn't work and will 
# spit back an add page after 12 hours
function update
  MY_IP=`curl -s -A "$IDENTIFIER" "$TETHERED_URL" | grep '(AuthCAE) until' | egrep -o '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'`
  curl -s -A "$IDENTIFIER" -d "action=update&key=AuthCAE%3D${USERNAME}%3D${MY_IP}" "$TETHERED_URL" > /dev/null

# start main 

if [ "$ACTION" == "add " ] ; then # if currently not logged in
  add # log in
elif [ "$ACTION" == "del update " ] ; then # else if previously logged in
  update # try to renew login (which doesn't work)
  get_state # see if they ask to log in again
  if [ "$ACTION" == "add " ] ; then
  echo "Output from $TETHERED_URL unrecognized"
  exit 1
my handle