<?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>Ketan&#039;s Musings &#187; technology</title>
	<atom:link href="http://ketan.padegaonkar.name/tag/technology/feed" rel="self" type="application/rss+xml" />
	<link>http://ketan.padegaonkar.name</link>
	<description>Where he blogs about his eclipse musings</description>
	<lastBuildDate>Sat, 26 Feb 2011 18:24:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Reminder: ThoughtWorks Master Class Series 2007 &#8211; Registrations closing&#8230; and fast</title>
		<link>http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html</link>
		<comments>http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html#comments</comments>
		<pubDate>Fri, 18 May 2007 09:14:03 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[master-class-series]]></category>
		<category><![CDATA[ThoughtWorks]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html</guid>
		<description><![CDATA[Sidu has written a good post on why you ought to be attending the ThoughtWorks Master Class Series 2007. Registrations for the Bangalore event have already come to a close down. We&#8217;re already sending invites for the Pune event. There&#8217;s still some invites left for the Pune event, and you can just about make it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://diningtablecoder.blogspot.com/">Sidu</a> has written a <a href="http://diningtablecoder.blogspot.com/2007/05/seminar-on-dsls-evolutionary-testing.html">good post</a> on why you ought to be attending the <a href="http://thoughtworks.co.in">ThoughtWorks</a> <a href="http://twi.co.in">Master Class Series 2007</a>.</p>
<p>Registrations for the Bangalore event have already come to a close down. We&#8217;re already sending invites for the Pune event. There&#8217;s still some invites left for the <a href="http://twi.co.in/registrations/register/?venue=pune">Pune event</a>, and you can just about make it if you <a href="http://twi.co.in/registrations/register/?venue=pune">register quick</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Reminder%3A+ThoughtWorks+Master+Class+Series+2007+-+Registrations+closing...+and+fast&amp;link=http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html&amp;notes=Sidu%20has%20written%20a%20good%20post%20on%20why%20you%20ought%20to%20be%20attending%20the%20ThoughtWorks%20Master%20Class%20Series%202007.%0A%0ARegistrations%20for%20the%20Bangalore%20event%20have%20already%20come%20to%20a%20close%20down.%20We%27re%20already%20sending%20invites%20for%20the%20Pune%20event.%20There%27s%20still%20some%20invites%20left%20for%20the%20Pune%20event%2C%20and%20you%20can%20just%20ab&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Reminder%3A+ThoughtWorks+Master+Class+Series+2007+-+Registrations+closing...+and+fast&amp;link=http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html&amp;notes=Sidu%20has%20written%20a%20good%20post%20on%20why%20you%20ought%20to%20be%20attending%20the%20ThoughtWorks%20Master%20Class%20Series%202007.%0A%0ARegistrations%20for%20the%20Bangalore%20event%20have%20already%20come%20to%20a%20close%20down.%20We%27re%20already%20sending%20invites%20for%20the%20Pune%20event.%20There%27s%20still%20some%20invites%20left%20for%20the%20Pune%20event%2C%20and%20you%20can%20just%20ab&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Reminder%3A+ThoughtWorks+Master+Class+Series+2007+-+Registrations+closing...+and+fast&amp;link=http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html&amp;notes=Sidu%20has%20written%20a%20good%20post%20on%20why%20you%20ought%20to%20be%20attending%20the%20ThoughtWorks%20Master%20Class%20Series%202007.%0A%0ARegistrations%20for%20the%20Bangalore%20event%20have%20already%20come%20to%20a%20close%20down.%20We%27re%20already%20sending%20invites%20for%20the%20Pune%20event.%20There%27s%20still%20some%20invites%20left%20for%20the%20Pune%20event%2C%20and%20you%20can%20just%20ab&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Reminder%3A+ThoughtWorks+Master+Class+Series+2007+-+Registrations+closing...+and+fast&amp;link=http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html&amp;notes=Sidu%20has%20written%20a%20good%20post%20on%20why%20you%20ought%20to%20be%20attending%20the%20ThoughtWorks%20Master%20Class%20Series%202007.%0A%0ARegistrations%20for%20the%20Bangalore%20event%20have%20already%20come%20to%20a%20close%20down.%20We%27re%20already%20sending%20invites%20for%20the%20Pune%20event.%20There%27s%20still%20some%20invites%20left%20for%20the%20Pune%20event%2C%20and%20you%20can%20just%20ab&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Reminder%3A+ThoughtWorks+Master+Class+Series+2007+-+Registrations+closing...+and+fast&amp;link=http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html&amp;notes=Sidu%20has%20written%20a%20good%20post%20on%20why%20you%20ought%20to%20be%20attending%20the%20ThoughtWorks%20Master%20Class%20Series%202007.%0A%0ARegistrations%20for%20the%20Bangalore%20event%20have%20already%20come%20to%20a%20close%20down.%20We%27re%20already%20sending%20invites%20for%20the%20Pune%20event.%20There%27s%20still%20some%20invites%20left%20for%20the%20Pune%20event%2C%20and%20you%20can%20just%20ab&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/05/18/reminder-thoughtworks-master-class-series-2007-registrations-closing-and-fast.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Composite Logger for Ant</title>
		<link>http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html</link>
		<comments>http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html#comments</comments>
		<pubDate>Wed, 04 Apr 2007 13:54:36 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[experiences]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[logging]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html</guid>
		<description><![CDATA[When doing long builds in CruiseControl, ant build logs are generally logged using the XmlLogger. In certain cases, say for example when the build is taking longer than usual, and needs to be killed/stopped, the XmlLogger does not flush contents to disk. It would be nice if there is some sort of a composite logger [...]]]></description>
			<content:encoded><![CDATA[<p>When doing long builds in CruiseControl, ant build logs are generally logged using the XmlLogger.</p>
<p>In certain cases, say for example when the build is taking longer than usual, and needs to be killed/stopped, the XmlLogger does not flush contents to disk.</p>
<p>It would be nice if there is some sort of a composite logger than can chain any logger along with the XmlLogger.</p>
<p>I just happened to write one sometime today. This is the source code for a CompositeLogger that logs to a default logger, and the XmlLogger. This needs the environment variable ANT_LOG_PREFIX to be set (there&#8217;s no better way I can think of)</p>
<pre>
package com.thoughtworks.ant.logger;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;

import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildLogger;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.XmlLogger;

/**
 * @author Ketan Padegaonkar
 */
public class CompositeAntLogger implements BuildLogger {

        private ArrayList       loggers;
        private String          logPrefix;
        private PrintStream     out;

        public CompositeAntLogger() {
                checkLogPrefix();
                createLoggers();
        }

        public void setEmacsMode(boolean emacsMode) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.setEmacsMode(emacsMode);
                }
        }

        public void buildFinished(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.buildFinished(event);
                }
        }

        public void buildStarted(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.buildStarted(event);
                }
        }

        public void messageLogged(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.messageLogged(event);
                }

        }

        public void targetFinished(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.targetFinished(event);
                }
        }

        public void targetStarted(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.targetStarted(event);
                }
        }

        public void taskFinished(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.taskFinished(event);
                }
        }

        public void taskStarted(BuildEvent event) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.taskStarted(event);
                }
        }

        public void setMessageOutputLevel(int level) {
                for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
                        BuildLogger logger = (BuildLogger) iterator.next();
                        logger.setMessageOutputLevel(level);
                }
        }

        public void setOutputPrintStream(PrintStream output) {
                // do nothing
        }

        public void setErrorPrintStream(PrintStream err) {
                // do nothing
        }

        private void createLoggers() {
                loggers = new ArrayList();
                try {
                        loggers.add(createDefaultLogger());
                        loggers.add(createXmlLogger());
                } catch (FileNotFoundException e) {
                        throw new BuildException("The loggers could not open the file", e);
                }
        }

        private void checkLogPrefix() {
                logPrefix = System.getenv("ANT_LOG_PREFIX");
                if (logPrefix == null || logPrefix.trim().length() == 0)
                        throw new BuildException("You need to set the environment variable ANT_LOG_PREFIX.");
        }

        private DefaultLogger createDefaultLogger() throws FileNotFoundException {
                DefaultLogger logger = new DefaultLogger();
                out = new PrintStream(new FileOutputStream(logPrefix + ".txt"));
                logger.setOutputPrintStream(out);
                logger.setErrorPrintStream(out);
                return logger;
        }

        private XmlLogger createXmlLogger() throws FileNotFoundException {
                XmlLogger logger = new XmlLogger();
                out = new PrintStream(new FileOutputStream(logPrefix + ".xml"));
                logger.setOutputPrintStream(out);
                logger.setErrorPrintStream(out);
                return logger;
        }
}
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Composite+Logger+for+Ant&amp;link=http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html&amp;notes=When%20doing%20long%20builds%20in%20CruiseControl%2C%20ant%20build%20logs%20are%20generally%20logged%20using%20the%20XmlLogger.%0A%0AIn%20certain%20cases%2C%20say%20for%20example%20when%20the%20build%20is%20taking%20longer%20than%20usual%2C%20and%20needs%20to%20be%20killed%2Fstopped%2C%20the%20XmlLogger%20does%20not%20flush%20contents%20to%20disk.%0A%0AIt%20would%20be%20nice%20if%20there%20is%20some%20sort%20of%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Composite+Logger+for+Ant&amp;link=http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html&amp;notes=When%20doing%20long%20builds%20in%20CruiseControl%2C%20ant%20build%20logs%20are%20generally%20logged%20using%20the%20XmlLogger.%0A%0AIn%20certain%20cases%2C%20say%20for%20example%20when%20the%20build%20is%20taking%20longer%20than%20usual%2C%20and%20needs%20to%20be%20killed%2Fstopped%2C%20the%20XmlLogger%20does%20not%20flush%20contents%20to%20disk.%0A%0AIt%20would%20be%20nice%20if%20there%20is%20some%20sort%20of%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Composite+Logger+for+Ant&amp;link=http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html&amp;notes=When%20doing%20long%20builds%20in%20CruiseControl%2C%20ant%20build%20logs%20are%20generally%20logged%20using%20the%20XmlLogger.%0A%0AIn%20certain%20cases%2C%20say%20for%20example%20when%20the%20build%20is%20taking%20longer%20than%20usual%2C%20and%20needs%20to%20be%20killed%2Fstopped%2C%20the%20XmlLogger%20does%20not%20flush%20contents%20to%20disk.%0A%0AIt%20would%20be%20nice%20if%20there%20is%20some%20sort%20of%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Composite+Logger+for+Ant&amp;link=http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html&amp;notes=When%20doing%20long%20builds%20in%20CruiseControl%2C%20ant%20build%20logs%20are%20generally%20logged%20using%20the%20XmlLogger.%0A%0AIn%20certain%20cases%2C%20say%20for%20example%20when%20the%20build%20is%20taking%20longer%20than%20usual%2C%20and%20needs%20to%20be%20killed%2Fstopped%2C%20the%20XmlLogger%20does%20not%20flush%20contents%20to%20disk.%0A%0AIt%20would%20be%20nice%20if%20there%20is%20some%20sort%20of%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Composite+Logger+for+Ant&amp;link=http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html&amp;notes=When%20doing%20long%20builds%20in%20CruiseControl%2C%20ant%20build%20logs%20are%20generally%20logged%20using%20the%20XmlLogger.%0A%0AIn%20certain%20cases%2C%20say%20for%20example%20when%20the%20build%20is%20taking%20longer%20than%20usual%2C%20and%20needs%20to%20be%20killed%2Fstopped%2C%20the%20XmlLogger%20does%20not%20flush%20contents%20to%20disk.%0A%0AIt%20would%20be%20nice%20if%20there%20is%20some%20sort%20of%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/04/04/composite-logger-for-ant.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CruiseControl.rb is out</title>
		<link>http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html</link>
		<comments>http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html#comments</comments>
		<pubDate>Tue, 13 Mar 2007 15:03:36 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cruisecontrol]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ThoughtWorks]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html</guid>
		<description><![CDATA[ThoughtWorks today announced a Continuous Integration tool, CruiseControl.rb. CruiseControl.rb is the Ruby version of CruiseControl, called CruiseControl.rb The motto of CC.rb reads: easy to install, pleasant to use and simple to hack What kind of good stuff does that mean? download and get building in 5-10 minutes (maybe 15 if you stop to read the [...]]]></description>
			<content:encoded><![CDATA[<p>ThoughtWorks today announced a <a href="http://www.martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> tool, CruiseControl.rb. CruiseControl.rb is the Ruby version of <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a>, called <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a></p>
<p>The motto of CC.rb reads:</p>
<blockquote><p>easy to install, pleasant to use and simple to hack</p></blockquote>
<p>What kind of good stuff does that mean?</p>
<ul>
<li>download and get building in 5-10 minutes (maybe 15 if you stop to read the manual) </li>
<li>little to no configuration (seriously, just tell it your svn url) </li>
<li>works for ruby, java, dotnet &#8230; anything that you can invoke from the command line </li>
<li>aesthetic beauty (not bad for a build tool)</li>
</ul>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=CruiseControl.rb+is+out&amp;link=http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html&amp;notes=ThoughtWorks%20today%20announced%20a%20Continuous%20Integration%20tool%2C%20CruiseControl.rb.%20CruiseControl.rb%20is%20the%20Ruby%20version%20of%20CruiseControl%2C%20called%20CruiseControl.rb%0A%0AThe%20motto%20of%20CC.rb%20reads%3A%0Aeasy%20to%20install%2C%20pleasant%20to%20use%20and%20simple%20to%20hack%0A%0AWhat%20kind%20of%20good%20stuff%20does%20that%20mean%3F%0A%0A%09download%20and%20get%20buil&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=CruiseControl.rb+is+out&amp;link=http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html&amp;notes=ThoughtWorks%20today%20announced%20a%20Continuous%20Integration%20tool%2C%20CruiseControl.rb.%20CruiseControl.rb%20is%20the%20Ruby%20version%20of%20CruiseControl%2C%20called%20CruiseControl.rb%0A%0AThe%20motto%20of%20CC.rb%20reads%3A%0Aeasy%20to%20install%2C%20pleasant%20to%20use%20and%20simple%20to%20hack%0A%0AWhat%20kind%20of%20good%20stuff%20does%20that%20mean%3F%0A%0A%09download%20and%20get%20buil&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=CruiseControl.rb+is+out&amp;link=http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html&amp;notes=ThoughtWorks%20today%20announced%20a%20Continuous%20Integration%20tool%2C%20CruiseControl.rb.%20CruiseControl.rb%20is%20the%20Ruby%20version%20of%20CruiseControl%2C%20called%20CruiseControl.rb%0A%0AThe%20motto%20of%20CC.rb%20reads%3A%0Aeasy%20to%20install%2C%20pleasant%20to%20use%20and%20simple%20to%20hack%0A%0AWhat%20kind%20of%20good%20stuff%20does%20that%20mean%3F%0A%0A%09download%20and%20get%20buil&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=CruiseControl.rb+is+out&amp;link=http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html&amp;notes=ThoughtWorks%20today%20announced%20a%20Continuous%20Integration%20tool%2C%20CruiseControl.rb.%20CruiseControl.rb%20is%20the%20Ruby%20version%20of%20CruiseControl%2C%20called%20CruiseControl.rb%0A%0AThe%20motto%20of%20CC.rb%20reads%3A%0Aeasy%20to%20install%2C%20pleasant%20to%20use%20and%20simple%20to%20hack%0A%0AWhat%20kind%20of%20good%20stuff%20does%20that%20mean%3F%0A%0A%09download%20and%20get%20buil&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=CruiseControl.rb+is+out&amp;link=http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html&amp;notes=ThoughtWorks%20today%20announced%20a%20Continuous%20Integration%20tool%2C%20CruiseControl.rb.%20CruiseControl.rb%20is%20the%20Ruby%20version%20of%20CruiseControl%2C%20called%20CruiseControl.rb%0A%0AThe%20motto%20of%20CC.rb%20reads%3A%0Aeasy%20to%20install%2C%20pleasant%20to%20use%20and%20simple%20to%20hack%0A%0AWhat%20kind%20of%20good%20stuff%20does%20that%20mean%3F%0A%0A%09download%20and%20get%20buil&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/03/13/cruisecontrolrb-is-out.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVNAnt: Using ant with SVN</title>
		<link>http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html</link>
		<comments>http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html#comments</comments>
		<pubDate>Tue, 13 Mar 2007 14:40:47 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[experiences]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[SVNAnt]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html</guid>
		<description><![CDATA[While working on some ant build scripts today. A lot of custom batch files that were being exec&#8217;ed from within ant builds; batch files that would perform svn updates, reverts and commits, among other svn actions. A good alternative would be to use SVNAnt (some snippets follow): &#60;svn&#62; &#60;delete&#62; &#60;fileset dir="workingcopy/deleteTest"&#62; &#60;include name="**/*.del"/&#62; &#60;/fileset&#62; &#60;/delete&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>While working on some ant build scripts today. A lot of custom batch files that were being exec&#8217;ed from within ant builds; batch files that would perform svn updates, reverts and commits, among other svn actions.</p>
<p>A good alternative would be to use <a href="http://subclipse.tigris.org/svnant/">SVNAnt</a> (some snippets follow):</p>
<pre>
&lt;svn&gt;
  &lt;delete&gt;
    &lt;fileset dir="workingcopy/deleteTest"&gt;
      &lt;include name="**/*.del"/&gt;
    &lt;/fileset&gt;
  &lt;/delete&gt;
  &lt;commit message="commit deleted files"
       dir="workingcopy/deleteTest"/&gt;
&lt;/svn&gt;
</pre>
<pre>
&lt;svn&gt;
  &lt;update dir="dir/to/update/" recurse="true" /&gt;
&lt;/svn&gt;
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=SVNAnt%3A+Using+ant+with+SVN&amp;link=http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html&amp;notes=While%20working%20on%20some%20ant%20build%20scripts%20today.%20A%20lot%20of%20custom%20batch%20files%20that%20were%20being%20exec%27ed%20from%20within%20ant%20builds%3B%20batch%20files%20that%20would%20perform%20svn%20updates%2C%20reverts%20and%20commits%2C%20among%20other%20svn%20actions.%0A%0AA%20good%20alternative%20would%20be%20to%20use%20SVNAnt%20%28some%20snippets%20follow%29%3A%0A%0A%0A%26lt%3Bsvn%26gt%3B%0A%20%20%26lt%3B&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=SVNAnt%3A+Using+ant+with+SVN&amp;link=http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html&amp;notes=While%20working%20on%20some%20ant%20build%20scripts%20today.%20A%20lot%20of%20custom%20batch%20files%20that%20were%20being%20exec%27ed%20from%20within%20ant%20builds%3B%20batch%20files%20that%20would%20perform%20svn%20updates%2C%20reverts%20and%20commits%2C%20among%20other%20svn%20actions.%0A%0AA%20good%20alternative%20would%20be%20to%20use%20SVNAnt%20%28some%20snippets%20follow%29%3A%0A%0A%0A%26lt%3Bsvn%26gt%3B%0A%20%20%26lt%3B&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=SVNAnt%3A+Using+ant+with+SVN&amp;link=http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html&amp;notes=While%20working%20on%20some%20ant%20build%20scripts%20today.%20A%20lot%20of%20custom%20batch%20files%20that%20were%20being%20exec%27ed%20from%20within%20ant%20builds%3B%20batch%20files%20that%20would%20perform%20svn%20updates%2C%20reverts%20and%20commits%2C%20among%20other%20svn%20actions.%0A%0AA%20good%20alternative%20would%20be%20to%20use%20SVNAnt%20%28some%20snippets%20follow%29%3A%0A%0A%0A%26lt%3Bsvn%26gt%3B%0A%20%20%26lt%3B&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=SVNAnt%3A+Using+ant+with+SVN&amp;link=http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html&amp;notes=While%20working%20on%20some%20ant%20build%20scripts%20today.%20A%20lot%20of%20custom%20batch%20files%20that%20were%20being%20exec%27ed%20from%20within%20ant%20builds%3B%20batch%20files%20that%20would%20perform%20svn%20updates%2C%20reverts%20and%20commits%2C%20among%20other%20svn%20actions.%0A%0AA%20good%20alternative%20would%20be%20to%20use%20SVNAnt%20%28some%20snippets%20follow%29%3A%0A%0A%0A%26lt%3Bsvn%26gt%3B%0A%20%20%26lt%3B&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=SVNAnt%3A+Using+ant+with+SVN&amp;link=http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html&amp;notes=While%20working%20on%20some%20ant%20build%20scripts%20today.%20A%20lot%20of%20custom%20batch%20files%20that%20were%20being%20exec%27ed%20from%20within%20ant%20builds%3B%20batch%20files%20that%20would%20perform%20svn%20updates%2C%20reverts%20and%20commits%2C%20among%20other%20svn%20actions.%0A%0AA%20good%20alternative%20would%20be%20to%20use%20SVNAnt%20%28some%20snippets%20follow%29%3A%0A%0A%0A%26lt%3Bsvn%26gt%3B%0A%20%20%26lt%3B&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/03/13/svnant-using-ant-with-svn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overriding equals and hashCode in Eclipse</title>
		<link>http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html</link>
		<comments>http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html#comments</comments>
		<pubDate>Thu, 01 Mar 2007 14:15:57 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[experiences]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse-3.html</guid>
		<description><![CDATA[Most colleagues use IntelliJ Idea as their favorite Java IDE. I&#8217;m an Eclipse plugin developer, and Eclipse happens to be my favorite Development platform of choice. A lot more that just once, I&#8217;ve seen peers curse Eclipse for the lack of keyboard support, lack of refactoring, lack of functionality, lack of blah, blah, blah&#8230; Let [...]]]></description>
			<content:encoded><![CDATA[<p>Most colleagues use IntelliJ Idea as their favorite Java IDE. I&#8217;m an Eclipse plugin developer, and Eclipse happens to be my favorite Development platform of choice.</p>
<p>A lot more that just once, I&#8217;ve seen peers curse Eclipse for the lack of keyboard support, lack of refactoring, lack of functionality, lack of blah, blah, blah&#8230;</p>
<p>Let me address some of these issues:<br />
<span id="more-144"></span></p>
<h4>Lack of Keyboard Support</h4>
<p>Most IntelliJ idea users I&#8217;ve seen <i>never</i> touch the mouse. They can do most development using the keyboard: navigating, refactoring, writing code. It is amazing how good IntelliJ is at increasing productivity.</p>
<p>That said, Eclipse is definitely something that can be compared to IntelliJ on this front. Eclipse supports emacs keybindings, and I&#8217;ve seen people use emacs keybindings to do all the things that I&#8217;ve mentioned above.</p>
<p>It&#8217;s merely a matter of learning new keybindings, or configuring existing ones to suit their needs.</p>
<h4>Lack of Refactoring Support</h4>
<p>The refactoring support in Eclipse is as good as that on IntelliJ. Most folks have not used (much of) Eclipse and I feel that this particular point holds no relevance.</p>
<h4>Lack of Functionality</h4>
<p>Part of this blame also goes to me. There&#8217;s a whole lot of functionality that is available, that I&#8217;ve myself never used. I&#8217;m unable to point out out some functionality that exists in IntelliJ, but is not &#8220;easily&#8221; seen on Eclipse <img src='http://ketan.padegaonkar.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A point in case is being able to override equals() and hashCode(). During a training session this morning, we had to create a class that overrides equals() and hashCode(). I&#8217;d almost never had to write these, so I began the tremendous task of hand coding these methods. Later I decided to write an eclipse plugin <img src='http://ketan.padegaonkar.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Later in the evening, I realized that this feature already existed <img src='http://ketan.padegaonkar.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href='http://ketan.padegaonkar.name/files/2007/03/overrideequalsandhashcode.png' title='OverrideEqualsAndHashCode'><img src='http://ketan.padegaonkar.name/files/2007/03/overrideequalsandhashcode.png' alt='OverrideEqualsAndHashCode' /></a></p>
<p><a href='http://ketan.padegaonkar.name/files/2007/03/overrideequalsandhashcode-dialog.png' title='OverrideEqualsAndHashCode-dialog'><img src='http://ketan.padegaonkar.name/files/2007/03/overrideequalsandhashcode-dialog.png' alt='OverrideEqualsAndHashCode-dialog' /></a></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Overriding+equals+and+hashCode+in+Eclipse&amp;link=http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html&amp;notes=Most%20colleagues%20use%20IntelliJ%20Idea%20as%20their%20favorite%20Java%20IDE.%20I%27m%20an%20Eclipse%20plugin%20developer%2C%20and%20Eclipse%20happens%20to%20be%20my%20favorite%20Development%20platform%20of%20choice.%0A%0AA%20lot%20more%20that%20just%20once%2C%20I%27ve%20seen%20peers%20curse%20Eclipse%20for%20the%20lack%20of%20keyboard%20support%2C%20lack%20of%20refactoring%2C%20lack%20of%20functionality%2C&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Overriding+equals+and+hashCode+in+Eclipse&amp;link=http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html&amp;notes=Most%20colleagues%20use%20IntelliJ%20Idea%20as%20their%20favorite%20Java%20IDE.%20I%27m%20an%20Eclipse%20plugin%20developer%2C%20and%20Eclipse%20happens%20to%20be%20my%20favorite%20Development%20platform%20of%20choice.%0A%0AA%20lot%20more%20that%20just%20once%2C%20I%27ve%20seen%20peers%20curse%20Eclipse%20for%20the%20lack%20of%20keyboard%20support%2C%20lack%20of%20refactoring%2C%20lack%20of%20functionality%2C&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Overriding+equals+and+hashCode+in+Eclipse&amp;link=http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html&amp;notes=Most%20colleagues%20use%20IntelliJ%20Idea%20as%20their%20favorite%20Java%20IDE.%20I%27m%20an%20Eclipse%20plugin%20developer%2C%20and%20Eclipse%20happens%20to%20be%20my%20favorite%20Development%20platform%20of%20choice.%0A%0AA%20lot%20more%20that%20just%20once%2C%20I%27ve%20seen%20peers%20curse%20Eclipse%20for%20the%20lack%20of%20keyboard%20support%2C%20lack%20of%20refactoring%2C%20lack%20of%20functionality%2C&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Overriding+equals+and+hashCode+in+Eclipse&amp;link=http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html&amp;notes=Most%20colleagues%20use%20IntelliJ%20Idea%20as%20their%20favorite%20Java%20IDE.%20I%27m%20an%20Eclipse%20plugin%20developer%2C%20and%20Eclipse%20happens%20to%20be%20my%20favorite%20Development%20platform%20of%20choice.%0A%0AA%20lot%20more%20that%20just%20once%2C%20I%27ve%20seen%20peers%20curse%20Eclipse%20for%20the%20lack%20of%20keyboard%20support%2C%20lack%20of%20refactoring%2C%20lack%20of%20functionality%2C&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Overriding+equals+and+hashCode+in+Eclipse&amp;link=http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html&amp;notes=Most%20colleagues%20use%20IntelliJ%20Idea%20as%20their%20favorite%20Java%20IDE.%20I%27m%20an%20Eclipse%20plugin%20developer%2C%20and%20Eclipse%20happens%20to%20be%20my%20favorite%20Development%20platform%20of%20choice.%0A%0AA%20lot%20more%20that%20just%20once%2C%20I%27ve%20seen%20peers%20curse%20Eclipse%20for%20the%20lack%20of%20keyboard%20support%2C%20lack%20of%20refactoring%2C%20lack%20of%20functionality%2C&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/03/01/overriding-equals-and-hashcode-in-eclipse.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How would you clean this up ?</title>
		<link>http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html</link>
		<comments>http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html#comments</comments>
		<pubDate>Wed, 14 Feb 2007 07:44:45 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[experiences]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Object-Oriented]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html</guid>
		<description><![CDATA[This was an interesting piece of code from a long time mentor and friend. He&#8217;s just started to learn Java some time ago, and has written this program to demonstrate how to draw an Ellipse. He&#8217;s about 60 years of age. Has been a long time Turbo C-2.0 programmer. Mostly he develops small graphics programs [...]]]></description>
			<content:encoded><![CDATA[<p>This was an interesting piece of code from a long time mentor and friend. He&#8217;s just started to learn Java some time ago, and has written this program to demonstrate how to draw an <a href="http://en.wikipedia.org/wiki/Ellipse">Ellipse</a>.</p>
<p>He&#8217;s about 60 years of age. Has been a long time Turbo C-2.0 programmer. Mostly he develops small graphics programs to demonstrate some engineering drawing and mechanics concepts.</p>
<pre>
<font color="#a020f0">import</font> java.awt.*; <font color="#0000ff">// Requisite files od JAVA</font>
<font color="#a020f0">import</font> java.awt.event.*;
<font color="#0000ff">//import java.awt.geom.*;</font>
<font color="#a020f0">import</font> javax.swing.*;
<font color="#0000ff">//import java.math.*;</font>
<font color="#0000ff">//import java.util.*;</font>
  <font color="#0000ff">//Projest name and the following class name should be same</font>
<font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>class</b></font> leenaTrial1 <font color="#2e8b57"><b>extends</b></font> JFrame {
        JFrame frame = <font color="#804040"><b>new</b></font> JFrame(<font color="#ff00ff">&quot;Applet&quot;</font>);
        JPanel drawingArea = <font color="#804040"><b>new</b></font> JPanel(); <font color="#0000ff">// Drawing Area is named</font>
        JButton b1; <font color="#0000ff">// Defines action Button</font>
        <font color="#2e8b57"><b>int</b></font> mouse_i = <font color="#ff00ff">1</font>;  <font color="#0000ff">// Counter for action</font>

        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> run() {
                frame.setSize(<font color="#ff00ff">1000</font>, <font color="#ff00ff">500</font>); <font color="#0000ff">// Frame size is defined</font>
                <font color="#2e8b57"><b>final</b></font> Container content = getContentPane();
                content.setBackground(Color.lightGray);
                <font color="#0000ff">// color of frame or container is defined</font>
                content.setLayout(<font color="#804040"><b>new</b></font> FlowLayout());

                drawingArea.setPreferredSize(<font color="#804040"><b>new</b></font> Dimension(<font color="#ff00ff">750</font>, <font color="#ff00ff">700</font>));
                <font color="#0000ff">// Size of draw area is defined &amp; color in the next line</font>

                drawingArea.setBackground(Color.black);
                content.add(drawingArea);
                b1 = <font color="#804040"><b>new</b></font> JButton(<font color="#ff00ff">&quot;Next Step&quot;</font>); <font color="#0000ff">// b1 is button for the next step</font>
                content.add(b1);

                b1.addActionListener(<font color="#804040"><b>new</b></font> ActionListener() {
                <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> actionPerformed(ActionEvent event) {
                        Graphics g = drawingArea.getGraphics();
                        Font font20 =<font color="#804040"><b>new</b></font> Font(<font color="#ff00ff">&quot;TimesRoman&quot;</font>,Font.PLAIN,<font color="#ff00ff">20</font>);
                        Font f0nt14=<font color="#804040"><b>new</b></font> Font(<font color="#ff00ff">&quot;TimesRoman&quot;</font>,Font.PLAIN,<font color="#ff00ff">14</font>);
                        g.setFont(font20);
                        <font color="#2e8b57"><b>int</b></font> r1 = <font color="#ff00ff">250</font>, r2 = <font color="#ff00ff">150</font>, x0 = <font color="#ff00ff">375</font>, y0 = <font color="#ff00ff">415</font>;
                        <font color="#0000ff">// r1, r2 semi-major &amp; semi-minor axex, x0,y0 center of circles</font>
                        <font color="#2e8b57"><b>double</b></font> inc = <font color="#ff00ff">0.005</font>; <font color="#0000ff">// increment </font>
                        <font color="#2e8b57"><b>int</b></font> x1, y1, x2, y2; <font color="#0000ff">// Two ends of a line</font>

                        <font color="#0000ff">// inner circle in </font>
                        <font color="#804040"><b>if</b></font>(mouse_i == <font color="#ff00ff">1</font>) {
                                g.setColor(Color.white);
                                <font color="#0000ff">//g.drawOval(w, w, x, y);           // top, left, width, height</font>
                                g.drawString(<font color="#ff00ff">&quot;Step 1: Draw inner circle with the radius equal to semi-minor axis of the ellipse.&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">20</font>);
                                ovalByPixels(x0,y0,r2,r2,<font color="#ff00ff">1</font>,Color.blue);
                     }

                        <font color="#0000ff">// outer circle</font>
                         <font color="#804040"><b>if</b></font>(mouse_i == <font color="#ff00ff">2</font>) {
                                g.setColor(Color.white);
                                g.drawString(<font color="#ff00ff">&quot;Step 2: Draw outer circle with the radius equal to semi-major axis of the ellipse.&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">35</font>);
                                ovalByPixels(x0,y0,r1,r1,<font color="#ff00ff">1</font>,Color.red); <font color="#0000ff">// Color spesified by name</font>
                        }

                        <font color="#0000ff">// twelve lines</font>
                         <font color="#804040"><b>if</b></font>(mouse_i == <font color="#ff00ff">3</font>) {
                                g.setColor(Color.white);
                                g.drawString(<font color="#ff00ff">&quot;Step 3: Divide the circles in twelve parts.&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">50</font>);
                                <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> k = <font color="#ff00ff">0</font>; k &lt; <font color="#ff00ff">6</font>; k++) {
                                        <font color="#2e8b57"><b>double</b></font> cos = Math.cos(k*<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>);
                                        <font color="#2e8b57"><b>double</b></font> sin = Math.sin(k*<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>);
                                        <font color="#2e8b57"><b>double</b></font> f1 = <font color="#ff00ff">1.06</font> ; <font color="#0000ff">// numbers are printed out side of larger circle</font>
                                        <font color="#2e8b57"><b>double</b></font> f2 = <font color="#ff00ff">0.9</font> ; <font color="#0000ff">// numbers are printed in side of smaller circle</font>
                                        x1 = x0 + (<font color="#2e8b57"><b>int</b></font>)(r1*cos); <font color="#0000ff">// x1,y1 are on outer circle on one end of diameter</font>
                                        y1 = y0 - (<font color="#2e8b57"><b>int</b></font>)(r1*sin);
                                        x2 = x0 - (<font color="#2e8b57"><b>int</b></font>)(r1*cos); <font color="#0000ff">// x2,y2 are on outer circle at other end of diameter</font>
                                        y2 = y0 + (<font color="#2e8b57"><b>int</b></font>)(r1*sin);
                                        lineByPixels(x1, y1, x2, y2,<font color="#ff00ff">5</font>,<font color="#804040"><b>new</b></font> Color(<font color="#ff00ff">255</font>,<font color="#ff00ff">100</font>,<font color="#ff00ff">100</font>)); <font color="#0000ff">// 5 is delay value</font>
                                        <font color="#0000ff">// Color spesified by values of three colors</font>
                                        g.drawString(<font color="#ff00ff">&quot;a&quot;</font> + Integer.toString(k+<font color="#ff00ff">1</font>),  x0-<font color="#ff00ff">10</font>+ (<font color="#2e8b57"><b>int</b></font>)(f1*r1*cos), y0+<font color="#ff00ff">10</font> - (<font color="#2e8b57"><b>int</b></font>)(f1*r1*sin));
                                        g.drawString(<font color="#ff00ff">&quot;a&quot;</font> + Integer.toString(k+<font color="#ff00ff">7</font>),  x0-<font color="#ff00ff">10</font> - (<font color="#2e8b57"><b>int</b></font>)(f1*r1*cos), y0+<font color="#ff00ff">10</font> + (<font color="#2e8b57"><b>int</b></font>)(f1*r1*sin));
                                        g.drawString(<font color="#ff00ff">&quot;b&quot;</font> + Integer.toString(k+<font color="#ff00ff">1</font>),  x0 -<font color="#ff00ff">10</font>+ (<font color="#2e8b57"><b>int</b></font>)(f2*r2*cos), y0+<font color="#ff00ff">10</font> - (<font color="#2e8b57"><b>int</b></font>)(f2*r2*sin));
                                        g.drawString(<font color="#ff00ff">&quot;b&quot;</font> + Integer.toString(k+<font color="#ff00ff">7</font>),  x0 -<font color="#ff00ff">10</font>- (<font color="#2e8b57"><b>int</b></font>)(f2*r2*cos), y0+<font color="#ff00ff">10</font> + (<font color="#2e8b57"><b>int</b></font>)(f2*r2*sin));
                                        delay(<font color="#ff00ff">500</font>);        <font color="#0000ff">// call delay function         </font>
                                }
                        }

                         <font color="#804040"><b>if</b></font>(mouse_i == <font color="#ff00ff">4</font>) { <font color="#0000ff">// Step 4     * * * * * * * * * * *</font>
                                g.setColor(Color.white);
                                g.drawString(<font color="#ff00ff">&quot;Step 4: From inner circle points, draw horizontal lines and from corresponding points &quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">70</font>);
                                g.drawString(<font color="#ff00ff">&quot;         on the outer circle, draw vertical lines. Cutting points are points on Ellipse.&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">85</font>);
                                Color cr = <font color="#804040"><b>new</b></font> Color(<font color="#ff00ff">255</font>,<font color="#ff00ff">200</font>,<font color="#ff00ff">100</font>);
                                <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> k = <font color="#ff00ff">0</font>; k &lt;= <font color="#ff00ff">11</font>; k++) {
                                        <font color="#0000ff">//int x1,x2,y1,y2;</font>
                                        x1 = x0 + (<font color="#2e8b57"><b>int</b></font>)(r1*Math.cos((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k)); <font color="#0000ff">// point on outer circle</font>
                                        y1 = y0 - (<font color="#2e8b57"><b>int</b></font>)(r1*Math.sin((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k));
                                        x2 = x0 + (<font color="#2e8b57"><b>int</b></font>)(r2*Math.cos((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k)); <font color="#0000ff">//points on inner circle</font>
                                        y2 = y0 - (<font color="#2e8b57"><b>int</b></font>)(r2*Math.sin((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k));
                                        <font color="#2e8b57"><b>int</b></font> x1L = x0 + (<font color="#2e8b57"><b>int</b></font>)(<font color="#ff00ff">1.2</font>*r1*Math.cos((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k)); <font color="#0000ff">// point on outer circle</font>
                                        <font color="#2e8b57"><b>int</b></font> y2L = y0 - (<font color="#2e8b57"><b>int</b></font>)(<font color="#ff00ff">0.9</font>*r2*Math.sin((<font color="#ff00ff">2</font>*Math.PI/<font color="#ff00ff">12</font>)*k));
                                        g.setColor(Color.green);
                                        <font color="#804040"><b>if</b></font>(k==<font color="#ff00ff">3</font> || k==<font color="#ff00ff">9</font>){
                                                lineByPixels(x0-<font color="#ff00ff">20</font>, y2, x0+<font color="#ff00ff">20</font>, y2,<font color="#ff00ff">5</font>,cr );}<font color="#0000ff">// 5 is delay value</font>
                           <font color="#0000ff">//g.drawLine( x0-20, y2, x0+20, y2);}</font>
                                        <font color="#804040"><b>else</b></font>{
                                                lineByPixels(x2, y2, x1L, y2,<font color="#ff00ff">5</font>,<font color="#804040"><b>new</b></font> Color(<font color="#ff00ff">255</font>,<font color="#ff00ff">100</font>,<font color="#ff00ff">200</font>));}
                                                <font color="#0000ff">//g.drawLine(x2, y2, x1L, y2);} // horizontal line</font>
                                        g.setColor(Color.yellow);
                                        <font color="#804040"><b>if</b></font>(k==<font color="#ff00ff">0</font> || k==<font color="#ff00ff">6</font>){
                                                lineByPixels(x1, y0-<font color="#ff00ff">20</font>, x1,  y0+<font color="#ff00ff">20</font>,<font color="#ff00ff">5</font>,<font color="#804040"><b>new</b></font> Color(<font color="#ff00ff">100</font>,<font color="#ff00ff">100</font>,<font color="#ff00ff">200</font>));}
                                                <font color="#0000ff">//g.drawLine(x1, y0-20, x1,  y0+20);}// Vertical line</font>
                                        <font color="#804040"><b>else</b></font> {
                                                lineByPixels(x1, y1, x1, y2L,<font color="#ff00ff">5</font>,<font color="#804040"><b>new</b></font> Color(<font color="#ff00ff">100</font>,<font color="#ff00ff">255</font>,<font color="#ff00ff">100</font>));}
                                                <font color="#0000ff">//g.drawLine(x1, y1, x1, y2L);}// vertical line</font>
                                        delay(<font color="#ff00ff">500</font>); <font color="#0000ff">// call delay function         </font>
                                        g.setColor(Color.white);
                                        g.drawOval(x1-<font color="#ff00ff">3</font>, y2-<font color="#ff00ff">3</font>, <font color="#ff00ff">6</font>, <font color="#ff00ff">6</font>); <font color="#0000ff">// Box (top, left, width, height</font>
                    delay(<font color="#ff00ff">500</font>);
                                }
                        }

                        <font color="#804040"><b>if</b></font>(mouse_i == <font color="#ff00ff">5</font>) {
                                g.setColor(Color.white);
                                g.drawString(<font color="#ff00ff">&quot;Step 5: Draw a smooth curve connecting the twelve cutting points.&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">100</font>);
                                g.setColor(Color.RED);
                                <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>double</b></font> i = <font color="#ff00ff">0</font>; i &lt; <font color="#ff00ff">2</font>*(<font color="#ff00ff">3.1415926</font>); i=i+inc) {
                                        g.drawLine((<font color="#2e8b57"><b>int</b></font>)(x0+r1*Math.cos(i)), (<font color="#2e8b57"><b>int</b></font>)(y0-r2*Math.sin(i)), (<font color="#2e8b57"><b>int</b></font>)(x0+(r1+<font color="#ff00ff">1</font>)*Math.cos(i)), (<font color="#2e8b57"><b>int</b></font>)(y0-(r2+<font color="#ff00ff">1</font>)*Math.sin(i)));
                                        delay(<font color="#ff00ff">1</font>); <font color="#0000ff">// calls delay function</font>

                                } <font color="#0000ff">// Ellipse drawing is complete</font>

                                g.drawString(<font color="#ff00ff">&quot;Ellipse by Concentric Circles, by Dr. Vasant D. Barve&quot;</font>, <font color="#ff00ff">20</font>, <font color="#ff00ff">680</font>);
                                g.drawString(<font color="#ff00ff">&quot;DONE!&quot;</font>, <font color="#ff00ff">670</font>, <font color="#ff00ff">350</font>);
                        }
                        mouse_i++;
                 }
                });

                pack();
                setVisible(<font color="#ff00ff">true</font>);
        }
    <font color="#0000ff">// This is delay procedure  </font>
        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> delay(<font color="#2e8b57"><b>int</b></font> dt1)
        {
                <font color="#804040"><b>try</b></font> {
                        Thread.sleep(dt1);
                }
                <font color="#804040"><b>catch</b></font> (InterruptedException e) {
                }
        } <font color="#0000ff">// Delay procedure ends</font>

    <font color="#0000ff">// This is Oval (circle or ellipse) by pixel procedure   * * * * * * * * * * * * * * *      </font>
        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> ovalByPixels(<font color="#2e8b57"><b>float</b></font> x0, <font color="#2e8b57"><b>float</b></font> y0, <font color="#2e8b57"><b>float</b></font> r1, <font color="#2e8b57"><b>float</b></font> r2, <font color="#2e8b57"><b>int</b></font> dt, Color objColor)
        {   <font color="#0000ff">// Center of circle at x0,y0 Radius r dt delay after each pixel counterclckwise</font>
                Graphics g = drawingArea.getGraphics();
                <font color="#2e8b57"><b>double</b></font> rm = Math.max(r1, r2); <font color="#0000ff">// Greater of the two picked up</font>
                <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>double</b></font> i = <font color="#ff00ff">0</font>; i &lt; <font color="#ff00ff">2</font>*(<font color="#ff00ff">3.1415926</font>); i=i+<font color="#ff00ff">1</font>/rm) {
                        <font color="#2e8b57"><b>double</b></font> x1 = x0+ r1*Math.cos(i);
                        <font color="#2e8b57"><b>double</b></font> y1 = y0+r2*Math.sin(i);
                        <font color="#2e8b57"><b>double</b></font> x2 = x0+(r1+<font color="#ff00ff">1</font>)*Math.cos(i);
                        <font color="#2e8b57"><b>double</b></font> y2 = y0+(r2+<font color="#ff00ff">1</font>)*Math.sin(i);
                        g.setColor(objColor);
                        g.drawLine((<font color="#2e8b57"><b>int</b></font>)x1, (<font color="#2e8b57"><b>int</b></font>)y1, (<font color="#2e8b57"><b>int</b></font>)x2, (<font color="#2e8b57"><b>int</b></font>)y2);
                        delay(dt); <font color="#0000ff">// call delay function    </font>
                }
        } <font color="#0000ff">// OvalByPixels procedure Ends</font>

<font color="#0000ff">//       lineByPixels Procedure starts              * * * * * *  * * * * *</font>
        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> lineByPixels(<font color="#2e8b57"><b>int</b></font> x1, <font color="#2e8b57"><b>int</b></font> y1, <font color="#2e8b57"><b>int</b></font> x2, <font color="#2e8b57"><b>int</b></font> y2, <font color="#2e8b57"><b>int</b></font> dt,Color objCol ) {
                <font color="#0000ff">// Line starts at (x1,y1) &amp; ends at (x2,y2) each point is drawn as short line of one pixel length</font>
                Graphics g = drawingArea.getGraphics();
                <font color="#0000ff">//g.setColor(Color.white); </font>
                g.setColor(objCol);

                <font color="#2e8b57"><b>int</b></font> L= (<font color="#2e8b57"><b>int</b></font>) Math.sqrt(Math.pow(x2-x1,<font color="#ff00ff">2</font>)+Math.pow(y2-y1,<font color="#ff00ff">2</font>));
            <font color="#0000ff">// length of line is found</font>
                <font color="#2e8b57"><b>double</b></font> th=Math.atan2(y2-y1,x2-x1); <font color="#0000ff">// inclination of line with x axis</font>
               <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> i=<font color="#ff00ff">0</font>; i&lt;=L-<font color="#ff00ff">1</font>; i=i+<font color="#ff00ff">1</font>)
            { g.drawLine((<font color="#2e8b57"><b>int</b></font>) (x1+i*Math.cos(th)), (<font color="#2e8b57"><b>int</b></font>) (y1+i*Math.sin(th)),(<font color="#2e8b57"><b>int</b></font>) (x1+(i+<font color="#ff00ff">1</font>)*Math.cos(th)), (<font color="#2e8b57"><b>int</b></font>) (y1+(i+<font color="#ff00ff">1</font>)*Math.sin(th)));
          delay(dt);    <font color="#0000ff">//delay introduced to see line being drawn    </font>
            }
        } <font color="#0000ff">// lineByPixels Procedure Ends</font>

        <font color="#0000ff">// Paint graphics starts                     * * * * * * * * *</font>
        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> paint(Graphics g) {
                <font color="#2e8b57"><b>super</b></font>.paint(g);
        } <font color="#0000ff">// Paint graphics Ends</font>

        <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>static</b></font> <font color="#2e8b57"><b>void</b></font> main(String[] args) {
                leenaTrial1 ecc = <font color="#804040"><b>new</b></font> leenaTrial1(); <font color="#0000ff">// here the function is called</font>
                ecc.run();
        }
}
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=How+would+you+clean+this+up+%3F&amp;link=http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html&amp;notes=This%20was%20an%20interesting%20piece%20of%20code%20from%20a%20long%20time%20mentor%20and%20friend.%20He%27s%20just%20started%20to%20learn%20Java%20some%20time%20ago%2C%20and%20has%20written%20this%20program%20to%20demonstrate%20how%20to%20draw%20an%20Ellipse.%0A%0AHe%27s%20about%2060%20years%20of%20age.%20Has%20been%20a%20long%20time%20Turbo%20C-2.0%20programmer.%20Mostly%20he%20develops%20small%20graphics%20pro&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=How+would+you+clean+this+up+%3F&amp;link=http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html&amp;notes=This%20was%20an%20interesting%20piece%20of%20code%20from%20a%20long%20time%20mentor%20and%20friend.%20He%27s%20just%20started%20to%20learn%20Java%20some%20time%20ago%2C%20and%20has%20written%20this%20program%20to%20demonstrate%20how%20to%20draw%20an%20Ellipse.%0A%0AHe%27s%20about%2060%20years%20of%20age.%20Has%20been%20a%20long%20time%20Turbo%20C-2.0%20programmer.%20Mostly%20he%20develops%20small%20graphics%20pro&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=How+would+you+clean+this+up+%3F&amp;link=http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html&amp;notes=This%20was%20an%20interesting%20piece%20of%20code%20from%20a%20long%20time%20mentor%20and%20friend.%20He%27s%20just%20started%20to%20learn%20Java%20some%20time%20ago%2C%20and%20has%20written%20this%20program%20to%20demonstrate%20how%20to%20draw%20an%20Ellipse.%0A%0AHe%27s%20about%2060%20years%20of%20age.%20Has%20been%20a%20long%20time%20Turbo%20C-2.0%20programmer.%20Mostly%20he%20develops%20small%20graphics%20pro&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=How+would+you+clean+this+up+%3F&amp;link=http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html&amp;notes=This%20was%20an%20interesting%20piece%20of%20code%20from%20a%20long%20time%20mentor%20and%20friend.%20He%27s%20just%20started%20to%20learn%20Java%20some%20time%20ago%2C%20and%20has%20written%20this%20program%20to%20demonstrate%20how%20to%20draw%20an%20Ellipse.%0A%0AHe%27s%20about%2060%20years%20of%20age.%20Has%20been%20a%20long%20time%20Turbo%20C-2.0%20programmer.%20Mostly%20he%20develops%20small%20graphics%20pro&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=How+would+you+clean+this+up+%3F&amp;link=http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html&amp;notes=This%20was%20an%20interesting%20piece%20of%20code%20from%20a%20long%20time%20mentor%20and%20friend.%20He%27s%20just%20started%20to%20learn%20Java%20some%20time%20ago%2C%20and%20has%20written%20this%20program%20to%20demonstrate%20how%20to%20draw%20an%20Ellipse.%0A%0AHe%27s%20about%2060%20years%20of%20age.%20Has%20been%20a%20long%20time%20Turbo%20C-2.0%20programmer.%20Mostly%20he%20develops%20small%20graphics%20pro&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/02/14/how-would-you-clean-this-up.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SWTBot is coming</title>
		<link>http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html</link>
		<comments>http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html#comments</comments>
		<pubDate>Tue, 06 Feb 2007 14:14:37 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[experiences]]></category>
		<category><![CDATA[swt]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html</guid>
		<description><![CDATA[I&#8217;d used Sahi by Narayan Raman a while ago, and heard of frankenstein by Vivek Prahlad. Sahi helped save quite a lot of time testing the web application that I was developing. Reproducing bugs was also very easy I&#8217;m currently working on developing Eclipse plug-ins and RCP applications. Testing the daily builds that Nirav makes [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d used <a href="http://sahi.co.in">Sahi</a> by <a href="http://narayanraman.blogspot.com/">Narayan Raman</a> a while ago, and heard of <a href="http://openqa.org/frankenstein/">frankenstein</a> by <a href="http://blog.vivekprahlad.com/">Vivek Prahlad</a>.</p>
<p>Sahi helped save quite a lot of time testing the web application that I was developing. Reproducing bugs was also very easy <img src='http://ketan.padegaonkar.name/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I&#8217;m currently working on developing Eclipse plug-ins and RCP applications. Testing the <a href="http://niravthaker.blogspot.com/2007/01/experiments-with-continuous.html">daily builds</a> that <a href="http://niravthaker.blogspot.com/">Nirav</a> makes is quite a pain. Hence a record and playback tool for SWT applications.</p>
<p>I&#8217;ve registered a project on <a href="http://sourceforge.net">sourceforge</a>. You should see it at <a href="http://swtbot.sourceforge.net">swtbot.sourceforge.net</a> sometime in the next couple of days.</p>
<p>A headless build using ant has been put in place. A little bit of work has already been done. Code coverage is above 95%, for now. And I hope to keep it above 80% during the course of development of the application.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=SWTBot+is+coming&amp;link=http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html&amp;notes=I%27d%20used%20Sahi%20by%20Narayan%20Raman%20a%20while%20ago%2C%20and%20heard%20of%20frankenstein%20by%20Vivek%20Prahlad.%0A%0ASahi%20helped%20save%20quite%20a%20lot%20of%20time%20testing%20the%20web%20application%20that%20I%20was%20developing.%20Reproducing%20bugs%20was%20also%20very%20easy%20%3B%29%0A%0AI%27m%20currently%20working%20on%20developing%20Eclipse%20plug-ins%20and%20RCP%20applications.%20Testing%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=SWTBot+is+coming&amp;link=http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html&amp;notes=I%27d%20used%20Sahi%20by%20Narayan%20Raman%20a%20while%20ago%2C%20and%20heard%20of%20frankenstein%20by%20Vivek%20Prahlad.%0A%0ASahi%20helped%20save%20quite%20a%20lot%20of%20time%20testing%20the%20web%20application%20that%20I%20was%20developing.%20Reproducing%20bugs%20was%20also%20very%20easy%20%3B%29%0A%0AI%27m%20currently%20working%20on%20developing%20Eclipse%20plug-ins%20and%20RCP%20applications.%20Testing%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=SWTBot+is+coming&amp;link=http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html&amp;notes=I%27d%20used%20Sahi%20by%20Narayan%20Raman%20a%20while%20ago%2C%20and%20heard%20of%20frankenstein%20by%20Vivek%20Prahlad.%0A%0ASahi%20helped%20save%20quite%20a%20lot%20of%20time%20testing%20the%20web%20application%20that%20I%20was%20developing.%20Reproducing%20bugs%20was%20also%20very%20easy%20%3B%29%0A%0AI%27m%20currently%20working%20on%20developing%20Eclipse%20plug-ins%20and%20RCP%20applications.%20Testing%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=SWTBot+is+coming&amp;link=http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html&amp;notes=I%27d%20used%20Sahi%20by%20Narayan%20Raman%20a%20while%20ago%2C%20and%20heard%20of%20frankenstein%20by%20Vivek%20Prahlad.%0A%0ASahi%20helped%20save%20quite%20a%20lot%20of%20time%20testing%20the%20web%20application%20that%20I%20was%20developing.%20Reproducing%20bugs%20was%20also%20very%20easy%20%3B%29%0A%0AI%27m%20currently%20working%20on%20developing%20Eclipse%20plug-ins%20and%20RCP%20applications.%20Testing%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=SWTBot+is+coming&amp;link=http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html&amp;notes=I%27d%20used%20Sahi%20by%20Narayan%20Raman%20a%20while%20ago%2C%20and%20heard%20of%20frankenstein%20by%20Vivek%20Prahlad.%0A%0ASahi%20helped%20save%20quite%20a%20lot%20of%20time%20testing%20the%20web%20application%20that%20I%20was%20developing.%20Reproducing%20bugs%20was%20also%20very%20easy%20%3B%29%0A%0AI%27m%20currently%20working%20on%20developing%20Eclipse%20plug-ins%20and%20RCP%20applications.%20Testing%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/02/06/swtbot-is-coming.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eclipse RCP HOWTO &#8212; An Insurance Application in 2 hours</title>
		<link>http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html</link>
		<comments>http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html#comments</comments>
		<pubDate>Mon, 05 Feb 2007 05:50:38 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[gnunify07]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[rcp]]></category>
		<category><![CDATA[swt]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto.html</guid>
		<description><![CDATA[Here is a HOWTO on developing Eclipse RCP applications. We&#8217;d demonstrated this application at GNUnify07, held at SICSR, Pune. This application is based on the chapter AHA, in &#8220;The Design Patterns Smalltalk Companion.&#8221; Table of Contents: Disclaimer I&#8217;m not GOD at Eclipse. I&#8217;m just a human being who can look develop some stuff using Eclipse. [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a <a href="http://ketan.padegaonkar.name/tag/howto">HOWTO</a> on developing <a href="http://eclipse.org">Eclipse</a> <a href="http://eclipse.org/rcp">RCP</a> applications. We&#8217;d demonstrated this application at <a href="http://gnunify.symbiosiscomputers.com/">GNUnify07</a>, held at SICSR, Pune.</p>
<p>This application is based on the chapter AHA, in &#8220;<a href="http://www.amazon.com/Design-Patterns-Smalltalk-Companion-Software/dp/0201184621/sr=11-1/qid=1170654134/ref=sr_11_1/102-6415684-9634521">The Design Patterns Smalltalk Companion</a>.&#8221;</p>
<p>Table of Contents:<br />
<!--TOC--><br />
<span id="more-136"></span></p>
<h4>Disclaimer</h4>
<p>I&#8217;m not GOD at Eclipse. I&#8217;m just a human being who can look develop some stuff using Eclipse. I can look through the Eclipse source code, and make <em>some</em> amount of sense of what is happening; and that is how I&#8217;ve learnt and understood some of Eclipse, and continue to learn more. If you want to become GOD, then there is no alternative to looking and browsing through the Eclipse code.</p>
<p>This is an article to get you started with Eclipse. Although knowledge of the Eclipse Framework is not necessary, I recommend that you go through <a href="http://eclipse.org/articles/Article-RCP-1/tutorial1.html">tutorial 1</a>, <a href="http://eclipse.org/articles/Article-RCP-2/tutorial2.html">tutorial 2</a>, and <a href="http://eclipse.org/articles/Article-RCP-3/tutorial3.html">tutorial 3</a> by <a href="http://blogs.zdnet.com/Burnette/">Ed Burnette</a>.</p>
<p>I&#8217;m sure that a lot of questions will come across your mind during the course of reading this article. Please add <a href="http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html#commentForm">comments</a> to this page in case you do come across any. I&#8217;ll try my best to answer them.</p>
<h4>Pre-requisites</h4>
<h5>Software</h5>
<ul>
<li>Eclipse SDK 3.2 or higher, <a href="http://download.eclipse.org/eclipse/downloads/">available here</a></li>
<li>Java 1.4.2 or higher, <a href="http://java.sun.com/javase/downloads/index.jsp">available here</a></li>
<li><a href="http://subversion.tigris.org/">Subversion</a> plugin for Eclipse, <a href="http://subclipse.tigris.org/">available here</a></li>
<li><a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> if you are on Windows</li>
</ul>
<h5>Knowledge</h5>
<ul>
<li>Understanding of the Java Programming Language</li>
<li>Experience with using an IDE like Eclipse would be an advantage</li>
</ul>
<h4>Let&#8217;s begin</h4>
<p>First extract the SVN repository containing the source code. Then from within Eclipse connect to this repository.</p>
<p>Checkout the first revision of the project &#8220;org.gnunify.insurance.core&#8221;. This plugin contains the source code for the business objects (POJOs). The POJOs are wrapped in an Eclipse plug-in.</p>
<p>// TODO:</p>
<h4>Resources</h4>
<ul>
<li><a href="http://eclipse-pune-dev.googlegroups.com/web/gnunify-svn-2007-01-26.zip?gda=f74itUsAAAA49racmmw5Q0P0mXJwZwcvRl9IunBtSr5i4qyhSAz622G1qiJ7UbTIup-M2XPURDRf_CHwhA9db-3XRZgu6-Ce4HR-fASeMcQ_Ab-J1vZtiQ">Source code for this application</a></li>
<li><a href="http://eclipse-pune-dev.googlegroups.com/web/gnunify-rcp-2007-01-26.zip?gda=H1CxvEsAAAA49racmmw5Q0P0mXJwZwcvu1_YSSwzFqNcqluvLJtk3WG1qiJ7UbTIup-M2XPURDSjdfWRWWo6Z0nq12nMbTg24HR-fASeMcQ_Ab-J1vZtiQ">Presentation for the RCP talk</a></li>
<li>Eclipse <a href="http://eclipse.org/articles">articles</a></li>
<li>&#8220;<em><a href="http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612/sr=8-2/qid=1170661270/ref=pd_bbs_sr_2/102-6415684-9634521?ie=UTF8&amp;s=books">Eclipse RCP: Designing, Coding, and Packaging Java(TM) Applications</a></em>&#8221; by Jeff McAffer and Jean-Michel Lemieux</li>
<li>The Java Tutorial, <a href="http://java.sun.com/docs/books/tutorial/">available here</a></li>
</ul>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Eclipse+RCP+HOWTO+--+An+Insurance+Application+in+2+hours&amp;link=http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html&amp;notes=Here%20is%20a%20HOWTO%20on%20developing%20Eclipse%20RCP%20applications.%20We%27d%20demonstrated%20this%20application%20at%20GNUnify07%2C%20held%20at%20SICSR%2C%20Pune.%0A%0AThis%20application%20is%20based%20on%20the%20chapter%20AHA%2C%20in%20%22The%20Design%20Patterns%20Smalltalk%20Companion.%22%0A%0ATable%20of%20Contents%3A%0A%0A%0A%0ADisclaimer%0AI%27m%20not%20GOD%20at%20Eclipse.%20I%27m%20just%20a%20human%20being%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Eclipse+RCP+HOWTO+--+An+Insurance+Application+in+2+hours&amp;link=http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html&amp;notes=Here%20is%20a%20HOWTO%20on%20developing%20Eclipse%20RCP%20applications.%20We%27d%20demonstrated%20this%20application%20at%20GNUnify07%2C%20held%20at%20SICSR%2C%20Pune.%0A%0AThis%20application%20is%20based%20on%20the%20chapter%20AHA%2C%20in%20%22The%20Design%20Patterns%20Smalltalk%20Companion.%22%0A%0ATable%20of%20Contents%3A%0A%0A%0A%0ADisclaimer%0AI%27m%20not%20GOD%20at%20Eclipse.%20I%27m%20just%20a%20human%20being%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Eclipse+RCP+HOWTO+--+An+Insurance+Application+in+2+hours&amp;link=http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html&amp;notes=Here%20is%20a%20HOWTO%20on%20developing%20Eclipse%20RCP%20applications.%20We%27d%20demonstrated%20this%20application%20at%20GNUnify07%2C%20held%20at%20SICSR%2C%20Pune.%0A%0AThis%20application%20is%20based%20on%20the%20chapter%20AHA%2C%20in%20%22The%20Design%20Patterns%20Smalltalk%20Companion.%22%0A%0ATable%20of%20Contents%3A%0A%0A%0A%0ADisclaimer%0AI%27m%20not%20GOD%20at%20Eclipse.%20I%27m%20just%20a%20human%20being%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Eclipse+RCP+HOWTO+--+An+Insurance+Application+in+2+hours&amp;link=http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html&amp;notes=Here%20is%20a%20HOWTO%20on%20developing%20Eclipse%20RCP%20applications.%20We%27d%20demonstrated%20this%20application%20at%20GNUnify07%2C%20held%20at%20SICSR%2C%20Pune.%0A%0AThis%20application%20is%20based%20on%20the%20chapter%20AHA%2C%20in%20%22The%20Design%20Patterns%20Smalltalk%20Companion.%22%0A%0ATable%20of%20Contents%3A%0A%0A%0A%0ADisclaimer%0AI%27m%20not%20GOD%20at%20Eclipse.%20I%27m%20just%20a%20human%20being%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Eclipse+RCP+HOWTO+--+An+Insurance+Application+in+2+hours&amp;link=http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html&amp;notes=Here%20is%20a%20HOWTO%20on%20developing%20Eclipse%20RCP%20applications.%20We%27d%20demonstrated%20this%20application%20at%20GNUnify07%2C%20held%20at%20SICSR%2C%20Pune.%0A%0AThis%20application%20is%20based%20on%20the%20chapter%20AHA%2C%20in%20%22The%20Design%20Patterns%20Smalltalk%20Companion.%22%0A%0ATable%20of%20Contents%3A%0A%0A%0A%0ADisclaimer%0AI%27m%20not%20GOD%20at%20Eclipse.%20I%27m%20just%20a%20human%20being%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/02/05/eclipse-rcp-howto-an-insurance-application-in-2-hours.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GNUnify 07 &#8212; an amazing event</title>
		<link>http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html</link>
		<comments>http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html#comments</comments>
		<pubDate>Mon, 29 Jan 2007 04:52:47 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[experiences]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[gnunify07]]></category>
		<category><![CDATA[opensolaris]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[swt]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html</guid>
		<description><![CDATA[GNUnify 07 at Symbiosis was a great event. Sriram and me spoke on eclipse plug-in development on behalf of The Pune Eclipse Developers&#8217; Group The talk by A. Sundararajan from Sun on opensourcing the Java implementation (OpenJDK) from Sun was very interesting. Moinak Ghosh from Sun gave a demo on some of the advanced features [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gnunify.symbiosiscomputers.com/">GNUnify 07</a> at <a href="http://symbiosiscomputers.com/">Symbiosis</a> was a great event.</p>
<p><a href="http://dynamicproxy.livejournal.com">Sriram</a> and <a href="http://ketan.padegaonkar.name">me</a> <a href="http://ketan.padegaonkar.name/2007/01/29/eclipse-plugin-development-at-gnunify-07.html">spoke</a> on <a href="http://eclipse.org">eclipse</a> <a href="http://eclipse.org/pde">plug-in</a> <a href="http://www.eclipse.org/resources/">development</a> on behalf of <a href="http://groups.google.com/group/eclipse-pune-dev">The Pune Eclipse Developers&#8217; Group</a></p>
<p>The talk by <a href="http://blogs.sun.com/sundararajan/">A. Sundararajan</a> from <a href="http://sun.com">Sun</a> on <a href="http://opensource.org">opensourcing</a> the <a href="http://java.sun.com">Java</a> implementation (<a href="https://openjdk.dev.java.net/">OpenJDK</a>) from <a href="http://sun.com">Sun</a> was very interesting.</p>
<p><a href="http://blogs.sun.com/moinakg/">Moinak Ghosh</a> from <a href="http://sun.com">Sun</a> gave a demo on some of the <a href="http://en.wikipedia.org/wiki/DTrace">advanced</a> <a href="http://en.wikipedia.org/wiki/Solaris_Containers">features</a> of <a href="http://opensolaris.org">OpenSolaris</a>.</p>
<p>Also got an opportunity to meet <a href="http://narayanraman.blogspot.com/">Narayan Raman</a> and <a href="http://blog.vivekprahlad.com/">Vivek Prahlad</a> who&#8217;d developed <a href="http://sahi.co.in">Sahi</a> and <a href="http://openqa.org/frankenstein/">frankenstein</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=GNUnify+07+--+an+amazing+event&amp;link=http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html&amp;notes=GNUnify%2007%20at%20Symbiosis%20was%20a%20great%20event.%0A%0ASriram%20and%20me%20spoke%20on%20eclipse%20plug-in%20development%20on%20behalf%20of%20The%20Pune%20Eclipse%20Developers%27%20Group%0A%0AThe%20talk%20by%20A.%20Sundararajan%20from%20Sun%20on%20opensourcing%20the%20Java%20implementation%20%28OpenJDK%29%20from%20Sun%20was%20very%20interesting.%0A%0AMoinak%20Ghosh%20from%20Sun%20gave%20a%20demo%20on%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=GNUnify+07+--+an+amazing+event&amp;link=http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html&amp;notes=GNUnify%2007%20at%20Symbiosis%20was%20a%20great%20event.%0A%0ASriram%20and%20me%20spoke%20on%20eclipse%20plug-in%20development%20on%20behalf%20of%20The%20Pune%20Eclipse%20Developers%27%20Group%0A%0AThe%20talk%20by%20A.%20Sundararajan%20from%20Sun%20on%20opensourcing%20the%20Java%20implementation%20%28OpenJDK%29%20from%20Sun%20was%20very%20interesting.%0A%0AMoinak%20Ghosh%20from%20Sun%20gave%20a%20demo%20on%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=GNUnify+07+--+an+amazing+event&amp;link=http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html&amp;notes=GNUnify%2007%20at%20Symbiosis%20was%20a%20great%20event.%0A%0ASriram%20and%20me%20spoke%20on%20eclipse%20plug-in%20development%20on%20behalf%20of%20The%20Pune%20Eclipse%20Developers%27%20Group%0A%0AThe%20talk%20by%20A.%20Sundararajan%20from%20Sun%20on%20opensourcing%20the%20Java%20implementation%20%28OpenJDK%29%20from%20Sun%20was%20very%20interesting.%0A%0AMoinak%20Ghosh%20from%20Sun%20gave%20a%20demo%20on%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=GNUnify+07+--+an+amazing+event&amp;link=http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html&amp;notes=GNUnify%2007%20at%20Symbiosis%20was%20a%20great%20event.%0A%0ASriram%20and%20me%20spoke%20on%20eclipse%20plug-in%20development%20on%20behalf%20of%20The%20Pune%20Eclipse%20Developers%27%20Group%0A%0AThe%20talk%20by%20A.%20Sundararajan%20from%20Sun%20on%20opensourcing%20the%20Java%20implementation%20%28OpenJDK%29%20from%20Sun%20was%20very%20interesting.%0A%0AMoinak%20Ghosh%20from%20Sun%20gave%20a%20demo%20on%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=GNUnify+07+--+an+amazing+event&amp;link=http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html&amp;notes=GNUnify%2007%20at%20Symbiosis%20was%20a%20great%20event.%0A%0ASriram%20and%20me%20spoke%20on%20eclipse%20plug-in%20development%20on%20behalf%20of%20The%20Pune%20Eclipse%20Developers%27%20Group%0A%0AThe%20talk%20by%20A.%20Sundararajan%20from%20Sun%20on%20opensourcing%20the%20Java%20implementation%20%28OpenJDK%29%20from%20Sun%20was%20very%20interesting.%0A%0AMoinak%20Ghosh%20from%20Sun%20gave%20a%20demo%20on%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/01/29/gnunify-07-an-amazing-event.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Women, Technology and Open-Source</title>
		<link>http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html</link>
		<comments>http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html#comments</comments>
		<pubDate>Wed, 17 Jan 2007 06:58:12 +0000</pubDate>
		<dc:creator>Ketan</dc:creator>
				<category><![CDATA[experiences]]></category>
		<category><![CDATA[GNU & Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[women]]></category>

		<guid isPermaLink="false">http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html</guid>
		<description><![CDATA[With all love and respect to my sisters in product management, marketing, sales, finance, HR, 50 years of IT history strongly suggests that technology companies will ever continue to be founded by entrepreneurs from engineering backgrounds; and if women never become engineers in sufficient numbers, they will disproportionately fail to experience the upper end of [...]]]></description>
			<content:encoded><![CDATA[<p>With all love and respect to my sisters in product management, marketing, sales, finance, HR, 50 years of IT history <em>strongly</em> suggests that technology companies will ever continue to be founded by entrepreneurs from engineering backgrounds; and if women never become engineers in sufficient numbers, they will disproportionately fail to experience the upper end of the range of IT outcomes.</p>
<p><span id="more-132"></span></p>
<p>Further, it&#8217;s impossible to calculate the opportunity cost to IT ventures due to insufficient diversity of backgrounds, ideas, and modes of thought; but as the end consumer of our work becomes increasingly female, these costs must be rising.</p>
<p>However, no one can have failed to notice that despite all the efforts of a great many brilliant, motivated, and determined individuals and <a href="http://women.kde.org">groups</a> to <a href="http://linuxchix.org/">support</a> <a href="http://www.womenintechnology.co.uk/">women in technology</a>, Google, Yahoo, MS, IITs, Stanford and Berkeley &#8211; there are still not nearly as many working female engineers as there are males.</p>
<p>And when it comes to female tech entrepreneurs from an engineering background I believe the ratio is even more skewed, although I do not know a definitive number. Finally, when you count the women who head venture-backed businesses &#8211; which is an arbitrary distinction except as it highlights the availability of capital and other resources which can ease the crushing burden of starting a business &#8211; it is indeed a lonely little group.</p>
<p>The point of this article is not to wring my hands and whine about the status. Nor do I plan to propose computer science education as the long-term solution to the gender imbalance problem, because far better-qualified people than I are already working along those lines. Instead I focus on a well-known but little-studied phenomenon in the technology industry &#8211; particularly in the newer, more experimental, startup-driven subdomains &#8211; and in the Open-Source movement. That of lack of self-taught female software engineers.</p>
<p>Everyone in professional or Open-Source software development has worked with countless male colleagues who are essentially self-taught, somewhat lacking formal training in computer science. In the perhaps less glamorous areas of the software development lifecycle &#8211; QA, build and release, documentation, i18n (translation), metrics, DBA, etc. &#8211; a lot of people I&#8217;ve ever worked with, or known directly, or indirectly, have lacked formal qualifications (which in many cases don’t exist anyway). These self-motivated male engineers run the gamut of quality, from the best of the best to the truly sub-par; but it is incontestable that there are a relatively large number of them, and that they form an important part of the technology ecosystem. But everyone seems to agree &#8211; and certainly it has been my experience &#8211; that there is no correspondingly large pool of female professional and Open-Source engineers without formal training.</p>
<p>Why does this gender gap in software engineers exist? Could it be bridged through some sort of organized effort? Would such an effort be ethically troubling or bad for the profession in some other way? What opportunities might be lost if we continue to do nothing about the gender disparity in software engineering, or simply wait for long-term educational efforts to take root at some unspecified future date? For those who care about women in the technology industry, I would argue that these questions should be very pressing and our ignorance of their answers should be equally troubling.</p>
<p>I&#8217;m not much on speculating about social problems, but if I were forced into diagnostic mode about the lack of self-taught female software engineers, I’d probably put the following rationales at the top of my list (in no particular order):</p>
<ul>
<li>Almost all of the male engineers I know report childhood experience &#8220;playing&#8221; with computers. I also had this experience, as did most of the female engineers I know; but non-engineer women seem far less likely to have done so.</li>
<li>If Programming classes started with social software rather than math problems and competitive games, more women might discover an unexpected interest.</li>
<li>Women seem to be disproportionately attracted to careers where they feel they can help others &#8211; for instance medicine (which of course requires rigorous, highly competitive scientific training), teaching — rather than careers that promise high pay or entrepreneurial possibility.</li>
<li>Male self-taught engineers often begin working with computers as a hobby &#8211; for instance, legions of Open-Source devotees (including myself) began this way. Women seem less inclined to learn programming just for fun, and more likely to see it as simply a job (to be fair, many self-taught male engineers also seem to primarily see their work as a job rather than a personal passion).
<li>Women often seem to gain self-confidence by pursuing institutional affiliations, credentials, and clear career goals &#8211; rather than simply pushing forward as &#8220;lone wolves&#8221; driven by individual curiosity.</li>
</ul>
<p>I have really struggled with these objections, because as an individual I don&#8217;t necessarily disagree with them at a philosophical level. But, those are pretty abstract principles of fairness to hold up against the realities of business and life. I hear from managers who say that they would love to get more female engineers. I also hear from intelligent, motivated, practical women who want jobs &#8211; or better jobs &#8211; but need help. Sometimes all they really need is a critique of their resume, or an introduction inside a particular company. But sometimes they need someone to see them for the valuable engineer they could be, and say, &#8220;You&#8217;re so good at analyzing this type of problem and finding a solution&#8230; Have you ever considered a career as a [QA engineer | release engineer | sysadmin | metrics analyst | DBA | webdev | etc.]? I will train you.&#8221; I enjoy helping out as much as I can personally, but we would get economies of scale if all the interested parties of IT could combine our efforts and institutionalize the method by which women without CS degrees could be turned into contributing members of engineering teams.</p>
<p>There&#8217;s a survey that notes that <a href="https://www.google.com/analytics/home/report?rid=655485&amp;scid=414875">93% of Linux users are male</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Of+Women%2C+Technology+and+Open-Source&amp;link=http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html&amp;notes=With%20all%20love%20and%20respect%20to%20my%20sisters%20in%20product%20management%2C%20marketing%2C%20sales%2C%20finance%2C%20HR%2C%2050%20years%20of%20IT%20history%20strongly%20suggests%20that%20technology%20companies%20will%20ever%20continue%20to%20be%20founded%20by%20entrepreneurs%20from%20engineering%20backgrounds%3B%20and%20if%20women%20never%20become%20engineers%20in%20sufficient%20numbers%2C%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Of+Women%2C+Technology+and+Open-Source&amp;link=http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html&amp;notes=With%20all%20love%20and%20respect%20to%20my%20sisters%20in%20product%20management%2C%20marketing%2C%20sales%2C%20finance%2C%20HR%2C%2050%20years%20of%20IT%20history%20strongly%20suggests%20that%20technology%20companies%20will%20ever%20continue%20to%20be%20founded%20by%20entrepreneurs%20from%20engineering%20backgrounds%3B%20and%20if%20women%20never%20become%20engineers%20in%20sufficient%20numbers%2C%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Of+Women%2C+Technology+and+Open-Source&amp;link=http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html&amp;notes=With%20all%20love%20and%20respect%20to%20my%20sisters%20in%20product%20management%2C%20marketing%2C%20sales%2C%20finance%2C%20HR%2C%2050%20years%20of%20IT%20history%20strongly%20suggests%20that%20technology%20companies%20will%20ever%20continue%20to%20be%20founded%20by%20entrepreneurs%20from%20engineering%20backgrounds%3B%20and%20if%20women%20never%20become%20engineers%20in%20sufficient%20numbers%2C%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=RT+%40ketanpkr+%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Of+Women%2C+Technology+and+Open-Source&amp;link=http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html&amp;notes=With%20all%20love%20and%20respect%20to%20my%20sisters%20in%20product%20management%2C%20marketing%2C%20sales%2C%20finance%2C%20HR%2C%2050%20years%20of%20IT%20history%20strongly%20suggests%20that%20technology%20companies%20will%20ever%20continue%20to%20be%20founded%20by%20entrepreneurs%20from%20engineering%20backgrounds%3B%20and%20if%20women%20never%20become%20engineers%20in%20sufficient%20numbers%2C%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Of+Women%2C+Technology+and+Open-Source&amp;link=http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html&amp;notes=With%20all%20love%20and%20respect%20to%20my%20sisters%20in%20product%20management%2C%20marketing%2C%20sales%2C%20finance%2C%20HR%2C%2050%20years%20of%20IT%20history%20strongly%20suggests%20that%20technology%20companies%20will%20ever%20continue%20to%20be%20founded%20by%20entrepreneurs%20from%20engineering%20backgrounds%3B%20and%20if%20women%20never%20become%20engineers%20in%20sufficient%20numbers%2C%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ketan.padegaonkar.name/2007/01/17/of-women-technology-and-open-source.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

