<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Alexkashko's Weblog</title>
	<atom:link href="http://alexkashko.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexkashko.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 03 May 2011 18:23:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='alexkashko.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Alexkashko's Weblog</title>
		<link>http://alexkashko.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://alexkashko.wordpress.com/osd.xml" title="Alexkashko&#039;s Weblog" />
	<atom:link rel='hub' href='http://alexkashko.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Future articles and the effect of the recession</title>
		<link>http://alexkashko.wordpress.com/2009/04/22/future-articles-and-the-effect-of-the-recession/</link>
		<comments>http://alexkashko.wordpress.com/2009/04/22/future-articles-and-the-effect-of-the-recession/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 11:08:39 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[recession]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=53</guid>
		<description><![CDATA[The recession has hit the IT market and my career badly. I still enjoy research and development but have been spending most of my writing efforts Here I will continue to post bit infrequently and the content will become more of a commentary on the IT world than detailed technical articles Fortunately I am still [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=53&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The recession has hit the IT market and my career badly.   </p>
<p>I still enjoy research and development but have been spending  most of my writing efforts<br />
<a href="http://hubpages.com/_eu4yzgn9kfug/profile/AlexK2009">Here </a></p>
<p>I will  continue to post  bit infrequently and the content will become more of a commentary on the IT world than detailed technical articles</p>
<p>Fortunately I am still getting phone calls and have an interview soon for a role in Zurich,  perhaps my second favourite location in Europe but have been unable to break into the Hong Kong and SE Asia markets.</p>
<p>This recession appears to be breaking all the rules.  Disguised protectionism is rife but clients still outsource jobs to India. There are almost no contract vacancies,  whereas in times of uncertainty  one would have expected  an upswing in the demand for flexible labour. </p>
<p>There  are hints the recession is lifting, and recruiters tell me they are busier now than  a month ago.  Some recruiters may be beginning to worry about their own jobs and are being politer to candidates. </p>
<p>If I had the experience  and capital I  would team up with an experienced recruiter and go into that side of the business. It seems like something I could do working from home.</p>
<p>I am not alone however. Many  vastly more experienced IT contractors than I are having even less luck in  the market</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=53&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2009/04/22/future-articles-and-the-effect-of-the-recession/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Thoughts on the Trusting trust attack</title>
		<link>http://alexkashko.wordpress.com/2009/03/01/thoughts-on-the-trusting-trust-attack/</link>
		<comments>http://alexkashko.wordpress.com/2009/03/01/thoughts-on-the-trusting-trust-attack/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 01:14:19 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[subverting compiler]]></category>
		<category><![CDATA[trusting JVM]]></category>
		<category><![CDATA[trusting trust]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=49</guid>
		<description><![CDATA[In 1974 Karger and Schell discovered the trusting trust attack. Later Ken Thompson demonstrated that this was more than a theoretical possibility. David Wheeler has now produced a defence against this attack that is will give a high degree of protection against such an attack. You can read a full discussion on http://www.schneier.com/blog/archives/2006/01/countering_trus.html ( I;m [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=49&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In 1974 Karger and Schell discovered the trusting trust attack. Later Ken Thompson demonstrated that this  was more than a theoretical possibility.   David Wheeler has now produced a defence against this attack that is  will give a high degree of  protection against such an attack. You can read a full discussion on </p>
<p>http://www.schneier.com/blog/archives/2006/01/countering_trus.html</p>
<p>( I;m too tired to create a link but I want this up before sleeping)</p>
<p>which was the trigger for this post.</p>
<p>Here I  will give a high level overview of the defence,, summarising the above mentoned dicussion,  and  a few ideas how  to do cheaper, but possibly less reliable checks. This is a new field for me, so treat what I say with caution.</p>
<p>The trusting trust attack involves  altering a compiler so that it   introduces malicious code into any program it  compiles and  puts into itself the code that introduces the malicious code into any  non compiler program it compiles.  </p>
<p>Wheeler&#8217;s technique is devastatingly simple in principle. Compile the compiler with two independently written compilers to produce  two versions of the compiler that  will be functionally identical and  then compile any code you like with each version of the compiler. If the resulting binaries are identical then  compiler  is almost certainly clean. If they differ  at least one compiler is untrustworthy. Here I am  taking the compiler to include  the linker.  The compiler must also be deterministic. </p>
<p>Now I do not see any weaknesses in this defence. The only problem I see is that it might be hard to ensure all the critical code – linker, disassembler, file compare  program etc, have been checked. There may also be technical problems in compiling the compiler.</p>
<p>With a suspect JVM or other virtual machine system you  must rebuild the JVM with  diffetent compilers (someone tell me this is possible I have not  had much luck trying to build a JVM from source code) and convert  two class files to executables using two native compilers.</p>
<p>So I considered a quick and dirty method for checking at least the compiler etc.  These  will fail if the system is compromised but may pass if it is.   I stop at the point where Wheeler&#8217;s technique comes to involve less work</p>
<p>Write hello-world. Compile it, put the object code and executable on a  CD and, on a standalone machine with a different operating system examine the  files  with a hex editor. This will be hard work and will  not reveal a problem if the attacker explicitly avoids this defence. If you  know what to look for this will reveal any problem. You will also see if the  compiler has done any code caving. Oh.  yes,  Hello-world is small enough that any extra malicious code is likely to result in a suspiciously large binary</p>
<p>On a  minimal capacity standalone machine run hello world in a sandbox.   Look out for any  changes in the  system or the hard disk. Check for efforts to connect to the internet.</p>
<p>Now run hello world on  a machine  that attempts to connect to the internet via a firewall.  Configure the firewall to reject any input from your test machine. </p>
<p>However prevention is the best cure and   Wheeler noted that the attack depends on recognising a pattern in the  source for the compiler. Perhaps  another defence would  be to reorganise parts of the compiler source to destroy the patterns that would tell the  compiler it was compiling itself. </p>
<p>I wonder however whether any trusting trust  attack in the wild has ever been implemented. Yes it is a powerful attack but not a fire and forget attack.  As I mentioned refactoring of the compiler could remove the patterns  on which the attack relies. </p>
<p>In the corporate world where the financial reward for this attack seems greatest compilers are not built from source. There is not enough time for that so once a malicious  compiler is intalled it will be used for a long time. Trusting trust is overkill for such a target. Most attackers would find it easier therefore just to provide a malicious binary of the compiler which would infect the programs it creates. A fake gcc download for instance is probably easier to create than a trusting trust download. </p>
<p>Where would a trusting trust attack be worthwhile? The target would be a compiler writing organisation that supplied compilers to   the finance industry. The pattern would be to sell the compiler to clients  and it back to rake in the money and data.  Few organisations could  justify the effort involved. </p>
<p>So don&#8217;t get paranoid.</p>
<p>So in order to protect yourself against this attack do not trust  compiler or JVM,   be  sure you have the compiler or JVM source, use Wheeler&#8217;s Diverse Double compiling technique but assume  it will eventually be countered by a smarter attacker, refactor the source a few times and  change the compiler compiler from time to time.  And use Wheeler&#8217;s technique on all the libraries the compiler uses.  </p>
<p>It seem to me Wheeler&#8217;s  defence is a variant of redundant computing. The same thing is done in three ways and the results compared. It involves a lot of work creating a trusted system  and ensuring it remains trusted.  Most  developers, especially those not doing it as a living  will not have the time or resources for that.   But where security is paramount it will be a valuable tool</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=49&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2009/03/01/thoughts-on-the-trusting-trust-attack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>The benefits of massively parallel SIMD computing</title>
		<link>http://alexkashko.wordpress.com/2009/02/24/the-benefits-of-massively-parallel-simd-computing/</link>
		<comments>http://alexkashko.wordpress.com/2009/02/24/the-benefits-of-massively-parallel-simd-computing/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 22:53:24 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Parallel Processing]]></category>
		<category><![CDATA[Connection machine]]></category>
		<category><![CDATA[DAP]]></category>
		<category><![CDATA[Distributed Array Processor]]></category>
		<category><![CDATA[massively parallel processing]]></category>
		<category><![CDATA[SIMD]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=46</guid>
		<description><![CDATA[This post has been improved and moved here<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=46&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post has been improved and moved <a href="http://hubpages.com/_eu4yzgn9kfug/hub/SIMD-Parallel-computing?done">here</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=46&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2009/02/24/the-benefits-of-massively-parallel-simd-computing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Passphrase generator algorithm c#  &#8211; first pass</title>
		<link>http://alexkashko.wordpress.com/2008/11/20/passphrase-generator-algorithm-c-first-pass/</link>
		<comments>http://alexkashko.wordpress.com/2008/11/20/passphrase-generator-algorithm-c-first-pass/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 16:45:58 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[passhphrase]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=23</guid>
		<description><![CDATA[I have moved this post Here<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=23&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have moved this post <a href="http://alexkashko.blogspot.com/">Here </a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=23&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/11/20/passphrase-generator-algorithm-c-first-pass/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>The art of the comment</title>
		<link>http://alexkashko.wordpress.com/2008/11/18/the-art-of-the-comment/</link>
		<comments>http://alexkashko.wordpress.com/2008/11/18/the-art-of-the-comment/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 00:08:58 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[commenting]]></category>
		<category><![CDATA[documentation]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=21</guid>
		<description><![CDATA[The art of the comment © Alex Kashko 2008 There is a school of thought that says,  with some justification that code should be self commenting, that carefully written code should need no comments.  experience shows that this is an ideal and this note is an effort to lay down guidelines for the apparently simple [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=21&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 style="text-align:center;"><strong>The art of the comment</strong></h1>
<h2 style="text-align:center;"><strong>© Alex Kashko 2008</strong></h2>
<p style="text-align:center;">
There is a school of thought that says,  with some justification that code should be self commenting, that carefully written code should need no comments.  experience shows that this is an ideal and this note is an effort to lay down guidelines for the apparently simple art of commenting code. It was inspired by reading a lot of code where the only comments were autogenerated and said “DOCUMENT ME” and other code where what the code DID was clear but  WHY it did it was not.<br />
It was also inspired by the painful realisation that code  I write becomes less and less obvious the longer it is left unchanged.</p>
<p>When a developer reads  a comment they either have access to the code, or – think Javadoc here – they do not.  While there are differences between the commenting needed for each case there are a  few general rules apply in all cases.</p>
<p>Comments should<br />
1.Be as short as possible but no shorter.<br />
2.Assume the reader is less  skilled than the developer writing the comments<br />
3.Show as much of the big picture as possible.<br />
4.Be meaningful<br />
5.Assume the reader  has limited knowledge of the language in which the comment is written.<br />
6.Be aware, if the comments are in English, that  American English is not British English is not Indian English is not&#8230;.<br />
7.Show why as well as what</p>
<p>Lets take a simple example of a java method</p>
<p>public static void incrementCounter() { this.counter++;}</p>
<p>Technically this is self commenting, it is clear that the instance variable counter is incremented. However it leaves a lot of questions unanswered. What is the role of  counter for example, so lets start adding comments. First a bad comment.</p>
<p>// Increments the counter</p>
<p>Now lets improve it. Of course I am inventing a hypothetical case as I go along.</p>
<p>// Increments the counter.<br />
// Various methods (specified) reset the counter to zero when it exceeds a threshold</p>
<p>Well this is better but still leaves questions. So we improve it slightly</p>
<p>// Increments the count of the number of failed attempts to contact the server.<br />
// callers may reset this if the count exceeds  the threshold specified for that caller.</p>
<p>Better still we rewrite the method. We still need a comment</p>
<p>//  tracks the number of failed attempts to contact the server.<br />
// Callers may determine the action to be taken for  various values of the counter<br />
public static void incrementFailedContactCount() { this.numberOfFailedContacts++;}</p>
<p>So now we need to consider overflow</p>
<p>//  tracks the number of failed attempts to contact the server.<br />
// Callers may determine the action to be taken for  various values of the counter<br />
public static void incrementFailedContactCount()<br />
{<br />
// reset the counter if it overflows. Should not happen but&#8230;<br />
if (1 + this.numberOfFailedContacts) &lt; 0<br />
this.numberOfFailedContacts =0;<br />
else<br />
this.numberOfFailedContacts++;<br />
}</p>
<p>The comment here is for the benefit of the  programmer who has been working all night !!!!!</p>
<p>So how does this meet  the principles above.</p>
<p>1.the comments are short<br />
2.They assume the reader  has forgotten or  did not know about overflow<br />
3.They show something of the big picture<br />
4.They are meaningful<br />
5.They are written in simple English<br />
6.They are written in International English<br />
7.They show why as well as what.</p>
<p>Modern programming is  more and more based on frameworks. This means that a  method may look redundant but not be redundant. For the better known open source frameworks   little or no comment may be needed but a gentle reminder or hint to the less experienced may well be in  order</p>
<p>// Called by the framework in the event of a failed connection.</p>
<p>and so on.</p>
<p>So to summarise and add  a couple more points</p>
<p>1.Keep comments short and meaningful<br />
2.For each major unit  of code ( e.g a class file) write a brief introduction. This would justify the existence of the class for example<br />
3.Try to show where the code fits in the big picture<br />
4.Use neither sophisticated nor vernacular language.<br />
5.Show why as well as what.<br />
6.If you have to explain  what the code is doing maybe it needs simplification.<br />
7.Do not assume the user is stupid, only that they know less than you do or may need reminding of the obvious because they are having a bad day.<br />
8.Refactor code to minimise the number of comments needed.</p>
<p>The bottom line here is that comments are there to help others, as a  record and a mode of communication,</p>
<p>And finally remember.</p>
<p>The life the comment saves may be your own.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=21&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/11/18/the-art-of-the-comment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Graphical user interface for passphrase generator in c#</title>
		<link>http://alexkashko.wordpress.com/2008/11/12/graphical-user-interface-for-passphrase-generator-in-c/</link>
		<comments>http://alexkashko.wordpress.com/2008/11/12/graphical-user-interface-for-passphrase-generator-in-c/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 20:53:49 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Mono Project]]></category>
		<category><![CDATA[password generation]]></category>
		<category><![CDATA[Winforms]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=19</guid>
		<description><![CDATA[This post has moved  here<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=19&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post has moved  <a href="http://alexkashko.blogspot.com/2009/06/graphical-user-interface-for-passphrase.html">here</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=19&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/11/12/graphical-user-interface-for-passphrase-generator-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Messing with Toolbars in Eclipse RCP</title>
		<link>http://alexkashko.wordpress.com/2008/10/28/messing-with-toolbars-in-eclipse-rcp/</link>
		<comments>http://alexkashko.wordpress.com/2008/10/28/messing-with-toolbars-in-eclipse-rcp/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:18:01 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Plugins]]></category>
		<category><![CDATA[eclipseRCP]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=17</guid>
		<description><![CDATA[&#60;!&#8211; @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } &#8211;&#62; A colleague was having problems with a poorly written Eclipse RCP project. So I got the job of taking a simple RCP application and doing what he was trying to do in a real application in an environment that could [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=17&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&lt;!&#8211; 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 	&#8211;&gt;</p>
<pre>
<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">A colleague was having problems with a poorly written Eclipse RCP project. So I got the job of taking a simple RCP application and doing what he was trying to do in a real application in an environment that could be presumed to be working.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">You will need to have installed and sworn... err stared at the code of the  sample Eclipse RCP application that you can  create from  most Eclipse distributions to follow this note.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">So the goal was as follows</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">1. Generate the Eclipse RCPSimpleMailClient skeleton </span></span>
<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">2. Add  and populate a second toolbar to the coolbar ( A coolbar is a collection of toolbars).</span></span>
<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">3. The second toolbar must only be visible when a message view is visible in the client.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The first two requirements were trivial. The potentially tricky bit was (3). My feeling was that this would need to be done programatically, and could not be done by manipulating the plugin.xml.  This may have been a result of my preference for code  rather than configuration but  investigation revealed no way to do this via the plugin.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">At a high level the solution is</span></span></pre>
<ol>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">When creating a view populate the coolbar with all desired toolbars</span></span></pre>
</li>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">When disposing of the view remove the second toolbar from the coolbar.</span></span></pre>
</li>
</ol>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">This meant I needed to find a way  to make the clients ApplicationActionBarAdvisor  available to the view being created. There is probably a neater way but I chose to create static (class) variables and methods in the ApplicationActionBarAdvisor  and  let the View's createPartControl and dispose methods use these to manipulate the coolbar.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">As usual I found a few undocumented peculiarities</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Most of the  task was straightforward and doubtless most readers will be ahead of me and included</span></span></pre>
<ol>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Add static fields to the ApplicationActionBarAdvisor and a static getter for the,</span></span></pre>
</li>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Add a static method  fillCoolbar() for use by createPartControl. </span></span></pre>
</li>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Reference  fillCoolbar in create PartControl</span></span></pre>
</li>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">In dispose() remove the second toolbar. This yielded a small surprise</span></span></pre>
</li>
<li>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Alter the plugin.xml file when changing the actions needed on the second toolbar</span></span></pre>
</li>
</ol>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">Here is the bulk of the modified code. I  omit the changes to ApplicationActionBarAdviser.makeActions as they involve only initialising static fields.</span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The convenience method  fillColbar() is</span></span></pre>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#7f0055;"><strong>public</strong></span><span style="color:#000000;"> </span><span style="color:#7f0055;"><strong>static</strong></span><span style="color:#000000;"> </span><span style="color:#7f0055;"><strong>void</strong></span><span style="color:#000000;"> fillCoolBar() </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">{</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> ICoolBarManager coolBar = </span><span style="color:#0000c0;"><em>theirCoolbarManager</em></span><span style="color:#000000;">;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">IToolBarManager toolbar = </span><span style="color:#7f0055;"><strong>new</strong></span><span style="color:#000000;"> ToolBarManager(SWT.</span><span style="color:#0000c0;"><em>FLAT</em></span><span style="color:#000000;"> | SWT.</span><span style="color:#0000c0;"><em>RIGHT</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">coolBar.add(</span><span style="color:#7f0055;"><strong>new</strong></span><span style="color:#000000;"> ToolBarContributionItem(toolbar, </span><span style="color:#0000c0;"><em>ID_MAIN_TOOLBAR</em></span><span style="color:#000000;">)); </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">toolbar.add(</span><span style="color:#0000c0;"><em>theirOpenViewAction</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">toolbar.add(</span><span style="color:#0000c0;"><em>theirShowtimeAction</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#3f7f5f;">// Add a second  empty </span><span style="color:#3f7f5f;"><span style="text-decoration:underline;">toolbar</span></span><span style="color:#3f7f5f;"> to the action bar </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">coolBar.add(</span><span style="color:#7f0055;"><strong>new</strong></span><span style="color:#000000;"> ToolBarContributionItem(toolbar, </span><span style="color:#0000c0;"><em>ID_SECONDARY_TOOLBAR</em></span><span style="color:#000000;">)); </span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">}</span></span></span></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">variables starting “their” are static variables. </span></span>

<span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">In the View's createPartControl method  insert a line</span></span>

<span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">		ApplicationActionBarAdvisor.<em>fillCoolBar</em>();</span></span></span>

<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The dispose method is 'interesting' and  a major reason for writing this</span></span></span></pre>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> <span style="color:#7f0055;"><strong>public</strong></span> <span style="color:#7f0055;"><strong>void</strong></span> dispose()</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> {</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> ICoolBarManager coolbarManager = ApplicationActionBarAdvisor.<em>getTheirCoolbarManager</em>();</span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> IContributionItem removed = coolbarManager.remove(ApplicationActionBarAdvisor.</span><span style="color:#0000c0;"><em>ID_SECONDARY_TOOLBAR</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">// THE INTERESTING THING IS THAT YOU NEED TO DO THE UPDATE TWICE</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">coolbarManager.update(</span><span style="color:#7f0055;"><strong>true</strong></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#3f7f5f;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">//        ArrayList&lt;String&gt; idList = new ArrayList();</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#3f7f5f;">//       idList.add(ApplicationActionBarAdvisor.ID_SECONDARY_TOOLBAR);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#3f7f5f;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">// DOES NOT WORK IF YOU REMOVE THELINE BELOW </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">coolbarManager.update(</span><span style="color:#7f0055;"><strong>true</strong></span><span style="color:#000000;">); </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> </span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> ApplicationWorkbenchAdvisor.</span><span style="color:#0000c0;"><em>theirConfigurer</em></span><span style="color:#000000;">.setShowCoolBar(</span><span style="color:#7f0055;"><strong>true</strong></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> }</span></span></span></p>
<pre></pre>
<ul>
<li>
<pre><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The first line just gets the application's stored IcoolbarManager</span></span></span></pre>
</li>
<li>
<pre><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The next line removes the second toolbar</span></span></span></pre>
</li>
<li>
<pre><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The line after that updates the coolbar manager. <em>Unless I missed something the Eclipse API documentation does not state that update(true) is needed to see the effects. </em>I understand why they did that but it took me a few minutes to work out why I was not seeing changes in the coolbar.</span></span></span></pre>
</li>
<li>
<pre><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;"><em>The second update is needed but I have no idea why and no intention of trying to find out.</em></span></span></span></pre>
</li>
<li>
<pre><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The final line  just guarantees the coolbar is visible.</span></span></span></pre>
</li>
</ul>
<pre>

<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The next stage was straightforward. I decided to create a modification of the message popup action that would show the date and time. Nothing fancy but better than “Hello World”</span></span></span>

<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">So I created a new Action called ShowTimeAction which was almost an exact clone of MessagePopupAction , registered it in the makeActions() method and  altered the ShowTime constructor to use a new image</span></span></span></pre>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> ShowTimeAction(String text, IWorkbenchWindow window) {</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> </span><span style="color:#7f0055;"><strong>super</strong></span><span style="color:#000000;">(text);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> </span><span style="color:#7f0055;"><strong>this</strong></span><span style="color:#000000;">.</span><span style="color:#0000c0;">window</span><span style="color:#000000;"> = window;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> </span><span style="color:#3f7f5f;">// The id is used to refer to the action in a menu or </span><span style="color:#3f7f5f;"><span style="text-decoration:underline;">toolbar</span></span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> setId(ICommandIds.</span><span style="color:#0000c0;"><em>CMD_SHOW_TIME</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> </span><span style="color:#3f7f5f;">// Associate the action with a </span><span style="color:#3f7f5f;"><span style="text-decoration:underline;">pre</span></span><span style="color:#3f7f5f;">-defined command, to allow key bindings.</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> setActionDefinitionId(ICommandIds.</span><span style="color:#0000c0;"><em>CMD_SHOW_TIME</em></span><span style="color:#000000;">);</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000000;"> setImageDescriptor(com.example.rcpapp.Activator.</span><span style="color:#000000;"><em>getImageDescriptor</em></span><span style="color:#000000;">(</span><span style="color:#2a00ff;">&#8220;/icons/showtime.gif&#8221;</span><span style="color:#000000;">));</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> }</span></span></span></p>
<pre>

<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">The changes are the change of ID and  image descriptor</span></span></span>

<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">This finally required a change to the plugin manifest plugin.xml</span></span></span>
<span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">And all I needed was to add a new view in the plugin.xml</span></span></span></pre>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">&lt;view</span></span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">name=</span><span style="color:#008000;">&#8220;Time&#8221;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">allowMultiple=</span><span style="color:#008000;">&#8220;true&#8221;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">icon=</span><span style="color:#008000;">&#8220;icons/showtime.gif&#8221;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">class=</span><span style="color:#008000;">&#8220;com.example.rcpapp.ShowTimeAction&#8221;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">id=</span><span style="color:#008000;">&#8220;com.example.rcpapp.showtime&#8221;</span><span style="color:#000080;">&gt;</span></span></span></p>
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"> </span><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span style="color:#000080;">&lt;/view&gt;</span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">At this point everything was working perfectly. </span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:medium;">That is when I discovered that the problem my colleague had was a different problem from the one I had been told he had. But that is (a) Life and (b) a different story</span></span></span></p>
<p style="margin-bottom:0;" align="left">
<p style="margin-bottom:0;" align="left">
<pre></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=17&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/10/28/messing-with-toolbars-in-eclipse-rcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Branding Eclipse: problem, solution and insight gained</title>
		<link>http://alexkashko.wordpress.com/2008/10/28/branding-eclipse-problem-solution-and-insight-gained/</link>
		<comments>http://alexkashko.wordpress.com/2008/10/28/branding-eclipse-problem-solution-and-insight-gained/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 12:55:53 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Branding]]></category>
		<category><![CDATA[Eclipse Plugins]]></category>
		<category><![CDATA[Eclipse Products]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Eclipse product]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=15</guid>
		<description><![CDATA[Branding Eclipse: Notes for the puzzled © Alex Kashko 2008 I  recently got the chance to work on an Eclipse plugin project. Since it was something I had never done before I was delighted.  Eclipse being a host of plugins  all cooperating (exceot the ones I  inherited to work on did not) I expected to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=15&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;"><strong>Branding Eclipse: Notes for the puzzled</strong></p>
<p style="margin-bottom:0;"><span style="font-size:small;">© Alex Kashko 2008</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">I  recently got the chance to work on an Eclipse plugin project. Since it was something I had never done before I was delighted.  Eclipse being a host of plugins  all cooperating (exceot the ones I  inherited to work on did not) I expected to gain insight into aspects of eclipse I had never before needed to know.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">I expected problems due to  lack of experience and was not disappointed. One little problem I found was with Branding.<br />
</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"> The Eclipse IDE is a marvellously complex beast.  One of the features it offers is the ability to create a product that does not look like Eclipse, at least to the uninformed Eye</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">I  wanted to know how to create and personalise an Eclipse product and, not wanting to mess up a   working project with experimentation, I started with the sample RCP mail application in Eclipse Ganymede and followed the RCP tutorial on  the Eclipse site.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">Everything went well till I started trying to change the splash screen and the image on the &#8216;about&#8217; tab. </span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">One of two things happened. Either the images did nto change or they  appeared  when launching the application from Eclipse but did not appear in the exported product.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">It also seemed impossible to use images with different names from the  standard Eclipse ones. I ended up theorising that the export process got confused if there were  more than one  .bmp or.gif file in the root directory. </span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">I found  some reports of  very similar problems via google. This led me to speculate that either there was a bug in eclipse. Or more likely the  tutorial and other documentation had missed something out.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">Eventually I found a way to get this simple task working. I deleted the splash.bmp and product_lg.gif files and imported new ones. Then I exported the project ( making sure the synchronise box was checked) and everyting worked. This was on my home machine not my work  machine.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">The problem  still occurred on my work  machine even when I followed the procedure that worked at home.  After a few minutes  I discovered that somehow the two image files had been deselected in the build.properties file.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"> Now I have a properly branded product and more importantly  knowledge of what the Eclipse documentation does not tell you.<br />
</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"> It seems (and I will use this as a working hypothesis till it breaks down) that  you need to  examine the build.properties file  includes your images before you export the product. Deleting and reimporting splash.bmp worked on Europa under OS X but on Ganymede under XP the process seems to have removed the files from  build.properties.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">So the procedure I will adopt for branding in future is</span></p>
<p style="margin-bottom:0;">
<ol>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;">Try 	to do the branding before doing any serious work</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;">When 	creating a product configuration do not be clever. Accept wizard 	defaults.</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;">Check 	the build.properties file has all the image dependencies before 	exporting</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;">When 	re-exporting  a product delete the old export or use a new 	directory.</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;">Check 	size limits.</span></p>
</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=15&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/10/28/branding-eclipse-problem-solution-and-insight-gained/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate revisited</title>
		<link>http://alexkashko.wordpress.com/2008/08/20/hibernate-revisited/</link>
		<comments>http://alexkashko.wordpress.com/2008/08/20/hibernate-revisited/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 19:49:35 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=11</guid>
		<description><![CDATA[Hibernate revisited © Alex Kashko 2008 I looked again at the Hibernate Tutorial and now I have a better idea when not to use Hibernate, at least in its present state (Hibernate 3). The Open source frameworks I have been looking at (Hibernate, Spring) and Java Server Faces and JSP seem to me to simplify [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=11&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><strong>Hibernate revisited<br />
© Alex Kashko 2008</strong></p>
<p>I  looked again at  the Hibernate Tutorial  and now I have a better idea when not to use Hibernate, at least in its present state (Hibernate 3).</p>
<p>The Open source frameworks I have been looking at (Hibernate, Spring) and Java Server Faces and JSP seem to me to   simplify Java  coding at the cost of more complex XML based configuration files. This has  long been a grumble of mine since the structure and construction of the xml files is seldom explained. I searched a number of books on EJB before finding one that explained the multiple horrors of the XML files  that needed to be configured and I instantly purchased it. Unfortunately  I do not have that book any more ( Its a long story).</p>
<p>On the Java side Hibernate claims to remove the need for  knowledge of SQL but it seems that HQL ( Hibernate Query Language)  may often be needed. So this benefit is perhaps over stated. More importantly Hibernate requires the Developer to have a knowledge of the Database Schema, perhaps even design the schema.  To my mind the developer should be able to work without worrying about the database.</p>
<p>On a project I did last year the Developer was insulated from the database because  access to the database was purely through stored procedures. Once the interface was stable “all” that was needed was to write JDBC code that called the desired stored procedure and  took the appropriate action when the procedure  had returned a value.  This approach  showed its value when the entire database had to be redesigned for performance reasons.  There was zero impact on the Java  developers, namely me. So while the database team were sweating away I  was tidying up and commenting my code to help the maintenance developer. Who could have been me,  had events turned out otherwise ( A downturn in company share price led to  a lot of budget cuts).</p>
<p>As I recall prior to Hibernate 3  it was not possible to call  stored procedures from Hibernate. Version 3 imposes   some restraints on the stored procedures. Had we used Hibernate 3 a reorganisation of the database would have had a major impact on the project.</p>
<p>A quick look at sample code on the Hibernate site seemed to show that  calling stored procedures from Hibernate  is of the same level of complexity as from JDBC. Together with the rules Hibernate imposes on  the design of stored procedures   this means Hibernate offers little or no benefits over JDBC.  The extra XML configuration over load currently tilts the balance of benefit towards JDBC.</p>
<p>Experience may make me revise these conclusions but I think Hibernate is  still a good replacement for entity beans with  simple database schemata.  However  it seems to me that  the need for the Java Developer to know about the internals of the database rather than just a stored procedure name  and signature  poses maintenance risks and could impact deadline and budget if a major change to the database became  necessary.   It can be argued that the use of XML files allows metadata to be stored outside the Java code and this makes it easier to change if necessary.  I accept this, but I think in a lot of cases a carefully designed property file will give similar flexibility but I recall an architect  telling me that the problem with putting  things into XML  is that,  as with reflection, the compiler cannot help you avoid  bugs. He was talking about Spring but I think the  problem is  common to a number of XML based frameworks.  The answer of course is more rigorous testing and careful monitoring of changes to the XML especially when a single character can change the meaning of a caption that may be displayed to a client ( mistyping “count” for example).</p>
<p>Eventually Hibernate is likely to overcome  what I see as shortcomings and risks, and then it may be seen as too complicated, and another open source framework will take its place. Till then I congratulate the developers on  their achievement and hope they keep improving it.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alexkashko.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alexkashko.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=11&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/08/20/hibernate-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
		<item>
		<title>Swing versus Winforms</title>
		<link>http://alexkashko.wordpress.com/2008/08/18/swing-versus-winforms/</link>
		<comments>http://alexkashko.wordpress.com/2008/08/18/swing-versus-winforms/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 12:00:21 +0000</pubDate>
		<dc:creator>alexkashko</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programmer Productivity]]></category>
		<category><![CDATA[SWING]]></category>

		<guid isPermaLink="false">http://alexkashko.wordpress.com/?p=5</guid>
		<description><![CDATA[This post has moved here<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=5&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post has moved <a href="http://alexkashko.blogspot.com/">here </a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alexkashko.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alexkashko.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexkashko.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexkashko.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexkashko.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexkashko.wordpress.com&amp;blog=4511650&amp;post=5&amp;subd=alexkashko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexkashko.wordpress.com/2008/08/18/swing-versus-winforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe7ec3f49ba930cf8b7c4ecdb306a18b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alexkashko</media:title>
		</media:content>
	</item>
	</channel>
</rss>
