<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>My Two Cents &#187; Software</title>
	<atom:link href="http://my-two-cents.info/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://my-two-cents.info</link>
	<description>A deluge of information</description>
	<lastBuildDate>Sat, 01 Aug 2009 03:20:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SWTBot for Eclipse UI Testing</title>
		<link>http://my-two-cents.info/software/swtbot-for-eclipse-ui-testing/</link>
		<comments>http://my-two-cents.info/software/swtbot-for-eclipse-ui-testing/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 03:20:14 +0000</pubDate>
		<dc:creator>zuma</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://my-two-cents.info/?p=14</guid>
		<description><![CDATA[After reviewing several tools for writing UI tests for Eclipse based products, I finally settled down on SWTBot. Testing UI code is not an easy undertaking, in general. What drove me towards SWTBot was the simplicity in writing tests, and also their ongoing effort in providing support for GEF (Graphical Editing Framework). Not to say [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">After reviewing several tools for writing UI tests for Eclipse based products, I finally settled down on SWTBot. Testing UI code is not an easy undertaking, in general. What drove me towards SWTBot was the simplicity in writing tests, and also their ongoing effort in providing support for GEF (Graphical Editing Framework). Not to say that other tools do not provide nice features. I have heard that Window Tester from Instantiations is also good and provide good support. But SWTBot provided the quick start I needed to get some tests writting for the UI (ofcourse EPL license helps! <img src='http://my-two-cents.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</div>
<p><span id="more-14"></span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SWTBot was not part of the Galileo release train, but you can still use their plugins with Galileo (and that still qualifies my article for the Eclipse Blogathon (http://www.eclipse.org/galileo/blogathon/guidelines.php), I hope!). SWTBot is still an incubation project, and their support for GEF is currently hosted under Google Code. But even at this early stage, SWTBot is quite functional, and shows promise for becoming a robust test tool for Eclipse plugin and RCP developers.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SWTBot is launched similar to how a JUnit Plugin test is launched, except that an SWTBot launch runs in a non-UI thread. SWTBot also provides options to run in a headless mode, and an ant task to integrate for continuous testing. Writing test code with SWTBot is simple enough. The following code snippet opens the Import dialog to import projects into a workspace.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">workbenchBot.menu(&#8220;File&#8221;).menu(&#8220;Import&#8230;&#8221;).click();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">workbenchBot.tree().select(&#8220;General&#8221;).expandNode(&#8220;General&#8221;).select(&#8220;Existing Projects into Workspace&#8221;);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As you can see, the code is very readable and relatively easy to write. SWTBot lacks a Recorder (apparently there is one, but it is not actively maintained). In my opinion, a Recorder is useful only initially to get the hang of things, but once you start writing reusuable test modules, a Recorder loses much of its value. So I do not see it to be a big disadvantage, though having a recorder wouldn&#8217;t hurt.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you are interested in trying out SWTBot, here are some resources to get you started:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SWTBot: http://www.eclipse.org/swtbot/</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Eclipse UI Test Tools Comparison: http://wiki.eclipse.org/Automated_Testing#UI_tests</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SWTBot for GEF: http://code.google.com/p/swtbot4gef/</div>
<p>After reviewing several tools for writing UI tests for Eclipse based products, I finally settled down on <a title="SWTBot" href="http://www.eclipse.org/swtbot/" target="_blank">SWTBot</a>. Even after being a long time Eclipse plugin developer, I always found that I lacked a good tool for testing UI. I kept as much business logic code as possible away from UI code and wrote regular JUnit tests for that. But invariably, I ended up in situations where it made a lot of sense to write UI tests. What drove me towards SWTBot was the simplicity in writing tests, and also their ongoing effort in providing support for GEF (Graphical Editing Framework). Not to say that other tools do not provide nice features. I have heard that Window Tester from Instantiations is also good and provide good support. But SWTBot provided the quick start I needed to get some tests writting for the UI (ofcourse being an Eclipse project, and having an EPL license helps! <img src='http://my-two-cents.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>SWTBot is not part of the Galileo release train, but you can still use their plugins with Galileo (and that still qualifies my article for <a title="Eclipse Blogathon" href="http://www.eclipse.org/galileo/blogathon/guidelines.php" target="_blank">Eclipse Blogathon</a>, I hope!). SWTBot is still an incubation project, and their support for GEF is currently hosted under Google Code. But even at this early stage, SWTBot is quite functional, and shows promise for becoming a robust test tool for Eclipse plugin and RCP developers.</p>
<p>SWTBot is launched similar to how a JUnit Plugin test is launched, except that an SWTBot launch runs in a non-UI thread. SWTBot also provides options to run in a headless mode, and an ant task to integrate for continuous testing. Writing test code with SWTBot is simple enough. The following code snippet opens the Import dialog to import projects into a workspace.</p>
<blockquote><p>workbenchBot.menu(&#8220;File&#8221;).menu(&#8220;Import&#8230;&#8221;).click();</p>
<p>workbenchBot.tree().select(&#8220;General&#8221;).expandNode(&#8220;General&#8221;).select(&#8220;Existing Projects into Workspace&#8221;);</p></blockquote>
<p>As you can see, the code is very readable and relatively easy to write. SWTBot lacks a Recorder (apparently there is one, but it is not actively maintained). In my opinion, a Recorder is useful only initially to get the hang of things, but once you start writing reusuable test modules, a Recorder loses much of its value. So I do not see it to be a big disadvantage, though having a recorder wouldn&#8217;t hurt.</p>
<p>If you are interested in trying out SWTBot, here are some resources to get you started:</p>
<p>SWTBot: http://www.eclipse.org/swtbot/</p>
<p>Eclipse UI Test Tools Comparison: http://wiki.eclipse.org/Automated_Testing#UI_tests</p>
<p>SWTBot for GEF: http://code.google.com/p/swtbot4gef/</p>
]]></content:encoded>
			<wfw:commentRss>http://my-two-cents.info/software/swtbot-for-eclipse-ui-testing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparison of table implementations for Eclipse SWT &#8211; KTable, Eclipse Nebula CompositeTable, and SWT Table</title>
		<link>http://my-two-cents.info/software/java/eclipse/comparison-of-table-implementations-for-eclipse-swt-ktable-eclipse-nebula-compositetable-and-swt-table/</link>
		<comments>http://my-two-cents.info/software/java/eclipse/comparison-of-table-implementations-for-eclipse-swt-ktable-eclipse-nebula-compositetable-and-swt-table/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 22:58:37 +0000</pubDate>
		<dc:creator>zuma</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://my-two-cents.info/software/java/eclipse/comparison-of-table-implementations-for-eclipse-swt-ktable-eclipse-nebula-compositetable-and-swt-table/</guid>
		<description><![CDATA[A comparison of a few table implementations available for Eclipse SWT programming - KTable, Eclipse Nebula CompositeTable and SWT Table.]]></description>
			<content:encoded><![CDATA[<p>The stock table implementation in SWT Table is good enough for the common case; but once your requirements grows complex &#8211; such as the need to resize rows &#8211; it falls short. There are a couple of alternate table implementations worth considering - <a href="http://sourceforge.net/projects/ktable" title="KTable" target="_blank">KTable</a> and <a href="http://www.eclipse.org/nebula/widgets/compositetable/compositetable.php" title="Eclipse Nebula CompositeTable" target="_blank">Eclipse Nebula CompositeTable</a>.<span style="font-weight: bold" class="Apple-style-span"></span><span id="more-13"></span></p>
<h4>KTable</h4>
<p>The main advantage of KTable is that it is custom drawn. In some sense, this is a disadvantage too, since it does not use native SWT drawing techniques. But if you are looking for more control over the table&#8217;s functionality, then KTable might suit your needs. In my case, I needed control over the height of rows, more specifically, adjust the height of rows depending on its content. SWT Table had a Windows-specific issue that prevented individual rows from having different height. Also, once the height of a row is increased in an SWT Table, it can never be decreased. KTable helps overcome all these drawbacks. The latest version of KTable is 2.1.3 released in 2006, but it seems like bugs are still being fixed in CVS and the project is still active.</p>
<h4>Eclipse Nebula CompositeTable</h4>
<p>Nebula is a relatively new entry, but it is an Eclipse subproject, which gives it better visibility, and hopefully, stability. As of this writing, they are clearing out some legal issues; hence the binaries are not available for download, but you can still access the plugins and source code from CVS. Nebula&#8217;s CompositeTable is a custom SWT control which provides the flexibility to add any SWT control inside a cell. It also provides support for JFace Databinding to bind UI with model. The project is still in BETA. There is some discussion on absorbing this into mainstream SWT but it seems unlikely since Nebula does not follow the SWT principals of native drawing.</p>
<p>I have personally selected KTable for my requirements since it provides row resizing options that SWT Table or CompositeTable do not provide. But the jury is out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://my-two-cents.info/software/java/eclipse/comparison-of-table-implementations-for-eclipse-swt-ktable-eclipse-nebula-compositetable-and-swt-table/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mantis Bug Tracker &#8211; Lifecycle of a bug</title>
		<link>http://my-two-cents.info/software/mantis-bug-tracker-lifecycle-of-a-bug/</link>
		<comments>http://my-two-cents.info/software/mantis-bug-tracker-lifecycle-of-a-bug/#comments</comments>
		<pubDate>Sun, 09 Jul 2006 16:04:24 +0000</pubDate>
		<dc:creator>zuma</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://my-two-cents.info/software/mantis-bug-tracker-lifecycle-of-a-bug/</guid>
		<description><![CDATA[Mantis is an efficient bug tracking system probably next only to Bugzilla. But they probably cater to different categories of bug tracking. Whereas Bugzilla suits big projects with numerous users and numerous bugs, Mantis suits smaller projects which does not require the sophistication (and hence the complexity) of Bugzilla. Being a regular user of Mantis, [...]]]></description>
			<content:encoded><![CDATA[<p>Mantis is an efficient bug tracking system probably next only to Bugzilla. But they probably cater to different categories of bug tracking. Whereas Bugzilla suits big projects with numerous users and numerous bugs, Mantis suits smaller projects which does not require the sophistication (and hence the complexity) of Bugzilla.</p>
<p><span id="more-10"></span></p>
<p>Being a regular user of Mantis, I have been acutely aware of the lack of an &#8220;industry practice&#8221; methodology in using the bug tracker. I have made an attempt to explain one such practice on the lifecycle of a bug. There are several other ways to use Mantis including more transition states, but what follows is what I have been using, effectively.</p>
<p style="text-align: center"><a href="http://my-two-cents.info/wp-content/uploads/2006/07/mantis-bug-lifecycle.png" onclick="doPopup(11);return false;" title="Mantis Bug Tracker - Lifecycle of a bug" class="imagelink"></a><a href="http://my-two-cents.info/wp-content/uploads/2006/07/mantis-bug-lifecycle.png" title="Mantis Bug Tracker - Lifecycle of a bug" class="imagelink"><img src="http://my-two-cents.info/wp-content/uploads/2006/07/mantis-bug-lifecycle.thumbnail.png" alt="Mantis Bug Tracker - Lifecycle of a bug" id="image11" /></a></p>
<p>The state transition diagram is self-explanatory. There are four user roles &#8211; reporter, manager, developer, tester. Reporter reports an issue. Manager acknowledges the issue and assigns it to a developer, either as a single step, or in two steps. The bug can also be sent back to the reporter either by the manager or developer requesting for feedback. In such a case, the reporter adds the requested explanation. Once the developer resolves the bug (resolve can mean fixing it, marking it as not-fixable, marking it as not-reproducible or any other scenario). Finally, a tester closes the bug if it has indeed been resolved. If the tester finds the bug to be unresolved, it can be sent back to the developer. A bug can be re-opened after it is closed for several reasons such as, the bug being found to be unresolved after being closed, the bug having been closed as suspended (to be fixed later), etc.</p>
<p>There are several other ways to use bugtracker, by changing the state transitions, or by including new states (such as confirmed). They are useful in larger projects with more users involved.</p>
]]></content:encoded>
			<wfw:commentRss>http://my-two-cents.info/software/mantis-bug-tracker-lifecycle-of-a-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Robocode &#8211; A Java based programming game</title>
		<link>http://my-two-cents.info/software/java/robocode-a-java-based-programming-game/</link>
		<comments>http://my-two-cents.info/software/java/robocode-a-java-based-programming-game/#comments</comments>
		<pubDate>Tue, 04 Jul 2006 04:34:04 +0000</pubDate>
		<dc:creator>zuma</dc:creator>
				<category><![CDATA[Hobbies]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://my-two-cents.info/?p=7</guid>
		<description><![CDATA[Robocode is a very interesting game programming concept that I came across recently. The basic idea is to develop an algorithm for controlling a robot tank that will participate in a battle with other similar robots in a battleground.I got introduced to this through an ACM programming competition in my university. Robocode Simulator The impressive [...]]]></description>
			<content:encoded><![CDATA[<p>Robocode is a very interesting game programming concept that I came across recently. The basic idea is to develop an algorithm for controlling a robot tank that will participate in a battle with other similar robots in a battleground.I got introduced to this through an ACM programming competition in my university.</p>
<p><span id="more-7"></span></p>
<p><a class="imagelink" title="Robocode" href="http://my-two-cents.info/wp-content/uploads/2006/07/robocode.jpg" /></p>
<div style="text-align: center"><a class="imagelink" title="Robocode" href="http://my-two-cents.info/wp-content/uploads/2006/07/robocode.jpg"><img align="middle" id="image8" alt="Robocode" title="Robocode" src="http://my-two-cents.info/wp-content/uploads/2006/07/robocode.jpg" /></a></div>
<p><strong>Robocode Simulator<br />
</strong></p>
<p>The impressive thing about Robocode is that we need not bother about the visual effects. How to draw the robot is not our concern. The Robocode simulator takes care of that. The battle is, I think, based on discrete event simulation.<span style="font-size: 12pt" /></p>
<p><strong>Robot</strong></p>
<p>Now coming to the interesting part. A robot is basically a tank with a body, a gun and a radar. Each component can move by itself, either independantly or relative to the component below (Radar is on top of the gun which is on top of the tank body). We need to define how the robot moves and how it handles different situations. What happens if the robot hits a wall (end of the battle ground)? What happens if the robot is hit by a bullet from another bot? The way each person handles these situations is what differentiates a simple robot from an exceptional one.<br />
I am developing a bot myself (Mercury). It is ready for battle at the amateur level. It fights decently well with the sample bots but fails *miserably* against the pros <img src='http://my-two-cents.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Please contact me if you want to discuss about the algorithm I have used or anything else regarding my bot.<br />
I can rant on and on about what Robocode is all about. But I dont want to duplicate (or give false information!) about the details. I think the wise thing to do here is to give links to some good sites on Robocode. Which is what I have done below. Have Fun!!</p>
<p><strong>Links</strong></p>
<p><a title="Robocode Site" href="http://robocode.sourceforge.net/">Robocode Site</a></p>
<p><a title="Robocode Yahoo Group" href="http://groups.yahoo.com/group/robocode/">Robocode Yahoo Group</a></p>
<p><a title="Robocode Repository" href="http://robocoderepository.com/">Robocode Repository</a></p>
]]></content:encoded>
			<wfw:commentRss>http://my-two-cents.info/software/java/robocode-a-java-based-programming-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF and AJAX</title>
		<link>http://my-two-cents.info/software/java/hello-world/</link>
		<comments>http://my-two-cents.info/software/java/hello-world/#comments</comments>
		<pubDate>Mon, 29 May 2006 00:33:12 +0000</pubDate>
		<dc:creator>zuma</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[JSF is quite receptive to AJAX. MyFaces implementation of the JSF specification supports components that use AJAX. More specifically, Oracle donated a big suite of its JSF components to MyFaces. It is being incorporated into MyFaces and, in some time, it should become an integral part of MyFaces. Once that is complete, MyFaces would have [...]]]></description>
			<content:encoded><![CDATA[<p>JSF is quite receptive to AJAX. MyFaces implementation of the JSF specification supports components that use AJAX. More specifically, Oracle donated a big suite of its JSF components to MyFaces. It is being incorporated into MyFaces and, in some time, it should become an integral part of MyFaces. Once that is complete, MyFaces would have a very strong set of components including many components that use AJAX.</p>
<p><span id="more-1"></span></p>
<p><a target="_blank" title="Oracle - ADF Faces Core" href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/tagdoc/core/imageIndex.html">Oracle &#8211; ADF Faces Core</a></p>
<p><a title="Oracle - ADF Faces HTML" href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/tagdoc/html/index.html">Oracle &#8211; ADF Faces HTML</a></p>
]]></content:encoded>
			<wfw:commentRss>http://my-two-cents.info/software/java/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
