Sushil Krishna Bajracharya
<!--{{{-->
<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]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#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 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 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:0 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 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding: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 0;}
.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 0 0 0.5em;}
.tab {margin:0 0 0 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 0 14em;}

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

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

.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:0 0.25em; padding:0 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 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin: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;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding: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;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<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 excludeLists'></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>>
{{contactTable{
|[img[sushil bajracharya|img/sushil_bajracharya.jpg]]||||||||||I obtained my Ph.D. in Information and Computer Science from the [[Department of Informatics|http://www.ics.uci.edu/informatics/]], [[Bren School of Information and Computer Sciences|http://www.ics.uci.edu]], [[Universtity of California Irvine|http://www.uci.edu]] in September 2010. My advisor was [[Cristina Lopes|http://www.ics.uci.edu/~lopes]] and my area of concentration was [[Software|http://www.isr.uci.edu/Software/index.html]]. My dissertation "Facilitating ~Internet-Scale Code Retrieval" contributed several novel techniques to retrieve relevant source code from large code repositories on the Internet. <br/><br/><<tabs txtTwitterTabs 'What is new?'	'Updates via Twitter' [[TwitterTabs##shoeseal]]>>|
}}}
!!Research
My research is driven by the desire to make software developers effective and efficient. I work on projects that seek to understand and find solutions for problems that software developers routinely encounter. My current research focus is on combining methods from program analysis, data mining and information retrieval to devise solutions that assist developers to work effectively with the artifacts they produce and maintain. You can read more about my research [[here|Research]].
!!Professional Activities
* PC member, [[Mining Software Engineering Conference 2011|http://2011.msrconf.org/]]
* I created [[http://ReSuite.org|http://ReSuite.org]], a community portal  to document, discuss, and disseminate information related to the area of software engineering research that aims to understand and fulfill various information needs arising in software development. 
* I organized the second international workshop focusing on search (information) needs of software developers - [[SUITE 2010|http://scg.unibe.ch/wiki/events/suite2010]] at the 32nd International Conference in Software Engineering ([[ICSE 2010|http://www.sbs.co.za/ICSE2010/]]). I also organized the first edition of this workshop -  [[SUITE 2009|http://scg.unibe.ch/wiki/events/suite2009/]] at [[ICSE 2009|http://www.cs.uoregon.edu/events/icse2009/home/]]. 
!!Recognition and Awards
My research contributions have resulted in some ''noteworthy recognition'':
* Best paper award in the research track in 6th IEEE Conference on Mining Software Repositories, [[MSR 2009|http://msr.uwaterloo.ca/msr2009/index.html]]
* Research tool [[CodeGenie|http://sourcerer.ics.uci.edu/codegenie]] awarded [[first place|http://mondego.calit2.uci.edu/xwiki/bin/view/Main/CodGeniePlacedFirstInSRC%2COOPSLA07]] at [[OOPSLA Student Research Competition 2007|http://www.oopsla.org/oopsla2007/index.php?page=program/studentresearch/]]
* Best paper in the Mining Software Repositories [[Challenge Track at MSR 2007|http://msr.uwaterloo.ca/msr2007/programme.html]]
* [[Sourcerer|http://sourcerer.ics.uci.edu]] infrastructure being used for NSF Science of Design [[grant|http://mondego.calit2.uci.edu/xwiki/bin/view/Main/ScienceOfDesign]] for validation of Aspect-oriented hypothesis 
* Work on [[DSM/NOV|http://dx.doi.org/10.1007/11687061_1]] featured as a [[Research Highlight|http://www.ics.uci.edu/informatics/research/research_highlight_view.php?id=24]] in the Department of Informatics
!!Upcoming Events
<html>
<table border="0" color="white">
<tr border="0">
<td border="0">
<a href="http://2011.msrconf.org">
 <img src="http://2011.msrconf.org/promote/msr2011button.png"
       border=0 alt="MSR 2011" title="MSR 2011"
       width=200 height=200/>
</a>
</td>
<td border="0">
<a href="http://2011.icse-conferences.org"><img src="http://2011.icse-conferences.org/sites/icse2011/files/publicity/ICSE2011-Surfer-Logo.png" border="0"  alt="ICSE 2011" title="ICSE 2011" />
</a>
</td>
<td border="0">
<a href="http://fse18.cse.wustl.edu"><img width="80%" src="http://lh3.ggpht.com/_uz2ciEUUaeE/TKNsquEFbMI/AAAAAAAACuk/0MgqxgMTZgg/s288/fse-2010.jpg" border="0"  alt="FSE 2010" title="FSE 2010" />
</a>
</td>

</td>
<td border="0">
<a href="http://splashcon.org/"><img src="http://www.esi.es/workshop/KOPLE2010/images/SplashRenoLogo.gif" border="0"  alt="SPLASH 2010" title="SPLASH 2010" />
</a>
</td>


</tr>
</table>



</html>
''Project Reports''
* Characterizing the Technical Potential of a Software Module ( [[.bib|files/w05-ics225.bib]], [[pdf|files/w05-ics225.pdf]], [[talk|files/w05-ics225-projectPPT.pdf]] )
* ~PetTracker - Pet Tracking System with Motes ( [[pdf|files/f04-203AprojectReport.pdf]], [[slides|files/f04-203Aproject.pdf]] )
* Classification and Visualization of Contents using ~Real-Valued Attributes ( [[.bib|files/ics227.bib]], [[pdf|files/SP04-ICS227-ProjectReport.pdf]] )
* Collaborative Practices in Free/Open Source Software Community  ( [[.bib|files/ICS280tpcollab.bib]], [[pdf|files/SP04-ICS280-collab-paper.pdf]] )
* Writing Proofs for Propositional Logic Using Rules of Natural Deduction in DC Proof  ( [[pdf|files/SP04-ICS280Logic-paper.pdf]] )
* On Composing Web-services ( [[.bib|files/mw.bib]], [[pdf|files/w04-ics243F-projectReport.pdf]] )

''Survey Papers''
* Approaches to Adaptive Middlewares ( [[.bib|files/mw.bib]], [[survey|files/w04-ics243F-Survey.pdf]], [[talk|files/w04-ics243F-talk.pdf]] )
* Trends for Separation of Concerns using Aspect-oriented Programming ( [[.bib|files/ICS221-aop_bib.bib]], [[Term Paper|files/f03-ics221-paper.pdf]], [[Talk|files/f03-ics221-talk.pdf]] )

''Paper Reviews''
* [[ICS 221|files/f03-ics221-summaries.pdf]]
* [[ICS 243F|files/w04-ics243F-summaries.pdf]]
* [[ICS 280|files/SP04-ICS280-collab-summaries.pdf]] : Theories and Practices of Collaboration
Modularity has been a long held principle in program design. However, one difficult problem developers face is to properly assess the value of modularity as the design of program changes during evolution tasks. Such is the case with evolving programs using Aspect-oriented modularizations too. The first research project I worked on was an attempt to tackle such difficulty in assessing modular design options in the context of Aspect-oriented design. 

I performed a detailed analysis of the structural transformations involved in creating several object-oriented and aspect-oriented design variants of a software application. I did this analysis using an economics based model to assess modular design options called Net Options Value  (NOV), and a design representation technique known as Dependency Structure Matrix. A unique feature of NOV is its ability to capture the evolution of a design in its analytical model. NOV uses DSM as a design representation tool. Based on the observations made across the design variants and how NOV predicted the values for them, I devised two general guidelines for using Aspect-oriented modularizations:
* An aspect modularization adds value to the existing design if the parameters  captured by aspects can be hidden from the existing parameters
* An aspect modularization can be harmful when aspects enforce additional dependencies from the rest of the parameters to the aspects
My work with NOV/DSM was the first detailed application of NOV in analyzing Aspect-oriented modularization. It explored the applicability of NOV in evaluating software design options and exposed limitations that need to be further resolved. NOV originally proposes six modular operators that can model all changes in modular designs. I observed that the structural changes that Aspect-modularizations bring in are different from those that can be modeled using the six standard operators from NOV. Thus, I proposed a new modular operator (named Reversion) to model design changes due to Aspect-modularization. 

This work resulted in three publications: a paper presented in the Aspect-oriented Software Development conference, and an expanded version that was published in the journal Transactions of Aspect-oriented Software Development. A paper explaining my experience with applying DSM/NOV and future directions to apply it in measuring software design was published in the seventh international workshop on Economics-driven software engineering research.

^^[[Back to Research|Research]]^^
[img[img/pdf.gif]] [[Resume|files/sushil.bajracharya.resume.pdf]]
[img[img/pdf.gif]] [[Curriculum Vitae|files/sushil.bajracharya.CV.pdf]]
The availability of large amount of open source code in the Internet makes it possible for developers to find and reuse code from open source repositories. However, when this type of reuse is performed in an ad hoc manner, it can be tedious and ineffective: results have to be manually inspected for dependencies, extracted into the workspace, and finally the code might not meet all the requirements of the desired functionality. Codegenie is a project that aims to tackle problems like these that developers encounter during pragmatic reuse tasks by using test cases as an interface to automate the tedious task of searching and reusing code in the Internet. CodeGenie is implemented as a plugin for the Eclipse IDE and uses Sourcerer as the underlying code search engine. Using Codegenie a developer first writes a test and triggers a search by selecting it in the IDE. This automatically sends a query to the Sourcerer search engine whose results are presented in the IDE. Each result can be imported into the existing project pulling all its dependencies and tested against the original test case. This not only automates dependency resolution but also allows developer to see if the results they found are effective solutions fulfilling their need.
	`
Evaluation of Codegenie showed that TDCS is effective and efficient compared to other alternatives for finding and reusing code. Experimental results showed that, in average, 95.43% of all results found using Codegenie compiled and ran; and, 71.75% of the results contained reusable features (ie they passed the test cases). Users were 50% faster in finding solutions using Codegenie compared to Google Code Search and implementing the desired functionality manually. Other contributions of Codegenie includes: a test-driven approach to code search, a dependency slicing method to extract slices of reusable code from existing projects, and a composition mechanism to integrate such slices with existing incomplete solutions.

Codegenie won the first prize in the ACM student research competition at OOPSLA in 2007. Research in Codegenie has resulted in several publications. It was demoed in 22nd Automated Software Engineering conference (ASE 2007). A paper on Codegenie was published in SAC 2009, and an invited paper for the journal Information and Software Technology is currently under review.

^^[[Back to Research|Research]]^^
{{contactTable{
|//__Post__// | ||||||||  |//__Office__// |
|1230 Stanford | ||||||||  |CS 408 D |
|Irvine 92612, CA | ||||||||  |Computer Science Building, UCI |
|USA| ||||||||  | |
|Email: sbajrach_~AT_ics.uci.edu | ||||||||  | |
|Web: http://sushil.me | ||||||||  | |
}}}
I am mostly available through YIM (id: [[shooseal|ymsgr:sendIM?shooseal]]), or just drop me an email if you feel like getting in touch with me.
''Spring 2007''
* ~INF4MATX 205 : Quantitative Research Methods ([[project report|files/SP07-inf4matx205-report.pdf]])
''Spring 2005''
* ICS 226 : Applied Software Design Techniques
* ICS 229 : Software Seminar
* ICS 299 : Independent Study
* ICS 399 : University Teaching (~TAed ICS 121)
''Winter 2005''
* ICS 225 : Software Processes ([[.bib|files/w05-ics225.bib]], [[paper|files/w05-ics225.pdf]], [[proposal|files/w05-ics225Proposal.pdf]], [[talk|files/w05-ics225-projectPPT.pdf]])
* ICS 229 : Software Seminar
* ICS 299 : Independent Study
* ICS 399 : University Teaching (~TAed ICS 121)
''Fall 2004''
* ICS 203A : Ubiquitous Computing ([[project summary|files/f04-203AprojectReport.pdf]], [[slides|files/f04-203Aproject.pdf]])
* ICS 260 : Fundamental Algorithms
* ICS 229 : Software Seminar ([[talk|files/f05-ics229.pdf]])
* ICS 399 : University Teaching (~TAed ICS 102)
''Spring 2004''
* ICS 227 : Advance User Interface Architectures ([[.bib|files/ics227.bib]],  [[MidTerm Presentation|files/SP04-ICS227-ppt.pdf]], [[Project Report|files/SP04-ICS227-ProjectReport.pdf]])
* ICS 280 : Theories and Practices of Collaboration ([[.bib|files/ICS280tpcollab.bib]], [[Position Papers|files/SP04-ICS280-collab-summaries.pdf]], [[Term Paper|files/SP04-ICS280-collab-paper.pdf]])
* ICS 280 : Introduction to Computational Logic ([[mini project|files/SP04-ICS280Logic-paper.pdf]])
* ICS 399 : University Teaching (~TAed ICS 122)
''Winter 2004''
* ICS 243F : Middleware Networks and Distributed Systems ([[.bib|files/mw.bib]], [[survey|files/w04-ics243F-Survey.pdf]], [[talk|files/w04-ics243F-talk.pdf]], [[reviews|files/w04-ics243F-summaries.pdf]], [[project report|files/w04-ics243F-projectReport.pdf]])
* ICS 299 : Independent Study
* ICS 298B : Adanced TA Training Seminar
* ICS 399 : University Teaching (~TAed ICS 21)
''Fall 2003''
* ICS 221 : Software Engineering ([[.bib|files/ICS221-aop_bib.bib]], [[Term Paper|files/f03-ics221-paper.pdf]], [[Talk|files/f03-ics221-talk.pdf]], [[Paper Reviews|files/f03-ics221-summaries.pdf]])
* ICS 270A : Artificial Intelligence
* ICS 200 : ICS Seminar
* ICS 398 : TA Training Seminar
[[About Me]]
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>>
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
<!--{{{-->
<div id='header' class='header'>

<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>

<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='HaemoSideBarOptions'></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 id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/

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

body
{background:#fefefe;}

#contentWrapper {
	font-family: Verdana, Arial, Tahoma, Sans-Serif;
	color: #555555;
margin:1.9em auto 1em ; width:800px;}

#header {background:#fefefe;}

.headerShadow {	padding: 1.4em 0em 0.5em 1em; }

.siteTitle {
			font-family: 'Trebuchet MS' sans-serif;
			font-weight: bold;
			font-size: 36px;
			color: #BF2323;
			background-color: #FFF;
}

.siteSubtitle {
	font-size: 1.0em;
        display: block;
        margin: .5em 3em; color: #999;
}

.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}

a{
color:#BF2323;
text-decoration: none; font-weight:normal;
}

a:hover{
color:#BF2323;
background-color: #fefefe;
border-bottom:1px solid #BF2323;
}

.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #BF2323;
}

.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #BF2323;
border-color: #BF2323;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}

#topMenu br {display:none;}

#topMenu {padding:0.45em 1em; background:#BF2323;}

#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#BF2323; text-decoration:none; }

#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }



#displayArea{margin:0 17em 2em 0.5em;}

.tiddler {padding-left:0;}

.title {color:#BF2323; border-bottom:1px solid#BF2323; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}

.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

    *  html .viewer pre {

margin-left: 0em;
}

    * html .editor textarea, * html .editor input {

width: 98%;
}

/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}

/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}

#sidebarOptions a {
			color:#999;
			text-decoration: none;}

#sidebarOptions	a:hover, #sidebarOptions a:active {
			color:#CC0000;
			background-color:#f5f5f5;border:1px solid #f5f5f5;
		}

#sidebarOptions input {border:1px solid #999; }



 .listTitle {color:#888;}

#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}

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


.tabSelected{color:#fefefe; background:#999;}



 .tabSelected, .tabSelected:hover {
 color: #555;
 background: #fefefe;
 border: solid 1px #ccc;

}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;

}

.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}

#sidebarOptions .sliderPanel {
	background: #eee; border:1px solid#ccc;
	font-size: .9em;
}

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

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


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

.tabContents {background:#fefefe;}




.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}

.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}

.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}

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

.popup {
background: #BF2323;
border: 1px solid #BF2323;
}

.popup li.disabled {
color: #000;
}

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

.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}



   #messageArea {

border: 4px solid #BF2323;
background: #fefefe;
color: #555;
font-size:90%;
}

   #messageArea a:hover { background:#f5f5f5; border:none;}


   #messageArea .button{
color: #666;
border: 1px solid #BF2323;
}

   #messageArea .button:hover {
color: #fff;
background: #BF2323;
border-color: #BF2323;
}

   #contentFooter {background:#BF2323; color:#DF7D7D; clear: both; padding: 0.5em 1em; }


#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}



#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}




.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {			
                        background-color: #fefefe;
			color: #999999;
			border: 1px solid #CCC;		margin-right:3px;
}

.tiddler {padding-bottom:10px;}

.viewer blockquote {
border-left: 5px solid #BF2323;
}

.viewer table, .viewer td {
border: 0px solid #BF2323;
}

.viewer th, thead td {
background: #BF2323;
border: 1px solid #BF2323;
color: #fff;
}
.viewer pre {
	border: 1px solid #ccc;
	background: #f5f5f5;
}

.viewer code {
color: #111; background:#f5f5f5;
}

.viewer hr {
border-top: dashed 1px #555;
}

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

.editor textarea {
border: 1px solid #888;
}

h1,h2,h3,h4,h5 { color: #BF2323; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
A brief trail of my life before I started out as a graduate student at UCI..

''lived/HOME''

1400 Vishwavidyalaya Path
Kha 1/4, Ward 14, Kalimati
Kathmandu
Nepal
TEL: +977 1 427297

''studied/School''
* Mitra High School (pre-school 2 yrs, and grades 1 to 10)
* St. Xaviers (Proficiency Certificate Level, equivalent to 11 and 12th grades)
* [[Kathmandu University|http://www.ku.edu.np]] (4 years Bachelor of Engineering)

''worked''
* [[Kathmandu Engineering College|http://www.keckist.edu.np]] - lecturer
* Systec/RWSS - developer
* [[Kantipur City College|http://www.kcc.edu.np]] - lecturer
* [[Lincoln School|http://www.lsnepal.com/]] - teacher
* [[DonBosco|http://www.kathdonbosco.edu.np/]] - lecturer
* [[CSE Software (now Hitechvalley inet)|http://www.hitechvalley.com/]] - intern, team leader, and developer
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for  legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.1|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|

***/

//{{{

// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin)
	{
	version.extensions.LegacyStrikeThroughPlugin = true;

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} // end of "install only once"
//}}}
<html>
<a href="javascript:;" onclick="setDefaultWidth();" style="font-size:12px; text-align: right; margin:0px; padding: 0px;">Home</a>
</html>
[[CV/Resume|CV/Resume]]
[[Research]]
[[Publications]]
[[Software]]
[[Teaching]]
[[Courses]]
[[Contact]]
[[Personal]]



<!--{{{-->

<meta name="verify-v1" content="lUgu03hMcEqYMjPgVVS8DUpKd4gPS/6hbP2Zrz6os3o=" />

<script language="JavaScript">
<!--
// @author skb
// function to allow the changing of the window size 
function setDefaultWidth()
{
window.open('index.html', '_self');
//window.resizeTo(screen.width<=960?screen.width:960,screen.height<=1024?screen.height-45:1024);
}
-->
</script>

<html>
<script  language="JavaScript" src="http://widgets.twimg.com/j/2/widget.js"></script>
</html>


<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
//&nbsp;Navigate To..//
----
- <html>
<a href="javascript:;" onclick="setDefaultWidth();" style="font-size:12px; text-align: right; margin:0px; padding: 0px;">Home</a>
</html>
- [[CV|Curriculum Vitae]]
- [[Research]]
- [[Publications]]
- [[Projects]]
- [[Software]]
- [[Teaching]]
- [[Courses]]
- [[Links]]
----
<!--{{{-->
<div id='header' class='header'>

<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>

<!-- div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='HaemoSideBarOptions'></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 id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
<!--{{{-->
<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='navigation' refresh='content' tiddler='Navigation'></div>
<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>
<!--}}}-->
I am originally from [[Nepal|http://en.wikipedia.org/wiki/Nepal]], a small country in south Asia. I spent all my life in [[Kathmandu|http://en.wikipedia.org/wiki/Kathmandu]] before coming to the US. I did my undergraduate studies in computer engineering at [[Kathmandu University|http://www.ku.edu.np/]]. In [[past|Journey]] I have worked as a teacher, software developer and a hobbyist [[designer|./scratchpad/albums.htm]] of music album covers. I have [[Erdos number|http://www.oakland.edu/enp/]] 4 ([[Erdos|http://www.cs.elte.hu/erdos/]] -> [[Specker|http://www.iam.unibe.ch/~til/loco2000.html]] ->   [[Lieberherr|http://www.ccs.neu.edu/home/lieber/]] -> [[Lopes|http://www.ics.uci.edu/~lopes]] -> me).
!!FUN STUFF
''Cooking'': I love cooking. In last few years I have gotten better at it. I mostly cook dishes that resemble [[Nepali|http://cooking.nepalnews.com/]]/[[Newari|http://en.wikipedia.org/wiki/Newar_Cuisine]] cuisine. Some of my recipes are [[online|http://sushilbajra.blogspot.com/search/label/recipe]]. I also used to take a lot of [[pictures|http://www.flickr.com/photos/shoeseal/tags/food/]] of them.

''Photography'': One of the more expensive hobbies I have dabbled into lately :). I am still [[learning|http://www.flickr.com/photos/shoeseal/sets/72157603642915704/]] and hope to take out some more time to do it more seriously.

''Design...art'': I used to be a hobbyist designer of music album covers. I am neither a trained nor a professional artist but I enjoy the effort it takes to make things look better. I play with images and colors, and sometimes come out with things that people have liked. Some of my works are the images below...

[img[img/bmbF_lr_small.jpg]][img[img/poster0_small.jpg]][img[img/mi20_small.jpg]][img[img/mi10_small.jpg]][img[img/rnlf0_small.jpg]]

You can view a portfolio of these album covers here: [[Album  Covers|./scratchpad/albums.htm]]

''Sarangi'': I used to play [[Sarangi|http://sushilbajra.blogspot.com/2008/01/sarangi.html]], an indigenous folk instrument from the hills of Nepal. A crude recording is: '[[simsimay pani ma|files/simsim.mp3]]'  (click to listen).
{{contactTable{
|[img[old sarangi|img/s_oldSar.jpg]] |To the left is my old gadget, which by now is a museum piece. To the right are the pictures of those that are commercial commodities sold as wooden craft rather than an instrument. They do not come with the authentic strings (made of goat intestine!!!) none did mine. |[>img[old sarangi|img/s_othersSar1.jpg]] |[img[old sarangi|img/s_oSar2.jpg]]|
|[img[old sarangi|img/s_kumusicfestival.jpg]] |I found Sarangi more intuitive and personal to learn and play with. I even succeeded in sharing the stage with college-stars, back in my university during those golden ages of undergraduate study.|>|
}}}
!!Some online Bits
* profiles: [[DBLP|http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/b/Bajracharya:Sushil_Krishna.html]], [[linkedIn|http://www.linkedin.com/in/bajracharya]], [[github|http://github.com/sushil]], [[acm author|http://portal.acm.org/author_page.cfm?id=81100100238]], [[ohloh|https://www.ohloh.net/accounts/58177?ref=Detailed]], 
* quick links: [[music|http://www.pandora.com/people/sushil_kb]], [[pictures|http://flickr.com/photos/shoeseal]], [[blog|http://sushilbajra.blogspot.com]], [[bookmarks|http://del.icio.us/shoeseal]]
''Name Explorer''
While working on ~CodeGenie we realized that developers using code search engines often need assistance in coming up with good keywords or names for the features they want to find. Name Explorer is a tool designed to help with this problem. It takes a query term and builds a tag cloud like result of other related terms that might help in further refining the query results. This idea has been implemented as a feature in the recent version of [[Sourcerer API Search|http://wiki.github.com/sourcerer/Sourcerer/sas]].
{{contactTable{
|[img[Name Explorer|img/ne.png]]|
}}}
 You can download Name Explorer from [[here|files/ne.zip]].

''~DeMatrix''
~DeMatrix is a tool that can display the [[DSMs|http://www.dsmweb.org]] (Dependency Structure Matrix) of all projects we have analyzed in Sourcerer. Currently it depicts project dependencies at package granularity, and it uses data from our older repository in Sourcerer. 
{{contactTable{
|[>img[DeMatrix|img/dm.png]]|
}}}
You can check out ~DeMatrix on the [[web|http://mine7.ics.uci.edu/repo2/dsm.html]] or download it [[here|files/dm.zip]] (recommended). 
''Journal''
* S. Bajracharya, C. Lopes. __''Analyzing and Mining an Internet-scale Code Search Engine Usage Log''__. Journal of Empirical Software Engineering, Special Issue ~MSR09 ([[link|http://www.springerlink.com/content/d3t2122108j62783/]])
* O. Lemos, S. Bajracharya, J. Ossher, P. Masiero, C. Lopes. __''A ~Test-Driven Approach to Code Search and its Application to the Reuse of Auxiliary Functionality''__. Information and Software Technology. (to appear)
* E. Linstead, S. Bajracharya, T. Ngo, P. Rigor, C. Lopes, P. Baldi. __''Sourcerer: Mining and Searching ~Internet-Scale Software Repositories''__. Data Mining and Knowledge Discovery 2008 ([[DOI|http://dx.doi.org/10.1007/s10618-008-0118-x]])
* C. Lopes, S. Bajracharya. __''Assessing Aspect Modularizations using Design Structure Matrices and Net Options Value''__. Transactions of Aspect Oriented Software Development, LNCS Volume 3880/2006, pages. 1-35, ~Springer-Verlag ([[link|http://www.springerlink.com/content/2g637970w0202236/]])

''Conference''
* S. Bajracharya, J. Ossher, and C. Lopes. __''Leveraging Usage Similarity for Effective Retrieval of Examples in Code Repositories''__. In, 18th International Symposium on the Foundations of Software Engineering (FSE 2010). (to appear)
* J. Ossher, S. Bajracharya, and C. Lopes. __''Automated Dependency Resolution for Open Source Software''__. In, 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).
* S. Bajracharya, C. Lopes. __''Mining Search Topics from a Code Search Engine Usage Log''__. In: 6th IEEE Working Conference on Mining Software Repositories (MSR 2009), Vancouver, Canada. //Recipient of the best paper award// ([[DOI|http://dx.doi.org/10.1109/MSR.2009.5069489]])
* J. Ossher, S. Bajracharya, E. Linstead, P. Baldi, C. Lopes. __''~SourcererDB: An Aggregated Repository of Statically Analyzed and ~Cross-Linked Open Source Java Projects''__. In: 6th IEEE Working Conference on Mining Software Repositories (MSR 2009), Vancouver, Canada. ([[DOI|http://dx.doi.org/10.1109/MSR.2009.5069501]])
* O. Lemos, S. Bajracharya, J. Ossher, P. Masiero, C. Lopes. __''Applying ~Test-Driven Code Search to the Reuse of Auxiliary Functionality''__. In: 24th Annual ACM Symposium on Applied Computing (SAC 2009), Honolulu, Hawaii, USA. ([[DOI|http://doi.acm.org/10.1145/1529282.1529384]])
* P. Baldi, E. Linstead, C. Lopes, S. Bajracharya. __''A Theory of Aspects as Latent Topics''__. ACM SIGPLAN conference on Object oriented programming systems and applications.  Nashville, Tennessee. October 2008. ([[DOI|http://doi.acm.org/10.1145/1449764.1449807]])
* W. Ruegmee, R. Silva Filho, S. Bajracharya, C. Lopes, D. Redmiles. __''XE (eXtreme Editor) – Bridging the ~Aspect-Oriented Programming Usability Gap''__. Proceedings of the 23rd IEEE/ACM International Conference on Automated Software Engineering. L'Aquila, Italy, September 15-19, 2008. ([[link|http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4639360]])
* E. Linstead, P. Rigor, S. Bajracharya, C. Lopes, P. Baldi.  __''Mining ~Internet-Scale Software Repositories''__.  Advances in Neural Information Processing Systems (NIPS 2007) December 2007. ([[link|http://books.nips.cc/papers/files/nips20/NIPS2007_0637.pdf]]) 
* E. Linstead, P. Rigor, S. Bajracharya, C. Lopes, P. Baldi.  __''Mining Concepts from Code with Probabilistic Topic Models''__.  Proceedings of ASE 2007: International Conference on Automated Software Engineering. Atlanta, GA. November 2007. ([[DOI|http://doi.acm.org/10.1145/1321631.1321709]])
* C. Lopes, S. Bajracharya. __''An analysis of modularity in aspect oriented design''__. Aspect-oriented software development, Proceedings of the 4th international conference on Aspect-oriented software development (table of contents), Chicago, Illinois. Pages: 15 - 26, Year of Publication: 2005, ISBN:1-59593-043-4, ([[DOI|http://doi.acm.org/10.1145/1052898.1052900]], [[slides|files/aosd-ppt.pdf]]) 

''Technical Report''
* W. Ruengmee, R. Silva Filho, S. Bajracharya, D. Redmiles, C. Lopes.__''XE (eXtreme Editor) - Tool Support for Evolution in ~Aspect-Oriented Programming''__. UCI ISR Technical Report # ~UCI-ISR-08-1. June 2008 ([[link|http://www.isr.uci.edu/tech_reports/UCI-ISR-08-1.pdf]])
* S. Bajracharya, T. Ngo, E. Linstead, P. Rigor, Y. Dou, P. Baldi, C. Lopes. __''A Study of Ranking Schemes in ~Internet-Scale Code Search''__. UCI ISR Technical Report # ~UCI-ISR-07-8. Nov 2007 ([[link|http://www.isr.uci.edu/tech_reports/UCI-ISR-07-8.pdf]])

''Workshop''
* S. Bajracharya, J. Ossher, and C. Lopes. __''Sourcerer – An Infrastructure for Large-scale Collection and Analysis of Open-source Code''__. In Proceedings of the Third International Workshop on Academic Software Development Tools and Techniques (WASDeTT-3), 2010.
* S. Bajracharya, J. Ossher, and C. Lopes.  __''Searching API usage examples in code repositories with Sourcerer API Search''__. In SUITE 2010: Second International Workshop on Search-driven Development - Users, Infrastructure, Tools and Evaluation, 2010
* S. Bajracharya, A. Kuhn, and Y. Ye. __''SUITE 2010: Second international workshop on search-driven development - users, infrastructure, tools and evaluation''__. In 32nd International Conference on Software Engineering - Companion Volume, 2010
* S. Bajracharya, A. Kuhn, and Y. Ye. __''SUITE 2009: First international workshop on search-driven development - users, infrastructure, tools and evaluation''__. In 31st International Conference on Software Engineering - Companion Volume, 2009 ([[DOI|http://dx.doi.org/10.1109/ICSE-COMPANION.2009.5071054]])
* S. Bajracharya, J. Ossher, C. Lopes. __''Sourcerer: An ~Internet-Scale Software Repository''__. In proceedings of SUITE 2009: First International Workshop on Search-driven Development – Users, Infrastructure, Tools and Evaluation (co-located with ICSE 2009) ([[DOI|http://dx.doi.org/10.1109/SUITE.2009.5070010]])
* E. Linstead, P. Rigor, S. Bajracharya, C. Lopes, P. Baldi. __''Mining Eclipse Developer Contributions via ~Author-Topic Models''__. In proceedings of MSR 2007: International Workshop on Mining Software Repositories. //Selected as the best paper in the MSR 2007 Mining Challenge paper track// ([[DOI|http://dx.doi.org/10.1109/MSR.2007.20]])
* S. Bajracharya and C. Lopes. __''Managing Variabilities in ~On-Going Design''__. In ~MVCDC2, Proceedings of the 2nd workshop on Managing Variabilities Consistently in Design and Code, OOPSLA 2005. ([[link|http://www.kircher-schwanninger.de/workshops/MVCDC/submissions/Bajracharya%2BLopes.pdf]])
* S. Bajracharya, T. Ngo and C. Lopes. __''On Using Net Options Value as a Value Based Design Framework''__. Proceedings of the seventh international workshop on Economics-driven software engineering research. International Conference on Software Engineering. SESSION: ~Economics-Driven Software Engineering Research. St. Louis, Missouri, Year of Publication: 2005, ISBN:1-59593-118-X, Pages: 1 - 3. ([[DOI|http://doi.acm.org/10.1145/1083091.1083104]], [[slides|files/edser7.pdf]])

''Tool Demo''
* O. Lemos, S. Bajracharya, J. Ossher, R. Morla, P. Masiero, P. Baldi, C. Lopes. __''~CodeGenie: using test-cases to search and reuse source code''__. Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering. Atlanta, Georgia, USA ([[DOI|http://doi.acm.org/10.1145/1321631.1321726]])

''Poster''
* O. Lemos, S. Bajracharya, J. Ossher. __''~CodeGenie: a tool for test-driven source code search''__. In companion to the 22nd ACM SIGPLAN conference on Object oriented programming systems and applications.  Montreal, Quebec, Canada. //Won the first prize in the ACM Student research competition at OOPSLA 2007// ([[DOI|http://doi.acm.org/10.1145/1297846.1297944]])
* S. Bajracharya, T. Ngo, E. Linstead, Y. Dou, P. Rigor, P. Baldi, C. Lopes. __''Sourcerer: A Search Engine for Open Source Code Supporting Structure-based Search''__. October 2006. Companion to the 21st ACM SIGPLAN conference on Object-oriented programming languages, systems, and applications OOPSLA '06. ACM Press. ([[DOI|http://doi.acm.org/10.1145/1176617.1176671]])
* Z. Tang, H. Hile, S. Bajracharya, and R. Jurdak. __''~PetTracker- Pet Tracking System Using Motes''__. Ubicomp 2005: Seventh International conference on Ubiquitous Computing, Tokyo, Japan

''Citable Datasets''
* C. Lopes, S. Bajracharya, J. Ossher, P. Baldi. __''UCI Source Code Data Sets [http://www.ics.uci.edu/~lopes/datasets]''__. University of California, Bren School of Information and Computer Sciences. Irvine, CA 2010

You can also view most of the publications in this list in my [[DBLP page|http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/b/Bajracharya:Sushil_Krishna.html]] or my [[ACM author profile|http://msr.uwaterloo.ca/msr2009/index.html]] page. Please [[contact|Contact]] me if you have trouble accessing these papers.

^^Besides these published materials, there is also a list of some [[academic writings|Academic Writing]] that I have done in past.^^
My general research interest lies in the area of Software Engineering. I am fascinated by how developers create, use and maintain a myriad of complex socio-technical artifacts to produce software. Analysis of the structures and dependencies in such artifacts has been a common theme in my research. I strive to keep my research empirically grounded by using data from the real world and by evaluating my work to be useful for practitioners.
!!Active Research Projects
''Structural Semantic Indexing (SSI)'' introduces the idea of using structural similarity in source code for effective retrieval of code examples. The key idea in SSI is that code entities that share common usage of ~APIs are functionally similar, and can share the terms used to define each other. Simply put, if both A and B use a set of ~APIs in a similar manner, then A and B are semantically similar even if their names are different. As such, a query for A should retrieve B and vice-versa. SSI builds a code index taking these relations into account. This helps to mitigate the scarcity of words in source code and retrieve more, and more relevant, code fragments.
* [[Project link|http://wiki.github.com/sourcerer/Sourcerer/locating-apis]]
* Publications: SUITE'10 (to appear), FSE'10 (to appear)
''Sourcerer'' is an infrastructure for source code analysis and search. This project is exploring several research topics using large amount of empirical data, mostly pertaining to the structure and dependencies in the source code. I am currently focusing on //empirical evaluation of retrieval schemes in Internet-scale code search// that aims to develop a framework for devising and evaluating new code-specific heuristics to improve the effectiveness of code search in large code repositories. ([[read more...|Sourcerer]])
* [[Project link|http://sourcerer.ics.uci.edu]]
* Publications: [[SUITE'09|http://dx.doi.org/10.1109/SUITE.2009.5070010]], [[MSR'09|http://dx.doi.org/10.1109/MSR.2009.5069501]], [[OOPSLA'08|http://doi.acm.org/10.1145/1449764.1449807]], [[DMKD'08|http://dx.doi.org/10.1007/s10618-008-0118-x]], [[NIPS'07|http://books.nips.cc/papers/files/nips20/NIPS2007_0637.pdf]], [[ASE'07|http://doi.acm.org/10.1145/1321631.1321709]], [[MSR'07|http://dx.doi.org/10.1109/MSR.2007.20]], [[UCI-ISR-07-8|http://www.isr.uci.edu/tech_reports/UCI-ISR-07-8.pdf]], [[OOPSLA'06|http://doi.acm.org/10.1145/1176617.1176671]]
* Collaborator (active): Joel Ossher 
* Collaborators (past): Trung Ngo, Erik Linstead, Paul Rigor, Huy Hunh
''Understanding the Usage of an Internet-scale Code Search Engine'' involves an analysis of a year long usage log of [[Koders|http://koders.com]] using exploratory statistics and topic modeling to understand how developers are using the search engine and what are they looking for. ([[read more...|Usage Log Analysis]])
* Publications: [[MSR'09|http://dx.doi.org/10.1109/MSR.2009.5069489]]
!!Past Research Projects
''~CodeGenie'' explores the idea of using test cases as an interface to automate the tedious task of searching and reusing code in the Internet. It integrates - automatic query extraction for code search from test-cases, dependency resolution, merging sliced code fragments with partial solutions in a project's workspace, and verification of found results in the IDE itself. ([[read more...|CodeGenie]])
* [[Project link|http://sourcerer.ics.uci.edu/codegenie]]
* Collaborators: Otavio Lemos, Joel Ossher
* Publications: [[SAC'09|http://doi.acm.org/10.1145/1529282.1529384]], [[ASE'07|http://doi.acm.org/10.1145/1321631.1321726]], [[OOPSLA'07|http://doi.acm.org/10.1145/1297846.1297944]]
''XE'' is a structured code editor that assists developers in evolving Aspect-oriented programs using in-line edit-time weaving (a.k.a. fluid AOP).
* [[Project link|http://www.wiwatruengmee.com/research/xe/]]
* Collaborator: Wiwat Ruengmee
* Publications: [[ASE'08|http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4639360]], [[UCI-ISR-08-1|http://www.isr.uci.edu/tech_reports/UCI-ISR-08-1.pdf]]
''Analysis of Modularity with DSM and NOV'' explored the use of the economics based framework of Net Options Value and the design representation method of Dependency Structure Matrix in assessing the value of modularity in evolving program design using Aspect-oriented modularization. ([[read more...|Analysis of Modularity]])
* Publications: [[TAOSD'06|http://www.springerlink.com/content/2g637970w0202236/]], [[EDSER'05|http://doi.acm.org/10.1145/1083091.1083104]], [[AOSD'05|http://doi.acm.org/10.1145/1052898.1052900]]
!! Research Internship Projects
''Runtimes for Web 2.0'' involved exploration of higher level, declarative, programming languages and associated runtimes (both client and server) for Web 2.0 applications. This was an internship project during summer 2008 where I worked with researchers Charles Wiecha and Rahul Akolkar in Multichannel Web Interaction Research Group at the IBM TJ Watson Research Center. (A brief project detail is available [[here|http://domino.research.ibm.com/comm/research_people.nsf/pages/rkhalaf.projects.html]])

''Memento'' aims to help software developers with their various information needs by supporting novel visualization and navigation of the fine-grained usage history obtained by deep logging of various applications developers frequently use. I designed and implemented Memento with [[Rob DeLine|http://research.microsoft.com/~rdeline/]], a senior researcher in the [[Human Interactions in Programming|http://research.microsoft.com/hip/]] group at [[Microsoft Research|http://research.microsoft.com]], Redmond. I was Rob's intern during summer 2007 at MSR.
<<tabs txtMainTab Tags 'All tags' TabTags Timeline Timeline TabTimeline All 'All tiddlers' TabAll More 'More lists' TabMore>>
^^[img[img/favicon.ico]] [[TiddlyWiki|http://www.tiddlywiki.com/]] <<version>>^^
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=true;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
/***
|Name|SinglePageModePluginInfo|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.  SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title.  The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.  Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing  tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false.  This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
&nbsp;&nbsp;&nbsp;{{{#SPM:config.options.txtUserName!="SomeName"}}}
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
2008.06.12 2.9.5 corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 2.9.4 added chkSinglePageKeepEditedTiddlers option
2008.06.05 2.9.3 in displayTiddler(), bypass single/top/bottom mode handling if startingUp.  Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 2.9.2 in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 2.9.1 don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 2.9.0 in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 2.8.3 in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.14 2.8.2 in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 2.8.1 in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 2.8.0 added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode.  Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 2.7.0 added support for "SPM:" URL paramifier
2008.03.01 2.6.0 in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed.  Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 2.5.3 in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 2.5.2 documentation cleanup
2007.10.08 2.5.1 in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 2.5.0 for TPM/BPM modes, don't force tiddler to redisplay if already shown.  Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 2.4.0 added option to disable automatic permalink feature.  Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 2.3.1 fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 2.3.0 added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 2.2.3 in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 2.2.2 use apply() to invoke hijacked core functions
2006.07.04 2.2.1 in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 2.2.0 added chkTopOfPageMode (TPM) handling
2006.02.04 2.1.1 moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.27 2.1.0 hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list).  Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 2.0.0 Update for TW2.0
2005.11.24 1.1.2 When the back and forward buttons are used, the page now changes to match the URL.  Based on code added by Clint Checketts
2005.10.14 1.1.1 permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 1.1.0 added automatic setting of window title and location bar ('auto-permalink').  feature suggestion by David Dickens.
2005.10.09 1.0.1 combined documentation and code in a single tiddler
2005.08.15 1.0.0 Initial Release
<<<

Sushil Krishna Bajracharya
http://www.ics.uci.edu/~sbajrach/
Most of the software that I have built as part of my [[research|Research]] is available for download.

''Sourcerer Infrastructure'': An infrastructure for large scale analysis of open source code. It consists of components that deal with wide range of features: customizable code crawling in repositories, fine-grained parsing, code search, code repository service, and program slicing. Using Sourcerer, one can build an aggregated software repository that contains fine-grained structural information extracted from source code in a relational database (code database), a local file repository of all the source code, and a search server that supports querying over the repository using a schema that closely matches the relational schema of the code database. Check out the [[website|http://sourcerer.ics.uci.edu]] for general information and [[github|http://github.com/sourcerer/Sourcerer]] to access the source code. 

I have built several code search tools on top of the Sourcerer infrastructure; the major three - SAS, Codegenie, and SCS - are listed below.

''Sourcerer API Search (SAS)'': A code search engine that facilitates retrieval of API usage examples, available [[here|http://wiki.github.com/sourcerer/Sourcerer/sas]].

''Codegenie'':  An implementation of a Test-driven Code Search (TDCS) tool. TDCS is an intriguing idea of code reuse in large scale repositories. In TDCS a developer writes test cases before they implement a feature; similar to Test-driven development (TDD). However, unlike TDD, in TDCS the test cases are used in formulating queries to search for the unimplemented features in code repositories. Thus a TDCS system provides a developer with the following facilities: 
** automatic formulation of queries 
** presentation and selection of search results 
** automated 'slicing'  of found code results 
** weaving/unweaving of slices in a developer's workspace. 
Codegenie provides all these facilities relying on Sourcerer as the underlying code search infrastructure. You can download the eclipse plugin from [[here|http://sourcerer.ics.uci.edu/codegenie]]. Source code will be available shortly.

''Sourcerer Code Search (SCS)'': An Internet-scale code search engine to find common implementations of code. Available [[here|http://sourcerer.ics.uci.edu]].

''koders-loganalysis'': A suite of useful tools/scripts for analyzing usage log data from Koders (a commercial code search engine). Available [[here|http://github.com/sushil/koders-loganalysis]].

''XE'': A structured editor supporting edit-time weaving of Aspects. //Working on making the download available//

''DSM/NOV analysis'': Get the excel spreadsheet for DSM/NOV analysis from [[here|http://mondego.calit2.uci.edu/xwiki/bin/view/XWiki/DSM]].

I also have some prototypes based on ideas I gathered from my research. You can check them out [[here|Prototypes]].

''Sourcerer'' is an infrastructure for large-scale source code analysis and search. The infrastructure is made up of several components: a system to crawl and manage software repositories, a system to parse and extract features from the code, a relational database to store the extracted information, various tools to mine and search the database, and end user applications for developers such as a web-based application and a plugin for the Eclipse IDE for code search. The core Sourcerer infrastructure is designed with a goal to collect large amount of empirical data from thousands of open-source software projects. With the breadth of tools, applications, and services that make the underlying data readily available, Sourcerer has contributed to several research topics: In making large-scale code retrieval effective; Using topic modeling on source code to extract hidden concepts; And, developing information theoretic model of Aspects. This has resulted in publications in several conferences: Object Oriented Programming Systems Languages and Applications (OOPSLA), Automated Software Engineering (ASE), Mining Software Repositories (MSR), and Neural Information Processing System (NIPS); and in the journal Data Mining and Knowledge Discovery (DMKD). 

My current focus has been on empirical evaluation of retrieval schemes for large-scale code search. I also contribute to the development and maintenance of the core Sourcerer infrastructure.

!!Retrieval schemes for large-scale code search
Searching for source code in large code repositories present unique challenges and opportunities. On one hand the scarcity of descriptive words in code makes it difficult to retrieve relevant results. On the other hand, rich structure and dependencies in source makes it possible to devise code specific heuristics for effective retrieval. Using rich structural data extracted from thousands of open source available in Sourcerer’s repository, I designed a code search index that enabled building various retrieval schemes for searching code with little effort. These schemes allowed me to combine several code specific heuristics to boost precision in code search, such as: The specificity of terms expressed in the fully qualified names of code, and the graph structure of dependencies to compute Coderank – a Pagerank like metric for popularity of a code entity. I built a code search engine that incorporates these heuristics, and its evaluation to find source code implementations showed that a combination of code-specific heuristics in a retrieval scheme is able to deliver an AUC (Area Under ROC	 Curve) at least 0.21 greater than Google code search, and outperformed Google with an AUC of .736. These results have been published in a journal Data Mining and Knowledge Discover (vol. 18, number 2, 2008).

^^[[Back to Research|Research]]^^
/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/

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

body
{background:#fefefe;}

#contentWrapper {
	font-family: Verdana, Arial, Tahoma, Sans-Serif;
	color: #222222;
        margin: 0.45em auto 1em; width:800px;}

#header {background:#fefefe;}

.headerShadow {	padding: 0; }

.siteTitle {
			font-family: 'Trebuchet MS' sans-serif;
			font-weight: bold;
			font-size: 22px;
			color: #405587;
                       
			background-color: #FFF;
}

.siteSubtitle {
	font-size: 1.0em;
        display: block;
        margin: 0em 0.5em 1.5em 0em; color: #999;
}

.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}

a{
color:#405587;
text-decoration: none; font-weight:normal;
}

a:hover{
color:#405587;
background-color: #fefefe;
border-bottom:1px solid #405587;
}

.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #405587;
}

.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #405587;
border-color: #405587;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}

#topMenu br {display:none;}

#topMenu {padding:0.45em 1em; background:#405587;}

#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#405587; text-decoration:none; }

#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }



/*#displayArea{margin:0 17em 2em 0.5em;}*/
#displayArea{margin:0 0.5em 2em 0.5em;}


.tiddler {padding-left:0;}

.title {color:#405587; border-bottom:1px solid#405587; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}

.toolbar2 {font-size:85%;}
.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

    *  html .viewer pre {

margin-left: 0em;
}

    * html .editor textarea, * html .editor input {

width: 98%;
}

/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}

/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}

#sidebarOptions a {
			color:#999;
			text-decoration: none;}

#sidebarOptions	a:hover, #sidebarOptions a:active {
			color:#CC0000;
			background-color:#f5f5f5;border:1px solid #f5f5f5;
		}

#sidebarOptions input {border:1px solid #999; }



 .listTitle {color:#888;}

#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}

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


.tabSelected{color:#fefefe; background:#999;}



 .tabSelected, .tabSelected:hover {
 color: #555;
 background: #fefefe;
 border: solid 1px #ccc;

}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;

}

.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}

#sidebarOptions .sliderPanel {
	background: #eee; border:1px solid#ccc;
	font-size: .9em;
}

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

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


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

.tabContents {background:#fefefe;}




.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}

.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}

.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}

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

.popup {
background: #405587;
border: 1px solid #405587;
}

.popup li.disabled {
color: #000;
}

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

.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}



   #messageArea {

border: 4px solid #405587;
background: #fefefe;
color: #555;
font-size:90%;
}

   #messageArea a:hover { background:#f5f5f5; border:none;}


   #messageArea .button{
color: #666;
border: 1px solid #405587;
}

   #messageArea .button:hover {
color: #fff;
background: #405587;
border-color: #405587;
}

   #contentFooter {background:#405587; color:#DF7D7D; clear: both; padding: 0.5em 1em; }


#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}



#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}




.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {			
                        background-color: #fefefe;
			color: #999999;
			border: 1px solid #CCC;		margin-right:3px;
}

.tiddler {padding-bottom:1px; padding-top:2px;}

.viewer blockquote {
border-left: 5px solid #405587;
}

.viewer table, .viewer td {
border: 0px solid #405587;
}

.viewer th, thead td {
background: #405587;
border: 0px solid #405587;
color: #fff;
}
.viewer pre {
	border: 1px solid #ccc;
	background: #f5f5f5;
}

.viewer code {
color: #111; background:#f5f5f5;
}

.viewer hr {
border-top: dashed 1px #555;
}

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

.editor textarea {
border: 1px solid #888;
}

h1,h2,h3,h4,h5 { color: #405587; background: transparent;  font-family: Arial, Helvetica, sans-serif; padding-top: 6px; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/

/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/

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

body
{background:#fefefe;}

#contentWrapper {
	font-family: Verdana, Arial, Tahoma, Sans-Serif;
	color: #555555;
margin:1.9em auto 1em ; width:800px;}

#header {background:#fefefe;}

.headerShadow {	padding: 0; }

.siteTitle {
			font-family: 'Trebuchet MS' sans-serif;
			font-weight: bold;
			font-size: 22px;
			color: #000000;
                       
			background-color: #FFF;
}

.siteSubtitle {
	font-size: 1.0em;
        display: block;
        margin: 0em 0.5em 1.5em 0em; color: #999;
}

.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}

a{
color:#000000;
text-decoration: none; font-weight:normal;
}

a:hover{
color:#000000;
background-color: #fefefe;
border-bottom:1px solid #000000;
}

.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #000000;
}

.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #000000;
border-color: #000000;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}

#topMenu br {display:none;}

#topMenu {padding:0.45em 1em; background:#000000;}

#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#000000; text-decoration:none; }

#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }



/*#displayArea{margin:0 17em 2em 0.5em;}*/
#displayArea{margin:0 0.5em 2em 0.5em;}


.tiddler {padding-left:0;}

.title {color:#000000; border-bottom:1px solid#000000; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}

.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

    *  html .viewer pre {

margin-left: 0em;
}

    * html .editor textarea, * html .editor input {

width: 98%;
}

/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}

/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}

#sidebarOptions a {
			color:#999;
			text-decoration: none;}

#sidebarOptions	a:hover, #sidebarOptions a:active {
			color:#CC0000;
			background-color:#f5f5f5;border:1px solid #f5f5f5;
		}

#sidebarOptions input {border:1px solid #999; }



 .listTitle {color:#888;}

#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}

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


.tabSelected{color:#fefefe; background:#999;}



 .tabSelected, .tabSelected:hover {
 color: #555;
 background: #fefefe;
 border: solid 1px #ccc;

}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;

}

.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}

#sidebarOptions .sliderPanel {
	background: #eee; border:1px solid#ccc;
	font-size: .9em;
}

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

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


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

.tabContents {background:#fefefe;}




.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}

.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}

.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}

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

.popup {
background: #000000;
border: 1px solid #000000;
}

.popup li.disabled {
color: #000;
}

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

.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}



   #messageArea {

border: 4px solid #000000;
background: #fefefe;
color: #555;
font-size:90%;
}

   #messageArea a:hover { background:#f5f5f5; border:none;}


   #messageArea .button{
color: #666;
border: 1px solid #000000;
}

   #messageArea .button:hover {
color: #fff;
background: #000000;
border-color: #000000;
}

   #contentFooter {background:#000000; color:#DF7D7D; clear: both; padding: 0.5em 1em; }


#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}



#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}




.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {			
                        background-color: #fefefe;
			color: #999999;
			border: 1px solid #CCC;		margin-right:3px;
}

.tiddler {padding-bottom:10px;}

.viewer blockquote {
border-left: 5px solid #000000;
}

.viewer table, .viewer td {
border: 1px solid #000000;
}

.viewer th, thead td {
background: #000000;
border: 1px solid #000000;
color: #fff;
}
.viewer pre {
	border: 1px solid #ccc;
	background: #f5f5f5;
}

.viewer code {
color: #111; background:#f5f5f5;
}

.viewer hr {
border-top: dashed 1px #555;
}

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

.editor textarea {
border: 1px solid #888;
}

h1,h2,h3,h4,h5 { color: #000000; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/

/*{{{*/
* html .tiddler {
    height: 1%;
}

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

h1,h2,h3,h4,h5 {
	font-weight: bold;
	text-decoration: none;
        padding-top: 4px;
	/* padding-left: 0.4em; */
}

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; color: #cccccc; border: none; } /* For Internet Explorer */

html>body hr { height: 1px; background-color: #cccccc; border: none; } 
/* For Gecko-based browsers */

html>body hr { height: 1px; background-color: #cccccc; border: 0px solid #cccccc; } 
/* For Opera and Gecko-based browsers */

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 a 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: 0.4em 0em 0.4em 0.4em;
	left: -1px;
	top: -1px;
       width: 100%;
}

.headerForeground {
	position: absolute;
       width: 100%;
	padding: 0.4em 0em 0.4em 0.4em;
	left: 0px;
	top: 0px;

}

.siteTitle {
	font-size: 1.2em;
        font-weight: bold;
}

.siteSubtitle {
	font-size: 0.9em;
        /* float: right; */
        margin-top: 0.2em;
        margin-right: 22px;


}

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

#sidebar {
	position: absolute;
	right: 3px;
	width: 16em;
	font-size: .9em;
}

#navigation {
  margin: 1px;
  padding-top: 0.8em;
  padding-bottom: 0.4em;
  padding-left: 0.4em;
  padding-right: 0.4em;
}

#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: 13em;
	overflow: hidden;
}

.wizard {
	padding: 0.1em 0em 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.2em 0em 0.2em 0em;
}

.wizardStep {
	padding: 1em 1em 1em 1em;
}

.wizard .button {
	margin: 0.5em 0em 0em 0em;
	font-size: 1.2em;
}

#messageArea {
position:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;
}

*[id='messageArea'] {
position:fixed !important; z-index:99;}

.messageToolbar {
display: block;
text-align: right;
}

#messageArea a{
	text-decoration: underline;
}

.popup {
	font-size: .9em;
	padding: 0.2em;
	list-style: none;
	margin: 0;
}

.popup hr {
	display: block;
	height: 1px;
	width: auto;
	padding: 0;
	margin: 0.2em 0em;
}

.listBreak {
	font-size: 1px;
	line-height: 1px;
}

.listBreak div {
	margin: 2px 0;
}

.popup li.disabled {
	padding: 0.2em;
}

.popup li a{
	display: block;
	padding: 0.2em;
}

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

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


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

.selected .toolbar {
	visibility: visible;
}

.tiddler {
	padding: 0em 0em 0em 0em /*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;
display: none;
}

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

* html .viewer pre {
	width: 99%;
	padding: 0 0 1em 0;
}

.viewer {
	line-height: 1.5em;
	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 {
	border-collapse: collapse;
	margin: 0.8em 1.0em;
}

.viewer th, .viewer td, .viewer tr,.viewer caption{
	padding: 3px;
}

.viewer table.listView {
	font-size: 0.85em;
	margin: 0.8em 1.0em;
}

.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {
	padding: 0px 3px 0px 3px;
}

.viewer .contactTable table {
  border: 0px;
  padding: 1px;
}

.viewer .contactTable td {
  border: 0px;
  padding: 1px;
}


.viewer .contactTable tr {
  border: 0px;
  padding: 1px;
}

.viewer pre {
	padding: 0.5em;
	margin-left: 0.5em;
	font-size: 1.2em;
	line-height: 1.5em;
	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;
	padding: 1em;
}

.cascade {
	font-size: 1.1em;
	position: absolute;
	overflow: hidden;
}
/*}}}*/
.viewer img{
  margin-left: 8px;
  margin-right: 4px;
  margin-top: 4px;
  margin-bottom: 4px;
}
/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/

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

body
{background:#fefefe;}

#contentWrapper {
	font-family: Verdana, Arial, Tahoma, Sans-Serif;
	color: #555555;
margin:1.9em auto 1em ; width:800px;}

#header {background:#fefefe;}

.headerShadow {	padding: 0; }

.siteTitle {
			font-family: 'Trebuchet MS' sans-serif;
			font-weight: bold;
			font-size: 22px;
			color: #BF2323;
                       
			background-color: #FFF;
}

.siteSubtitle {
	font-size: 1.0em;
        display: block;
        margin: 0em 0.5em 1.5em 0em; color: #999;
}

.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}

a{
color:#BF2323;
text-decoration: none; font-weight:normal;
}

a:hover{
color:#BF2323;
background-color: #fefefe;
border-bottom:1px solid #BF2323;
}

.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #BF2323;
}

.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #BF2323;
border-color: #BF2323;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}

#topMenu br {display:none;}

#topMenu {padding:0.45em 1em; background:#BF2323;}

#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#BF2323; text-decoration:none; }

#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }



/*#displayArea{margin:0 17em 2em 0.5em;}*/
#displayArea{margin:0 0.5em 2em 0.5em;}


.tiddler {padding-left:0;}

.title {color:#BF2323; border-bottom:1px solid#BF2323; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}

.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

    *  html .viewer pre {

margin-left: 0em;
}

    * html .editor textarea, * html .editor input {

width: 98%;
}

/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}

/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}

#sidebarOptions a {
			color:#999;
			text-decoration: none;}

#sidebarOptions	a:hover, #sidebarOptions a:active {
			color:#CC0000;
			background-color:#f5f5f5;border:1px solid #f5f5f5;
		}

#sidebarOptions input {border:1px solid #999; }



 .listTitle {color:#888;}

#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}

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


.tabSelected{color:#fefefe; background:#999;}



 .tabSelected, .tabSelected:hover {
 color: #555;
 background: #fefefe;
 border: solid 1px #ccc;

}

#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;

}

.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}

#sidebarOptions .sliderPanel {
	background: #eee; border:1px solid#ccc;
	font-size: .9em;
}

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

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


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

.tabContents {background:#fefefe;}




.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}

.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}

.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}

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

.popup {
background: #BF2323;
border: 1px solid #BF2323;
}

.popup li.disabled {
color: #000;
}

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

.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}



   #messageArea {

border: 4px solid #BF2323;
background: #fefefe;
color: #555;
font-size:90%;
}

   #messageArea a:hover { background:#f5f5f5; border:none;}


   #messageArea .button{
color: #666;
border: 1px solid #BF2323;
}

   #messageArea .button:hover {
color: #fff;
background: #BF2323;
border-color: #BF2323;
}

   #contentFooter {background:#BF2323; color:#DF7D7D; clear: both; padding: 0.5em 1em; }


#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}



#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}




.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {			
                        background-color: #fefefe;
			color: #999999;
			border: 1px solid #CCC;		margin-right:3px;
}

.tiddler {padding-bottom:10px;}

.viewer blockquote {
border-left: 5px solid #BF2323;
}

.viewer table, .viewer td {
border: 1px solid #BF2323;
}

.viewer th, thead td {
background: #BF2323;
border: 1px solid #BF2323;
color: #fff;
}
.viewer pre {
	border: 1px solid #ccc;
	background: #f5f5f5;
}

.viewer code {
color: #111; background:#f5f5f5;
}

.viewer hr {
border-top: dashed 1px #555;
}

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

.editor textarea {
border: 1px solid #888;
}

h1,h2,h3,h4,h5 { color: #BF2323; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
I do not have any teaching duties currently. I have been a Teachning Assistant for the following courses offered by the [[Bren School ICS|http://www.ics.uci.edu]] in past.
* Spring 2005. Software Tools and Methods (ICS 121)
* Winter 2005. Software Tools and Methods (ICS 121)
* Fall 2004. Requirements Engineering (ICS 102)
* Spring 2004. Software Specification and Quality Engineering (ICS 122)
* Winter 2004. Introduction to Computer Science (ICS 21)
/%
!legal
|Name|TwitterTabs|
|Source|http://www.TiddlyTools.com/#TwitterTabs|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Find recent tweets by keyword or username and show results in tabs|
!end
- - - - - DO NOT EDIT ABOVE THIS LINE - - - - -


- - - - - TABSET SECTION - - - - -
!tabset
<<tabs txtTwitterTabs 'What is new?' 'Updates via Twitter' [[TwitterTabs##shoeseal]] >>
!shoeseal
<<tiddler [[TwitterTabs##showUserResults]] with: shoeseal>>
!end

- - - - - TWEETFORMAT SECTION - - - - -
reminder: %0=image, %1=name, %2=text, %3=timestamp
!tweetformat
@@font-size:8pt;display:block;line-height:110%;margin-top:-10px;
~~''//%3//:''~~ 
%2 {{tagClear{
}}}@@
!end


- - - - - DO NOT EDIT BELOW THIS LINE - - - - -
!info
<<tiddler TwitterTabs##legal>>Usage
<<<
{{{
<<tiddler TwitterTabs>>
}}}
<<<
Configuration
<<<
Copy TwitterTabs into your document. Then, ''edit the tiddler to suit your preferences'' by adding/removing definitions from the ''tabset'' and related sections:<<tiddler TwitterTabs##showcode with: tabset>><<tiddler TwitterTabs##showcode with: tiddlytools>><<tiddler TwitterTabs##showcode with: shoeseal>>You can also customize the appearance of the individual tweets by editing the ''tweetformat'' section, which uses //replacement markers// to insert values extracted from each tweet returned by Twitter's search results, where ''%0=user image, %1=user name, %2=tweet content,'' and ''%3=tweet timestamp''<<tiddler TwitterTabs##showcode with: tweetformat>>The most recently entered 'find... and 'from... search terms are automatically saved as TiddlyWiki cookie-based option values.  You can override these values by placing the following statements into a tiddler tagged with 'systemConfig'.  Each time you reload your document, the default inputs will be reset to these hard-coded values, rather than using the last value entered.
{{{
config.options["txtTweetSearch"]="search text";
config.options["txtTweetUser"]="username";
}}}
!showcode
<<tiddler TwitterTabs##out with: {{'!$1\n'+store.getTiddlerText('TwitterTabs##$1').replace(/\n\}\}\}/g,'\n}\}\}')}}>>
!out
{{{
$1
}}}
!end

!search
<<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch||'TiddlyWiki'}}>>
!user
<<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser||'TiddlyWiki'}}>>
!end

!showSearchForm
{{small smallform{
search for tweets containing: <<option {{config.options.txtTweetSearch='$1';'txtTweetSearch'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showSearchResults]]
	with: {{config.options.txtTweetSearch}}>>@@}}}
!end

!showUserForm
{{small smallform{
show tweets from: <<option {{config.options.txtTweetUser='$1';'txtTweetUser'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showUserResults]]
	with: {{config.options.txtTweetUser}}>>@@}}}
!end

!showSearchResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showSearchResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets about: "$1"|http://search.twitter.com/search?q=$1]]__~~
<hr>@@display:block;height:18em;overflow:auto;<<tiddler {{
	window.twitterPlace=null;
'';}}>><<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='connecting to twitter.com...';
		var s=document.createElement("script");
		s.src="http://search.twitter.com/search.json?q=$1&rpp=25&callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end

!showUserResults
<<tiddler TwitterTabs##callback>>{{toolbar2{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showUserResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;"> [refresh]</a><nowiki></html>  tweets from [[$1|http://twitter.com/$1]]}}} @@display:block;height:8em;overflow:auto; top-margin: -12px;<<tiddler {{
	window.twitterPlace=null;'';}}>> <<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='<small>connecting to twitter.com... click [refresh] above if you do not see feeds</small>';
		var s=document.createElement("script");
		s.src="http://twitter.com/statuses/user_timeline/$1.json?callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}'';}}>>@@
!end

!callback
<<tiddler {{
window.twitterCallback=function(data){ // data object returned from twitter.com
	var fmt=store.getTiddlerText('TwitterTabs##tweetformat');
	if (data.results) data=data.results; // for SEARCH results
	removeChildren(window.twitterPlace);
	for (var i=0; i<data.length; i++) { var item=data[i];
		var img=item.user? item.user.profile_image_url : item.profile_image_url;
		var who=item.user? item.user.screen_name : item.from_user;
		wikify(fmt.format([img,who,item.text,item.created_at]),window.twitterPlace);
	}
}
'';}}>>
!end

%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerBackground':''}}>>/%
%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerTags':''}}>>/%
%/<<tiddler TwitterTabs##tabset>>
Code search engines such as Koders, Google Code Search and Krugle have emerged in the market as new kind of tools developers can use. Despite of the apparent popularity of these search engines (Koders report 30,000 developers use it everyday), little is known about their real usage. In this project I analyzed a year long usage log of Koders to understand the details of how developers are using it. I used statistical analysis on the millions of search and download activities, and applied the Latent Dirichlet Allocation (LDA) topic modeling on the queries recorded in the log, to find answers about how the users were using Koders, and what they were searching for. This work made the following contributions:
* It showed that statistics on general usage such as number of search activities and the days user stay active in the system follow a typical power law distribution. In summary, it indicated that there were very few users that used the system for long and actively.
* Topic modeling results show that users mostly searched for general programming tasks or popular frameworks. Observations on the prevalence of these topics among the users, and on how search and download activities vary across topics, leads to the conclusion that users who found results already knew to a high level of specificity what to look for. One category of topics indicated various forms of queries that developers used (for example use of query operators, natural language phrases, and fully qualified names). 
* An analysis of 150 randomly selected search sessions identified various lexical forms and the kinds of results addressed by the queries users gave to Koders. Queries that find usable results were those where the users provided the names of entities. 
These findings from topic modeling resulted in a paper that I presented at the 6th IEEE conference of Mining Software Repositories (MSR 2009). The paper got the best paper award at the conference. A second publication, an invited paper in the journal of empirical software engineering, is currently under review.

^^[[Back to Research|Research]]^^
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers editTiddler 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 [[DD MMM YYYY]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[DD MMM YYYY]]'></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>
<!--}}}-->
^^© [[sushil bajracharya|About Me]] / [[site options|HaemoSideBarOptions]]^^
<html>

<a href="javascript:;" onclick="setDefaultWidth();" style="background-color: yellow;">resize</a>


</html>