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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----
Also see AdvancedOptions
<<importTiddlers>>
I'm a fan of retrocomputing, particularly of the Commodore 64 and the Commodore Amiga. Recently, I decoded the only [[software delivered on CD for the C64|Rainbow Arts CD]], which was pointless, but fun. :-)

!Boring stuff
I currently work at [[Google|http://www.google.com]] as a software engineer.
Previous jobs:
* Consultant and (very briefly) director at [[Attensity|http://www.attensity.com]], working on projects using information discovery technologies (April 2009 through July 2011).
* [[Lycos Europe research department|http://web.archive.org/web/20080412215452/http://research.lycos-europe.com/]] (February 2008 through March 2009); Lycos is now defunct.
* [[Databases and Information Systems Group (AG DBIS)|http://wwwlgis.informatik.uni-kl.de]] at the [[University of Kaiserslautern|http://www.uni-kl.de]], where I got my PhD. For more information,see my [[old page there.|http://wwwlgis.informatik.uni-kl.de/cms/dbis/staff/formermembers/dopichaj/]]
!Programming
I've been programming since I was about 11, and I still enjoy it a lot. :-) See [[Programming]] for details on programming languages and projects.
!Research interests
I'm interested in information retrieval, machine learning, and various other things (whatever comes my way ...).

To find out more about my academic background, you should take a look at my list of [[publications|Publications]].

!Recommended Reading
You should really study [[Calvin and Hobbes|http://www.calvinandhobbes.com]] to learn a lot about the world we live in. [[PhD Comics|http://phdcomics.com]] are an accurate description of the lives of PhD students (warning: not for the faint of heart).
[[About me]]
/***
|''Name:''|DisableWikiLinksPlugin|
|''Description:''|Allows you to disable TiddlyWiki's automatic linking of WikiWords|
|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com)|
|''Source:''|http://www.martinswiki.com/#DisableWikiLinksPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/plugins/DisableWikiLinksPlugin.js |
|''Version:''|0.1.3|
|''Date:''|Aug 5, 2006|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]] |
|''~CoreVersion:''|2.1.0|

|''Disable WikiLinks''|<<option chkDisableWikiLinks>>|

***/

//{{{
// Ensure that the DisableWikiLinksPlugin is only installed once.
if(!version.extensions.DisableWikiLinksPlugin) {
version.extensions.DisableWikiLinksPlugin = {installed:true};

if(version.major < 2 || (version.major == 2 && version.minor < 1))
	{alertAndThrow('DisableWikiLinksPlugin requires TiddlyWiki 2.1 or newer.');}

if (config.options.chkDisableWikiLinks==undefined)
	{config.options.chkDisableWikiLinks = false;}

Tiddler.prototype.autoLinkWikiWords = function()
{
	if(config.options.chkDisableWikiLinks==true)
		{return false;}
	return !this.isTagged('systemConfig') && !this.isTagged('excludeMissing');
};

} // end of 'install only once'
//}}}
Inhaltlich Verantwortlicher gemäß Paragraph 10 Absatz 3 MDStV:

Philipp Dopichaj
Küchelbäckerstr. 3
80331 Munich
Germany

Tel. +49 (0)17696017672

Email: homepage@nospam.dopichaj.de

This page was created using [[TiddlyWiki|http://www.tiddlywiki.com]].
[[About me]]
[[Publications]]
[[PhD thesis]]

[[Impressum]]
We introduce a new stacking-like approach for multi-value classification. We apply this classification scheme using Naive Bayes, Rocchio and kNN classifiers on the well-known Reuters dataset. We use part-of-speech tagging for stopword removal. We show that our setup performs almost as well as other approaches that use the full article text even though we only classify headlines. Finally, we apply a Rocchio classifier on a dataset from a Web 2.0 site and show that it is suitable for semi-automated labelling (often called tagging) of short texts and is faster than other approaches.

Publication information
* Copyright Springer-Verlag 2008
* Lecture Notes in Computer Science, Volume 5243/2008
* ISSN 0302-9743 (Print) 1611-3349 (Online)
* KI 2008: Advances in Artificial Intelligence
* DOI 10.1007/978-3-540-85845-4
* [[Full paper|papers/hess-ki08.pdf]]
* [[at SpringerLink|http://www.springerlink.com/content/y503320865j07681/?p=57446c65a027487290e55ec23e5efc96&pi=0]]
config.options.chkHttpReadOnly = true;
config.options.chkDisableWikiLinks = true;
config.options.txtUserName = "ppd";
!Content-oriented retrieval on document-centric XML
This is my PhD thesis. I submitted it in October 2007 and defended in December 2007.
* [[PDF version|dissertation.pdf]]
* [[CS department of the University of Kaiserslautern|http://www.informatik.uni-kl.de]]
* [[The database and information systems group|http://wwwlgis.informatik.uni-kl.de]]
Published by Verlag Dr. Hut in January 2008
We describe a community-based web site about German history, covering
user interface and information extraction. The main focus, however, lies on creating
and employing game approaches to validate and enhance the extracted data.
* [[Full Paper|papers/dierick-muc08.pdf]]
!Java
Most of my recent programming has been in Java, with a bit of Python and Linux shell scripting thrown in. Both my Master's (Diplom) thesis and my PhD thesis involved significant coding.
At Lycos, I implemented in Java
* an information extraction engine (on a team)
* a utility that detects links in plain text
* and various other small projects.
For obvious reasons, I can't provide any code samples of my commercial work, but samples from my PhD code are available on request.

!C
Before Java became really popular, I did a lot of hobbyist coding in C (I was also active on Usenet) and a little in C++. C Projects included:
* A memory allocation debugging package
* A C preprocessor (not quite complete); the lexer as a sample file: [[lex.c|code-samples/lex.c]] [[lex.h|code-samples/lex.h]]
* An interpreter for a small programming language, written without parser or lexer generators

!Other languages
Of course, I played around with various other programming languages, like BASIC, (Turbo) Pascal, ECOM, AmigaE, a little Scheme, Perl, ...
* At the university, we (a team of four) implemented a travel search engine Web application in Perl, calling a retrieval backend.

!Assembly languages
I also programmed in assembler (MOS 6510 on the C64 and Motorola 680x0 on the Amiga). Here's a small sample I wrote in 1992 (warning, bad style ahead -- hey, I was only 14 -- , and the formatting is messed up):
<<<
 interrupt:
           ldx #0
           lda cia2+11
           cmp #$12
           bne goon0
           lda #0
 goon0:
           cmp #0
           bpl am
           and #%01111111
           cmp #$12
           beq am
           clc  
           adc #$12
 am:
           jsr printtime
           lda cia2+10
           jsr printtime
           lda cia2+9
           jsr printtime
           lda cia2+8
           dex  
           lda #" "
           sta $0400+31,x
           jmp $ea31
<<<
As a matter of fact, I still do some retro coding when I feel like it.
!Recent
* {{authors{Philipp Dopichaj, Andre Skusa, and [[Andreas Heß|http://www.andreas-hess.info]]:}}} {{pubtitle{[[Stealing Anchors to Link the Wiki]].}}} Proc. INEX 2008 (to appear) [img[lycos-research.png]]
* {{authors{Francis Dierick, Philipp Dopichaj, Uwe Fleischer, Andreas Heß, Andre Skusa, and Christian Maaß:}}} {{pubtitle{[[Playful Validation of Automatically Extracted Data]],}}} [[Workshop Nutzerinteraktion im Social Semantic Web|http://www.interactivesystems.info/Events/muc-ws]], 2008. [img[lycos-research.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{[[Ranking-Verfahren für Web-Suchmaschinen,|http://eprints.rclis.org/15547/]]}}} [[Handbuch Internet-Suchmaschinen|http://www.bui.haw-hamburg.de/164.html]], AKA. [img[ppd.png]]
* {{author{[[Andreas Heß|http://www.andreas-hess.info]], Philipp Dopichaj, and [[Christian Maaß|http://christian-maass.com]]:}}} {{pubtitle{[[Multi-Value Classification of Very Short Texts]],}}} Proc. KI 2008 (best paper award). [img[lycos-research.png]]
* {{authors{Philipp Dopichaj:}}} {{pubtitle{The Simplest XML Retrieval Baseline That Could Possibly Work,}}} [[Focused access to XML documents (Proc. INEX 2007)|http://www.springer.com/computer/database+management+%26+information+retrieval/book/978-3-540-85901-7]].[img[kl.png]]
* {{authors{Philipp Dopichaj:}}} {{pubtitle{[[Content-oriented retrieval on document-centric XML|PhD thesis]],}}} PhD thesis, Verlag Dr. Hut, January 2008. [img[kl.png]]
!Selected older publications
!!2007
* {{authors{Philipp Dopichaj:}}} {{pubtitle{Improving Content-Oriented XML Retrieval by Applying Structural Patterns,}}} in: Proc. ICEIS, Funchal, June 2007.  [img[kl.png]]
* {{authors{Philipp Dopichaj: [img[kl.png]]}}} {{pubtitle{Improving Content-Oriented XML Retrieval by Exploiting Small Elements,}}}       in: Proc. Workshops 24th BNCOD (BNCODwebim), Glasgow, July 2007
* {{authors{Philipp Dopichaj:}}} {{pubtitle{Space-efficient Indexing of XML Documents for Content-Only Retrieval,}}} in:   Datenbank-Spektrum 23 (November 2007). [img[kl.png]]
!!2002
* {{authors{Sascha Schmitt, Philipp Dopichaj, and Patricia Domínguez-Marín:}}} {{pubtitle{Entropy-Based vs. Similarity-Influenced: Attribute Selection Methods for Dialogs Tested on Different Electronic Commerce Domains,}}} in: Proc. ECCBR 2002, pp. 380-394. [img[kl.png]]

!Everything
* [[Publications 2008/2009]]
* [[Publications 2007]]
* [[Publications 2006]]
* [[Publications 2002–2005]]
!2005
* {{author{Philipp Dopichaj:}}} {{pubtitle{Element Relationship: Exploiting Inline Markup for Better XML Retrieval,}}} in: Proc. BTW, Karlsruhe, March 2005. [img[kl.png]]
!2004
* {{author{Philipp Dopichaj:}}} {{pubtitle{Exploiting Background Knowledge for Better Similarity Calculation in XML Retrieval,}}} in: Proc. BNCOD Volume 2 (Doctoral Consortium), Edinburgh, July 2004. [img[kl.png]]
* {{author{Philipp Dopichaj and [[Theo Härder|http://www.haerder.de]]:}}} {{pubtitle{Conflation Methods and Spelling Mistakes – A Sensitivity Analysis in Information Retrieval,}}} in: Proc. 16. Workshop "Grundlagen von Datenbanken", Monheim, Germany, June 2004, pp. 48-52. [img[kl.png]]
!2002
* {{author{Sascha Schmitt, Philipp Dopichaj, and Patricia Domínguez-Marín:}}} {{pubtitle{Entropy-Based vs. Similarity-Influenced: Attribute Selection Methods for Dialogs Tested on Different Electronic Commerce Domains,}}} in: Advances in Case-Based Reasoning (Proc. ECCBR 2002), Aberdeen, Scotland, UK, pp. 380-394. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{Element Retrieval in Digital Libraries: Reality Check,}}} in: Proc. SIGIR 2006 Workshop on XML Element Retrieval Methodology. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{The University of Kaiserslautern at INEX 2005,}}} in: Proc. INEX 2005, Dagstuhl November 2005. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{Improving Content-Oriented XML Retrieval by Applying Structural Patterns,}}} in: Proc. ICEIS, Funchal, June 2007. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{The University of Kaiserslautern at INEX 2006,}}} in: Comparative Evaluation of XML Information Retrieval Systems (Proc. INEX 2006), pp. 223-232. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{Improving Content-Oriented XML Retrieval by Exploiting Small Elements,}}} in: Proc. Workshops 24th BNCOD (BNCODwebim), Glasgow, July 2007. [img[kl.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{Space-efficient Indexing of XML Documents for Content-Only Retrieval,}}} in Datenbank-Spektrum 23 (November 2007). [img[kl.png]]
!2009
* {{authors{Philipp Dopichaj, Andre Skusa, and [[Andreas Heß|http://www.andreas-hess.info]]:}}} {{pubtitle{[[Stealing Anchors to Link the Wiki]].}}} Proc. INEX 2008 (to appear) [img[lycos-research.png]]
!2008
* {{authors{Francis Dierick, Philipp Dopichaj, Uwe Fleischer, Andreas Heß, Andre Skusa, and Christian Maaß:}}} {{pubtitle{[[Playful Validation of Automatically Extracted Data]],}}} [[Workshop Nutzerinteraktion im Social Semantic Web|http://www.interactivesystems.info/Events/muc-ws]], 2008. [img[lycos-research.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{[[Ranking-Verfahren für Web-Suchmaschinen,|http://eprints.rclis.org/15547/]]}}} [[Handbuch Internet-Suchmaschinen|http://www.bui.haw-hamburg.de/164.html]], AKA. [img[ppd.png]]
* {{author{[[Andreas Heß|http://www.andreas-hess.info]], Philipp Dopichaj, and [[Christian Maaß|http://christian-maass.com]]:}}} {{pubtitle{[[Multi-Value Classification of Very Short Texts]],}}} Proc. KI 2008 (best paper award). [img[lycos-research.png]]
* {{author{Philipp Dopichaj:}}} {{pubtitle{The Simplest XML Retrieval Baseline That Could Possibly Work,}}} Focused access to XML documents (Proc. INEX 2007), 2008. [img[kl.png]]
* {{authors{Philipp Dopichaj:}}} {{pubtitle{[[Content-oriented retrieval on document-centric XML|PhD thesis]],}}} PhD thesis, Verlag Dr. Hut, January 2008. [img[kl.png]]
It may be hard to believe, but there was actually [[software delivered on CD for the C64|http://www.thelegacy.de/Museum/57649/]]. I'm not sure when exactly this was, but the line numbers in the BASIC loaders indicate it might have been 1988. Note that, of course, the C64 could not read CD-Roms back then; instead, a small adapter was delivered with the CD to connect your audio CD player to the datasette port.
As the screenshot shows, the following ten games were delivered on the CD:
* David's Midnight Magic (though this appears to be a somewhat buggy version)
* Dropzone
* Fist II
* Impossible Mission
* Jinks
* Leader Board
* Loderunner (tape version)
* M.U.L.E.
* Mission Elevator
* Solomon's Key
[img[rainbow-arts-cd-menu.png]]
Note that most of these -- with the exceptions of Jinks and M.U.L.E. -- are single-load games, so they didn't really have to be patched for this collection. Strangely enough, even the one-part games got a new basic line with extra information that nobody would see under normal circumstances:
[img[rainbow-arts-cd-sysline.png]]
M.U.L.E. and Jinks had to be patched to load from CD, and for M.U.L.E. only, this is reflected in the new title screen:
[img[rainbow-arts-cd-mule.png]]
!Loader
Naturally, the first part of the loader had to be in standard C64 format. This loader then loaded the load menu (see screenshot above) at the highest speed that has ever been achieved using the datasette port -- loading the 26114 bytes of DMM takes about 23 seconds, or a bit more than one kB per second. For reference, an unaccelerated 1541 floppy takes more than a minute (okay, loading it with a reasonable speeder takes about 5 seconds, but still ...).
Extracting the files from the audio files proved to be more difficult than I had expected. There are excellent tools for extracting emulator tape images from audio files, and in this case the audio data is known to be in perfect shape, but the tools just wouldn't work. After I had a closer look at the audio data, it was clear why that was: a single pulse was less than 10 samples long, much less than usual tape images, and much less than the tools could deal with.
Thus, I had to write my own tool to extract the data, and to do that, I had to analyze the loader. The following is a description of the data format:
!!Header
* sync bytes $a0
* a countdown from $0a to $00
* a file number
* the number of blocks
!!Data blocks
* block number, starting with 0
* load address of the current block in little endian format (a bit pointless really, since in all cases it's exactly $100 bytes more than the preceding block)
* $100 bytes of data
* checksum (EOR of all data bytes)
!!Pulse lengths
Each bit is represented by a single pulse. In the TAP file format, the pulses have lengths of $c (bit value 0) and $f (bit value 1); for comparison, the regular Rainbow Arts fastloader uses $19 and $36, so it's less than half as fast.

I wrote a small Python script that extracts all the files from WAV files extracted from the CD; in the unlikely case you're interested in this, just write me: dopichaj@acm.org
!Running in an emulator
The one-part games have a regular BASIC line, so they run without problem in an emulator. Jinks is composed of two separately-loadable parts, the intro picture with music bu Chris Hülsbeck and the main game, so no problems for all games but one.
M.U.L.E., on the other hand, loads the second part after the player has made some suggestions. Although it was no problem to extract the TAP files from the audio, one problem remains: The datasette's motor can be controlled by software, which is of course not possible with a CD player. Thus, the CD loader does not attempt to start the motor, so nothing gets loaded.
One workaround is to enter the VICE monitor and adjust memory location 1 as follows, after you have inserted the tape image and pressed the virtual play button:
{{{
> 0001 0025
}}}
For some reason, this does not always work. :-(
For testing, I patched VICE to start motor even when the C64 tells it not to, but that's not really good if you want to use regular tapes, too.

Philipp Dopichaj
This paper describes the Link-the-Wiki submission of Lycos
Europe. We try to learn suitable anchor texts by looking at the anchor
texts the Wikipedia authors used. Disambiguation is done by using tex-
tual similarity and also by checking whether a set of link targets “makes
sense” together.

* Copyright Springer-Verlag 2009
* INEX 2008, LNCS 5631
* [[Full Paper|papers/dopichaj-inex08.pdf]]

/*{{{*/
.headerShadow {
    background-image: url(sonnenuntergang.jpg);
    background-repeat: no-repeat;
    background-color: #5d6a7d;
}
.authors {
    display: block;
}
.pubtitle {
    display: block;
    font-style: italic;
}
.alignRight {
    float: right;
}
/*}}}*/